From d569ad64f2f798c50de52b01513973d52ad44d0e Mon Sep 17 00:00:00 2001 From: nmlgc Date: Tue, 1 Jul 2014 23:25:51 +0200 Subject: [PATCH] th03/main: Initial state --- th03_main.asm | 97185 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97185 insertions(+) create mode 100644 th03_main.asm diff --git a/th03_main.asm b/th03_main.asm new file mode 100644 index 00000000..5300ebbc --- /dev/null +++ b/th03_main.asm @@ -0,0 +1,97185 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 43EE91A800F1F0FE35A87149C90B037D + +; File Name : th03/MAIN.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-26470h Loaded length: 1E6E2h +; Entry Point : 0:0 +; OS type : MS DOS +; Application type: Executable 16bit + + .386 + .model large + +; =========================================================================== + +; Segment type: Pure code +seg000 segment byte public 'CODE' use16 + assume cs:seg000 + assume es:nothing, ss:seg014, 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_1D5DC, ax + mov segx, es + mov word_1D5D6, bx + mov word_1D5EE, bp + call sub_178 + mov ax, word_1D5D6 + 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_1D5D4, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_1D5D8, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_1E3AA + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_1E3AA, 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_2EB0 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_1D5E6, bx + mov word_1D5EA, 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_1E3AA, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 1182h + mov cx, 8E90h + sub cx, di + cld + rep stosb + cmp word_1E30C, 14h + jbe short loc_110 + cmp byte ptr word_1D5DC, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_1D5DC+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_1E30C + 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_1D5EE, 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_2EB0 +; --------------------------------------------------------------------------- + +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, 115Eh + mov di, 117Ch + call sub_1E8 + push word_1D5D2 + push envp ; envp + push word_1D5CE + push argv ; argv + push argc ; argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_3145+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 117Ch + mov di, 1182h + 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_3145+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_3145+50p + +arg_2 = byte ptr 4 + + mov bp, sp + mov ah, 4Ch ; 'L' + mov al, [bp+arg_2] + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) +__terminate endp ; AL = exit code + +; --------------------------------------------------------------------------- + mov dx, 4Bh ; 'K' + push ds + push dx + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax + nop + push cs + call near ptr __exit + +; =============== S U B R O U T I N E ======================================= + + +sub_178 proc near ; CODE XREF: start+25p + push ds + mov ax, 3500h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + +loc_17E: ; DATA XREF: seg002:0068r + mov word ptr dword_1D5BA, bx + mov word ptr dword_1D5BA+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_1D5BE, bx + mov word ptr dword_1D5BE+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_1D5C2, bx + mov word ptr dword_1D5C2+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_1D5C6, bx + mov word ptr dword_1D5C6+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_3145+2Fp + push ds + mov ax, 2500h + lds dx, dword_1D5BA + 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_1D5BE + 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_1D5C2 + 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_1D5C6 + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + retf +__restorezero endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1E8 proc near ; CODE XREF: start+124p sub_1E8+3Aj ... + mov ax, 100h + mov dx, di + mov bx, si + +loc_1EF: ; CODE XREF: sub_1E8+22j + cmp bx, di + jz short loc_20C + cmp byte ptr es:[bx], 0FFh + jz short loc_207 + mov cl, es:[bx+1] + xor ch, ch + cmp cx, ax + jnb short loc_207 + mov ax, cx + mov dx, bx + +loc_207: ; CODE XREF: sub_1E8+Fj sub_1E8+19j + add bx, 6 + jmp short loc_1EF +; --------------------------------------------------------------------------- + +loc_20C: ; CODE XREF: sub_1E8+9j + cmp dx, di + jz short locret_22B + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_224 + call dword ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +loc_224: ; CODE XREF: sub_1E8+33j + call word ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +locret_22B: ; CODE XREF: sub_1E8+26j + retn +sub_1E8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22C proc near ; CODE XREF: start+153p sub_22C+37j ... + mov ah, 0 + mov dx, di + mov bx, si + +loc_232: ; CODE XREF: sub_22C+1Fj + cmp bx, di + jz short loc_24D + cmp byte ptr es:[bx], 0FFh + jz short loc_248 + cmp es:[bx+1], ah + jb short loc_248 + mov ah, es:[bx+1] + mov dx, bx + +loc_248: ; CODE XREF: sub_22C+Ej sub_22C+14j + add bx, 6 + jmp short loc_232 +; --------------------------------------------------------------------------- + +loc_24D: ; CODE XREF: sub_22C+8j + cmp dx, di + jz short locret_26C + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_265 + call dword ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +loc_265: ; CODE XREF: sub_22C+30j + call word ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +locret_26C: ; CODE XREF: sub_22C+23j + retn +sub_22C endp + +; --------------------------------------------------------------------------- +DGROUP@ dw 0 ; DATA XREF: start+3w start+B0r ... +__MMODEL db 4, 0C0h, 0, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 0Eh, 0E8h, 9Ah + db 1Ch, 0B8h, 0F3h, 0FFh +; --------------------------------------------------------------------------- + +loc_27F: ; CODE XREF: seg000:02D9j seg000:02E1j + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_286: ; CODE XREF: sub_25F0+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_1F2C + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_1F2C + 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, 5Ch, 21h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 8Bh, 1Bh, 0Eh, 0E8h, 87h, 1Bh, 8Bh + db 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h, 1Eh + db 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 71h, 1Bh, 0Eh + db 0E8h, 6Dh, 1Bh, 0B8h, 2 dup(0), 0F8h, 5Eh, 5Fh, 1Fh + db 5Dh, 0CAh, 8, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_11F6+57p + mov bx, sp + mov cx, ss:[bx+8] + les bx, ss:[bx+4] + mov dx, es:[bx+1Ch] + mov ax, 4201h + mov bx, cx + xor cx, cx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + mov ax, 0FFF3h + jb short locret_3D3 + mov ax, 0 + +locret_3D3: ; CODE XREF: sub_3B4+1Aj + retf 6 +sub_3B4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3D6 proc far ; CODE XREF: sub_11F6+31p sub_25F0+1Dp + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds dx, [bp+arg_0] + mov bx, [bp+arg_4] + mov ah, 3Fh ; '?' + mov cx, 20h ; ' ' + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + push ds + pop es + assume es:dseg + pop ds + sbb cx, cx + xor ax, cx + sub ax, cx + jb short loc_40D + push si + push di + mov si, 278h + mov di, dx + mov cx, 5 + repe cmpsb + pop di + pop si + jnz short loc_409 + mov ax, 0 + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_409: ; CODE XREF: sub_3D6+2Aj + mov ax, 0FFF3h + stc + +loc_40D: ; CODE XREF: sub_3D6+1Aj + pop bp + retf 6 +sub_3D6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_412 proc far ; CODE XREF: sub_25F0+3Fp + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + cld + push ds + lds bx, [bp+arg_0] + mov cx, [bx+1Ch] + mov si, [bx+1Eh] + pop ds + mov ax, 0 + jcxz short loc_46C + push cx + push cs + call near ptr sub_1F2C + jb short loc_46C + push ds + mov ds, ax + xor dx, dx + mov bx, [bp+arg_4] + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + mov ax, 0FFF3h + jb short loc_464 + mov dx, si + xor si, si + nop + +loc_444: ; CODE XREF: sub_412+45j + lodsb + cmp al, 10h + jz short loc_45E + add si, dx + sub si, 3 + lodsw + or ax, ax + jz short loc_459 + sub cx, dx + mov dx, ax + ja short loc_444 + +loc_459: ; CODE XREF: sub_412+3Fj + xor ax, ax + +loc_45B: ; DATA XREF: sub_153A+4r + jmp short loc_464 +; --------------------------------------------------------------------------- + nop + +loc_45E: ; CODE XREF: sub_412+35j + lodsw + lodsb + and ax, 0Fh + nop + +loc_464: ; CODE XREF: sub_412+2Bj + ; sub_412:loc_45Bj + mov bx, ds + pop ds + push bx + push cs + call near ptr sub_1F16 + +loc_46C: ; CODE XREF: sub_412+13j sub_412+1Aj + pop si + pop bp + retf 6 +sub_412 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_472 proc far ; CODE XREF: sub_1D88+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + mov bx, es:0 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + push es + push cs + call near ptr sub_23C0 + pop bp + retf 2 +sub_472 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_48A proc far ; CODE XREF: sub_506:loc_52Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_1D560 + mov cx, off_1D566 + mov dx, 8 + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_4BA + or ax, ax + jz short loc_4BA + dec ax + mov word_1D562, ax + mov off_1D564, 1 + mov al, byte ptr off_1D568 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_1D562, ax + dec ax + pop ds + pop bp + retf 2 +sub_48A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4C6 proc far ; CODE XREF: sub_25F0+53p + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds bx, [bp+arg_0] + test byte ptr [bx+5], 80h + pop ds + jz short loc_4FE + mov ah, 3Fh ; '?' + mov bx, [bp+arg_4] + mov cx, 30h ; '0' + mov dx, 11BAh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_4FE + mov bx, dx + mov cx, 1004h + +loc_4E8: ; CODE XREF: sub_4C6+31j + mov dl, [bx] + mov ax, [bx+1] + mov [bx], ax + mov [bx+2], dl + add bx, 3 + dec ch + jnz short loc_4E8 + mov ax, 0 + jmp short loc_502 +; --------------------------------------------------------------------------- + +loc_4FE: ; CODE XREF: sub_4C6+Cj sub_4C6+1Bj + stc + mov ax, 0FFF3h + +loc_502: ; CODE XREF: sub_4C6+36j + pop bp + retf 6 +sub_4C6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_506 proc far ; CODE XREF: seg000:05DCp sub_1E00+3Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + cmp word ptr es:2, 0 + jz short loc_52D + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + +locret_52A: ; DATA XREF: sub_EA8C:loc_EBEFr + ; sub_EA8C:loc_EBBFr + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + ; DATA XREF: sub_EA8C:loc_EBFFr + push es + +loc_52E: ; DATA XREF: sub_EA8C:loc_EBA6r + push cs + +loc_52F: ; DATA XREF: sub_EA8C:loc_EB63r + ; sub_EA8C:loc_EC0Fr ... + call near ptr sub_48A + +loc_532: ; DATA XREF: sub_EA8C:loc_EB1Er + pop bp + +locret_533: ; DATA XREF: sub_EA8C:loc_EAD9r + retf 2 +sub_506 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_536 proc far ; CODE XREF: sub_C7A5+17P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_1D834, 64h ; 'd' + nop + push cs + call near ptr sub_21F2 + +loc_549: ; CODE XREF: sub_536+2Cj + nop + push cs + +loc_54B: ; DATA XREF: sub_145C+1Fr + call loc_1C7E + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: sub_536+25j + nop + push cs + call near ptr sub_21F2 + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: sub_536+1Dj + sub word_1D834, 6 + jg short loc_549 + mov word_1D834, 0 + nop + push cs + call loc_1C7E + pop di + pop si + retf 2 +sub_536 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov word_1DB12, 6 + mov ax, word_1D86C + add ax, 9 + push ax + push cs + call near ptr sub_22BC + jb short loc_5B0 + mov es, ax + push word ptr [bp+8] + push word ptr [bp+6] + push cs + call near ptr sub_8E8 + jb short loc_5B7 + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_1D86C + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5B0: ; CODE XREF: seg000:0588j + mov byte_1D86E, 3 + jmp short loc_5C1 +; --------------------------------------------------------------------------- + +loc_5B7: ; CODE XREF: seg000:0596j + push es + push cs + call near ptr sub_23C0 + mov byte_1D86E, 1 + +loc_5C1: ; CODE XREF: seg000:05B5j + xor ax, ax + pop bp + retf 4 +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ah] + mov si, [bp+8] + cmp si, 0 + jle short loc_5ED + +loc_5D8: ; CODE XREF: seg000:05EBj + push word ptr [bp+6] + push cs + call near ptr sub_506 + inc ah + jz short loc_5ED + mov es, word ptr [bp+0Ch] + mov es:[di], al + inc di + dec si + jnz short loc_5D8 + +loc_5ED: ; CODE XREF: seg000:05D6j seg000:05E1j + mov ax, di + sub ax, [bp+0Ah] + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+0Ah] + mov ax, es:2 + mov dx, [bp+6] + mov cx, [bp+8] + or cx, cx + jnz short loc_620 + cmp dx, ax + ja short loc_620 + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_620: ; CODE XREF: seg000:060Aj seg000:060Ej + mov bx, es:0 + sub dx, ax + sbb cx, 0 + mov ax, 4201h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + sbb ax, ax + mov es:2, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_63A proc far ; CODE XREF: seg000:1EB4p + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + mov es, [bp+arg_6] + mov bx, 0 + xchg bx, es:2 + mov al, [bp+arg_0] + mov dx, [bp+arg_2] + mov cx, [bp+arg_4] + cmp al, 1 + jnz short loc_65A + sub dx, bx + sbb cx, 0 + +loc_65A: ; CODE XREF: sub_63A+19j + mov bx, es:0 + mov ah, 42h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: + ; 0-from beginnig,1-from current,2-from end + sbb ax, ax + pop bp + retf 8 +sub_63A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_66A proc near ; CODE XREF: sub_DBE+64p sub_DBE+6Fp + or bl, bl + jz short loc_6A6 + test bl, 3 + jz short loc_6AA + test bl, 1 + jz short loc_67E + mov ax, word_1D7DE + jmp short loc_681 +; --------------------------------------------------------------------------- + nop + +loc_67E: ; CODE XREF: sub_66A+Cj + mov ax, word_1D7E2 + +loc_681: ; CODE XREF: sub_66A+11j + sub cx, si + jz short loc_6A6 + mov dx, di + sub dx, bp + mov di, ax + sub ax, si + imul dx + idiv cx + add ax, bp + mov cx, di + mov di, ax + xor ax, ax + or di, di + js short loc_6B4 + mov ax, word_1D7E6 + cmp di, ax + jg short loc_6B4 + +loc_6A4: ; CODE XREF: sub_66A+6Ej + xor bl, bl + +loc_6A6: ; CODE XREF: sub_66A+2j sub_66A+19j ... + or bx, bx + retn +; --------------------------------------------------------------------------- + nop + +loc_6AA: ; CODE XREF: sub_66A+7j + xor ax, ax + test bl, 4 + jz short loc_6B4 + mov ax, word_1D7E6 + +loc_6B4: ; CODE XREF: sub_66A+31j sub_66A+38j ... + sub di, bp + jz short loc_6A6 + mov dx, cx + sub dx, si + mov cx, ax + sub ax, bp + imul dx + idiv di + add ax, si + mov di, cx + mov cx, ax + cmp word_1D7DE, cx + jle short loc_6D4 + mov bl, 1 + retn +; --------------------------------------------------------------------------- + nop + +loc_6D4: ; CODE XREF: sub_66A+64j + cmp cx, word_1D7E2 + jle short loc_6A4 + mov bl, 2 + retn +sub_66A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6DE proc far ; CODE XREF: sub_1C42+2p + mov ax, 0C00h + int 21h ; DOS - CLEAR KEYBOARD BUFFER + ; AL must be 01h, 06h, 07h, 08h, or 0Ah. + retf +sub_6DE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_6E4 proc far ; CODE XREF: sub_20FC+34p sub_20FC+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_6E4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_704 proc far ; CODE XREF: sub_73A+1p + ; sub_9778:loc_986CP ... + 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): + ; + +loc_710: ; DATA XREF: sub_153A:loc_157Fr + mov al, 80h ; '€' + +loc_712: ; DATA XREF: sub_1FEC+9r + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +sub_704 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_71A proc far ; CODE XREF: sub_73A+27p sub_9778+17BP ... + 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_71A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_73A proc far ; CODE XREF: sub_EA1A+3CP sub_ECD0+20P + push cs + call near ptr sub_704 + 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_71A + retf +sub_73A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_766 proc far ; CODE XREF: sub_7D2+1p + mov bx, word_1D812 + cmp bx, 0FFFFh + jz short locret_7D0 + mov ax, word_1E708 + cmp word_1E70A, ax + jnb short loc_7A4 + push ds + mov cx, word_1E708 + lds dx, dword_1E700 + 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_797 + add word_1E704, ax + adc word_1E706, 0 + cmp word_1E708, ax + jz short loc_79D + +loc_797: ; CODE XREF: sub_766+20j + mov word_1E70E, 1 + +loc_79D: ; CODE XREF: sub_766+2Fj + mov word_1E708, 0 + retf +; --------------------------------------------------------------------------- + +loc_7A4: ; CODE XREF: sub_766+10j + cmp word_1E70A, 0 + jz short locret_7D0 + mov dx, ax + mov cx, 0 + add dx, word_1E704 + mov word_1E70A, cx + +loc_7B8: + mov word_1E708, cx + adc cx, word_1E706 + mov ax, 4200h + mov bx, word_1D812 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_1E704, ax + mov word_1E706, dx + +locret_7D0: ; CODE XREF: sub_766+7j sub_766+43j + retf +sub_766 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_7D2 proc far ; CODE XREF: sub_296C+53p sub_A346+1AP ... + push cs + call near ptr sub_766 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_1D812, 0FFFFh + retf +sub_7D2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7E2 proc far ; CODE XREF: sub_296C+2Cp sub_296C+4Fp ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_1D810, 0 + jz short loc_866 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_7F4: ; CODE XREF: sub_7E2+7Fj + mov ax, word_1E70A + cmp word_1E708, ax + jb short loc_82A + add word_1E704, ax + adc word_1E706, 0 + push bx + push ds + mov cx, word_1D810 + mov bx, word_1D812 + lds dx, dword_1E700 + 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_1E70A, ax + jz short loc_885 + mov word_1E708, 0 + +loc_82A: ; CODE XREF: sub_7E2+19j + mov si, word_1E70A + sub si, word_1E708 + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_85B + or si, si + jz short loc_85B + push si + push ds + mov cx, si + mov ax, word_1E708 + lds si, dword_1E700 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_85B: ; CODE XREF: sub_7E2+5Cj sub_7E2+60j + add word_1E708, si + sub bx, si + jnz short loc_7F4 + jmp short loc_88B +; --------------------------------------------------------------------------- + nop + +loc_866: ; CODE XREF: sub_7E2+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_1D812 + 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_1E704, ax + adc word_1E706, 0 + mov bx, cx + sub bx, ax + jz short loc_88B + +loc_885: ; CODE XREF: sub_7E2+40j + mov word_1E70C, 1 + +loc_88B: ; CODE XREF: sub_7E2+81j sub_7E2+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_7E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_896 proc far ; CODE XREF: sub_296C+1Bp sub_A346+9P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_1D812 + cmp bx, 0FFFFh + jnz short loc_8CD + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_8E8 + sbb bx, bx + or ax, bx + mov word_1D812, ax + xor ax, ax + mov word_1E70A, ax + mov word_1E704, ax + mov word_1E706, ax + mov word_1E708, ax + mov word_1E70C, ax + mov word_1E70E, ax + lea ax, [bx+1] + +loc_8CD: ; CODE XREF: sub_896+Cj + pop bp + retf 4 +sub_896 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_8D2 proc far ; CODE XREF: sub_25F0+68p sub_25F0+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_8E4 + mov ax, 0FFF3h + +locret_8E4: ; CODE XREF: sub_8D2+Dj + retf 2 +sub_8D2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_8E8 proc far ; CODE XREF: seg000:0593p sub_896+16p ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_1D814 + 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_8FC + retf 4 +; --------------------------------------------------------------------------- + +loc_8FC: ; CODE XREF: sub_8E8+Fj + mov ax, 0FFFEh + retf 4 +sub_8E8 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_908 + +loc_902: ; CODE XREF: sub_908+1Fj sub_908+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_908 + +; =============== S U B R O U T I N E ======================================= + + +sub_908 proc far ; CODE XREF: sub_14511+7AP + ; sub_14511+DEP ... + +; FUNCTION CHUNK AT 0902 SIZE 00000006 BYTES + + push bp + push si + push di + cli + add sp, 0Ah + pop di + pop si + pop ax + pop bx + sub sp, 12h + sti + cmp bx, si + jle short loc_91D + xchg bx, si + +loc_91D: ; CODE XREF: sub_908+11j + mov bp, word_1D7DE + mov dx, word_1D7E0 + sub si, bp + jl short loc_902 + sub bx, bp + cmp bx, 8000h + sbb cx, cx + and bx, cx + sub si, dx + sbb cx, cx + and si, cx + add si, dx + sub si, bx + jl short loc_902 + add bx, bp + cmp ax, di + jle short loc_946 + xchg ax, di + +loc_946: ; CODE XREF: sub_908+3Bj + mov dx, word_1D7E4 + mov bp, word_1D7E6 + sub di, dx + js short loc_902 + sub ax, dx + cmp ax, 8000h + sbb cx, cx + and ax, cx + sub di, bp + sbb cx, cx + and di, cx + add di, bp + sub di, ax + jl short loc_902 + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_1D7EA + mov es, ax + mov dx, di + shl di, 2 + add di, dx + shl di, 4 + mov dx, bx + shr dx, 4 + shl dx, 1 + add di, dx + and bx, 0Fh + add si, bx + sub si, 10h + shl bx, 1 + mov dx, [bx+28Eh] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+290h] + sar si, 4 + js short loc_9C4 + lea bp, [si+2Ah] + shl bp, 1 + +loc_9AC: ; CODE XREF: sub_908+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_9AC + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_9C4: ; CODE XREF: sub_908+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_9CC: ; CODE XREF: sub_908+C7j + stosw + sub di, bp + jnb short loc_9CC + pop di + pop si + pop bp + retf 8 +sub_908 endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_9E2 + +loc_9D8: ; CODE XREF: sub_9E2+4Fj + pop si + pop bp + jmp loc_B50 +; --------------------------------------------------------------------------- + +loc_9DD: ; CODE XREF: sub_9E2+18j sub_9E2+22j ... + pop si + pop bp + retf 6 +; END OF FUNCTION CHUNK FOR sub_9E2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9E2 proc far ; CODE XREF: sub_CEE0+5AP + ; sub_108CA+101P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + +; FUNCTION CHUNK AT 09D8 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + xor cx, cx + mov ax, [bp+arg_2] + sub ax, word_1D7E4 + mov dx, ax + sub ax, si + cmp ax, word_1D7E6 + jg short loc_9DD + shl ax, 1 + rcl cx, 1 + mov ax, dx + add ax, si + js short loc_9DD + cmp word_1D7E6, ax + rcl cx, 1 + mov ax, [bp+arg_4] + mov bx, ax + sub ax, si + cmp ax, word_1D7E2 + jg short loc_9DD + sub ax, word_1D7DE + shl ax, 1 + rcl cx, 1 + mov ax, bx + add ax, si + cmp ax, word_1D7DE + jl short loc_9DD + cmp word_1D7E2, ax + rcl cx, 1 + jcxz short loc_9D8 + or si, si + jz short loc_9DD + push di + mov al, byte ptr word_1D828 + mov byte ptr cs:loc_A81+2, al + mov byte ptr cs:loc_AED+2, al + mov es, word_1D7EA + mov ax, bx + mov word_1E710, ax + mov word_1E712, dx + xor di, di + mov bp, si + +loc_A54: ; CODE XREF: sub_9E2+8Fj + call loc_A7C + cmp si, di + jz short loc_A62 + xchg si, di + call loc_A7C + xchg si, di + +loc_A62: ; CODE XREF: sub_9E2+77j + stc + sbb bp, di + sub bp, di + jns short loc_A6E + dec si + add bp, si + add bp, si + +loc_A6E: ; CODE XREF: sub_9E2+85j + inc di + cmp si, di + jge short loc_A54 + pop di + pop si + pop bp + retf 6 +sub_9E2 endp + +; --------------------------------------------------------------------------- + nop + +locret_A7A: ; CODE XREF: seg000:0A90j seg000:0AAFj + retn +; --------------------------------------------------------------------------- + nop + +loc_A7C: ; CODE XREF: sub_9E2:loc_A54p + ; sub_9E2+7Bp + mov ax, word_1E712 + mov bx, di + +loc_A81: ; DATA XREF: sub_9E2+59w + shr bx, 9 + or bx, bx + jz short loc_AF2 + sub ax, bx + js short loc_AE8 + cmp ax, word_1D7E6 + jg short locret_A7A + mov dx, ax + shl dx, 2 + add dx, ax + shl dx, 4 + mov ax, word_1E710 + or si, si + jz short loc_AC9 + sub ax, si + cmp ax, word_1D7DE + jl short loc_AC4 + cmp ax, word_1D7E2 + jg short locret_A7A + mov bx, ax + mov cx, ax + shr bx, 3 + add bx, dx + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov es:[bx], ch + +loc_AC4: ; CODE XREF: seg000:0AA9j + mov ax, word_1E710 + add ax, si + +loc_AC9: ; CODE XREF: seg000:0AA1j + cmp ax, word_1D7DE + jl short loc_AE8 + cmp ax, word_1D7E2 + jg short loc_AE8 + mov bx, ax + mov cx, bx + shr bx, 3 + add bx, dx + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov es:[bx], ch + +loc_AE8: ; CODE XREF: seg000:0A8Aj seg000:0ACDj ... + mov ax, word_1E712 + mov bx, di + +loc_AED: ; DATA XREF: sub_9E2+5Dw + shr bx, 9 + add ax, bx + +loc_AF2: ; CODE XREF: seg000:0A86j + cmp ax, word_1D7E6 + jnb short locret_B4E + mov dx, ax + shl dx, 2 + add dx, ax + shl dx, 4 + mov ax, word_1E710 + or si, si + jz short loc_B2F + sub ax, si + cmp ax, word_1D7DE + jl short loc_B2A + cmp ax, word_1D7E2 + jg short locret_B4E + mov bx, ax + mov cx, ax + shr bx, 3 + add bx, dx + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov es:[bx], ch + +loc_B2A: ; CODE XREF: seg000:0B0Fj + mov ax, word_1E710 + add ax, si + +loc_B2F: ; CODE XREF: seg000:0B07j + cmp ax, word_1D7DE + jl short locret_B4E + cmp ax, word_1D7E2 + jg short locret_B4E + mov bx, ax + mov cx, bx + shr bx, 3 + add bx, dx + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov es:[bx], ch + +locret_B4E: ; CODE XREF: seg000:0AF6j seg000:0B15j ... + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_B50: ; CODE XREF: sub_9E2-8j + push bp + mov bp, sp + push si + push di + push ds + mov dx, [bp+6] + test dx, dx + jz short loc_B8A + mov al, byte ptr word_1D828 + mov byte ptr cs:loc_BA9+2, al + mov byte ptr cs:loc_BF3+2, al + mov ax, [bp+8] + sub ax, word_1D7E4 + mov bx, [bp+0Ah] + mov ds, word_1D7EA + mov word ptr cs:loc_BA4+1, bx + mov word ptr cs:loc_BAC+1, ax + mov word ptr cs:loc_BF6+1, ax + xor ax, ax + mov bp, dx + jmp short loc_BA3 +; --------------------------------------------------------------------------- + nop + +loc_B8A: ; CODE XREF: seg000:0B5Bj seg000:0BA1j + pop ds + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + nop + +loc_B92: ; CODE XREF: seg000:0C3Cj + stc + sbb bp, ax + sub bp, ax + jns short loc_B9E + dec dx + add bp, dx + add bp, dx + +loc_B9E: ; CODE XREF: seg000:0B97j + inc ax + cmp dx, ax + jl short loc_B8A + +loc_BA3: ; CODE XREF: seg000:0B87j + push bp + +loc_BA4: ; DATA XREF: seg000:0B76w + mov bp, 1234h + mov di, ax + +loc_BA9: ; DATA XREF: seg000:0B60w + shr di, 9 + +loc_BAC: ; DATA XREF: seg000:0B7Bw + mov bx, 1234h + mov si, bx + sub si, di + add di, bx + mov bx, si + shl si, 2 + add si, bx + shl si, 4 + mov bx, di + shl di, 2 + add di, bx + shl di, 4 + mov bx, bp + sub bx, dx + mov cx, bx + shr bx, 3 + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov [bx+di], ch + mov [bx+si], ch + mov bx, bp + add bx, dx + mov cx, bx + shr bx, 3 + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov [bx+di], ch + mov [bx+si], ch + mov di, dx + +loc_BF3: ; DATA XREF: seg000:0B64w + shr di, 9 + +loc_BF6: ; DATA XREF: seg000:0B7Fw + mov bx, 1234h + mov si, bx + sub si, di + add di, bx + mov bx, si + shl si, 2 + add si, bx + shl si, 4 + mov bx, di + shl di, 2 + add di, bx + shl di, 4 + mov bx, bp + sub bx, ax + mov cx, bx + shr bx, 3 + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov [bx+di], ch + mov [bx+si], ch + mov bx, bp + add bx, ax + mov cx, bx + shr bx, 3 + and cl, 7 + mov ch, 80h ; '€' + shr ch, cl + mov [bx+di], ch + mov [bx+si], ch + pop bp + jmp loc_B92 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C40 proc far ; CODE XREF: sub_9B14+374P + ; sub_A21F+17P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + mov ax, [bp+arg_6] + mov bx, [bp+arg_2] + test ax, bx + js short loc_CCC + cmp ax, bx + jl short loc_C52 + xchg ax, bx + +loc_C52: ; CODE XREF: sub_C40+Fj + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_1D826 + shl cx, 3 + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_CCC + mov word_1D7DE, ax + mov word_1D7E0, bx + add ax, bx + mov word_1D7E2, ax + mov ax, [bp+arg_4] + mov bx, [bp+arg_0] + test ax, bx + js short loc_CCC + cmp ax, bx + jl short loc_C88 + xchg ax, bx + +loc_C88: ; CODE XREF: sub_C40+45j + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_1D824 + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_CCC + mov word_1D7E4, ax + mov cx, ax + mov word_1D7E6, bx + add ax, bx + mov word_1D7E8, ax + mov ax, word_1D826 + xchg ax, bx + mul bx + mov word_1D7EC, ax + mov ax, bx + shr ax, 4 + mul cx + add ax, word_1D820 + mov word_1D7EA, ax + mov ax, 1 + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_CCC: ; CODE XREF: sub_C40+Bj sub_C40+2Bj ... + xor ax, ax + pop bp + retf 8 +sub_C40 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_CD2 proc far ; CODE XREF: sub_A21F+22P sub_A21F+2DP + push bp + push si + push di + mov ax, word_1D7EA + mov es, ax + mov bx, word_1D7DE + mov di, bx + shr di, 4 + shl di, 1 + add di, word_1D7EC + and bx, 0Fh + lea si, [bx-10h] + shl bx, 1 + mov dx, [bx+28Eh] + not dx + add si, word_1D7E0 + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+290h] + sar si, 4 + js short loc_D26 + lea bp, [si+2Ah] + shl bp, 1 + +loc_D10: ; CODE XREF: sub_CD2+4Dj + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_D10 + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + nop + +loc_D26: ; CODE XREF: sub_CD2+37j + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_D2E: ; CODE XREF: sub_CD2+5Fj + stosw + sub di, bp + jnb short loc_D2E + pop di + pop si + pop bp + retf +sub_CD2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D38 proc far ; CODE XREF: sub_1A9B0+D4P + ; sub_1A9B0+F7P ... + +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_1D7E4 + cmp dx, word_1D7E6 + ja short loc_DB8 + 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_1D7DE + sub cx, ax + sub bx, ax + test cx, bx + js short loc_DB8 + cmp cx, bx + jg short loc_D6A + xchg cx, bx + +loc_D6A: ; CODE XREF: sub_D38+2Ej + cmp bx, 8000h + sbb dx, dx + and bx, dx + mov di, word_1D7E0 + sub cx, di + sbb dx, dx + and cx, dx + add cx, di + sub cx, bx + jl short loc_DB8 + mov es, word_1D7EA + 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+28Eh] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_DB3 + stosw + mov ax, 0FFFFh + rep stosw + +loc_DB3: ; CODE XREF: sub_D38+73j + and ax, [bx+290h] + stosw + +loc_DB8: ; CODE XREF: sub_D38+Fj sub_D38+2Aj ... + pop di + pop bp + retf 6 +sub_D38 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_DBE proc far ; CODE XREF: sub_CEE0+F5P + ; sub_CEE0+106P ... + push bp + push si + push di + cli + add sp, 0Ah + pop bp + pop si + pop di + pop cx + sub sp, 12h + sti + mov ax, word_1D7E4 + sub di, ax + sub bp, ax + mov ax, word_1D7DE + mov dx, word_1D7E6 + mov bx, 505h + cmp ax, cx + jg short loc_DEE + xor bl, 3 + cmp cx, word_1D7E2 + jg short loc_DEE + xor bl, 2 + +loc_DEE: ; CODE XREF: sub_DBE+22j sub_DBE+2Bj + cmp di, dx + jg short loc_DFC + xor bl, 0Ch + or di, di + js short loc_DFC + xor bl, 8 + +loc_DFC: ; CODE XREF: sub_DBE+32j sub_DBE+39j + cmp ax, si + jg short loc_E0C + xor bh, 3 + cmp si, word_1D7E2 + jg short loc_E0C + xor bh, 2 + +loc_E0C: ; CODE XREF: sub_DBE+40j sub_DBE+49j + cmp bp, dx + jg short loc_E1A + xor bh, 0Ch + or bp, bp + js short loc_E1A + xor bh, 8 + +loc_E1A: ; CODE XREF: sub_DBE+50j sub_DBE+57j + test bh, bl + jnz short loc_E85 + or bx, bx + jz short loc_E32 + call sub_66A + jz short loc_E32 + xchg bh, bl + xchg cx, si + xchg di, bp + call sub_66A + jnz short loc_E85 + +loc_E32: ; CODE XREF: sub_DBE+62j sub_DBE+67j + mov es, word_1D7EA + sub si, cx + jnb short loc_E40 + add cx, si + neg si + xchg di, bp + +loc_E40: ; CODE XREF: sub_DBE+7Aj + sub bp, di + sbb dx, dx + mov bx, 50h ; 'P' + add bx, dx + xor bx, dx + add bp, dx + xor dx, bp + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov ax, cx + shr ax, 3 + add di, ax + xor ax, ax + cmp si, dx + jg short loc_EDA + jz short loc_E98 + dec bx + xchg dx, si + div si + mov dx, 8000h + mov bp, ax + and cl, 7 + mov al, dh + shr al, cl + lea cx, [si+1] + +loc_E7C: ; CODE XREF: sub_DBE+C5j sub_DBE+D2j + stosb + add dx, bp + jb short loc_E8C + add di, bx + loop loc_E7C + +loc_E85: ; CODE XREF: sub_DBE+5Ej sub_DBE+72j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_E8C: ; CODE XREF: sub_DBE+C1j + ror al, 1 + adc di, bx + loop loc_E7C + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_E98: ; CODE XREF: sub_DBE+A8j + dec bx + and cl, 7 + mov al, 80h ; '€' + shr al, cl + lea cx, [si+1] + shr cx, 1 + jnb short loc_EAC + stosb + ror al, 1 + adc di, bx + +loc_EAC: ; CODE XREF: sub_DBE+E7j + jcxz short loc_ED4 + shr cx, 1 + jnb short loc_EBC + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + +loc_EBC: ; CODE XREF: sub_DBE+F2j + jcxz short loc_ED4 + +loc_EBE: ; CODE XREF: sub_DBE+114j + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + loop loc_EBE + +loc_ED4: ; CODE XREF: sub_DBE:loc_EACj + ; sub_DBE:loc_EBCj + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_EDA: ; CODE XREF: sub_DBE+A6j + and di, 0FFFEh + or dx, dx + jz short loc_F2E + div si + mov dx, 8000h + mov bp, dx + and cl, 0Fh + shr dx, cl + mov cx, si + inc cx + mov si, ax + xor ax, ax + +loc_EF4: ; CODE XREF: sub_DBE+140j sub_DBE+155j ... + or ax, dx + ror dx, 1 + jb short loc_F0A + add bp, si + jb short loc_F1C + loop loc_EF4 + xchg ah, al + stosw + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F0A: ; CODE XREF: sub_DBE+13Aj + xchg ah, al + stosw + xor ax, ax + add bp, si + jb short loc_F23 + loop loc_EF4 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F1C: ; CODE XREF: sub_DBE+13Ej + xchg ah, al + mov es:[di], ax + xor ax, ax + +loc_F23: ; CODE XREF: sub_DBE+153j + add di, bx + loop loc_EF4 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F2E: ; CODE XREF: sub_DBE+121j + mov bx, cx + and bx, 0Fh + lea cx, [bx+si-10h] + shl bx, 1 + mov ax, [bx+28Eh] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_F50 + stosw + mov ax, 0FFFFh + rep stosw + +loc_F50: ; CODE XREF: sub_DBE+18Aj + and ax, [bx+290h] + stosw + pop di + pop si + pop bp + retf 8 +sub_DBE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F5C proc far ; CODE XREF: sub_9778+2C9P + ; sub_9778+2DAP ... + 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_F5C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F86 proc far ; CODE XREF: sub_9778+2E5P + ; sub_A21F+38P ... + xor al, al + out 7Ch, al + retf +sub_F86 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F8C proc far ; CODE XREF: sub_14511+2DP + ; sub_14511+91P ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = byte ptr 8 + + mov cx, bp + mov bp, sp + mov al, [bp+arg_4] + out 7Ch, al + mov dx, 7Eh ; '~' + mov ax, [bp+arg_0] + out dx, al + mov al, ah + out dx, al + mov ax, [bp+arg_2] + out dx, al + mov al, ah + out dx, al + mov bp, cx + retf 6 +sub_F8C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FAC proc far ; CODE XREF: sub_B4A8+93P sub_B4A8+B4P ... + +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 + + push bp + mov bp, sp + push di + push si + mov es, word_1D7EA + mov ax, [bp+arg_A] + mov bx, [bp+arg_8] + mov cx, [bp+arg_6] + mov dx, [bp+arg_4] + mov si, [bp+arg_2] + mov di, [bp+arg_0] + cmp bx, dx + jl short loc_FCE + xchg ax, cx + xchg bx, dx + +loc_FCE: ; CODE XREF: sub_FAC+1Dj + cmp bx, di + jl short loc_FD5 + xchg ax, si + xchg bx, di + +loc_FD5: ; CODE XREF: sub_FAC+24j + cmp dx, di + jl short loc_FDD + xchg cx, si + xchg dx, di + +loc_FDD: ; CODE XREF: sub_FAC+2Bj + mov [bp+arg_A], ax + mov ax, word_1D7E4 + sub bx, ax + cmp bx, word_1D7E6 + jg short loc_103A + mov [bp+arg_8], bx + mov [bp+arg_6], cx + sub dx, ax + mov [bp+arg_4], dx + mov [bp+arg_2], si + sub di, ax + jl short loc_103A + mov [bp+arg_0], di + mov ax, si + mov si, bx + mov cx, di + mov bx, 1194h + sub cx, si + mov word_1E714, cx + mov dx, [bp+arg_A] + call sub_1C48 + mov dx, [bp+arg_6] + mov bx, 118Ch + mov cx, [bp+arg_4] + cmp cx, si + jnz short loc_1040 + mov ax, [bp+arg_2] + sub di, cx + mov cx, di + call sub_1C48 + imul si, 50h + mov dx, word_1E714 + push 103Ah + jmp loc_2C8C +; --------------------------------------------------------------------------- + nop + +loc_103A: ; CODE XREF: sub_FAC+3Dj sub_FAC+4Fj + pop si + pop di + leave + retf 0Ch +; --------------------------------------------------------------------------- + +loc_1040: ; CODE XREF: sub_FAC+74j + cmp di, cx + jnz short loc_105C + sub cx, si + mov ax, dx + mov dx, [bp+arg_A] + call sub_1C48 + imul si, 50h + mov dx, word_1E714 + push 103Ah + jmp loc_2C8C +; --------------------------------------------------------------------------- + nop + +loc_105C: ; CODE XREF: sub_FAC+96j + sub cx, si + mov di, cx + mov ax, dx + mov dx, [bp+arg_A] + call sub_1C48 + mov ax, [bp+arg_6] + cmp [bp+arg_2], ax + lea dx, [di-1] + imul si, 50h + call loc_2C8C + mov cx, [bp+arg_0] + mov ax, [bp+arg_2] + sub cx, [bp+arg_4] + mov word_1E714, cx + mov dx, [bp+arg_6] + mov bx, 118Ch + call sub_1C48 + mov dx, word_1E714 + call loc_2C8C + pop si + pop di + leave + retf 0Ch +sub_FAC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_109A proc far ; CODE XREF: sub_18DC8+F2P + ; sub_18DC8+112P ... + +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_1D7E4 + mov cx, word_1D7E6 + mov bx, [bp+arg_2] + mov dx, [bp+arg_0] + cmp bx, dx + jl short loc_10B1 + xchg bx, dx + +loc_10B1: ; CODE XREF: sub_109A+13j + sub dx, ax + jl short loc_111A + sub bx, ax + cmp bh, 80h ; '€' + sbb di, di + and bx, di + cmp bx, cx + jg short loc_111A + sub dx, cx + sbb di, di + and dx, di + add dx, cx + mov ax, [bp+arg_4] + cmp ax, word_1D7DE + jl short loc_111A + cmp ax, word_1D7E2 + jg short loc_111A + 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_1D7EA + inc cx + shr cx, 1 + jnb short loc_10FF + stosb + add di, dx + +loc_10FF: ; CODE XREF: sub_109A+60j + shr cx, 1 + jnb short loc_1109 + stosb + add di, dx + stosb + add di, dx + +loc_1109: ; CODE XREF: sub_109A+67j + jcxz short loc_111A + nop + +loc_110C: ; CODE XREF: sub_109A+7Ej + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + loop loc_110C + +loc_111A: ; CODE XREF: sub_109A+19j sub_109A+26j ... + pop di + pop bp + retf 6 +sub_109A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1120 proc far ; CODE XREF: sub_1905A+A9P + ; sub_1905A+DAP ... + +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 + + push bp + mov bp, sp + push di + push si + mov es, word_1D7EA + mov ax, word_1D7E4 + mov cx, word_1D7E6 + mov si, [bp+arg_A] + sub si, ax + js short loc_11AF + mov di, [bp+arg_4] + sub di, ax + js short loc_11AF + cmp si, di + jg short loc_1175 + or di, di + js short loc_11AF + cmp si, cx + jg short loc_11AF + sub di, cx + sbb ax, ax + and di, ax + add di, cx + sub di, si + jl short loc_11AF + mov ax, [bp+arg_2] + mov cx, di + mov bx, 118Ch + mov dx, [bp+arg_8] + call sub_1C48 + mov ax, [bp+arg_0] + mov cx, di + mov bx, 1194h + mov dx, [bp+arg_6] + push 11A7h + jmp sub_1C48 +; --------------------------------------------------------------------------- + +loc_1175: ; CODE XREF: sub_1120+20j + xchg si, di + or di, di + js short loc_11AF + cmp si, cx + jg short loc_11AF + sub di, cx + sbb ax, ax + and di, ax + add di, cx + sub di, si + jl short loc_11AF + mov ax, [bp+arg_8] + mov cx, di + mov bx, 118Ch + mov dx, [bp+arg_2] + call sub_1C48 + mov ax, [bp+arg_6] + mov cx, di + mov bx, 1194h + mov dx, [bp+arg_0] + call sub_1C48 + imul si, 50h + mov dx, di + call loc_2C8C + +loc_11AF: ; CODE XREF: sub_1120+15j sub_1120+1Cj ... + pop si + pop di + leave + retf 0Ch +sub_1120 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11B6 proc far ; CODE XREF: _main:loc_970FP + xor ax, ax + cmp word_1D816, ax + jnz short locret_11D9 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_22D0 + or ax, ax + jz short locret_11D9 + mov word_1D816, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_136E + mov ax, 1 + +locret_11D9: ; CODE XREF: sub_11B6+6j sub_11B6+13j + retf +sub_11B6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_11DA proc far ; CODE XREF: sub_B454+20P + mov ax, word_1D816 + test ax, ax + jz short locret_11F5 + push ax + push ax + xor ax, ax + mov word_1D816, ax + push ax + push cs + call near ptr sub_13DC + nop + push cs + call near ptr sub_23C0 + mov ax, 1 + +locret_11F5: ; CODE XREF: sub_11DA+5j + retf +sub_11DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11F6 proc far ; CODE XREF: _main+32P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + sub sp, 20h + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_8E8 + mov bp, ax + mov ax, 0 + jb short loc_1283 + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_1F2C + mov si, ax + mov ax, 0 + jb short loc_127B + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_1271 + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_1271 + add di, 8 + push si + mov si, 2B8h + mov cx, 4 + repe cmpsw + pop si + jnz short loc_1271 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3B4 + push ds + mov ds, si + mov bx, bp + xor dx, dx + mov cx, 2000h + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + cmp ax, 2000h + jnz short loc_1271 + push si + xor ax, ax + push ax + push cs + call near ptr sub_13DC + mov ax, 1 + jmp short loc_1273 +; --------------------------------------------------------------------------- + +loc_1271: ; CODE XREF: sub_11F6+34j sub_11F6+3Fj ... + xor ax, ax + +loc_1273: ; CODE XREF: sub_11F6+79j + push ax + push si + nop + push cs + call near ptr sub_1F16 + pop ax + +loc_127B: ; CODE XREF: sub_11F6+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_1283: ; CODE XREF: sub_11F6+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_11F6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_128C proc far ; CODE XREF: sub_B92F+4AP sub_B92F+66P ... + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + mov cx, di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_1DAF8 + mov es, di + mov di, [bp+arg_6] + shl di, 1 + mov ah, [bp+arg_2] + mov al, 0 + rol ax, 1 + shr ax, 1 + adc ax, 56h ; 'V' + mov bx, [bp+arg_0] + mov bp, dx + mov es:[di+2000h], bx + stosw + or ah, 80h + mov es:[di+2000h], bx + stosw + mov di, cx + retf 8 +sub_128C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12D0 proc far ; CODE XREF: sub_CACB+1CP sub_CACB+29P ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_1DAF8 + mov es, di + mov di, [bp+arg_8] + shl di, 1 + push ds + lds si, [bp+arg_2] + mov cx, di + mov bx, [bp+arg_0] + mov bp, dx + lodsb + or al, al + jz short loc_1312 + +loc_12FE: ; CODE XREF: sub_12D0+40j + mov ah, al + mov al, 0 + rol ax, 1 + shr ax, 1 + adc al, 56h ; 'V' + stosw + or ah, 80h + stosw + lodsb + or al, al + jnz short loc_12FE + +loc_1312: ; CODE XREF: sub_12D0+2Cj + xchg cx, di + sub cx, di + shr cx, 1 + mov ax, bx + add di, 2000h + rep stosw + pop ds + pop di + pop si + retf 0Ah +sub_12D0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1326 proc near ; CODE XREF: seg000:1362p sub_136E+15p + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov cx, 10h + mov bx, 0 + +loc_1332: ; CODE XREF: sub_1326+1Ej + mov al, bl + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, bl + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + stosw + inc bx + loop loc_1332 + retn +sub_1326 endp + +; --------------------------------------------------------------------------- + nop + push di + mov dx, sp + cli + add sp, 6 + pop di + pop es + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_1326 + mov al, 0Ah + out 68h, al + pop di + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_136E proc far ; CODE XREF: sub_11B6+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_137C: ; CODE XREF: sub_136E+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1326 + inc dl + jnz short loc_137C + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_136E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1392 proc near ; CODE XREF: seg000:13CFp sub_13DC+16p + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov cx, 10h + mov bx, 0 + +loc_139E: ; CODE XREF: sub_1392+1Ej + mov al, bl + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + lodsw + out 0A9h, al ; Interrupt Controller #2, 8259A + mov al, bl + out 0A5h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A9h, al ; Interrupt Controller #2, 8259A + inc bx + loop loc_139E + retn +sub_1392 endp + +; --------------------------------------------------------------------------- + nop + push ds + push si + mov dx, sp + cli + add sp, 8 + pop si + pop ds + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_1392 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_13DC proc far ; CODE XREF: sub_11DA+10p sub_11F6+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_13EB: ; CODE XREF: sub_13DC+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1392 + inc dl + jnz short loc_13EB + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_13DC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1402 proc far ; CODE XREF: sub_9B14+33CP + mov bx, sp + mov bx, ss:[bx+4] + mov cx, bx + ror cx, 1 + cmc + rcr cx, 1 + mov ah, 42h ; 'B' + 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 al, 8 + out 68h, al + mov ax, 0A800h + or bx, bx + jz short loc_1421 + mov ax, 0ABE8h + +loc_1421: ; CODE XREF: sub_1402+1Aj + mov word_1D820, ax + mov word_1D7EA, ax + mov ax, 0 + mov word_1D7DE, ax + mov word_1D7E4, ax + mov ax, 27Fh + mov word_1D7E2, ax + mov word_1D7E0, ax + mov word_1D822, 1F40h + mov ax, 0C8h ; 'È' + mov word_1D824, ax + dec ax + mov word_1D7E8, ax + mov word_1D7E6, ax + mov word_1D7EC, 3E30h + mov word_1D828, 1 + retf 2 +sub_1402 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_145C proc far ; CODE XREF: sub_ECD0+25P + mov ah, 42h ; 'B' + mov ch, 0C0h ; 'À' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov ax, 0A800h + mov word_1D820, ax + mov word_1D7EA, ax + mov word_1D822, 3E80h + xor ax, ax + mov word_1D7DE, ax + mov word_1D7E4, ax + mov es, ax + assume es:seg000 + mov ah, byte ptr es:loc_54B+2 + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_1D828, ax + mov ax, 27Fh + mov word_1D7E2, ax + mov word_1D7E0, ax + mov ax, 190h + mov word_1D824, ax + dec ax + mov word_1D7E8, ax + mov word_1D7E6, ax + mov word_1D7EC, 7CB0h + retf +sub_145C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14AA proc far ; CODE XREF: sub_EA1A+EP sub_EA1A+19P + 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_1D822 + mov es, word_1D820 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_14AA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14CE proc near ; CODE XREF: sub_14E4+25p sub_14E4+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_14CE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14E4 proc far ; CODE XREF: sub_9B14+20P + xor dx, dx + mov cx, word_1D822 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_1F2C + xchg ax, dx + jb short locret_1536 + 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_14CE + call sub_14CE + mov bx, 0B000h + call sub_14CE + call sub_14CE + mov bx, 0B800h + call sub_14CE + call sub_14CE + mov bx, 0E000h + call sub_14CE + call sub_14CE + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_1F16 + mov ax, 1 + +locret_1536: ; CODE XREF: sub_14E4+11j + retf 2 +sub_14E4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_153A proc far ; CODE XREF: sub_20FC+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_158D + 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_158D + 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_1DAFC, 1 + jz short loc_1574 + 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_1574: ; CODE XREF: sub_153A+34j + test cl, 1 + jz short loc_157F + 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_157F: ; CODE XREF: sub_153A+3Dj + test byte ptr es:loc_710+1, 1 + jz short loc_158B + 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_158B: ; CODE XREF: sub_153A+4Bj + mov ax, cx + +locret_158D: ; CODE XREF: sub_153A+Aj sub_153A+1Cj + retf 4 +sub_153A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1590 proc far ; CODE XREF: sub_B454+16P + mov ah, 41h ; 'A' + 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_1590 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1596 proc far ; CODE XREF: sub_B454+CP sub_ED0E+1CP + +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_15B7 + push ax + nop + push cs + call near ptr sub_23C0 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_15B7: ; CODE XREF: sub_1596+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_15D1 + push ax + nop + push cs + call near ptr sub_23C0 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_15D1: ; CODE XREF: sub_1596+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_15DE + push ax + nop + push cs + call near ptr sub_23C0 + +loc_15DE: ; CODE XREF: sub_1596+40j + pop bp + retf 8 +sub_1596 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_15EE + +loc_15E2: ; CODE XREF: sub_15EE+11j sub_15EE+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_15EE +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15EE proc far ; CODE XREF: sub_ED0E+39P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 15E2 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_8E8 + jb short loc_15E2 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_1F2C + jb short loc_15E2 + mov ds, ax + mov word_2166E, bx + mov byte_21672, 0 + mov byte_21673, 0 + mov cx, 4000h + xor dx, dx + mov word_21670, 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_1638: ; CODE XREF: sub_15EE+54j sub_15EE+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_1638 + inc al + loop loc_1638 + mov ax, 0FFF3h + call sub_1B98 + cmp dl, 50h ; 'P' + jnz short loc_15E2 + call sub_1B98 + cmp dl, 69h ; 'i' + jnz short loc_15E2 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_1663: ; CODE XREF: sub_15EE+7Cj + inc ax + call sub_1B98 + cmp dl, 1Ah + jnz short loc_1663 + stosw + +loc_166D: ; CODE XREF: sub_15EE+84j + call sub_1B98 + or dl, dl + jnz short loc_166D + call sub_1B98 + mov al, dl + stosb + mov byte_2166C, al + call sub_1B98 + mov ah, dl + call sub_1B98 + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_1692 + jmp loc_15E2 +; --------------------------------------------------------------------------- + +loc_1692: ; CODE XREF: sub_15EE+9Fj + call sub_1B98 + cmp dl, 4 + jz short loc_169D + jmp loc_15E2 +; --------------------------------------------------------------------------- + +loc_169D: ; CODE XREF: sub_15EE+AAj + mov al, dl + stosb + call sub_1B98 + mov al, dl + call sub_1B98 + mov ah, dl + stosw + call sub_1B98 + mov al, dl + call sub_1B98 + mov ah, dl + stosw + call sub_1B98 + mov ah, dl + call sub_1B98 + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_1DB12, 0Ah + nop + push cs + call near ptr sub_2218 + pop ds + stosw + jb short loc_16EE + push es + push di + mov es, ax + xor di, di + +loc_16E2: ; CODE XREF: sub_15EE+FBj + call sub_1B98 + mov al, dl + stosb + dec bx + jnz short loc_16E2 + pop di + pop es + nop + +loc_16EE: ; CODE XREF: sub_15EE+ECj + call sub_1B98 + mov ah, dl + call sub_1B98 + mov al, dl + stosw + mov word_21560, ax + mov bx, ax + call sub_1B98 + mov ah, dl + call sub_1B98 + mov al, dl + stosw + mov word_21562, ax + add ax, 2 + mul bx + shr dx, 1 + rcr ax, 1 + push ds + push dx + push ax + shl dx, 0Ch + mov word_21568, ax + mov word_2156A, dx + push seg dseg + pop ds + mov word_1DB12, 0Ah + nop + push cs + call near ptr sub_2218 + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_173C + jmp loc_15E2 +; --------------------------------------------------------------------------- + +loc_173C: ; CODE XREF: sub_15EE+149j + mov ax, bx + mov word ptr dword_21564, 0 + mov word ptr dword_21564+2, ax + add word_2156A, ax + mov cx, word_21560 + push es + les bx, [bp+arg_0] + mov es:[bx], cx + mov es:[bx+2], ax + pop es + shl byte_2166C, 1 + jb short loc_176E + mov bl, 30h ; '0' + nop + +loc_1764: ; CODE XREF: sub_15EE+17Ej + call sub_1B98 + mov al, dl + stosb + dec bl + jnz short loc_1764 + +loc_176E: ; CODE XREF: sub_15EE+171j + xor bl, bl + call sub_1AAA + mov bl, dl + mov al, dl + shl al, 4 + call sub_1AAA + or al, dl + les di, dword_21564 + mov cx, word_21560 + rep stosb + mov cl, 0FFh + nop + +loc_178C: ; CODE XREF: sub_15EE+490j + ; sub_15EE+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, byte_21672 + mov cl, byte_21673 + cmp cl, ch + jnb short loc_17B8 + shl dx, cl + mov si, word_21670 + cmp si, 4000h + jnz short loc_17AC + call sub_1BC4 + +loc_17AC: ; CODE XREF: sub_15EE+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21670, si + nop + +loc_17B8: ; CODE XREF: sub_15EE+1ADj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21672, dl + mov byte_21673, ch + mov dl, dh + mov dh, 0 + pop cx + mov bl, dl + cmp dl, 3 + jnz short loc_1806 + push cx + mov dl, byte_21672 + mov cl, byte_21673 + mov dh, 0 + dec cl + jns short loc_17F8 + mov si, word_21670 + cmp si, 4000h + jnz short loc_17EE + call sub_1BC4 + +loc_17EE: ; CODE XREF: sub_15EE+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_17F8: ; CODE XREF: sub_15EE+1F1j + shl dl, 1 + mov byte_21672, dl + mov byte_21673, cl + adc bl, 0 + pop cx + +loc_1806: ; CODE XREF: sub_15EE+1E2j + cmp bl, cl + jnz short loc_187A + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_1820 + 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_1820: ; CODE XREF: sub_15EE+223j + and bl, 0Fh + nop + +loc_1824: ; CODE XREF: sub_15EE+284j + call sub_1AAA + mov bl, dl + mov al, dl + shl al, 4 + call sub_1AAA + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_1842 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1842: ; CODE XREF: sub_15EE+24Aj + mov dl, byte_21672 + mov cl, byte_21673 + mov dh, 0 + dec cl + jns short loc_1868 + mov si, word_21670 + cmp si, 4000h + jnz short loc_185E + call sub_1BC4 + nop + +loc_185E: ; CODE XREF: sub_15EE+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_1868: ; CODE XREF: sub_15EE+260j + shl dl, 1 + mov byte_21672, dl + mov byte_21673, cl + jb short loc_1824 + mov cl, 0FFh + jmp loc_1A78 +; --------------------------------------------------------------------------- + nop + +loc_187A: ; CODE XREF: sub_15EE+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, byte_21672 + mov cl, byte_21673 + nop + +loc_188A: ; CODE XREF: sub_15EE+2BCj + inc bh + dec cl + jns short loc_18A8 + mov si, word_21670 + cmp si, 4000h + jnz short loc_189E + call sub_1BC4 + nop + +loc_189E: ; CODE XREF: sub_15EE+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_18A8: ; CODE XREF: sub_15EE+2A0j + shl dl, 1 + jb short loc_188A + mov byte_21672, dl + mov byte_21673, cl + mov dh, 0 + dec bh + jnz short loc_18BD + jmp loc_1954 +; --------------------------------------------------------------------------- + +loc_18BD: ; CODE XREF: sub_15EE+2CAj + cmp bh, 8 + jl short loc_1902 + mov cx, bp + +loc_18C4: ; CODE XREF: sub_15EE+30Fj + push cx + mov si, word_21670 + cmp si, 4000h + jnz short loc_18D2 + call sub_1BC4 + +loc_18D2: ; CODE XREF: sub_15EE+2DFj + mov dh, 0 + mov dl, [si] + inc si + mov word_21670, si + mov cl, byte_21673 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_21672 + 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_18C4 + mov bp, cx + nop + +loc_1902: ; CODE XREF: sub_15EE+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, byte_21672 + mov cl, byte_21673 + cmp cl, ch + jnb short loc_192E + shl dx, cl + mov si, word_21670 + cmp si, 4000h + jnz short loc_1922 + call sub_1BC4 + +loc_1922: ; CODE XREF: sub_15EE+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21670, si + nop + +loc_192E: ; CODE XREF: sub_15EE+323j + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21672, dl + mov byte_21673, 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_1954: ; CODE XREF: sub_15EE+2CCj + mov cx, ax + test bl, bl + jnz short loc_195D + jmp loc_19FA +; --------------------------------------------------------------------------- + +loc_195D: ; CODE XREF: sub_15EE+36Aj + mov bh, 0 + mov ax, word_21560 + cmp bl, 1 + jz short loc_197C + cmp bl, 2 + jnz short loc_1972 + shl ax, 1 + adc bh, bh + jmp short loc_197C +; --------------------------------------------------------------------------- + +loc_1972: ; CODE XREF: sub_15EE+37Cj + dec ax + cmp bl, 3 + jz short loc_197C + add ax, 2 + nop + +loc_197C: ; CODE XREF: sub_15EE+377j + ; sub_15EE+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_1990 + sub dx, 1000h + nop + +loc_1990: ; CODE XREF: sub_15EE+39Bj + mov ds, dx + or bh, bh + jnz short loc_19D2 + mov ax, cx + +loc_1998: ; CODE XREF: sub_15EE+3DEj + mov cx, si + cmp si, di + ja short loc_19A0 + mov cx, di + +loc_19A0: ; CODE XREF: sub_15EE+3AEj + neg cx + test ax, ax + jz short loc_19AE + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_19AE: ; CODE XREF: sub_15EE+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_19BE + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_19BE: ; CODE XREF: sub_15EE+3C6j + or si, si + jnz short loc_19CA + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_19CA: ; CODE XREF: sub_15EE+3D2j + test ax, ax + jnz short loc_1998 + pop ds + assume ds:dseg + jmp loc_1A76 +; --------------------------------------------------------------------------- + +loc_19D2: ; CODE XREF: sub_15EE+3A6j + ; sub_15EE:loc_19F4j + lodsb + mov ah, al + or si, si + jnz short loc_19E2 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_19E2: ; CODE XREF: sub_15EE+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_19F4 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_19F4: ; CODE XREF: sub_15EE+3FCj + loop loc_19D2 + pop ds + assume ds:dseg + jmp short loc_1A76 +; --------------------------------------------------------------------------- + nop + +loc_19FA: ; CODE XREF: sub_15EE+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1A10 + 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_1A10: ; CODE XREF: sub_15EE+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1A32 + nop + +loc_1A1A: ; CODE XREF: sub_15EE:loc_1A28j + ; sub_15EE+43Fj + stosb + or di, di + jnz short loc_1A28 + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_1A28: ; CODE XREF: sub_15EE+42Fj + loop loc_1A1A + sub bp, 1 + jnb short loc_1A1A + jmp short loc_1A76 +; --------------------------------------------------------------------------- + nop + +loc_1A32: ; CODE XREF: sub_15EE+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_1A4A + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_1A4A: ; CODE XREF: sub_15EE+44Dj + ; sub_15EE:loc_1A6Ej ... + mov al, dl + stosb + or di, di + jnz short loc_1A58 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1A58: ; CODE XREF: sub_15EE+461j + loop loc_1A60 + sub bp, 1 + jb short loc_1A76 + nop + +loc_1A60: ; CODE XREF: sub_15EE:loc_1A58j + mov al, bh + stosb + or di, di + jnz short loc_1A6E + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1A6E: ; CODE XREF: sub_15EE+477j + loop loc_1A4A + sub bp, 1 + jnb short loc_1A4A + nop + +loc_1A76: ; CODE XREF: sub_15EE+3E1j + ; sub_15EE+409j ... + mov cl, bl + +loc_1A78: ; CODE XREF: sub_15EE+288j + cmp word_21568, di + jbe short loc_1A81 + jmp loc_178C +; --------------------------------------------------------------------------- + +loc_1A81: ; CODE XREF: sub_15EE+48Ej + mov ax, es + cmp word_2156A, ax + jbe short loc_1A8C + jmp loc_178C +; --------------------------------------------------------------------------- + +loc_1A8C: ; CODE XREF: sub_15EE+499j + mov ah, 3Eh ; '>' + mov bx, word_2166E + 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_1F16 + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_15EE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1AAA proc near ; CODE XREF: sub_15EE+182p + ; sub_15EE+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, byte_21672 + mov cl, byte_21673 + dec cl + jns short loc_1AD2 + mov si, word_21670 + cmp si, 4000h + jnz short loc_1AC8 + call sub_1BC4 + +loc_1AC8: ; CODE XREF: sub_1AAA+19j + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_1AD2: ; CODE XREF: sub_1AAA+Fj + shl dl, 1 + jb short loc_1B20 + add al, 2 + dec cl + jns short loc_1AF4 + mov si, word_21670 + cmp si, 4000h + jnz short loc_1AEA + call sub_1BC4 + nop + +loc_1AEA: ; CODE XREF: sub_1AAA+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_1AF4: ; CODE XREF: sub_1AAA+30j + shl dl, 1 + jnb short loc_1B20 + add al, 2 + inc ah + dec cl + jns short loc_1B18 + mov si, word_21670 + cmp si, 4000h + jnz short loc_1B0E + call sub_1BC4 + nop + +loc_1B0E: ; CODE XREF: sub_1AAA+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov word_21670, si + nop + +loc_1B18: ; CODE XREF: sub_1AAA+54j + shl dl, 1 + jnb short loc_1B20 + add al, 4 + inc ah + +loc_1B20: ; CODE XREF: sub_1AAA+2Aj sub_1AAA+4Cj ... + mov byte_21672, dl + mov byte_21673, cl + mov ch, ah + inc ch + push cx + mov dh, 0 + mov dl, byte_21672 + mov cl, byte_21673 + cmp cl, ch + jnb short loc_1B56 + shl dx, cl + mov si, word_21670 + cmp si, 4000h + jnz short loc_1B4A + call sub_1BC4 + +loc_1B4A: ; CODE XREF: sub_1AAA+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21670, si + nop + +loc_1B56: ; CODE XREF: sub_1AAA+8Fj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21672, dl + mov byte_21673, 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_1B8A + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_1B8A: ; CODE XREF: sub_1AAA+D9j sub_1AAA+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_1B8A + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1AAA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1B98 proc near ; CODE XREF: sub_15EE+5Dp sub_15EE+65p ... + push cx + mov si, word_21670 + cmp si, 4000h + jnz short loc_1BA6 + call sub_1BC4 + +loc_1BA6: ; CODE XREF: sub_1B98+9j + mov dh, 0 + mov dl, [si] + inc si + mov word_21670, si + mov cl, byte_21673 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_21672 + or dl, dh + mov dh, 0 + pop cx + retn +sub_1B98 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1BC4 proc near ; CODE XREF: sub_15EE+1BBp + ; sub_15EE+1FDp ... + pusha + mov ah, 3Fh ; '?' + mov bx, word_2166E + 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_1BC4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BD6 proc far ; CODE XREF: sub_E9C0+15P + ; sub_10405+3EP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov cx, [bp+arg_2] + mov bp, [bp+arg_0] + mov ax, cx + or ax, bp + jz short loc_1C3D + mov ax, cx + cwd + xor ax, dx + sub ax, dx + mov bx, ax + mov ax, bp + cwd + xor ax, dx + sub ax, dx + mov dx, ax + cmp dx, bx + jz short loc_1C12 + jl short loc_1C16 + mov ax, bx + mov bx, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 178h + xlat + jmp short loc_1C2A +; --------------------------------------------------------------------------- + nop + +loc_1C12: ; CODE XREF: sub_1BD6+23j + mov al, 20h ; ' ' + jmp short loc_1C2A +; --------------------------------------------------------------------------- + +loc_1C16: ; CODE XREF: sub_1BD6+25j + mov ax, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 178h + xlat + neg al + add al, 40h ; '@' + +loc_1C2A: ; CODE XREF: sub_1BD6+39j sub_1BD6+3Ej + xor ah, ah + or bp, bp + jge short loc_1C35 + neg ax + add ax, 80h ; '€' + +loc_1C35: ; CODE XREF: sub_1BD6+58j + or cx, cx + jge short loc_1C3B + neg al + +loc_1C3B: ; CODE XREF: sub_1BD6+61j + xor ah, ah + +loc_1C3D: ; CODE XREF: sub_1BD6+Dj + pop bp + retf 4 +sub_1BD6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1C42 proc far ; CODE XREF: sub_EA1A+37P + nop + push cs + call near ptr sub_6DE + retf +sub_1C42 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1C48 proc near ; CODE XREF: sub_FAC+66p sub_FAC+7Dp ... + 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_1C48 endp + +; --------------------------------------------------------------------------- + nop + +loc_1C7E: ; CODE XREF: sub_536:loc_54Bp + ; sub_536+36p ... + cld + push si + mov ax, word_1D834 + 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_1CA4 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1CA4: ; CODE XREF: seg000:1C9Bj + mov si, 11BAh + mov dl, 64h ; 'd' + cmp word_1D866, bx + jnz short loc_1CE8 + +loc_1CAF: ; CODE XREF: seg000:1CE3j + 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_1CAF + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1CE8: ; CODE XREF: seg000:1CADj + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1CFD + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1CFD: ; CODE XREF: seg000:1CF4j + shr al, 1 + cmc + sbb al, al + mov cs:byte_1D66, al + mov dx, bx + push di + mov di, 0 + +loc_1D0C: ; CODE XREF: seg000:1D83j + 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_1D41 + mov bh, al + +loc_1D41: ; CODE XREF: seg000:1D3Dj + cmp bh, bl + ja short loc_1D47 + mov bh, bl + +loc_1D47: ; CODE XREF: seg000:1D43j + 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_1D66 db 0 ; DATA XREF: seg000:1D02w +; --------------------------------------------------------------------------- + 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_1D0C + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D88 proc far ; CODE XREF: sub_2A28+2Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + push word ptr es:0 + push cs + call near ptr sub_472 + push [bp+arg_0] + push cs + call near ptr sub_23C0 + pop bp + retf 2 +sub_1D88 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + call word ptr es:2 + pop bp + retf 2 +; --------------------------------------------------------------------------- + nop + cmp word ptr es:1Ah, 0 + jz short loc_1DD0 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1DD0: ; CODE XREF: seg000:1DB8j + call word ptr es:4 + test ah, ah + jnz short locret_1DFF + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1DFF + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1DFE + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1DFE: ; CODE XREF: seg000:1DECj + pop ax + +locret_1DFF: ; CODE XREF: seg000:1DD7j seg000:1DE2j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1E00 proc near ; CODE XREF: seg000:1E44p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1E1D + ja short loc_1E19 + cmp ax, es:6 + jb short loc_1E1D + +loc_1E19: ; CODE XREF: sub_1E00+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1E1D: ; CODE XREF: sub_1E00+Ej sub_1E00+17j + add ax, 1 + adc dx, 0 + mov es:0Ah, ax + mov es:0Ch, dx + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + push es + push word ptr es:0 + push cs + call near ptr sub_506 + pop es + retn +sub_1E00 endp + +; --------------------------------------------------------------------------- + call sub_1E00 + or ah, ah + jnz short locret_1E50 + xor al, es:1Eh + +locret_1E50: ; CODE XREF: seg000:1E49j + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+8] + mov di, [bp+0Ah] + test si, si + jz short loc_1E75 + +loc_1E62: ; CODE XREF: seg000:1E73j + mov es, word ptr [bp+6] + call word ptr es:2 + inc ah + jz short loc_1E75 + mov es, word ptr [bp+0Ch] + stosb + dec si + jnz short loc_1E62 + +loc_1E75: ; CODE XREF: seg000:1E60j seg000:1E6Cj + mov ax, di + sub ax, [bp+0Ah] + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_63A + pop bp + retf 2 +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push di + mov es, word ptr [bp+0Ah] + inc word ptr [bp+8] + mov di, [bp+6] + or di, di + jz short loc_1ED9 + +loc_1ECD: ; CODE XREF: seg000:1ED7j seg000:1EDCj + call word ptr es:2 + test ah, ah + jnz short loc_1EDE + dec di + jnz short loc_1ECD + +loc_1ED9: ; CODE XREF: seg000:1ECBj + dec word ptr [bp+8] + jnz short loc_1ECD + +loc_1EDE: ; CODE XREF: seg000:1ED4j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1EEC proc far ; CODE XREF: sub_9EBF:loc_A1A8P + ; sub_A3FA:loc_A3FEP ... + mov ax, 4E35h + mul word ptr dword_1D872+2 + mov cx, ax + mov ax, 15Ah + mul word ptr dword_1D872 + add cx, ax + mov ax, 4E35h + mul word ptr dword_1D872 + add ax, 1 + adc dx, cx + mov word ptr dword_1D872, ax + mov ax, dx + mov word ptr dword_1D872+2, ax + and ah, 7Fh + retf +sub_1EEC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1F16 proc far ; CODE XREF: sub_412+57p sub_11F6+81p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_1E75A, bx + pop bx + retf 2 +sub_1F16 endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_1F2C + +loc_1F26: ; CODE XREF: sub_1F2C+5j + push cs + call near ptr sub_2294 + jb short loc_1F5B +; END OF FUNCTION CHUNK FOR sub_1F2C + +; =============== S U B R O U T I N E ======================================= + + +sub_1F2C proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 1F26 SIZE 00000006 BYTES + + cmp word_1DB0E, 0 + jz short loc_1F26 + 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_1E75A + add bx, ax + jb short loc_1F5A + cmp word_1E756, bx + jb short loc_1F5A + mov word_1E75A, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_1F5A: ; CODE XREF: sub_1F2C+1Ej sub_1F2C+24j + pop bx + +loc_1F5B: ; CODE XREF: sub_1F2C-2j + mov ax, 0FFF8h + retf 2 +sub_1F2C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1F62 proc near ; CODE XREF: sub_2BC4+1Ep sub_2BEE+2p + mov dx, 188h + +loc_1F65: ; CODE XREF: sub_1F62+6j + in al, dx + test al, 80h + jnz short loc_1F65 + mov al, bh + out dx, al + +loc_1F6D: ; CODE XREF: sub_1F62+Ej + in al, dx + test al, 80h + jnz short loc_1F6D + inc dx + inc dx + mov al, bl + out dx, al + retn +sub_1F62 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1F78 proc near ; CODE XREF: sub_2BC4+15p + mov dx, 188h + +loc_1F7B: ; CODE XREF: sub_1F78+6j + in al, dx + test al, 80h + jnz short loc_1F7B + mov al, bh + out dx, al + +loc_1F83: ; CODE XREF: sub_1F78+Ej + in al, dx + test al, 80h + jnz short loc_1F83 + inc dx + inc dx + in al, dx + retn +sub_1F78 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1F8C proc far ; CODE XREF: sub_B8F7+1DP sub_B8F7+31P + push di + pushf + cli + add sp, 8 + pop ax + pop dx + pop bx + pop cx + mov di, cx + shl di, 1 + shl di, 1 + add di, cx + shl di, 1 + add di, word_1DAF8 + add di, 200h + mov es, di + pop di + sub sp, 12h + popf + sub bx, di + inc bx + sub dx, cx + mov cx, dx + shl dx, 1 + shl dx, 1 + add dx, cx + shl dx, 1 + shl dx, 1 + shl dx, 1 + shl dx, 1 + add di, dx + shl di, 1 + lea dx, [bx+50h] + shl dx, 1 + nop + +loc_1FCE: ; CODE XREF: sub_1F8C+48j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_1FCE + pop di + retf 0Ah +sub_1F8C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1FDA proc far ; CODE XREF: sub_B454+1BP sub_EA1A+32P + 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_1FDA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1FEC proc far ; CODE XREF: sub_9B14+19P sub_B8F7+9P + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + mov bx, bp + mov bp, sp + push di + xor ax, ax + mov es, ax + assume es:seg000 + mov al, byte ptr es:loc_712 + inc ax + mov dx, ax + shl dx, 1 + shl dx, 1 + add dx, ax + mov cl, 4 + shl dx, cl + mov cx, dx + mov es, word_1DAF8 + assume es:nothing + xor di, di + mov ax, [bp+arg_2] + rep stosw + mov cx, dx + mov di, 2000h + mov ax, [bp+arg_0] + rep stosw + pop di + mov bp, bx + retf 4 +sub_1FEC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2024 proc far ; CODE XREF: sub_15D53+117P + ; sub_15D53+126P + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_1DAF8 + mov es, di + assume es:nothing + mov di, [bp+arg_6] + shl di, 1 + push ds + lds si, [bp+arg_0] + mov bp, dx + mov bx, 0FEDFh + mov cx, 7F7Fh + mov dx, 9F80h + lodsb + or al, al + jz short loc_2080 + +loc_2056: ; CODE XREF: sub_2024+5Aj + xor ah, ah + cmp al, dl + jbe short loc_207A + cmp al, dh + jbe short loc_2064 + cmp al, bl + jbe short loc_207A + +loc_2064: ; CODE XREF: sub_2024+3Aj + mov ah, al + lodsb + shl ah, 1 + cmp al, dh + jnb short loc_2071 + cmp al, dl + adc ax, bx + +loc_2071: ; CODE XREF: sub_2024+47j + sbb al, bh + and ax, cx + xchg ah, al + stosw + or ah, dl + +loc_207A: ; CODE XREF: sub_2024+36j sub_2024+3Ej + stosw + lodsb + or al, al + jnz short loc_2056 + +loc_2080: ; CODE XREF: sub_2024+30j + pop ds + pop di + pop si + retf 8 +sub_2024 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2086 proc far ; CODE XREF: sub_CB81+146P + ; sub_E3F2+36P ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_1DAF8 + mov es, di + mov di, [bp+arg_8] + shl di, 1 + mov cx, di + push [bp+arg_0] + push ds + lds si, [bp+arg_2] + mov bp, dx + mov bx, 0FEDFh + mov dx, 9F80h + lodsb + or al, al + jz short loc_20E5 + +loc_20BA: ; CODE XREF: sub_2086+5Dj + xor ah, ah + cmp al, dl + jbe short loc_20DF + cmp al, dh + jbe short loc_20C8 + cmp al, bl + jbe short loc_20DF + +loc_20C8: ; CODE XREF: sub_2086+3Cj + mov ah, al + lodsb + shl ah, 1 + cmp al, dh + jnb short loc_20D5 + cmp al, dl + adc ax, bx + +loc_20D5: ; CODE XREF: sub_2086+49j + sbb al, bh + and ax, 7F7Fh + xchg ah, al + stosw + or al, dl + +loc_20DF: ; CODE XREF: sub_2086+38j sub_2086+40j + stosw + lodsb + or al, al + jnz short loc_20BA + +loc_20E5: ; CODE XREF: sub_2086+32j + pop ds + xchg cx, di + sub cx, di + shr cx, 1 + add di, 2000h + pop ax + rep stosw + pop di + pop si + retf 0Ah +sub_2086 endp + +; --------------------------------------------------------------------------- +dword_20F8 dd 0 ; DATA XREF: sub_20FC+5Ew seg000:2167r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_20FC proc far ; CODE XREF: sub_ECD0+1BP + xor ax, ax + push ax + push ax + push cs + call near ptr sub_153A + and ax, 0Ch + cmp ax, 0Ch + mov word_1DB02, 33FFh + jz short loc_2118 + mov word_1DB02, 0 + +loc_2118: ; CODE XREF: sub_20FC+14j + xor ax, ax + mov word_1E74A, ax + mov word_1E74C, ax + cmp byte_1DB04, al + jnz short locret_2165 + mov al, 0Ah + push ax + push cs + mov ax, 2170h + push ax + nop + push cs + call near ptr sub_6E4 + mov word_1E74E, ax + mov word_1E750, 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_1DB04, ah + mov ax, 18h + push ax + push cs + mov ax, 2166h + push ax + nop + push cs + call near ptr sub_6E4 + mov word ptr cs:dword_20F8, ax + mov word ptr cs:dword_20F8+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_2165: ; CODE XREF: sub_20FC+28j + retf +sub_20FC endp + +; --------------------------------------------------------------------------- + pushf + call cs:dword_20F8 + out 64h, al ; AT Keyboard controller 8042. + iret +; --------------------------------------------------------------------------- + nop + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_1DB02 + add word_1E752, ax + jb short loc_21A1 + inc word_1E74A + inc word_1E74C + cmp word_1DB00, 0 + jz short loc_21A1 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_1DAFE + pop es + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_21A1: ; CODE XREF: seg000:217Ej seg000:218Dj + 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_21AA proc far ; CODE XREF: sub_EA1A+28P + cmp byte_1DB04, 0 + jz short locret_21F0 + mov ax, 18h + push ax + push word ptr cs:dword_20F8+2 + push word ptr cs:dword_20F8 + nop + push cs + call near ptr sub_6E4 + 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_1E750 + push word_1E74E + nop + push cs + call near ptr sub_6E4 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_1DB04 + 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_1DB04, al + +locret_21F0: ; CODE XREF: sub_21AA+5j + retf +sub_21AA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_21F2 proc far ; CODE XREF: sub_536+10p sub_536+21p + cmp byte_1DB04, 0 + jnz short loc_220E + +loc_21F9: ; CODE XREF: sub_21F2+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_21F9 + +loc_2203: ; CODE XREF: sub_21F2+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2203 + retf +; --------------------------------------------------------------------------- + +loc_220E: ; CODE XREF: sub_21F2+5j + mov ax, word_1E74A + +loc_2211: ; CODE XREF: sub_21F2+23j + cmp ax, word_1E74A + jz short loc_2211 + retf +sub_21F2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2218 proc far ; CODE XREF: sub_15EE+E7p + ; sub_15EE+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_2244 + rcr bx, 1 + push bx + push cs + call near ptr sub_22D0 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_2244: ; CODE XREF: sub_2218+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_2218 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_224C proc far ; CODE XREF: sub_ECD0+6P + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_2267 + push ax + push bx + push cs + call near ptr sub_226E + xor ax, ax + mov word_1DB10, 1 + +loc_2267: ; CODE XREF: sub_224C+Bj + neg ax + pop bx + retf 2 +sub_224C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_226E proc far ; CODE XREF: sub_224C+10p sub_2294+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_1DB0E, ax + mov word_1E75A, ax + add ax, [bp+arg_0] + mov word_1E754, ax + mov word_1E756, ax + mov word_1E758, 0 + mov word_1DB10, 0 + clc + pop bp + retf 4 +sub_226E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2294 proc far ; CODE XREF: sub_1F2C-5p sub_22D0+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_1DB14 + cmp bx, ax + jbe short loc_22A5 + sub bx, ax + +loc_22A5: ; CODE XREF: sub_2294+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_22B9 + push ax + push ax + push bx + push cs + call near ptr sub_226E + mov word_1DB10, 1 + pop ax + +loc_22B9: ; CODE XREF: sub_2294+15j + pop bx + retf +sub_2294 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_22BC proc far ; CODE XREF: seg000:0585p sub_24D0+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_22D7 +sub_22BC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22D0 proc far ; CODE XREF: sub_11B6+Ep sub_2218+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_22D7: ; CODE XREF: sub_22BC+12j + cmp word_1DB0E, 0 + jnz short loc_22E2 + push cs + call near ptr sub_2294 + +loc_22E2: ; CODE XREF: sub_22D0+Cj + push cx + push es + test bx, bx + jz short loc_2343 + mov ax, word_1E754 + sub ax, word_1E75A + cmp bx, ax + jnb short loc_2343 + inc bx + mov ax, word_1E758 + test ax, ax + jz short loc_231F + mov cx, word_1E754 + +loc_22FF: ; CODE XREF: sub_22D0+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_231B + mov cx, es + add cx, bx + jb short loc_2317 + cmp cx, ax + jbe short loc_2350 + +loc_2317: ; CODE XREF: sub_22D0+41j + mov cx, word_1E754 + +loc_231B: ; CODE XREF: sub_22D0+3Bj + cmp ax, cx + jnz short loc_22FF + +loc_231F: ; CODE XREF: sub_22D0+29j + mov ax, word_1E756 + mov cx, ax + sub ax, bx + jb short loc_2343 + cmp ax, word_1E75A + jb short loc_2343 + mov word_1E756, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_23A9 +; --------------------------------------------------------------------------- + +loc_2343: ; CODE XREF: sub_22D0+16j sub_22D0+21j ... + mov ax, 0 + mov word_1DB12, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2350: ; CODE XREF: sub_22D0+45j + sub ax, cx + cmp ax, 1 + jbe short loc_2380 + 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_1E758 + jnz short loc_23A9 + mov word_1E758, cx + jmp short loc_23A9 +; --------------------------------------------------------------------------- + +loc_2380: ; CODE XREF: sub_22D0+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_1E758 + jnz short loc_23A9 + mov ax, word_1E754 + mov cx, bx + push bx + +loc_2395: ; CODE XREF: sub_22D0+D0j + les cx, es:0 + jcxz short loc_23A4 + mov bx, es + cmp bx, ax + jb short loc_2395 + xor bx, bx + +loc_23A4: ; CODE XREF: sub_22D0+CAj + mov word_1E758, bx + pop bx + +loc_23A9: ; CODE XREF: sub_22D0+71j sub_22D0+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_1DB12 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_23BA: ; CODE XREF: sub_23C0+12j sub_23C0+1Aj + pop es + pop cx + pop bx + retf 2 +sub_22D0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_23C0 proc far ; CODE XREF: sub_472+11p seg000:05B9p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_1E756 + jz short loc_2424 + jb short loc_23BA + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_23BA + mov es:[bx], bx + mov cx, word_1E758 + mov ax, es + mov word_1E758, ax + jcxz short loc_2461 + cmp ax, cx + jb short loc_23F3 + mov ax, cx + mov word_1E758, ax + +loc_23F3: ; CODE XREF: sub_23C0+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_1E754 + jnz short loc_2401 + mov ax, es + +loc_2401: ; CODE XREF: sub_23C0+3Dj + push ds + +loc_2402: ; CODE XREF: sub_23C0+4Dj sub_23C0+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_2421 + cmp [bx], bx + jnz short loc_2402 + +loc_240F: ; CODE XREF: sub_23C0+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_2402 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_240F + +loc_2421: ; CODE XREF: sub_23C0+49j + pop ds + jmp short loc_2461 +; --------------------------------------------------------------------------- + +loc_2424: ; CODE XREF: sub_23C0+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_1E756, ax + cmp ax, word_1E754 + jz short loc_2461 + mov es, ax + cmp es:[bx], bx + jnz short loc_2461 + mov ax, es:[bx+2] + mov word_1E756, ax + mov cx, word_1E754 + cmp ax, cx + jz short loc_245D + jmp short loc_2454 +; --------------------------------------------------------------------------- + nop + +loc_244C: ; CODE XREF: sub_23C0+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_245D + +loc_2454: ; CODE XREF: sub_23C0+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_244C + mov bx, es + +loc_245D: ; CODE XREF: sub_23C0+87j sub_23C0+92j + mov word_1E758, bx + +loc_2461: ; CODE XREF: sub_23C0+28j sub_23C0+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_23C0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2468 proc far ; CODE XREF: sub_EA1A+2DP + cmp word_1DB0E, 0 + jz short loc_2483 + mov ax, word_1DB0E + mov es, ax + xor ax, ax + cmp word_1DB10, ax + mov word_1DB0E, ax + jz short loc_2483 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2483: ; CODE XREF: sub_2468+5j sub_2468+15j + mov ax, 1 + retf +sub_2468 endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_248C proc far ; CODE XREF: sub_B454+11P + cmp word_1DB36, 0 + jz short locret_24BB + push word_1DB36 + push cs + call near ptr sub_23C0 + mov word_1DB36, 0 + jmp short loc_24A9 +; --------------------------------------------------------------------------- + +loc_24A3: ; CODE XREF: sub_248C+22j + dec ax + push ax + push cs + call near ptr sub_267A + +loc_24A9: ; CODE XREF: sub_248C+15j + mov ax, word_1DB38 + test ax, ax + jnz short loc_24A3 + cmp word_1DB3A, 0 + jz short locret_24BB + call word_1DB3A + +locret_24BB: ; CODE XREF: sub_248C+5j sub_248C+29j + retf +sub_248C endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_24D0 + +loc_24BC: ; CODE XREF: sub_24D0+32j + push ax + push es + push cs + call near ptr sub_23C0 + pop ax + jmp short loc_24C9 +; END OF FUNCTION CHUNK FOR sub_24D0 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_24D0 + +loc_24C6: ; CODE XREF: sub_24D0+24j + mov ax, 0FFF8h + +loc_24C9: ; CODE XREF: sub_24D0-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_24D0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_24D0 proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 24BC SIZE 00000009 BYTES +; FUNCTION CHUNK AT 24C6 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_1DB38 + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_1DB12, 4 + push ax + push cs + call near ptr sub_22BC + jb short loc_24C6 + mov es, ax + push word_1DB38 + push dx + push ax + push cs + call near ptr sub_257C + jb short loc_24BC + 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_2526 + rep movsb + jmp short loc_252C +; --------------------------------------------------------------------------- + nop + +loc_2526: ; CODE XREF: sub_24D0+4Fj sub_24D0+5Aj + lodsb + not al + stosb + loop loc_2526 + +loc_252C: ; CODE XREF: sub_24D0+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2534: ; CODE XREF: sub_24D0+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2534 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2544: ; CODE XREF: sub_24D0+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2544 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2554: ; CODE XREF: sub_24D0+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2554 + test dl, dl + jz short loc_2570 + mov ah, 4 + +loc_2562: ; CODE XREF: sub_24D0+9Ej + xor si, si + mov cx, bx + +loc_2566: ; CODE XREF: sub_24D0+9Aj + lodsb + and [di], al + inc di + loop loc_2566 + dec ah + jnz short loc_2562 + +loc_2570: ; CODE XREF: sub_24D0+8Ej + pop ds + mov ax, word_1DB38 + dec ax + pop di + pop si + pop bp + retf 8 +sub_24D0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_257C proc far ; CODE XREF: sub_24D0+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_25EB + cmp word_1DB36, 0 + jnz short loc_25BC + mov word_1DB12, 4 + push 240h + push cs + call near ptr sub_22D0 + mov word_1DB36, ax + mov ax, 0FFF8h + jb short loc_25EB + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 15FCh + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_25BC: ; CODE XREF: sub_257C+17j + mov ax, bx + shl bx, 1 + cmp ax, word_1DB38 + jnb short loc_25D7 + cmp word ptr [bx+15FCh], 0 + jz short loc_25DB + push word ptr [bx+11FCh] + push cs + call near ptr sub_23C0 + jmp short loc_25DB +; --------------------------------------------------------------------------- + +loc_25D7: ; CODE XREF: sub_257C+48j + inc ax + mov word_1DB38, ax + +loc_25DB: ; CODE XREF: sub_257C+4Fj sub_257C+59j + mov ax, [bp+arg_2] + mov [bx+15FCh], ax + mov ax, [bp+arg_0] + mov [bx+11FCh], ax + xor ax, ax + +loc_25EB: ; CODE XREF: sub_257C+10j sub_257C+2Cj + pop bx + pop bp + retf 6 +sub_257C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_25F0 proc far ; CODE XREF: sub_9B14+31BP + ; sub_9B14+324P ... + +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_8E8 + jb short loc_2672 + mov bx, ax + mov cx, 5B6h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_266A + mov al, byte_1DB1B + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_266A + xor si, si + mov ax, word_1DB32 + or ax, ax + jz short loc_2636 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_412 + pop cx + pop bx + mov si, ax + +loc_2636: ; CODE XREF: sub_25F0+37j + test byte_1DB1B, 80h + jz short loc_264A + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_266A + +loc_264A: ; CODE XREF: sub_25F0+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_266A + push bx + push cs + call near ptr sub_8D2 + mov ax, word_1DB24 + sub ax, word_1DB22 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_266A: ; CODE XREF: sub_25F0+22j sub_25F0+2Ej ... + push ax + push bx + push cs + call near ptr sub_8D2 + pop ax + stc + +loc_2672: ; CODE XREF: sub_25F0+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_25F0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_267A proc far ; CODE XREF: sub_248C+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_1DB38 + jnb short loc_26C2 + mov cx, bx + shl bx, 1 + mov ax, [bx+15FCh] + or ax, ax + jz short loc_26C2 + push word ptr [bx+11FCh] + push cs + call near ptr sub_23C0 + mov [bx+11FCh], dx + mov [bx+15FCh], dx + inc cx + cmp cx, word_1DB38 + jnz short loc_26BA + +loc_26AB: ; CODE XREF: sub_267A+3Dj + dec word_1DB38 + jz short loc_26BA + dec bx + dec bx + mov cx, [bx+11FCh] + jcxz short loc_26AB + nop + +loc_26BA: ; CODE XREF: sub_267A+2Fj sub_267A+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_26C2: ; CODE XREF: sub_267A+Cj sub_267A+18j + stc + mov ax, 0FFE1h + retf 2 +sub_267A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_26CA proc far ; CODE XREF: sub_BE5D+125P + ; sub_BE5D+160P ... + +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+15FCh] + mov cx, [bp+arg_4] + mov bp, [bp+arg_2] + mov ax, bp + shl ax, 2 + add bp, ax + shl bp, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add bp, ax + mov si, cx + mov ch, dh + shr ch, 1 + mov al, dl + mov ah, [si+5A6h] + mov cs:word_2877, ax + test bp, 1 + jnz short loc_273A + test dh, 1 + jnz short loc_2724 + mov cs:byte_27D7, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_27D5, al + mov cs:word_287A, 0FF3Eh + jmp short loc_276C +; --------------------------------------------------------------------------- + +loc_2724: ; CODE XREF: sub_26CA+42j + mov cs:byte_2805, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2803, al + mov cs:word_287A, 0FF62h + jmp short loc_276C +; --------------------------------------------------------------------------- + +loc_273A: ; CODE XREF: sub_26CA+3Dj + dec bp + test dh, 1 + jnz short loc_2758 + dec ch + mov cs:byte_283C, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_283A, al + mov cs:word_287A, 0FF90h + jmp short loc_276C +; --------------------------------------------------------------------------- + +loc_2758: ; CODE XREF: sub_26CA+74j + mov cs:byte_286D, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_286B, al + mov cs:word_287A, 0FFC6h + +loc_276C: ; CODE XREF: sub_26CA+58j sub_26CA+6Ej ... + mov ds, word ptr [bx+11FCh] + 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_2874 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2874 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2874 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2874 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2874 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_26CA 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_27D5 db 50h ; DATA XREF: sub_26CA+4Dw + db 0B5h +byte_27D7 db 11h ; DATA XREF: sub_26CA+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_2803 db 50h ; DATA XREF: sub_26CA+63w + db 0B5h +byte_2805 db 11h ; DATA XREF: sub_26CA:loc_2724w + 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_283A db 50h ; DATA XREF: sub_26CA+81w + db 0B5h +byte_283C db 11h ; DATA XREF: sub_26CA+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_286B db 50h ; DATA XREF: sub_26CA+97w + db 0B5h +byte_286D db 11h ; DATA XREF: sub_26CA:loc_2758w + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2874: ; CODE XREF: sub_26CA+BBp sub_26CA+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2877 dw 1234h ; DATA XREF: sub_26CA+35w + db 0E9h +word_287A dw 0FF3Eh ; DATA XREF: sub_26CA+51w sub_26CA+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_287C proc far ; CODE XREF: sub_292E+2p + 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_2887: ; CODE XREF: sub_287C+2Fj + mov es, bx + assume es:nothing + inc bx + mov ax, es:1 + or ax, ax + jz short loc_289F + mov di, 10h + mov cx, 0Ah + mov si, 5DEh + repe cmpsb + jz short loc_28B0 + +loc_289F: ; CODE XREF: sub_287C+14j + mov ax, es:3 + add bx, ax + mov al, es:0 + cmp al, 4Dh ; 'M' + jz short loc_2887 + mov bx, 0 + +loc_28B0: ; CODE XREF: sub_287C+21j + mov ax, bx + mov word_1D868, ax + pop di + pop si + retf +sub_287C endp + +; --------------------------------------------------------------------------- + db 56h, 57h, 90h, 0Eh, 0E8h, 0BDh, 0FFh, 0Bh, 0C0h, 0B8h + db 2, 0, 75h, 64h, 0B8h, 0, 58h, 0CDh, 21h, 8Bh, 0D0h + db 0B8h, 1, 58h, 0BBh, 1, 0, 0CDh, 21h, 0B4h, 48h, 0BBh + db 4, 0, 0CDh, 21h, 0B9h, 2 dup(0), 72h, 40h, 8Ch, 0CBh + db 3Bh, 0D8h, 73h, 15h, 8Eh, 0C0h, 0B4h, 49h, 0CDh, 21h + db 0B8h, 1, 58h, 0BBh, 2, 0, 0CDh, 21h, 0B4h, 48h, 0BBh + db 4, 0, 0CDh, 21h, 8Bh, 0C8h, 0A3h, 8, 3, 49h, 8Eh, 0C1h + db 0B8h, 2 dup(0FFh), 26h, 0A3h, 1, 0, 41h, 8Eh, 0C1h + db 0FCh, 33h, 0FFh, 0BEh, 0DEh, 5, 0B9h, 0Ah, 0, 0F3h + db 0A4h, 33h, 0C0h, 3 dup(0ABh), 0B9h, 1, 0, 0B8h, 1, 58h + db 8Bh, 0DAh, 0CDh, 21h, 8Bh, 0C1h, 5Fh, 5Eh, 0CBh, 90h + +; =============== S U B R O U T I N E ======================================= + + +sub_292E proc far ; CODE XREF: sub_A4A1+11P + nop + push cs + call near ptr sub_287C + or ax, ax + jz short locret_2964 + push si + push di + push ds + push ds + pop es + assume es:dseg + mov ds, ax + mov al, byte_1D56A + xor ah, ah + mov es:word_1D834, ax + mov si, 10h + mov di, 11BAh + mov cx, si + mov bx, 11h + +loc_2952: ; CODE XREF: sub_292E+31j + lodsw + xchg ah, al + and ax, 0F0Fh + mul bx + stosw + lodsb + mul bl + stosb + loop loc_2952 + pop ds + pop di + pop si + +locret_2964: ; CODE XREF: sub_292E+7j + retf +sub_292E endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_2966 dd 0 ; DATA XREF: sub_296C+4r sub_296C+71w ... +byte_296A db 0 ; DATA XREF: seg000:2A60r seg000:2A77w + db 90h ; + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_296C proc far ; CODE XREF: sub_ECD0+33P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_2966 + or ax, word ptr cs:dword_2966+2 + jz short loc_297E + jmp loc_29FF +; --------------------------------------------------------------------------- + +loc_297E: ; CODE XREF: sub_296C+Dj + push di + push si + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + push cs + call near ptr sub_896 + push 10h + push cs + call near ptr sub_22BC + mov di, ax + push ax + push 0 + push 10h + push cs + call near ptr sub_7E2 + mov ax, di + mov es, ax + assume es:nothing + mov di, es:0 + mov si, es:6 + push ax + push cs + call near ptr sub_23C0 + push di + push cs + call near ptr sub_22BC + mov word_1EFF4, ax + push ax + push 0 + push di + push cs + call near ptr sub_7E2 + push cs + call near ptr sub_7D2 + mov cx, di + mov ax, word_1EFF4 + mov es, ax + mov ax, si + xor bx, bx + +loc_29CD: ; CODE XREF: sub_296C+68j + xor es:[bx], al + sub al, es:[bx] + inc bx + loop loc_29CD + pop si + pop di + mov ax, 3521h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr cs:dword_2966, bx + mov word ptr cs:dword_2966+2, es + mov word_1EFF0, 0 + mov word_1EFF2, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 2A60h + 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_29FF: ; CODE XREF: sub_296C+Fj + push si + push di + push ds + mov cx, 0FFFFh + mov al, 0 + les di, [bp+arg_0] + repne scasb + not cx + sub di, cx + mov si, di + mov di, 1A10h + push ds + push es + pop ds + pop es + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop di + pop si + pop bp + retf 4 +sub_296C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2A28 proc far ; CODE XREF: sub_EA1A+3P + mov ax, word ptr cs:dword_2966 + or ax, word ptr cs:dword_2966+2 + jz short locret_2A5F + push ds + lds dx, cs:dword_2966 + 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_2966, ax + mov word ptr cs:dword_2966+2, ax + cmp word_1EFF0, ax + jz short locret_2A5F + push word_1EFF0 + push cs + call near ptr sub_1D88 + push word_1EFF4 + push cs + call near ptr sub_23C0 + +locret_2A5F: ; CODE XREF: sub_2A28+9j sub_2A28+25j + retf +sub_2A28 endp + +; --------------------------------------------------------------------------- + cmp cs:byte_296A, 0 + jz short loc_2A6D + jmp cs:dword_2966 +; --------------------------------------------------------------------------- + +loc_2A6D: ; CODE XREF: seg000:2A66j + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_296A + push word ptr [bp+18h] + popf + mov cs:byte_2AC4, ah + mov si, 2A94h + +loc_2A88: ; CODE XREF: seg000:2A8Ej + add si, 4 + cmp ah, cs:[si] + jnz short loc_2A88 + mov di, word_1EFF2 + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 0C8h, 2Ah, 3Eh, 0, 0FDh, 2Ah, 3Fh, 0, 1Bh, 2Bh + db 42h, 0, 2Fh, 2Bh, 46h, 0, 90h, 2Bh, 40h, 0, 94h, 2Bh + db 45h, 0, 94h, 2Bh, 4Ch, 0, 72h, 2Bh, 57h, 0, 94h, 2Bh + db 5Ch, 0, 94h, 2Bh, 44h, 0, 7Eh, 2Bh +byte_2AC4 db 0 ; DATA XREF: seg000:2A80w + db 0 + db 98h, 2Bh, 0A8h, 0Fh, 74h, 3, 0E9h, 0C9h, 0, 0Bh, 0FFh + db 78h, 3, 0E9h, 0C2h, 0, 1Eh, 68h, 10h, 1Ah, 0FFh, 76h + db 2, 52h, 0Eh, 0E8h, 7Ch, 2, 0Bh, 0C0h, 75h, 3, 0E9h + db 0AFh, 0, 0A3h, 90h, 1Ah, 8Eh, 0C0h, 26h, 8Eh, 6, 2 dup(0) + db 26h, 0A1h, 2 dup(0), 0A3h, 92h, 1Ah, 0E9h, 0B6h, 0 + db 3Bh, 0DFh, 74h, 3, 0E9h, 94h, 0, 0FFh, 36h, 90h, 1Ah + db 0Eh, 0E8h, 7Ch, 0F2h, 0C7h, 6, 90h, 1Ah, 2 dup(0), 0C7h + db 6, 92h, 1Ah, 2 dup(0FFh), 0E9h, 98h, 0, 3Bh, 0DFh, 75h + db 79h, 0FFh, 76h, 2, 52h, 51h, 0FFh, 36h, 90h, 1Ah, 0Eh + db 0E8h, 26h, 0F3h, 0E9h, 84h, 0, 3Bh, 0DFh, 75h, 65h + db 0Bh, 0C9h, 7Ch, 73h, 3Ch, 1, 74h, 28h, 7Ch, 1Ah, 8Eh + db 6, 90h, 1Ah, 26h, 8Bh, 2 dup(16h), 0, 26h, 8Bh, 0Eh + db 18h, 0, 26h, 2Bh, 16h, 12h, 0, 26h, 1Bh, 0Eh, 14h, 0 + db 0EBh, 0Ch, 51h, 52h, 0FFh, 36h, 90h, 1Ah, 0Eh, 0E8h + db 1Fh, 0F3h, 5Ah, 59h, 0FFh, 36h, 90h, 1Ah, 51h, 52h + db 0Eh, 0E8h, 4Fh, 0F3h, 89h, 56h, 0Eh, 0EBh, 41h, 2Eh + db 0C5h, 16h, 66h, 29h, 0B8h, 21h, 25h, 0CDh, 21h, 0EBh + db 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h, 6 + db 8Eh, 2Bh, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh, 74h + db 16h, 3Bh, 0DFh, 74h, 12h, 2Eh, 0FEh, 0Eh, 6Ah, 29h + db 0FFh, 76h, 18h, 9Dh, 7, 1Fh, 61h, 0FAh, 2Eh, 0FFh, 2Eh + db 66h, 29h, 80h, 4Eh, 18h, 1, 0B8h, 1, 0, 0EBh, 4, 80h + db 66h, 18h, 0FEh, 89h, 46h, 12h, 2Eh, 0FEh, 0Eh, 6Ah + db 29h, 7, 1Fh, 61h, 0CFh, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_2BC4 proc far ; CODE XREF: sub_ECD0+2AP + mov cx, 100h + mov dx, 188h + +loc_2BCA: ; CODE XREF: sub_2BC4+Bj + in al, dx + inc al + jnz short loc_2BD5 + loop loc_2BCA + xor ax, ax + jmp short loc_2BE9 +; --------------------------------------------------------------------------- + +loc_2BD5: ; CODE XREF: sub_2BC4+9j + pushf + cli + mov bh, 7 + call sub_1F78 + and al, 3Fh + or al, 80h + mov bl, al + call sub_1F62 + popf + mov ax, 1 + +loc_2BE9: ; CODE XREF: sub_2BC4+Fj + mov word_1D82C, ax + retf +sub_2BC4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2BEE proc near ; CODE XREF: sub_2C00+10p + mov bh, 0Fh + call sub_1F62 + mov dx, 188h + mov al, 0Eh + out dx, al + inc dx + inc dx + in al, dx + not al + retn +sub_2BEE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2C00 proc far ; CODE XREF: sub_ED54+FP sub_ED82+FP ... + push bp + push si + push di + xor bp, bp + cmp word_1D82C, 0 + jz short loc_2C19 + pushf + cli + mov bl, 80h ; '€' + call sub_2BEE + and ax, 3Fh + mov si, ax + popf + +loc_2C19: ; CODE XREF: sub_2C00+Aj + or word_1E716, si + pop di + pop si + pop bp + retf +sub_2C00 endp + +; --------------------------------------------------------------------------- + nop + xchg dx, bx + out dx, al + xchg dx, bx + in al, dx + not al + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_2C2C proc near ; CODE XREF: sub_2C42+1Ap sub_2C42+1Dp ... + mov cx, 0FA0h + xor al, 1 + out 0A6h, al ; Interrupt Controller #2, 8259A + mov ds, bx + mov es, dx + xor di, di + mov si, di + rep movsd + xchg bx, dx + retn +sub_2C2C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2C42 proc far ; CODE XREF: sub_F0EE+2P + xor dx, dx + mov bx, 3E80h + push bx + nop + push cs + call near ptr sub_1F2C + xchg ax, dx + jb short locret_2C89 + mov bx, sp + mov ax, ss:[bx+4] + push si + push di + push ds + mov bx, 0ABE8h + call sub_2C2C + call sub_2C2C + mov bx, 0B3E8h + call sub_2C2C + call sub_2C2C + mov bx, 0BBE8h + call sub_2C2C + call sub_2C2C + mov bx, 0E3E8h + call sub_2C2C + call sub_2C2C + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_1F16 + mov ax, 1 + +locret_2C89: ; CODE XREF: sub_2C42+Cj + retf 2 +sub_2C42 endp + +; --------------------------------------------------------------------------- + +loc_2C8C: ; CODE XREF: sub_FAC+8Aj sub_FAC+ACj ... + mov ax, word_1D7EC + mov cs:word_2CCE, ax + mov ax, word_1E6F2 + mov cs:word_2D3F, ax + mov ax, word_1E6FA + mov cs:word_2D4D, ax + mov ax, word_1E6EE + mov cs:word_2D37, ax + mov ax, word_1E6F6 + mov cs:word_2D49, ax + mov ax, word_1D7DE + mov cs:word_2CD3, ax + mov cs:word_2CFD, ax + mov ax, word_1D7E0 + mov cs:word_2CED, ax + jmp short $+2 + push bp + mov cx, word_1E6EC + mov bp, word_1E6F4 +; --------------------------------------------------------------------------- + db 81h, 0FEh +word_2CCE dw 1234h ; DATA XREF: seg000:2C8Fw + db 77h, 61h, 0B8h +word_2CD3 dw 1234h ; DATA XREF: seg000:2CB2w + 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_2CED dw 1234h ; DATA XREF: seg000:2CBDw + db 2Bh, 0CFh, 1Bh, 0C0h, 23h, 0C8h, 3, 0CFh, 2Bh, 0CBh + db 7Ch, 38h, 81h, 0C3h +word_2CFD dw 1234h ; DATA XREF: seg000:2CB6w + db 8Bh, 0FBh, 0C1h, 0EFh, 4, 0D1h, 0E7h, 3, 0FEh, 83h + db 0E3h, 0Fh, 3, 0CBh, 83h, 0E9h, 10h, 0D1h, 0E3h, 8Bh + db 87h, 8Eh, 2, 0F7h, 0D0h, 23h, 6, 0E8h, 5, 8Bh, 0D9h + db 83h, 0E3h, 0Fh, 0D1h, 0E3h, 0C1h, 0F9h, 4, 78h, 6, 0ABh + db 0A1h, 0E8h, 5, 0F3h, 0ABh, 23h, 87h, 90h, 2, 0ABh, 81h + db 6, 90h, 11h +word_2D37 dw 1234h ; DATA XREF: seg000:2CA4w + db 8Bh, 0Eh, 8Ch, 11h, 81h, 0D1h +word_2D3F dw 1234h ; DATA XREF: seg000:2C96w + db 89h, 0Eh, 8Ch, 11h, 81h, 6, 98h, 11h +word_2D49 dw 1234h ; DATA XREF: seg000:2CABw + db 81h, 0D5h +word_2D4D dw 1234h ; DATA XREF: seg000:2C9Dw + db 83h, 0C6h, 50h, 4Ah, 78h, 3, 0E9h, 74h, 0FFh, 89h, 2Eh + db 94h, 11h, 5Dh, 0C3h, 0C8h, 3 dup(0), 56h, 57h, 0C7h + db 6, 0B2h, 5, 7, 0, 6Ah, 1Fh, 0Eh, 0E8h, 4Ch, 0F5h, 0Fh + db 82h, 0F6h, 0, 8Bh, 0F0h, 0FFh, 76h, 0Ch, 0FFh, 76h + db 0Ah, 0Eh, 0E8h, 0F4h, 0D7h, 0Bh, 0C0h, 0Fh, 84h, 0DDh + db 0, 8Eh, 0C6h, 26h, 0A3h, 2 dup(0), 0A1h, 94h, 1Ah, 8Eh + db 0E0h, 33h, 0C0h, 8Bh, 0F8h, 64h, 8Ah, 5, 0BBh, 2, 0 + db 0Ah, 0C0h, 74h, 18h, 0BBh, 3, 0, 3, 0DFh, 0FFh, 76h + db 8, 0FFh, 76h, 6, 0Fh, 0A0h, 53h, 0E8h, 0C8h, 0, 75h + db 7, 83h, 0C7h, 20h, 0EBh, 0DEh, 8Bh, 0C3h, 8Eh, 0C6h + db 64h, 8Bh, 45h, 14h, 64h, 8Bh, 55h, 16h, 26h, 0A3h, 0Eh + db 0, 26h, 89h, 16h, 10h, 0, 26h, 0FFh, 36h, 2 dup(0) + db 52h, 50h, 6Ah, 0, 0Eh, 0E8h, 61h, 0D8h, 0B8h, 0, 1Eh + db 64h, 8Ah, 55h, 2, 8Eh, 0C6h, 0Ah, 0D2h, 74h, 8, 26h + db 88h, 16h, 1Eh, 0, 0B8h, 44h, 1Eh, 26h, 0A3h, 4, 0, 8Eh + db 0C1h, 64h, 8Bh, 5, 8Eh, 0C6h, 3Dh, 88h, 0F3h, 74h, 0Ah + db 3Dh, 2 dup(95h), 74h, 0Fh, 0B8h, 5, 0, 0EBh, 4Fh, 26h + db 0A1h, 4, 0, 26h, 0A3h, 2, 0, 0EBh, 15h, 26h, 0C7h, 6 + db 2, 0, 0B2h, 1Dh, 26h, 0C7h, 6, 1Ah, 3 dup(0), 26h, 0C7h + db 6, 1Ch, 0, 2 dup(0FFh), 64h, 8Bh, 5Dh, 10h, 64h, 8Bh + db 55h, 12h, 33h, 0C0h, 26h, 89h, 1Eh, 6, 0, 26h, 0A3h + db 8, 0, 26h, 89h, 2 dup(16h), 0, 26h, 0A3h, 18h, 0, 26h + db 0A3h, 0Ah, 0, 26h, 0A3h, 0Ch, 0, 26h, 0A3h, 12h, 0 + db 26h, 0A3h, 14h, 0, 8Bh, 0C6h, 0EBh, 1Ah, 0A3h, 0Eh + db 3, 26h, 0FFh, 36h, 2 dup(0), 0Eh, 0E8h, 0Fh, 0D6h, 56h + db 0Eh, 0E8h, 58h, 0F5h, 0EBh, 5, 0C6h, 6, 0Eh, 2 dup(3) + db 33h, 0C0h, 5Fh, 5Eh, 0C9h, 0CAh, 8, 0, 90h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+8] + lds si, [bp+4] + +loc_2E84: ; CODE XREF: seg000:2EA2j + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_2E91 + sub al, 20h ; ' ' + +loc_2E91: ; CODE XREF: seg000:2E8Dj + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_2E9C + sub ah, 20h ; ' ' + +loc_2E9C: ; CODE XREF: seg000:2E97j + cmp ah, al + jnz short loc_2EA6 + add al, 61h ; 'a' + jnz short loc_2E84 + jmp short loc_2EA8 +; --------------------------------------------------------------------------- + +loc_2EA6: ; CODE XREF: seg000:2E9Ej + xor ax, ax + +loc_2EA8: ; CODE XREF: seg000:2EA4j + test ax, ax + pop ds + pop si + pop bp + retn 8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_2EB0 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 0BEEh + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_2EB0 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_436C + pop cx + nop + push cs + call near ptr sub_2EB0 +_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_1E16E, 20h ; ' ' + jnz short loc_2F2D + mov ax, 1 + jmp short loc_2F49 +; --------------------------------------------------------------------------- + +loc_2F2D: ; CODE XREF: _atexit+Aj + mov bx, word_1E16E + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx-7204h], dx + mov [bx-7206h], ax + inc word_1E16E + xor ax, ax + +loc_2F49: ; 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:3680p ... + +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_3C87 + 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_7FBB+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_948B+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_2FCB + mov [bp+var_6], 0 + jmp short loc_2FB6 +; --------------------------------------------------------------------------- + +loc_2F9D: ; 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_2FB6: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2FCB + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_2F9D + +loc_2FCB: ; 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_2FE9 + 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_2FE9: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_2FF3 + jmp loc_30DA +; --------------------------------------------------------------------------- + +loc_2FF3: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_3DBA + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_300D + jmp loc_30DA +; --------------------------------------------------------------------------- + +loc_300D: ; 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_3083 + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3083 + jmp short loc_306C +; --------------------------------------------------------------------------- + +loc_3040: ; 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_306C: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_308D + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3040 + jmp short loc_308D +; --------------------------------------------------------------------------- + +loc_3083: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_308D: ; 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_30CF + 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_30CF: ; 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_30DE +; --------------------------------------------------------------------------- + +loc_30DA: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_30DE: ; 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_4891+66p + +drive = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + les bx, [bp+drive] + mov es:[bx], ax + pop di + pop si + pop bp + retf +__dos_getdrive endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl _dos_setdrive(unsigned int drive, unsigned int *ndrives) +__dos_setdrive proc far + +drive = word ptr 6 +ndrives = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov dl, byte ptr [bp+drive] + dec dl + mov ah, 0Eh + int 21h ; DOS - SELECT DISK + ; DL = new default drive number (0 = A, 1 = B, etc.) + ; Return: AL = number of logical drives + mov ah, 0 + les bx, [bp+ndrives] + mov es:[bx], ax + pop di + pop si + pop bp + retf +__dos_setdrive endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far __ErrorMessage(char *buf) +___ErrorMessage proc far ; CODE XREF: seg000:016Ap sub_2EB0+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_1E1A8 + 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_3140 proc far ; CODE XREF: sub_3145+29P sub_3145+43P ... + push si + push di + pop di + pop si + retf +sub_3140 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_3145 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_3172 + jmp short loc_3162 +; --------------------------------------------------------------------------- + +loc_3152: ; CODE XREF: sub_3145+22j + dec word_1E16E + mov bx, word_1E16E + mov cl, 2 + shl bx, cl + call dword ptr [bx-7206h] + +loc_3162: ; CODE XREF: sub_3145+Bj + cmp word_1E16E, 0 + jnz short loc_3152 + nop + push cs + call __cleanup + call off_1E170 + +loc_3172: ; CODE XREF: sub_3145+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_3199 + cmp [bp+arg_4], 0 + jnz short loc_3190 + call off_1E174 + call off_1E178 + +loc_3190: ; CODE XREF: sub_3145+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_3199: ; CODE XREF: sub_3145+3Bj + pop di + pop si + pop bp + retn 6 +sub_3145 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_3145 + 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_2EB0+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_3145 + 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_3145 + 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_3145 + pop di + pop si + retf +__c_exit 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:4304p + +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:4249p sub_4320+26p ... + +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_322F + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_7E08+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_322F +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_322F +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_322F: ; CODE XREF: seg000:3217j 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_324E + or dx, dx + jz short loc_32B3 + or bx, bx + jz short loc_32B3 + +loc_324E: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_3270 + or dx, dx + jns short loc_3262 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_3262: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_3270 + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_3270: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_327A: ; CODE XREF: N_LUDIV@:loc_3291j + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_3291 + ja short loc_328C + cmp si, bx + jb short loc_3291 + +loc_328C: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_3291: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_327A + pop bx + test bx, 2 + jz short loc_32A0 + mov ax, si + mov dx, di + shr bx, 1 + +loc_32A0: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_32AD + neg dx + neg ax + sbb dx, 0 + +loc_32AD: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_32B3: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_32BC + xchg ax, dx + +loc_32BC: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_32AD +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_32D8 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_32D8: ; 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_32F4 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_3323 +; --------------------------------------------------------------------------- + +loc_32F4: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_32FC + add dx, 1000h + +loc_32FC: ; 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_3323 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_32F4 +; --------------------------------------------------------------------------- + +loc_3323: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_332B + sub dx, 1000h + +loc_332B: ; 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_3364 + cmp dx, 58h ; 'X' + jle short loc_3355 + +loc_3352: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_3355: ; CODE XREF: __IOERROR+Fj + mov word_1E336, dx + mov bx, dx + mov al, [bx+0DD8h] + cbw + mov dx, ax + jmp short loc_3372 +; --------------------------------------------------------------------------- + +loc_3364: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_1E618 + jg short loc_3352 + mov word_1E336, 0FFFFh + +loc_3372: ; CODE XREF: __IOERROR+21j + mov word_1D5DE, 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:3735p seg000:376Ep + +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+0DAEh], 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_33CC + jmp short loc_33D1 +; --------------------------------------------------------------------------- + +loc_33CC: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_33D1: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_3600 + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0D5h, 33h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 33E3h + 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, 34DBh + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0E32h + 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_1E396 + 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, 3600h + 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_1E39A + mov ax, word_1E398 + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_1E39A, dx + mov word_1E398, 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_34A7 + mov ax, [bp+arg_0] + jmp short loc_34AA +; --------------------------------------------------------------------------- + +loc_34A7: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_34AA: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_34B3 +; --------------------------------------------------------------------------- + +loc_34AF: ; CODE XREF: operator new(uint)+43j + call dword ptr word_1E398 + +loc_34B3: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_3DBA + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_34CF + mov ax, word_1E398 + or ax, seg_1E39A + jnz short loc_34AF + +loc_34CF: ; 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_3600 + db 0 + db 0 + dd unk_1E392 + dd byte_35C6 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 1Eh, 35h + +; =============== 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:1160o + +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, 3536h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 0E3Ch + push ax ; src + 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, 0E32h + 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_359F: ; DATA XREF: dseg:117Eo + 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, 0E32h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_35C6 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:3528o + db 0Dh dup(0), 1, 0, 1, 0, 0Fh, 3 + dw seg seg012 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_3600 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:33D5o seg000:351Eo + db 0Dh dup(0), 2, 0, 2, 0, 42h, 36h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 8Fh, 36h + 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_3689 + 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_3687 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_368B +; --------------------------------------------------------------------------- + +loc_3687: ; CODE XREF: seg000:3676j + jmp short loc_368B +; --------------------------------------------------------------------------- + +loc_3689: ; CODE XREF: seg000:364Dj + xor ax, ax + +loc_368B: ; CODE XREF: seg000:3685j + ; seg000:loc_3687j + 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, 1Eh, 57h + 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_7E08+51p sub_7E08+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_36D0 + mul bx + +loc_36D0: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_36D7 + xchg ax, cx + mul si + add ax, cx + +loc_36D7: ; CODE XREF: N_LXMUL@:loc_36D0j + 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_36FE + cmp ax, bx + +locret_36FE: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_3728 +; --------------------------------------------------------------------------- + +loc_3706: ; CODE XREF: seg000:372Cj + mov bx, cx + add bx, bx + mov word ptr [bx+0DAEh], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+0C20h], 0FFh + add ax, 0C1Ch + mov bx, dx + mov [bx+0C2Eh], ax + inc cx + +loc_3728: ; CODE XREF: seg000:3704j + cmp cx, word_1E30C + jb short loc_3706 + mov al, byte_1E180 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_3743 + and word_1E17E, 0FDFFh + +loc_3743: ; CODE XREF: seg000:373Bj + mov ax, 200h + push ax + test byte ptr word_1E17E+1, 2 + jz short loc_3753 + mov ax, 1 + jmp short loc_3755 +; --------------------------------------------------------------------------- + +loc_3753: ; CODE XREF: seg000:374Cj + xor ax, ax + +loc_3755: ; CODE XREF: seg000:3751j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0C1Ch + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_1E194 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_377C + and word_1E192, 0FDFFh + +loc_377C: ; CODE XREF: seg000:3774j + mov ax, 200h + push ax + test byte ptr word_1E192+1, 2 + jz short loc_378C + mov ax, 2 + jmp short loc_378E +; --------------------------------------------------------------------------- + +loc_378C: ; CODE XREF: seg000:3785j + xor ax, ax + +loc_378E: ; CODE XREF: seg000:378Aj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0C30h + 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_4891+4Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_0] + cmp dx, 0FFFFh + jnz short loc_37B5 + mov ax, 0FFFFh + jmp short loc_37CF +; --------------------------------------------------------------------------- + +loc_37B5: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_37CB + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_37CF +; --------------------------------------------------------------------------- + +loc_37CB: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_37CF: ; 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:3434p seg000:3504p ... + 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:3401p + ; 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:394Ep ... + +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:0F58o + 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_38A2 + 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_38A2: ; 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), 3Ch, 39h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0AEh, 38h + 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_6493+272p ... + +var_26 = word ptr -26h +var_24 = word ptr -24h +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, 38C6h + 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 [bp+var_24], dx + mov [bp+var_26], ax + mov [bp+var_12], 6 + les bx, ss:16h + cmp word ptr es:[bx+12h], 0 + jnz short loc_3920 + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_3920: ; 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 dword ptr [bp-26h] + mov ds, [bp+var_22] + mov [bp+var_12], 0 + jmp short loc_3944 +; --------------------------------------------------------------------------- + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_3944: ; 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:0F5Co + 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_3996 + 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_3996: ; 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_39D2 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_39D2: ; 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_3A05 + xor ax, ax + jmp short loc_3A3F +; --------------------------------------------------------------------------- + +loc_3A05: ; 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_3A3F: ; 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_3A59 + xor ax, ax + jmp short loc_3A97 +; --------------------------------------------------------------------------- + +loc_3A59: ; 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_3A97: ; 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, 0F4Eh + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_1E4C2, ax + mov word_1E4C0, 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_1E5D6, 0 + jz short locret_3B46 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_1E5D6, 2 + jz short locret_3B46 + 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_1E5D6, 3 + mov esp, edx + jz short locret_3B46 + mov word_1E5D6, 4 + +locret_3B46: ; CODE XREF: seg000:3B02j seg000:3B15j ... + retn +; --------------------------------------------------------------------------- +word_3B47 dw 0 ; DATA XREF: sub_3B53r sub_3B53+1Dr ... +word_3B49 dw 0 ; DATA XREF: sub_3B53+14w sub_3B53+27w ... +word_3B4B dw 0 ; DATA XREF: sub_3B53+4Cw sub_3C27+19w ... +word_3B4D dw 0 ; DATA XREF: sub_3B53+32r + ; sub_3B53:loc_3BA6r ... +word_3B4F dw 0 ; DATA XREF: sub_3E41+1r sub_3F21+1Aw +word_3B51 dw 0 ; DATA XREF: sub_3E41+7r sub_3F21+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_3B53 proc near ; CODE XREF: sub_3C87+18p + cmp dx, cs:word_3B47 + jz short loc_3B91 + mov ds, dx + mov ds, word_1D562 + cmp word_1D562, 0 + jz short loc_3B6E + mov cs:word_3B49, ds + jmp short loc_3BA6 +; --------------------------------------------------------------------------- + +loc_3B6E: ; CODE XREF: sub_3B53+12j + mov ax, ds + cmp ax, cs:word_3B47 + jz short loc_3B8C + mov ax, off_1D568 + mov cs:word_3B49, ax + push ds + xor ax, ax + push ax + call sub_3C27 + mov ds, cs:word_3B4D + jmp short loc_3BAF +; --------------------------------------------------------------------------- + +loc_3B8C: ; CODE XREF: sub_3B53+22j + mov dx, cs:word_3B47 + +loc_3B91: ; CODE XREF: sub_3B53+5j + mov cs:word_3B47, 0 + mov cs:word_3B49, 0 + mov cs:word_3B4B, 0 + +loc_3BA6: ; CODE XREF: sub_3B53+19j + mov ds, cs:word_3B4D + push dx + xor ax, ax + push ax + +loc_3BAF: ; CODE XREF: sub_3B53+37j + call __brk + add sp, 4 + retn +sub_3B53 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3BB6 proc near ; CODE XREF: sub_3C87:loc_3CA4p + mov ds, dx + push ds + mov es, word_1D562 + mov word_1D562, 0 + mov off_1D568, es + cmp dx, cs:word_3B47 + jz short loc_3BFC + cmp word ptr es:2, 0 + jnz short loc_3BFC + mov ax, word_1D560 + 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_3BF5 + mov es:8, cx + jmp short loc_3BFF +; --------------------------------------------------------------------------- + +loc_3BF5: ; CODE XREF: sub_3BB6+36j + mov es:2, cx + jmp short loc_3BFF +; --------------------------------------------------------------------------- + +loc_3BFC: ; CODE XREF: sub_3BB6+16j sub_3BB6+1Ej + call sub_3C50 + +loc_3BFF: ; CODE XREF: sub_3BB6+3Dj sub_3BB6+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_1D562, 0 + jz short loc_3C11 + retn +; --------------------------------------------------------------------------- + +loc_3C11: ; CODE XREF: sub_3BB6+58j + mov ax, word_1D560 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_1D560 + mov es, bx + mov es:2, ax +sub_3BB6 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_3C27 proc near ; CODE XREF: sub_3B53+2Fp sub_3DC4+66p + mov bx, ds + cmp bx, off_1D566 + jz short loc_3C48 + mov es, off_1D566 + mov ds, off_1D564 + mov off_1D566, es + mov word ptr es:4, ds + mov cs:word_3B4B, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_3C48: ; CODE XREF: sub_3C27+6j + mov cs:word_3B4B, 0 + retn +sub_3C27 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3C50 proc near ; CODE XREF: sub_3BB6:loc_3BFCp + mov ax, cs:word_3B4B + or ax, ax + jz short loc_3C79 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov off_1D564, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov off_1D566, es + retn +; --------------------------------------------------------------------------- + +loc_3C79: ; CODE XREF: sub_3C50+6j + mov cs:word_3B4B, ds + mov off_1D564, ds + mov off_1D566, ds + retn +sub_3C50 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C87 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_3E41+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_3B4D, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_3CA7 + cmp dx, cs:word_3B49 + jnz short loc_3CA4 + call sub_3B53 + jmp short loc_3CA7 +; --------------------------------------------------------------------------- + +loc_3CA4: ; CODE XREF: sub_3C87+16j + call sub_3BB6 + +loc_3CA7: ; CODE XREF: sub_3C87+Fj sub_3C87+1Bj + mov ds, cs:word_3B4D + pop di + pop si + pop bp + retf +sub_3C87 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3CB0 proc near ; CODE XREF: sub_3DC4:loc_3E19p + push ax + mov ds, cs:word_3B4D + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_3CD9 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3B4D + push ax + push dx + call __sbrk + add sp, 4 + +loc_3CD9: ; CODE XREF: sub_3CB0+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3B4D + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3D10 + mov cs:word_3B47, dx + mov cs:word_3B49, dx + mov ds, dx + mov word_1D560, bx + mov word_1D562, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3D10: ; CODE XREF: sub_3CB0+46j + xor ax, ax + cwd + retn +sub_3CB0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D14 proc near ; CODE XREF: sub_3DC4:loc_3E14p + push ax + mov ds, cs:word_3B4D + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_3D3C + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3B4D + push ax + push dx + call __sbrk + add sp, 4 + +loc_3D3C: ; CODE XREF: sub_3D14+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3B4D + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3D93 + and ax, 0Fh + jnz short loc_3D78 + +loc_3D60: ; CODE XREF: sub_3D14+7Dj + mov cx, cs:word_3B49 + mov cs:word_3B49, dx + mov ds, dx + mov word_1D560, bx + mov word_1D562, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3D78: ; CODE XREF: sub_3D14+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_3D93 + inc dx + jmp short loc_3D60 +; --------------------------------------------------------------------------- + +loc_3D93: ; CODE XREF: sub_3D14+45j sub_3D14+7Aj + xor ax, ax + cwd + retn +sub_3D14 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D97 proc near ; CODE XREF: sub_3DC4:loc_3E1Ep + mov bx, dx + sub word_1D560, ax + add dx, word_1D560 + mov ds, dx + mov word_1D560, ax + mov word_1D562, bx + mov bx, dx + add bx, word_1D560 + mov ds, bx + mov word_1D562, dx + mov ax, 4 + retn +sub_3D97 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3DBA 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_3DCD +sub_3DBA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3DC4 proc far ; CODE XREF: sub_3E41+Ep sub_3F21+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_3DCD: ; CODE XREF: sub_3DBA+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_3B4D, ds + jz short loc_3E38 + add ax, 13h + adc dx, 0 + jb short loc_3E23 + test dx, 0FFF0h + jnz short loc_3E23 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_3B47 + or dx, dx + jz short loc_3E19 + mov dx, cs:word_3B4B + or dx, dx + jz short loc_3E14 + mov bx, dx + +loc_3E04: ; CODE XREF: sub_3DC4+4Ej + mov ds, dx + cmp word_1D560, ax + jnb short loc_3E28 + mov dx, off_1D566 + cmp dx, bx + jnz short loc_3E04 + +loc_3E14: ; CODE XREF: sub_3DC4+3Cj + call sub_3D14 + jmp short loc_3E38 +; --------------------------------------------------------------------------- + +loc_3E19: ; CODE XREF: sub_3DC4+33j + call sub_3CB0 + jmp short loc_3E38 +; --------------------------------------------------------------------------- + +loc_3E1E: ; CODE XREF: sub_3DC4:loc_3E28j + call sub_3D97 + jmp short loc_3E38 +; --------------------------------------------------------------------------- + +loc_3E23: ; CODE XREF: sub_3DC4+1Cj sub_3DC4+22j + xor ax, ax + cwd + jmp short loc_3E38 +; --------------------------------------------------------------------------- + +loc_3E28: ; CODE XREF: sub_3DC4+46j + ja short loc_3E1E + call sub_3C27 + mov bx, off_1D568 + mov word_1D562, bx + mov ax, offset off_1D564 + +loc_3E38: ; CODE XREF: sub_3DC4+14j sub_3DC4+53j ... + mov ds, cs:word_3B4D + pop di + pop si + pop bp + retf +sub_3DC4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3E41 proc near ; CODE XREF: sub_3F21:loc_3F7Dp + push bx + mov si, cs:word_3B4F + push si + mov si, cs:word_3B51 + push si + push cs + call near ptr sub_3DC4 + add sp, 4 + or dx, dx + jnz short loc_3E5B + pop bx + retn +; --------------------------------------------------------------------------- + +loc_3E5B: ; CODE XREF: sub_3E41+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_1D560 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_3EAC + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_3E7F: ; CODE XREF: sub_3E41+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_3E8E + mov cx, 1000h + +loc_3E8E: ; CODE XREF: sub_3E41+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_3EAC + 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_3E7F +; --------------------------------------------------------------------------- + +loc_3EAC: ; CODE XREF: sub_3E41+32j sub_3E41+59j + mov ds, cs:word_3B4D + assume ds:dseg + push cs + call near ptr sub_3C87 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_3E41 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3EBD proc near ; CODE XREF: sub_3F21:loc_3F78p + cmp bx, cs:word_3B49 + jz short loc_3F09 + 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_3EF5 + mov es:2, di + jmp short loc_3EFA +; --------------------------------------------------------------------------- + +loc_3EF5: ; CODE XREF: sub_3EBD+2Fj + mov es:8, di + +loc_3EFA: ; CODE XREF: sub_3EBD+36j + mov si, bx + push cs + call near ptr sub_3C87 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3F09: ; CODE XREF: sub_3EBD+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_3EBD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3F21 proc far ; CODE XREF: sub_4891+2DDp + ; seg012:0758P ... + +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_3F2E +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_3F2E: ; CODE XREF: sub_3F21+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_3B4D, ds + mov cs:word_3B4F, dx + mov cs:word_3B51, ax + or bx, bx + jz short loc_3F82 + mov cx, ax + or cx, dx + jz short loc_3F8D + add ax, 13h + adc dx, 0 + jb short loc_3F96 + test dx, 0FFF0h + jnz short loc_3F96 + 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_3F7D + ja short loc_3F78 + mov dx, bx + mov ax, 4 + jmp short loc_3F99 +; --------------------------------------------------------------------------- + +loc_3F78: ; CODE XREF: sub_3F21+4Ej + call sub_3EBD + jmp short loc_3F99 +; --------------------------------------------------------------------------- + +loc_3F7D: ; CODE XREF: sub_3F21+4Cj + call sub_3E41 + jmp short loc_3F99 +; --------------------------------------------------------------------------- + +loc_3F82: ; CODE XREF: sub_3F21+25j + push dx + push ax + push cs + call near ptr sub_3DC4 + add sp, 4 + jmp short loc_3F99 +; --------------------------------------------------------------------------- + +loc_3F8D: ; CODE XREF: sub_3F21+2Bj + push bx + push ax + push cs + call near ptr sub_3C87 + add sp, 4 + +loc_3F96: ; CODE XREF: sub_3F21+33j sub_3F21+39j + xor ax, ax + cwd + +loc_3F99: ; CODE XREF: sub_3F21+55j sub_3F21+5Aj ... + mov ds, cs:word_3B4D + pop di + pop si + pop bp + retf +sub_3F21 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_3FA2 proc near ; CODE XREF: __brk+31p __sbrk+74p + +newsize = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, [bp+arg_2] + inc ax + mov [bp+newsize], ax + mov ax, segx + sub [bp+newsize], ax + mov ax, [bp+newsize] + add ax, 3Fh ; '?' + mov cl, 6 + shr ax, cl + mov [bp+newsize], ax + cmp ax, word_1E5D8 + jz short loc_4006 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_1D5EE + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_3FE7 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_3FE7: ; CODE XREF: sub_3FA2+3Aj + push [bp+newsize] ; newsize + push segx ; segx + nop + push cs + call near ptr _setblock + pop cx + pop cx + mov dx, ax + cmp dx, 0FFFFh + jnz short loc_4018 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_1E5D8, ax + +loc_4006: ; CODE XREF: sub_3FA2+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_1D5EA, dx + mov word_1D5E8, ax + mov ax, 1 + jmp short loc_4028 +; --------------------------------------------------------------------------- + +loc_4018: ; CODE XREF: sub_3FA2+58j + mov ax, segx + add ax, dx + mov word_1D5EE, ax + mov word_1D5EC, 0 + xor ax, ax + +loc_4028: ; CODE XREF: sub_3FA2+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_3FA2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_3B53:loc_3BAFp + ; sub_3EBD+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_1D5E6 + mov bx, word_1D5E4 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_4068 + mov cx, word_1D5EE + mov bx, word_1D5EC + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_4068 + push [bp+arg_2] + push [bp+arg_0] + call sub_3FA2 + or ax, ax + jnz short loc_406D + +loc_4068: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_406F +; --------------------------------------------------------------------------- + +loc_406D: ; CODE XREF: __brk+36j + xor ax, ax + +loc_406F: ; 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_3CB0+Ap sub_3CB0+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_1D5EA + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_1D5E8 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_409E + jg short loc_40EE + cmp ax, 0FFFFh + ja short loc_40EE + +loc_409E: ; CODE XREF: __sbrk+22j + mov dx, word_1D5EA + mov ax, word_1D5E8 + 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_1D5E6 + mov bx, word_1D5E4 + call N_PCMP@ + jb short loc_40EE + mov cx, word_1D5EE + mov bx, word_1D5EC + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_40EE + mov dx, word_1D5EA + mov ax, word_1D5E8 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_3FA2 + or ax, ax + jnz short loc_40F6 + +loc_40EE: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_40FC +; --------------------------------------------------------------------------- + +loc_40F6: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_40FC: ; 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_1E5E6 + mov ax, word_1E5E4 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_412B + cmp ax, 1 + jz short loc_4168 + +loc_412B: ; CODE XREF: seg000:4124j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_413F + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4149 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4149 + +loc_413F: ; CODE XREF: seg000:4131j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4149: ; CODE XREF: seg000:4137j seg000:413Dj + mov word_1E5E6, 0 + mov word_1E5E4, 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_4168: ; CODE XREF: seg000:4129j + 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_1E5E6 + mov ax, word_1E5E4 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_419D + cmp ax, 1 + jz short loc_41DA + +loc_419D: ; CODE XREF: seg000:4196j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_41B1 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_41BB + cmp word ptr [bp-4], 0FFFFh + jnz short loc_41BB + +loc_41B1: ; CODE XREF: seg000:41A3j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_41BB: ; CODE XREF: seg000:41A9j seg000:41AFj + mov word_1E5E6, 0 + mov word_1E5E4, 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_41DA: ; CODE XREF: seg000:419Bj + 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_1E5DE + mov ax, word_1E5DC + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_4211 + cmp ax, 1 + jz short loc_4256 + +loc_4211: ; CODE XREF: seg000:420Aj + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_4225 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_422F + cmp word ptr [bp-4], 0FFFFh + jnz short loc_422F + +loc_4225: ; CODE XREF: seg000:4217j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_422F: ; CODE XREF: seg000:421Dj seg000:4223j + mov word_1E5DE, 0 + mov word_1E5DC, 0 + push word_263E4 + push word_263E2 + 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_4256: ; CODE XREF: seg000:420Fj + 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_4265 proc far ; CODE XREF: seg000:42AEp sub_436C+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_426C: ; CODE XREF: sub_4265+1Cj + mov bx, dx + mov al, [bx+1094h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_427D + mov ax, dx + jmp short loc_4286 +; --------------------------------------------------------------------------- + +loc_427D: ; CODE XREF: sub_4265+12j + inc dx + cmp dx, 6 + jl short loc_426C + mov ax, 0FFFFh + +loc_4286: ; CODE XREF: sub_4265+16j + pop di + pop si + pop bp + retf +sub_4265 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_1E5DB, 0 + jnz short loc_42AA + mov word_263DC, seg seg000 + mov word_263DA, 428Ah + mov byte_1E5DB, 1 + +loc_42AA: ; CODE XREF: seg000:4297j + push word ptr [bp+6] + push cs + call near ptr sub_4265 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_42C9 + mov word_1D5DE, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_4366 +; --------------------------------------------------------------------------- + +loc_42C9: ; CODE XREF: seg000:42B8j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+107Eh] + mov ax, [bx+107Ch] + 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+107Eh], dx + mov [bx+107Ch], ax + cmp word ptr [bp+6], 2 + jnz short loc_4333 + cmp byte_1E5DA, 0 + jnz short loc_4314 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_263E4, dx + mov word_263E2, ax + mov byte_1E5DA, 1 + +loc_4314: ; CODE XREF: seg000:42FCj + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_4326 + push word_263E4 + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc far ; CODE XREF: sub_61BC+7Bp sub_61BC+9Ap ... + push word_263E2 + jmp short loc_432E +; --------------------------------------------------------------------------- + +loc_4326: ; CODE XREF: seg000:431Aj + mov ax, seg seg000 + push ax + mov ax, 41E6h + push ax + +loc_432E: ; CODE XREF: sub_4320+4j + mov ax, 23h ; '#' + jmp short loc_4357 +; --------------------------------------------------------------------------- + +loc_4333: ; CODE XREF: seg000:42F5j + cmp word ptr [bp+6], 8 + jnz short loc_4360 + mov ax, seg seg000 + push ax + mov ax, 4102h + push ax ; isr + xor ax, ax + push ax ; interruptno + nop + push cs + call near ptr _setvect + add sp, 6 + mov ax, seg seg000 + push ax + mov ax, 4174h + push ax ; isr + mov ax, 4 + +loc_4357: ; CODE XREF: sub_4320+11j + push ax ; interruptno + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_4360: ; CODE XREF: sub_4320+17j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_4366: ; CODE XREF: seg000:42C6j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4320 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_436C 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_4265 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_4389 + mov ax, 1 + jmp short loc_43FD +; --------------------------------------------------------------------------- + +loc_4389: ; CODE XREF: sub_436C+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+107Eh] + mov ax, [bx+107Ch] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_43A7 + cmp ax, 1 + jz short loc_43FB + +loc_43A7: ; CODE XREF: sub_436C+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_43D6 + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_43C1 + cmp ax, 16h + jnz short loc_43CA + nop + push cs + call near ptr sub_2EB0 +; --------------------------------------------------------------------------- + +loc_43C1: ; CODE XREF: sub_436C+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_43CA: ; CODE XREF: sub_436C+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_43FB +; --------------------------------------------------------------------------- + +loc_43D6: ; CODE XREF: sub_436C+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+107Eh], 0 + mov word ptr [bx+107Ch], 0 + mov bx, [bp+var_2] + mov al, [bx+109Ah] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_43FB: ; CODE XREF: sub_436C+39j sub_436C+68j + xor ax, ax + +loc_43FD: ; CODE XREF: sub_436C+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_436C 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_4DD9+A8p sub_9402+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_4422 + jmp short loc_443A +; --------------------------------------------------------------------------- + +loc_4422: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_442D + test dl, 1 + jnz short loc_4431 + +loc_442D: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_443A +; --------------------------------------------------------------------------- + +loc_4431: ; CODE XREF: __access+28j + mov word_1D5DE, 5 + mov ax, 0FFFFh + +loc_443A: ; 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, 0A0h, 10h, 0Bh, 6, 0A2h, 10h, 75h, 27h + db 0BEh, 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h + db 8Ch, 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h + db 5, 83h, 0FEh, 0FFh, 75h, 6, 0BEh, 0A4h, 10h, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_1E600, si + mov word ptr dword_1E600+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_4487 proc far ; CODE XREF: sub_44AC+35p + ; sub_4891+284p ... + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov al, [bp+arg_0] + xor cx, cx + les bx, dword_1E600 + +loc_4495: ; CODE XREF: sub_4487+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_44A7 + cmp al, dl + jb short loc_44A7 + inc bx + inc bx + cmp al, dh + ja short loc_4495 + inc cx + +loc_44A7: ; CODE XREF: sub_4487+13j sub_4487+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_4487 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_44AC proc far ; CODE XREF: sub_4857+23p + ; sub_4891+1AEp ... + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 4 + push si + push di + xor cx, cx + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_44C2: ; CODE XREF: sub_44AC+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_44CF + xor cx, cx + jmp short loc_44FD +; --------------------------------------------------------------------------- + +loc_44CF: ; CODE XREF: sub_44AC+1Dj + cmp cx, 1 + jnz short loc_44D9 + mov cx, 2 + jmp short loc_44F0 +; --------------------------------------------------------------------------- + +loc_44D9: ; CODE XREF: sub_44AC+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_4487 + pop cx + or ax, ax + jz short loc_44EE + mov cx, 1 + jmp short loc_44F0 +; --------------------------------------------------------------------------- + +loc_44EE: ; CODE XREF: sub_44AC+3Bj + xor cx, cx + +loc_44F0: ; CODE XREF: sub_44AC+2Bj sub_44AC+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_44FD + inc word ptr [bp+var_4] + jmp short loc_44C2 +; --------------------------------------------------------------------------- + +loc_44FD: ; CODE XREF: sub_44AC+21j sub_44AC+4Aj + or cx, cx + jnz short loc_4506 + mov ax, 1 + jmp short loc_4508 +; --------------------------------------------------------------------------- + +loc_4506: ; CODE XREF: sub_44AC+53j + xor ax, ax + +loc_4508: ; CODE XREF: sub_44AC+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_44AC 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_4527 + xchg ax, cx + jmp short loc_452B +; --------------------------------------------------------------------------- + +loc_4527: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_452B: ; 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_4547 + nop + push cs + call near ptr _flushall + jmp loc_45F8 +; --------------------------------------------------------------------------- + +loc_4547: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_4556 + jmp loc_45F3 +; --------------------------------------------------------------------------- + +loc_4556: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_45AD + test byte ptr es:[bx+2], 8 + jnz short loc_457E + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_4578 + jmp loc_45F8 +; --------------------------------------------------------------------------- + +loc_4578: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_45F8 + +loc_457E: ; 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_45F8 + cmp es:[bx+0Ch], ax + jnz short loc_45F8 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_45F8 +; --------------------------------------------------------------------------- + +loc_45AD: ; 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_45F8 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_45F8 + or word ptr es:[bx+2], 10h + +loc_45F3: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_45FA +; --------------------------------------------------------------------------- + +loc_45F8: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_45FA: ; 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_1E30C + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 0C1Ch + jmp short loc_4639 +; --------------------------------------------------------------------------- + +loc_461D: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_4635 + 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_4635: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_4639: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_461D + 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_464C 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_4669 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_4676 +; --------------------------------------------------------------------------- + +loc_4669: ; CODE XREF: sub_464C+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_4676: ; CODE XREF: sub_464C+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_46CA + 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_46C3 + jmp short loc_46AB +; --------------------------------------------------------------------------- + +loc_469C: ; CODE XREF: sub_464C+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_46AB + inc [bp+var_2] + +loc_46AB: ; CODE XREF: sub_464C+4Ej sub_464C+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_469C + jmp short loc_46CA +; --------------------------------------------------------------------------- + +loc_46B4: ; CODE XREF: sub_464C+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_46C3 + inc [bp+var_2] + +loc_46C3: ; CODE XREF: sub_464C+4Cj sub_464C+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_46B4 + +loc_46CA: ; CODE XREF: sub_464C+35j sub_464C+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_464C 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_46F0 + mov ax, 0FFFFh + jmp short loc_4753 +; --------------------------------------------------------------------------- + +loc_46F0: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_470D + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_470D + push word ptr [bp+stream+2] + push bx + call sub_464C + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_470D: ; 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_4751 + cmp ax, 0FFFFh + jnz short loc_4751 + mov ax, 0FFFFh + jmp short loc_4753 +; --------------------------------------------------------------------------- + +loc_4751: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_4753: ; 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_478B + cmp ax, 0FFFFh + jnz short loc_478B + jmp loc_482C +; --------------------------------------------------------------------------- + +loc_478B: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_4797 + jmp loc_481C +; --------------------------------------------------------------------------- + +loc_4797: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+0DAFh], 8 + jz short loc_480A + 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_47D2 + cmp ax, 0FFFFh + jnz short loc_47D2 + jmp short loc_4832 +; --------------------------------------------------------------------------- + +loc_47D2: ; 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_47FE + cmp ax, 0FFFFh + jnz short loc_47FE + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_4832 +; --------------------------------------------------------------------------- + +loc_47FE: ; 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_480A: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_464C + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_482C +; --------------------------------------------------------------------------- + +loc_481C: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_464C + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_482C: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_4832: ; 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_4838 proc near ; CODE XREF: sub_4857+Ep sub_4891+7Dp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + cmp ax, 5Ch ; '\' + jz short loc_484A + cmp ax, 2Fh ; '/' + jnz short loc_484F + +loc_484A: ; CODE XREF: sub_4838+Bj + mov ax, 1 + jmp short loc_4851 +; --------------------------------------------------------------------------- + +loc_484F: ; CODE XREF: sub_4838+10j + xor ax, ax + +loc_4851: ; CODE XREF: sub_4838+15j + pop di + pop si + pop bp + retn 2 +sub_4838 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4857 proc near ; CODE XREF: sub_4891+CDp + ; sub_4891+15Bp ... + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + les bx, [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + push ax + call sub_4838 + or ax, ax + jz short loc_4889 + 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_44AC + add sp, 8 + or ax, ax + jz short loc_4889 + mov ax, 1 + jmp short loc_488B +; --------------------------------------------------------------------------- + +loc_4889: ; CODE XREF: sub_4857+13j sub_4857+2Bj + xor ax, ax + +loc_488B: ; CODE XREF: sub_4857+30j + pop di + pop si + pop bp + retn 8 +sub_4857 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4891 proc far ; CODE XREF: sub_4DD9+10Dp + +drive = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +src = dword ptr -0Ch +dest = dword ptr -8 +s = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 12h + push si + push di + mov ax, 0A1h ; '¡' + push ax + nop + push cs + call near ptr sub_3DBA + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_48B0 + jmp loc_4AF3 +; --------------------------------------------------------------------------- + +loc_48B0: ; CODE XREF: sub_4891+1Aj + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + les bx, [bp+src] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0E4Dh], 0Ch + jz short loc_48F0 + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_48F0 + mov al, es:[bx] + cbw + mov [bp+var_10], ax + push ax ; ch + nop + push cs + call near ptr _toupper + pop cx + add ax, 0FFC0h + mov [bp+drive], ax + add word ptr [bp+src], 2 + jmp short loc_4906 +; --------------------------------------------------------------------------- + +loc_48F0: ; CODE XREF: sub_4891+39j sub_4891+43j + push ss + lea ax, [bp+drive] + push ax ; drive + nop + push cs + call near ptr __dos_getdrive + pop cx + pop cx + mov ax, [bp+drive] + add ax, 41h ; 'A' + dec ax + mov [bp+var_10], ax + +loc_4906: ; CODE XREF: sub_4891+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_4838 + or ax, ax + jnz short loc_496E + mov ax, 0A1h ; '¡' + push ax ; len + push word ptr [bp+s+2] + push word ptr [bp+s] ; buf + push [bp+drive] ; drive + nop + push cs + call near ptr __getdcwd + add sp, 8 + or ax, dx + jnz short loc_493E + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + jmp loc_4AF3 +; --------------------------------------------------------------------------- + +loc_493E: ; CODE XREF: sub_4891+9Bj + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov dx, word ptr [bp+s+2] + add ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + push dx + push word ptr [bp+s] + dec ax + push dx + push ax + call sub_4857 + or ax, ax + jnz short loc_4990 + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_498D +; --------------------------------------------------------------------------- + +loc_496E: ; CODE XREF: sub_4891+82j + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov al, byte ptr [bp+var_10] + mov es:[bx], al + inc word ptr [bp+dest] + les bx, [bp+dest] + mov byte ptr es:[bx], 3Ah ; ':' + +loc_498D: ; CODE XREF: sub_4891+DBj + inc word ptr [bp+dest] + +loc_4990: ; CODE XREF: sub_4891+D2j + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + +loc_49B6: ; CODE XREF: sub_4891+28Cj + ; sub_4891+298j ... + les bx, [bp+src] + inc word ptr [bp+src] + mov al, es:[bx] + cbw + mov [bp+var_E], ax + or ax, ax + jz short loc_49D2 + push ax + call sub_4838 + or ax, ax + jnz short loc_49D2 + jmp loc_4B04 +; --------------------------------------------------------------------------- + +loc_49D2: ; CODE XREF: sub_4891+134j + ; sub_4891+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_49F9 + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFEh + push word ptr [bp+dest+2] + push ax + call sub_4857 + or ax, ax + jz short loc_49F9 + sub word ptr [bp+dest], 2 + jmp short loc_4A70 +; --------------------------------------------------------------------------- + +loc_49F9: ; CODE XREF: sub_4891+149j + ; sub_4891+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4A70 + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_4A70 + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFDh + push word ptr [bp+dest+2] + push ax + call sub_4857 + or ax, ax + jz short loc_4A70 + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4A59 + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_44AC + add sp, 8 + or ax, ax + jz short loc_4A59 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + jmp loc_4AF3 +; --------------------------------------------------------------------------- + +loc_4A59: ; CODE XREF: sub_4891+19Cj + ; sub_4891+1B6j ... + push word ptr [bp+s+2] + push word ptr [bp+s] + dec word ptr [bp+dest] + mov ax, word ptr [bp+dest] + push word ptr [bp+dest+2] + push ax + call sub_4857 + or ax, ax + jz short loc_4A59 + +loc_4A70: ; CODE XREF: sub_4891+166j + ; sub_4891+170j ... + cmp [bp+var_E], 0 + jz short loc_4A79 + jmp loc_4AF9 +; --------------------------------------------------------------------------- + +loc_4A79: ; CODE XREF: sub_4891+1E3j + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + call sub_4857 + or ax, ax + jz short loc_4A91 + dec word ptr [bp+dest] + +loc_4A91: ; CODE XREF: sub_4891+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4ABF + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_44AC + add sp, 8 + or ax, ax + jz short loc_4ABF + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_4ABF: ; CODE XREF: sub_4891+208j + ; sub_4891+222j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov dx, ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_4AE1 + jmp loc_4B65 +; --------------------------------------------------------------------------- + +loc_4AE1: ; CODE XREF: sub_4891+24Bj + cmp dx, [bp+arg_8] + jbe short loc_4B3E + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + +loc_4AF3: ; CODE XREF: sub_4891+1Cj sub_4891+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_4B74 +; --------------------------------------------------------------------------- + +loc_4AF9: ; CODE XREF: sub_4891+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_4B38 +; --------------------------------------------------------------------------- + +loc_4B04: ; CODE XREF: sub_4891+13Ej + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + inc word ptr [bp+dest] + push [bp+var_E] + nop + push cs + call near ptr sub_4487 + pop cx + or ax, ax + jnz short loc_4B20 + jmp loc_49B6 +; --------------------------------------------------------------------------- + +loc_4B20: ; CODE XREF: sub_4891+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_4B2C + jmp loc_49B6 +; --------------------------------------------------------------------------- + +loc_4B2C: ; CODE XREF: sub_4891+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_4B38: ; CODE XREF: sub_4891+271j + inc word ptr [bp+dest] + jmp loc_49B6 +; --------------------------------------------------------------------------- + +loc_4B3E: ; CODE XREF: sub_4891+253j + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push [bp+arg_2] + push [bp+arg_0] ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3C87 + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_4B74 +; --------------------------------------------------------------------------- + +loc_4B65: ; CODE XREF: sub_4891+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3F21 + add sp, 6 + +loc_4B74: ; CODE XREF: sub_4891+266j + ; sub_4891+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4891 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_4891+93p sub_4DD9+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_4B96 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_4B96: ; 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_4BF2 + 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_4BD1 + mov word_1D5DE, 22h ; '"' + jmp short loc_4BF2 +; --------------------------------------------------------------------------- + +loc_4BD1: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_4BF8 + push [bp+len] + nop + push cs + call near ptr sub_3DBA + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4BF8 + mov word_1D5DE, 8 + +loc_4BF2: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_4C11 +; --------------------------------------------------------------------------- + +loc_4BF8: ; 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_4C11: ; 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 near ; CODE XREF: __searchenv+10p + ; sub_948B+126p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_2 = dword ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les di, [bp+arg_2] + mov ax, es + or ax, di + jz short loc_4C48 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_4C48 + les di, dword_1E62C + mov [bp+var_2], es + mov bx, es + or bx, di + mov [bp+var_4], di + jnz short loc_4C55 + +loc_4C48: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax +_getenv endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4C4C proc far ; CODE XREF: sub_948B+22Fp + ; DATA XREF: dseg:off_1D566o + jmp short loc_4C81 +; --------------------------------------------------------------------------- + +loc_4C4E: ; CODE XREF: sub_4C4C+1Bj sub_4C4C+23j ... + add word ptr [bp-4], 4 + les di, [bp-4] + +loc_4C55: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_4C48 + mov al, es:[di] + or al, al + jz short loc_4C48 + cmp ah, al + jnz short loc_4C4E + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_4C4E + push ds + lds si, [bp+6] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_4C4E + inc di + mov ax, di + mov dx, es + +loc_4C81: ; CODE XREF: sub_4C4Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4C4C 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_4CA8 + 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_4CA8: ; 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_6493+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_4CC7 + movsb + +loc_4CC7: ; 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_4CEE + jcxz short loc_4CF5 + stosb + dec cx + +loc_4CEE: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_4CF5 + stosb + +loc_4CF5: ; 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_713F+CFp + ; sub_1D189+153P + +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_4D38 + std + mov ax, 1 + jmp short loc_4D3B +; --------------------------------------------------------------------------- + +loc_4D38: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_4D3B: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_4D4E + add si, cx + dec si + add di, cx + dec di + +loc_4D4E: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_4D58 + jcxz short loc_4D67 + movsb + dec cx + +loc_4D58: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_4D67 + add si, ax + add di, ax + movsb + +loc_4D67: ; 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: sub_1D189+10FP + ; sub_1D189+138P + +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_9402+43p + +var_4 = dword ptr -4 +src = dword ptr 6 +varname = word ptr 0Ah +arg_6 = word ptr 0Ch +pathname = dword ptr 0Eh + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push [bp+arg_6] + push [bp+varname] + nop + push cs ; name + call _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_4DB9 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 10B0h + +loc_4DB9: ; 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_4DD9 + add sp, 0Ch + pop di + pop si + mov sp, bp + pop bp + retf +__searchenv endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_4DD9(char *src, __int32, char *pathname) +sub_4DD9 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_4DFE + xor dx, dx + jmp short loc_4E0D +; --------------------------------------------------------------------------- + +loc_4DFE: ; CODE XREF: sub_4DD9+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_4E0D: ; CODE XREF: sub_4DD9+23j sub_4DD9+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_4E62 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_4E33 + cmp bl, 2Fh ; '/' + jz short loc_4E33 + cmp bl, 3Ah ; ':' + jnz short loc_4E4F + +loc_4E33: ; CODE XREF: sub_4DD9+4Ej sub_4DD9+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_44AC + add sp, 8 + or ax, ax + jnz short loc_4E62 + +loc_4E4F: ; CODE XREF: sub_4DD9+58j + push ds + mov ax, 10B2h + 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_4E62: ; CODE XREF: sub_4DD9+3Fj sub_4DD9+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_4ED6 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4E9D + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_4F15 +; --------------------------------------------------------------------------- + +loc_4E9D: ; CODE XREF: sub_4DD9+B9j + xor dx, dx + jmp short loc_4EB5 +; --------------------------------------------------------------------------- + +loc_4EA1: ; CODE XREF: sub_4DD9+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_4EB5: ; CODE XREF: sub_4DD9+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_4EC4 + cmp byte ptr es:[bx], 0 + jnz short loc_4EA1 + +loc_4EC4: ; CODE XREF: sub_4DD9+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4ED0 + jmp loc_4E0D +; --------------------------------------------------------------------------- + +loc_4ED0: ; CODE XREF: sub_4DD9+F2j + inc word ptr [bp+arg_4] + jmp loc_4E0D +; --------------------------------------------------------------------------- + +loc_4ED6: ; CODE XREF: sub_4DD9+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_4891 + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_4F15 + 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_3C87 + add sp, 0Ch + +loc_4F15: ; CODE XREF: sub_4DD9+C2j + ; sub_4DD9+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4DD9 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:3761p seg000:379Ap + +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_4F2F + jmp loc_5006 +; --------------------------------------------------------------------------- + +loc_4F2F: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_4F38 + jmp loc_5006 +; --------------------------------------------------------------------------- + +loc_4F38: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_4F42 + jmp loc_5006 +; --------------------------------------------------------------------------- + +loc_4F42: ; CODE XREF: _setvbuf+22j + cmp word_1E616, 0 + jnz short loc_4F58 + cmp word ptr [bp+stream], 0C30h + jnz short loc_4F58 + mov word_1E616, 1 + jmp short loc_4F6C +; --------------------------------------------------------------------------- + +loc_4F58: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_1E614, 0 + jnz short loc_4F6C + cmp word ptr [bp+stream], 0C1Ch + jnz short loc_4F6C + mov word_1E614, 1 + +loc_4F6C: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_4F89 + 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_4F89: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_4FA2 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + +loc_4FA2: ; 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_5036 + cmp [bp+_size], 0 + jbe short loc_5036 + mov word ptr off_1E170+2, seg seg000 + mov word ptr off_1E170, 5344h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_500B + push [bp+_size] + nop + push cs + call near ptr sub_3DBA + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_5006 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_500B +; --------------------------------------------------------------------------- + +loc_5006: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_5038 +; --------------------------------------------------------------------------- + +loc_500B: ; 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_5036 + or word ptr es:[bx+2], 8 + +loc_5036: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_5038: ; 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_4DD9+83p sub_4DD9+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_506C + movsb + dec cx + +loc_506C: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_5073 + movsb + +loc_5073: ; 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_4891+10Dp + ; sub_4891+2BBp ... + +dest = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + cld + les di, [bp+src] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + push ds + mov ax, es + mov ds, ax + les di, [bp+dest] + rep movsb + pop ds + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_strcpy endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl stricmp(const char *s1, const char *s2) +_stricmp proc far ; CODE XREF: sub_948B+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_50E9: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_510D + scasb + jz short loc_50E9 + cmp al, ch + jb short loc_50FE + cmp al, cl + ja short loc_50FE + sub al, 20h ; ' ' + +loc_50FE: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_5109 + cmp bl, cl + ja short loc_5109 + sub bl, 20h ; ' ' + +loc_5109: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_50E9 + +loc_510D: ; 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_5128 + cmp ax, di + jz short loc_5132 + +loc_5128: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_5132: ; 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_5136(char *s, char) +sub_5136 proc far ; CODE XREF: sub_948B+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_5175 +; --------------------------------------------------------------------------- + +loc_515E: ; CODE XREF: sub_5136+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_5174 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_517D +; --------------------------------------------------------------------------- + +loc_5174: ; CODE XREF: sub_5136+34j + dec cx + +loc_5175: ; CODE XREF: sub_5136+26j + or cx, cx + jnz short loc_515E + xor dx, dx + xor ax, ax + +loc_517D: ; CODE XREF: sub_5136+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5136 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_1E30C + jb short loc_519F + mov ax, 6 + push ax + call __IOERROR + jmp loc_52E3 +; --------------------------------------------------------------------------- + +loc_519F: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_51AD + xor ax, ax + jmp loc_52E3 +; --------------------------------------------------------------------------- + +loc_51AD: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0DAFh], 8 + jz short loc_51CC + 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_51CC: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0DAFh], 40h + jnz short loc_51EF + 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_52E3 +; --------------------------------------------------------------------------- + +loc_51EF: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+0DAEh], 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_5289 +; --------------------------------------------------------------------------- + +loc_520E: ; 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_522B + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_522B: ; 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_5293 + jnz short loc_5251 + cmp dx, 80h ; '€' + jb short loc_5293 + +loc_5251: ; 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_5289 + cmp dx, 0FFFFh + jnz short loc_5281 + mov ax, 0FFFFh + jmp short loc_52DE +; --------------------------------------------------------------------------- + +loc_5281: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_52D9 +; --------------------------------------------------------------------------- + +loc_5289: ; 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_5293: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_529C + jmp loc_520E +; --------------------------------------------------------------------------- + +loc_529C: ; 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_52E0 + 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_52E0 + cmp dx, 0FFFFh + jnz short loc_52D6 + mov ax, 0FFFFh + jmp short loc_52DE +; --------------------------------------------------------------------------- + +loc_52D6: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_52D9: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_52DE: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_52E3 +; --------------------------------------------------------------------------- + +loc_52E0: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_52E3: ; 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+0DAEh], 1 + jz short loc_5300 + mov ax, 5 + push ax + jmp short loc_5321 +; --------------------------------------------------------------------------- + +loc_5300: ; 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_5320 + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+0DAEh], 1000h + pop ax + jmp short loc_5324 +; --------------------------------------------------------------------------- + +loc_5320: ; CODE XREF: __rtl_write+26j + push ax + +loc_5321: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_5324: ; 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], 0C1Ch + jmp short loc_5377 +; --------------------------------------------------------------------------- + +loc_535B: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_5370 + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_5370: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_5377: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_535B + 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_53A4 + 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_53C2 + +loc_53A4: ; 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_53C2: ; 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_54BD + db 4 dup(0), 0BDh, 54h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 0DEh, 53h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 0E6h, 53h + +; =============== 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_1D0E8+4DP ... + +var_28 = dword ptr -28h +var_6 = 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, 53F4h + 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, 547Ah + push ax + xor ax, ax + push ax + push ax + 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+var_6] + 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+var_6] + push ss + push ax + push cs + mov ax, 54BDh + 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 +@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_54BD db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:53DEo + db 0Dh dup(0), 2, 0, 2, 0, 0FFh, 54h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 4Ch, 55h + 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_5546 + 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_5544 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_5548 +; --------------------------------------------------------------------------- + +loc_5544: ; CODE XREF: seg000:5533j + jmp short loc_5548 +; --------------------------------------------------------------------------- + +loc_5546: ; CODE XREF: seg000:550Aj + xor ax, ax + +loc_5548: ; CODE XREF: seg000:5542j + ; seg000:loc_5544j + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + db 4, 0 +; --------------------------------------------------------------------------- + +loc_554E: ; CODE XREF: sub_948B+22Fp + ; DATA XREF: dseg:off_1D564o + db 3, 0, 26h, 0, 0FFh, 0FFh, 3, 0, 2Ch, 0, 30h + db 0Dh dup(0), 1, 0, 1, 0, 1Eh, 57h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0F2h + db 58h + 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), 84h, 55h + +; =============== 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, 5592h + 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_55D7 + 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_5629 + +loc_55D7: ; 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_5619 + 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_5619: ; 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_5629: ; 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_58F2 + db 87h, 20h, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 2 dup(0FFh), 6, 0, 5, 3 dup(0), 4Fh, 56h + +; =============== 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:3426p seg000:34EEp ... + +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, 565Dh + 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_56A2 + 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_56F8 + +loc_56A2: ; 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_56E8 + 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_56E8: ; 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_56F8: ; 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:35BDp seg000:366Cp ... + +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_5778 + 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_5778 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_5778: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_58BA + db 4 dup(0), 7Ch, 57h + 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 + +var_22 = 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, 5784h + 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, 5673h + push ax + xor ax, ax + push ax + push ax + push [bp+arg_2] + push [bp+arg_0] + push ss + lea ax, [bp+var_22] + push ax + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + lea ax, [bp+var_22] + push ss + push ax + push cs + mov ax, 58BAh + 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 +@xmsg@raise$qv endp + +; --------------------------------------------------------------------------- + dd byte_58F2 + 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), 0DDh, 57h + +; =============== 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, 57EBh + 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_5824 + cmp ax, word ptr [bp+arg_4] + jz short loc_58A2 + +loc_5824: ; 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_5892 + 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_5892: ; 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_58A2: ; 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_58BA db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:577Co + db 0Dh dup(0), 1, 0, 1, 0, 1Eh, 57h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_58F2 db 4, 0, 10h, 20h, 0Ah, 0, 5, 59h ; DATA XREF: seg000:564Fo + ; seg000:57DDo + 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, 0Fh, 3 + dw seg seg012 + 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_594B 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_595F + mov dx, ds + mov ax, 10BAh + jmp short loc_596C +; --------------------------------------------------------------------------- + +loc_595F: ; CODE XREF: sub_594B+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_596C: ; CODE XREF: sub_594B+12j + pop di + pop si + pop bp + retf +sub_594B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5970 proc far ; CODE XREF: sub_5A0D+69p + ; sub_5A0D+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_5988 + cmp ax, word ptr [bp+arg_4] + jz short loc_5A04 + +loc_5988: ; CODE XREF: sub_5970+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_59FC + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_59FC + 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_59FC + 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_59DE: ; CODE XREF: sub_5970+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_5A00 + +loc_59FC: ; CODE XREF: sub_5970+26j sub_5970+34j ... + xor ax, ax + jmp short loc_5A07 +; --------------------------------------------------------------------------- + +loc_5A00: ; CODE XREF: sub_5970+8Aj + or dx, dx + jnz short loc_59DE + +loc_5A04: ; CODE XREF: sub_5970+16j + mov ax, 1 + +loc_5A07: ; CODE XREF: sub_5970+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5970 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5A0D proc near ; CODE XREF: sub_5A0D+9Bp + ; sub_5A0D+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_5A28: ; CODE XREF: sub_5A0D+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_5ABC + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_5AB5 + cmp [bp+arg_C], 0 + jz short loc_5A64 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5A64 + mov ax, 1 + jmp short loc_5A66 +; --------------------------------------------------------------------------- + +loc_5A64: ; CODE XREF: sub_5A0D+41j sub_5A0D+50j + xor ax, ax + +loc_5A66: ; CODE XREF: sub_5A0D+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_5970 + add sp, 8 + or ax, ax + jz short loc_5A89 + cmp [bp+var_6], 0 + jz short loc_5A89 + jmp loc_5B4C +; --------------------------------------------------------------------------- + +loc_5A89: ; CODE XREF: sub_5A0D+71j sub_5A0D+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5AB5 + 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_5A0D + add sp, 0Eh + or ax, ax + jz short loc_5AB5 + jmp loc_5B4C +; --------------------------------------------------------------------------- + +loc_5AB5: ; CODE XREF: sub_5A0D+3Bj sub_5A0D+84j ... + add word ptr [bp+var_4], 8 + jmp loc_5A28 +; --------------------------------------------------------------------------- + +loc_5ABC: ; CODE XREF: sub_5A0D+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_5ACF: ; CODE XREF: sub_5A0D+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_5B58 + cmp [bp+arg_C], 0 + jz short loc_5B01 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5B01 + mov ax, 1 + jmp short loc_5B03 +; --------------------------------------------------------------------------- + +loc_5B01: ; CODE XREF: sub_5A0D+DEj sub_5A0D+EDj + xor ax, ax + +loc_5B03: ; CODE XREF: sub_5A0D+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_5970 + add sp, 8 + or ax, ax + jz short loc_5B23 + cmp [bp+var_6], 0 + jnz short loc_5B4C + +loc_5B23: ; CODE XREF: sub_5A0D+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5B51 + 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_5A0D + add sp, 0Eh + or ax, ax + jz short loc_5B51 + +loc_5B4C: ; CODE XREF: sub_5A0D+79j sub_5A0D+A5j ... + mov ax, 1 + jmp short loc_5B5A +; --------------------------------------------------------------------------- + +loc_5B51: ; CODE XREF: sub_5A0D+11Ej + ; sub_5A0D+13Dj + add word ptr [bp+var_4], 8 + jmp loc_5ACF +; --------------------------------------------------------------------------- + +loc_5B58: ; CODE XREF: sub_5A0D+D8j + xor ax, ax + +loc_5B5A: ; CODE XREF: sub_5A0D+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5A0D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5B60 proc near ; CODE XREF: sub_5D69+1Dp sub_5D69+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_5B6B: ; CODE XREF: sub_5B60+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_5B7E + cmp ax, word ptr [bp+arg_4] + jnz short loc_5B7E + jmp loc_5C93 +; --------------------------------------------------------------------------- + +loc_5B7E: ; CODE XREF: sub_5B60+14j sub_5B60+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_5C0E + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_5BB1 + jmp loc_5C54 +; --------------------------------------------------------------------------- + +loc_5BB1: ; CODE XREF: sub_5B60+4Cj + or cx, cx + jz short loc_5BB8 + jmp loc_5CCC +; --------------------------------------------------------------------------- + +loc_5BB8: ; CODE XREF: sub_5B60+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_5BEE + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_5BDC + jmp loc_5CCC +; --------------------------------------------------------------------------- + +loc_5BDC: ; CODE XREF: sub_5B60+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_5C54 + +loc_5BEE: ; CODE XREF: sub_5B60+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_5C02 + jmp loc_5CCC +; --------------------------------------------------------------------------- + +loc_5C02: ; CODE XREF: sub_5B60+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_5C0B + jmp loc_5CCC +; --------------------------------------------------------------------------- + +loc_5C0B: ; CODE XREF: sub_5B60+A6j + jmp loc_5C93 +; --------------------------------------------------------------------------- + +loc_5C0E: ; CODE XREF: sub_5B60+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_5C7C + 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_5C33 + cmp ax, es:[bx+0Ah] + jz short loc_5C54 + +loc_5C33: ; CODE XREF: sub_5B60+CBj + or cx, cx + jz short loc_5C3A + jmp loc_5CCC +; --------------------------------------------------------------------------- + +loc_5C3A: ; CODE XREF: sub_5B60+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_5CCC + +loc_5C54: ; CODE XREF: sub_5B60+4Ej sub_5B60+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_5B6B +; --------------------------------------------------------------------------- + +loc_5C7C: ; CODE XREF: sub_5B60+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_5970 + add sp, 8 + or ax, ax + jz short loc_5C98 + +loc_5C93: ; CODE XREF: sub_5B60+1Bj + ; sub_5B60:loc_5C0Bj + mov ax, 1 + jmp short loc_5CCE +; --------------------------------------------------------------------------- + +loc_5C98: ; CODE XREF: sub_5B60+131j + test byte ptr [bp+var_2], 2 + jz short loc_5CCC + test byte ptr [bp+var_4], 1 + jz short loc_5CCC + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_5CCC + 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_5A0D + add sp, 0Eh + jmp short loc_5CCE +; --------------------------------------------------------------------------- + +loc_5CCC: ; CODE XREF: sub_5B60+55j sub_5B60+79j ... + xor ax, ax + +loc_5CCE: ; CODE XREF: sub_5B60+136j + ; sub_5B60+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_5B60 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5CD4 proc far ; CODE XREF: sub_6493+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_3DBA + 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_5D24 + cmp [bp+arg_0], 80h ; '€' + ja short loc_5D06 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_5D0B + +loc_5D06: ; CODE XREF: sub_5CD4+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_5D0B: ; CODE XREF: sub_5CD4+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_5D2A +; --------------------------------------------------------------------------- + +loc_5D24: ; CODE XREF: sub_5CD4+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_5D2A: ; CODE XREF: sub_5CD4+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5CD4 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_5D58 + cmp ax, [bp+6] + jnz short loc_5D58 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_5D65 +; --------------------------------------------------------------------------- + +loc_5D58: ; CODE XREF: seg000:5D45j seg000:5D4Aj + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + +loc_5D65: ; CODE XREF: seg000:5D56j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5D69 proc near ; CODE XREF: sub_75FA+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_5B60 + add sp, 0Eh + or ax, ax + jz short loc_5D93 + jmp loc_5E2F +; --------------------------------------------------------------------------- + +loc_5D93: ; CODE XREF: sub_5D69+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_5E23 + 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_5B60 + add sp, 0Eh + or ax, ax + jnz short loc_5E2F + 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_5E66 + 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_5B60 + add sp, 0Eh + or ax, ax + jnz short loc_5E2F + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_5E66 + +loc_5E23: ; CODE XREF: sub_5D69+42j + test byte ptr [bp+var_4], 10h + jz short loc_5E66 + test [bp+arg_C], 1 + jz short loc_5E34 + +loc_5E2F: ; CODE XREF: sub_5D69+27j sub_5D69+67j ... + mov ax, 1 + jmp short loc_5E68 +; --------------------------------------------------------------------------- + +loc_5E34: ; CODE XREF: sub_5D69+C4j + test byte ptr [bp+var_2], 10h + jz short loc_5E66 + test byte ptr [bp+var_2+1], 20h + jz short loc_5E46 + test byte ptr [bp+var_4+1], 20h + jz short loc_5E66 + +loc_5E46: ; CODE XREF: sub_5D69+D5j + test byte ptr [bp+var_4], 40h + jz short loc_5E66 + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_5E62 + mov ax, 1 + jmp short loc_5E64 +; --------------------------------------------------------------------------- + +loc_5E62: ; CODE XREF: sub_5D69+F2j + xor ax, ax + +loc_5E64: ; CODE XREF: sub_5D69+F7j + jmp short loc_5E68 +; --------------------------------------------------------------------------- + +loc_5E66: ; CODE XREF: sub_5D69+88j sub_5D69+B8j ... + xor ax, ax + +loc_5E68: ; CODE XREF: sub_5D69+C9j + ; sub_5D69:loc_5E64j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5D69 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5E6E proc near ; CODE XREF: sub_6493+263p + ; sub_713F+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_5E99 + or [bp+var_4], 2 + +loc_5E99: ; CODE XREF: sub_5E6E+25j + test byte ptr [bp+arg_C], 2 + jz short loc_5EAD + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_5EAD + or [bp+var_4], 20h + +loc_5EAD: ; CODE XREF: sub_5E6E+2Fj sub_5E6E+39j + test byte ptr [bp+arg_C], 20h + jz short loc_5EB7 + or [bp+var_4], 8 + +loc_5EB7: ; CODE XREF: sub_5E6E+43j + test byte ptr [bp+arg_C], 80h + jz short loc_5EC1 + or [bp+var_4], 10h + +loc_5EC1: ; CODE XREF: sub_5E6E+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_5ECA + jmp loc_604F +; --------------------------------------------------------------------------- + +loc_5ECA: ; CODE XREF: sub_5E6E+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_5ED5 + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5ED5: ; CODE XREF: sub_5E6E+62j + add bx, bx + jmp cs:off_618C[bx] + +loc_5EDC: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:off_618Co + 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_6155 +; --------------------------------------------------------------------------- + +loc_5EEE: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_5F00: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5F26 +; --------------------------------------------------------------------------- + +loc_5F14: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5F26: ; CODE XREF: sub_5E6E+A4j + add sp, 0Ah + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5F2C: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_5F3B: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5F4A: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5F70 +; --------------------------------------------------------------------------- + +loc_5F5E: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5F70: ; CODE XREF: sub_5E6E+EEj + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5F73: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_5F83: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_5F8B: ; CODE XREF: sub_5E6E+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5F93: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5FA1: ; CODE XREF: sub_5E6E+263j + call word ptr [bp+arg_8] + jmp short loc_5FB7 +; --------------------------------------------------------------------------- + +loc_5FA6: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5FB4: ; CODE XREF: sub_5E6E+272j + call [bp+arg_8] + +loc_5FB7: ; CODE XREF: sub_5E6E+136j + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5FBA: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_5FD4 +; --------------------------------------------------------------------------- + +loc_5FC8: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_5FD1: ; CODE XREF: sub_5E6E+205j + call [bp+arg_8] + +loc_5FD4: ; CODE XREF: sub_5E6E+158j + ; sub_5E6E+1FCj + pop cx + pop cx + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_5FD9: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_5FF0: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_6007: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_6010: ; CODE XREF: sub_5E6E+234j + call word ptr [bp+arg_8] + jmp short loc_6021 +; --------------------------------------------------------------------------- + +loc_6015: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_601E: ; CODE XREF: sub_5E6E+23Dj + call [bp+arg_8] + +loc_6021: ; CODE XREF: sub_5E6E+1A5j + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_6024: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_6038: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+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_6155 +; --------------------------------------------------------------------------- + +loc_604C: ; CODE XREF: sub_5E6E+69j + ; sub_5E6E+1EEj + ; DATA XREF: ... + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_604F: ; CODE XREF: sub_5E6E+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_605A + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_605A: ; CODE XREF: sub_5E6E+1E7j + add bx, bx + jmp cs:off_615C[bx] + +loc_6061: ; DATA XREF: seg000:off_615Co + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_5FD4 +; --------------------------------------------------------------------------- + +loc_606D: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:615Eo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5FD1 +; --------------------------------------------------------------------------- + +loc_6076: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6160o + 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_6096 +; --------------------------------------------------------------------------- + +loc_6087: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6162o + 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_6096: ; CODE XREF: sub_5E6E+217j + add sp, 8 + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_609C: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6164o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_6010 +; --------------------------------------------------------------------------- + +loc_60A5: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6166o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_601E +; --------------------------------------------------------------------------- + +loc_60AE: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:616Co + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + call word ptr [bp+arg_8] + jmp loc_6155 +; --------------------------------------------------------------------------- + +loc_60BC: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:616Eo + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_5F8B +; --------------------------------------------------------------------------- + +loc_60C5: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6168o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_5FA1 +; --------------------------------------------------------------------------- + +loc_60D4: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:616Ao ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_5FB4 +; --------------------------------------------------------------------------- + +loc_60E3: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:617Co + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop cx + jmp short loc_6155 +; --------------------------------------------------------------------------- + +loc_60EF: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:617Eo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_6155 +; --------------------------------------------------------------------------- + +loc_60FB: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6180o + 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_6155 +; --------------------------------------------------------------------------- + +loc_610D: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6182o + 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_6155 +; --------------------------------------------------------------------------- + +loc_611F: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6184o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + jmp short loc_6155 +; --------------------------------------------------------------------------- + +loc_612A: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6186o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_6155 +; --------------------------------------------------------------------------- + +loc_6135: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:6188o + 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_6155 +; --------------------------------------------------------------------------- + +loc_6145: ; CODE XREF: sub_5E6E+1EEj + ; DATA XREF: seg000:618Ao + 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_6155: ; CODE XREF: sub_5E6E+64j sub_5E6E+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_5E6E endp + +; --------------------------------------------------------------------------- +off_615C dw offset loc_6061 ; DATA XREF: sub_5E6E+1EEr + dw offset loc_606D + dw offset loc_6076 + dw offset loc_6087 + dw offset loc_609C + dw offset loc_60A5 + dw offset loc_60C5 + dw offset loc_60D4 + dw offset loc_60AE + dw offset loc_60BC + dw offset loc_60C5 + dw offset loc_60D4 + dw offset loc_6155 + dw offset loc_6155 + dw offset loc_6155 + dw offset loc_6155 + dw offset loc_60E3 + dw offset loc_60EF + dw offset loc_60FB + dw offset loc_610D + dw offset loc_611F + dw offset loc_612A + dw offset loc_6135 + dw offset loc_6145 +off_618C dw offset loc_5EDC ; DATA XREF: sub_5E6E+69r + dw offset loc_5EEE + dw offset loc_5F00 + dw offset loc_5F14 + dw offset loc_5F2C + dw offset loc_5F3B + dw offset loc_5F4A + dw offset loc_5F5E + dw offset loc_5F73 + dw offset loc_5F83 + dw offset loc_5F93 + dw offset loc_5FA6 + dw offset loc_604C + dw offset loc_604C + dw offset loc_604C + dw offset loc_604C + dw offset loc_5FBA + dw offset loc_5FC8 + dw offset loc_5FD9 + dw offset loc_5FF0 + dw offset loc_6007 + dw offset loc_6015 + dw offset loc_6024 + dw offset loc_6038 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_61BC proc near ; CODE XREF: sub_6493+2BCp + ; sub_6E4B+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_61CF + mov ax, 2 + jmp short loc_61D1 +; --------------------------------------------------------------------------- + +loc_61CF: ; CODE XREF: sub_61BC+Cj + xor ax, ax + +loc_61D1: ; CODE XREF: sub_61BC+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_61F7 + or [bp+var_6], 2 + +loc_61F7: ; CODE XREF: sub_61BC+35j + test byte ptr [bp+arg_8], 2 + jz short loc_620B + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_620B + or [bp+var_6], 20h + +loc_620B: ; CODE XREF: sub_61BC+3Fj sub_61BC+49j + test byte ptr [bp+arg_8], 20h + jz short loc_6215 + or [bp+var_6], 8 + +loc_6215: ; CODE XREF: sub_61BC+53j + test byte ptr [bp+arg_8], 80h + jz short loc_621F + or [bp+var_6], 10h + +loc_621F: ; CODE XREF: sub_61BC+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_622A + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_622A: ; CODE XREF: sub_61BC+69j + add bx, bx + jmp cs:off_6344[bx] + +loc_6231: ; DATA XREF: seg000:off_6344o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_623F: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6346o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_624D: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6348o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + add sp, 6 + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_625F: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:634Ao + 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_633D +; --------------------------------------------------------------------------- + +loc_6271: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:634Co + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62D7 +; --------------------------------------------------------------------------- + +loc_627C: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:634Eo + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_62D4 +; --------------------------------------------------------------------------- + +loc_6284: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6350o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_629E +; --------------------------------------------------------------------------- + +loc_6292: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6352o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_629E: ; CODE XREF: sub_61BC+D4j + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_62A1: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6354o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_62AF: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6356o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_633D +; --------------------------------------------------------------------------- + +loc_62BD: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6358o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62D7 +; --------------------------------------------------------------------------- + +loc_62CB: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:635Ao + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_62D4: ; CODE XREF: sub_61BC+C6j + call [bp+arg_4] + +loc_62D7: ; CODE XREF: sub_61BC+BEj + ; sub_61BC+10Dj + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_62D9: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6364o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_62E5: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6366o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_62F1: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6368o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop ds + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_62FF: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:636Ao + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_630D: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:636Co + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_6318: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:636Eo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_6323: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6370o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_633D +; --------------------------------------------------------------------------- + +loc_6330: ; CODE XREF: sub_61BC+70j + ; DATA XREF: seg000:6372o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_633D: ; CODE XREF: sub_61BC+6Bj sub_61BC+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_61BC endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_6344 dw offset loc_6231 ; DATA XREF: sub_61BC+70r + dw offset loc_623F + dw offset loc_624D + dw offset loc_625F + dw offset loc_6271 + dw offset loc_627C + dw offset loc_6284 + dw offset loc_6292 + dw offset loc_62A1 + dw offset loc_62AF + dw offset loc_62BD + dw offset loc_62CB + dw offset loc_633D + dw offset loc_633D + dw offset loc_633D + dw offset loc_633D + dw offset loc_62D9 + dw offset loc_62E5 + dw offset loc_62F1 + dw offset loc_62FF + dw offset loc_630D + dw offset loc_6318 + dw offset loc_6323 + dw offset loc_6330 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6374 proc near ; CODE XREF: sub_7FBB+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_639F + or [bp+var_4], 2 + +loc_639F: ; CODE XREF: sub_6374+25j + test byte ptr [bp+arg_8], 2 + jz short loc_63A9 + or [bp+var_4], 4 + +loc_63A9: ; CODE XREF: sub_6374+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_63B3 + or [bp+var_4], 8 + +loc_63B3: ; CODE XREF: sub_6374+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_6426 + add bx, bx + jmp cs:off_642D[bx] + +loc_63C2: ; DATA XREF: seg000:off_642Do + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_63CB: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:642Fo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_63D4: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:6431o + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_63E8 +; --------------------------------------------------------------------------- + +loc_63DF: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:6433o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_63E8: ; CODE XREF: sub_6374+69j + pop cx + pop cx + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_63EC: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:6435o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_63FA +; --------------------------------------------------------------------------- + +loc_63F4: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:6437o + push [bp+arg_0] + call [bp+arg_4] + +loc_63FA: ; CODE XREF: sub_6374+7Ej + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_63FC: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:643Do + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_6406: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:643Fo + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_6426 +; --------------------------------------------------------------------------- + +loc_6410: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:6439o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6424 +; --------------------------------------------------------------------------- + +loc_641B: ; CODE XREF: sub_6374+49j + ; DATA XREF: seg000:643Bo ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_6424: ; CODE XREF: sub_6374+A5j + jmp short $+2 + +loc_6426: ; CODE XREF: sub_6374+45j sub_6374+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6374 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_642D dw offset loc_63C2 ; DATA XREF: sub_6374+49r + dw offset loc_63CB + dw offset loc_63D4 + dw offset loc_63DF + dw offset loc_63EC + dw offset loc_63F4 + dw offset loc_6410 + dw offset loc_641B + dw offset loc_63FC + dw offset loc_6406 + dw offset loc_6410 + dw offset loc_641B + db 4 dup(0), 3, 67h + dw seg seg000 + db 14h dup(0), 5Ch, 67h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 45h, 64h + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 5Dh, 64h + 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_6493 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_2 = word ptr 6 +arg_4 = word ptr 8 +src = dword ptr 0Ah +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 +arg_20 = word ptr 24h + + push bp + mov bp, sp + sub sp, 48h + push si + push di + mov ax, seg seg000 + mov bx, 6475h + nop + push cs + call near ptr ___InitExceptBlocks + mov dx, [bp+arg_4] + mov ax, [bp+arg_2] + 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_651F +; --------------------------------------------------------------------------- + +loc_64FC: ; CODE XREF: sub_6493+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_651C + 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_651C: ; CODE XREF: sub_6493+78j + inc word ptr [bp+var_34] + +loc_651F: ; CODE XREF: sub_6493+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_64FC + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_16] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_1A] + mov ax, [bp+arg_18] + 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] + +loc_6566: ; CODE XREF: ___call_terminate+57P + ; DATA XREF: seg012:0C3Ao + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_657C + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_657E +; --------------------------------------------------------------------------- + +loc_657C: ; CODE XREF: sub_6493+DEj + xor ax, ax + +loc_657E: ; CODE XREF: sub_6493+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_6598 + 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_6598: ; CODE XREF: sub_6493+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_5CD4 + 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_14] + 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_C] + mov ax, [bp+arg_A] + 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], 5D30h + les bx, [bp+var_30] + mov ax, [bp+arg_16] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_1A] + mov ax, [bp+arg_18] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_10] + mov ax, [bp+arg_E] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + 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_6722 + 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_12] + push [bp+arg_10] + push [bp+arg_E] + 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_5E6E + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_670D +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_670D: ; CODE XREF: sub_6493+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_6722: ; CODE XREF: sub_6493+22Dj + cmp [bp+arg_20], 0 + jnz short loc_6766 + test byte ptr [bp+var_2C], 2 + jz short loc_6766 + 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_61BC + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6766 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6766: ; CODE XREF: sub_6493+293j + ; sub_6493+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_1E] + mov ax, [bp+arg_1C] + 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_6493 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _ThrowException(void *, void *, void *, void *, unsigned int, unsigned int, unsigned int, unsigned char *) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:3450p + ; 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 +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 +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 + push [bp+var_2] + push [bp+var_4] + 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 [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_6493 + 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_6856 + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_6856: ; CODE XREF: _ReThrowException(uint,uchar *)+34j + mov ax, 1 + push ax + push [bp+var_2] + push [bp+var_4] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + les bx, [bp+var_8] + push word ptr es:[bx+0Ch] + 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] + les bx, [bp+var_8] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+var_8] + cmp byte ptr es:[bx+38h], 0 + jz short loc_68A2 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_68AB +; --------------------------------------------------------------------------- + +loc_68A2: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_68AB: ; CODE XREF: _ReThrowException(uint,uchar *)+85j + push dx + push ax + les bx, [bp+var_8] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + push cs + call near ptr sub_6493 + 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_68C5 proc far ; CODE XREF: sub_68CA+22p + push si + push di + pop di + pop si + retf +sub_68C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_68CA 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_68E4 + inc [bp+var_4] + +loc_68E4: ; CODE XREF: sub_68CA+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_68C5 + jmp short loc_6932 +; --------------------------------------------------------------------------- + +loc_68F1: ; CODE XREF: sub_68CA+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_691C + mov ax, dx + jmp short loc_6950 +; --------------------------------------------------------------------------- + +loc_691C: ; CODE XREF: sub_68CA+4Cj + cmp [bp+var_4], 0 + jz short loc_6929 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_6929: ; CODE XREF: sub_68CA+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_6932: ; CODE XREF: sub_68CA+25j + cmp [bp+var_2], 0FFFFh + jz short loc_6940 + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_68F1 + +loc_6940: ; CODE XREF: sub_68CA+6Cj + cmp [bp+var_4], 0 + jz short loc_694D + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_694D: ; CODE XREF: sub_68CA+7Aj + mov ax, 1 + +loc_6950: ; CODE XREF: sub_68CA+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_68CA 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_6981 + 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_6981: ; 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_68CA + 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_699D proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_699D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_6493+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 6E14 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_699D + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_1E5D6, 3 + jnb short loc_69CB + jmp loc_6A81 +; --------------------------------------------------------------------------- + +loc_69CB: ; 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_6ACA +; --------------------------------------------------------------------------- + +loc_6A81: ; 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_6ACA: ; 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_6AFB + cmp [bp+arg_0], 0FACEh + jnz short loc_6AFB + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_6B09 +; --------------------------------------------------------------------------- + +loc_6AFB: ; 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_6B09: ; 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_6BDA + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_6BDA: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_6BF2 + ja short loc_6BE8 + cmp [bp+arg_8], 0Fh + jbe short loc_6BF2 + +loc_6BE8: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_6BF2: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_6C28 +; --------------------------------------------------------------------------- + +loc_6BFF: ; 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_6C28: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_6BFF + jnz short loc_6C39 + cmp ax, [bp+arg_8] + jb short loc_6BFF + +loc_6C39: ; 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_68CA + add sp, 8 + or ax, ax + jnz short loc_6C84 + test byte ptr [bp+arg_4], 1 + jz short loc_6CA4 + 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_6C39 +; --------------------------------------------------------------------------- + +loc_6C84: ; 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_68CA + add sp, 8 + or ax, ax + jz short loc_6CA4 + jmp loc_6E0F +; --------------------------------------------------------------------------- + +loc_6CA4: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_1E5D6, 3 + jnb short loc_6CAE + jmp loc_6D8E +; --------------------------------------------------------------------------- + +loc_6CAE: ; 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_6E14 +; --------------------------------------------------------------------------- + +loc_6D8E: ; 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_6E14 +; --------------------------------------------------------------------------- + +loc_6E0F: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_6E14: ; 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), 83h, 6Eh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 21h, 6Eh + 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_6E4B proc near ; CODE XREF: sub_6E9B+58p sub_6E9B+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, 6E39h + 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_61BC + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6E8D +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6E8D: ; CODE XREF: sub_6E4B+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_6E4B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6E9B proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_73E5+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_6F16 + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_6F0E + 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_6E4B + 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_6F0E: ; CODE XREF: sub_6E9B+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_6F16: ; CODE XREF: sub_6E9B+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_6F6D + 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_6F65 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_6F65 + 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_6E4B + add sp, 0Ah + +loc_6F65: ; CODE XREF: sub_6E9B+9Ej sub_6E9B+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_6F6D: ; CODE XREF: sub_6E9B+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_6E9B 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_6493+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_6E9B + 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_6FF0 proc near ; CODE XREF: sub_6FF0+A0p sub_70BC+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_6FF8: ; CODE XREF: sub_6FF0+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_7015 + xor ax, ax + jmp loc_70B6 +; --------------------------------------------------------------------------- + +loc_7015: ; CODE XREF: sub_6FF0+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_7041 + 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_7041: ; CODE XREF: sub_6FF0+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_5970 + add sp, 8 + or ax, ax + jnz short loc_709A + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_70AF + 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_70AF + 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_6FF0 + add sp, 0Ch + or ax, ax + jz short loc_70AF + +loc_709A: ; CODE XREF: sub_6FF0+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_70B6 +; --------------------------------------------------------------------------- + +loc_70AF: ; CODE XREF: sub_6FF0+70j sub_6FF0+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_6FF8 +; --------------------------------------------------------------------------- + +loc_70B6: ; CODE XREF: sub_6FF0+22j sub_6FF0+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_6FF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_70BC proc far ; CODE XREF: sub_713F+159p + ; sub_713F+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_712D + 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_6FF0 + add sp, 0Ch + or ax, ax + jnz short loc_712D + 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_6FF0 + add sp, 0Ch + or ax, ax + jz short loc_7135 + +loc_712D: ; CODE XREF: sub_70BC+Ej sub_70BC+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_7139 +; --------------------------------------------------------------------------- + +loc_7135: ; CODE XREF: sub_70BC+6Fj + xor dx, dx + xor ax, ax + +loc_7139: ; CODE XREF: sub_70BC+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_70BC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_713F 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_716E + jmp loc_73DF +; --------------------------------------------------------------------------- + +loc_716E: ; CODE XREF: sub_713F+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_717B + jmp loc_73DF +; --------------------------------------------------------------------------- + +loc_717B: ; CODE XREF: sub_713F+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_71EF + 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_71EF: ; CODE XREF: sub_713F+96j + test cl, 10h + jz short loc_7217 + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_7217 + 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_7342 +; --------------------------------------------------------------------------- + +loc_7217: ; CODE XREF: sub_713F+B3j sub_713F+BDj + test dl, 1 + jnz short loc_721F + jmp loc_72C3 +; --------------------------------------------------------------------------- + +loc_721F: ; CODE XREF: sub_713F+DBj + test cl, 30h + jnz short loc_7227 + jmp loc_72C3 +; --------------------------------------------------------------------------- + +loc_7227: ; CODE XREF: sub_713F+E3j + test cl, 20h + jz short loc_722E + jmp short loc_7251 +; --------------------------------------------------------------------------- + +loc_722E: ; CODE XREF: sub_713F+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_7258 + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_7251: ; CODE XREF: sub_713F+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_7258: ; CODE XREF: sub_713F+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_5970 + add sp, 8 + or ax, ax + jnz short loc_72B9 + 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_70BC + 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_72B4 + cmp ax, [bp+var_18] + jz short loc_72B9 + +loc_72B4: ; CODE XREF: sub_713F+16Ej + mov [bp+var_14], 1 + +loc_72B9: ; CODE XREF: sub_713F+133j + ; sub_713F+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_738D +; --------------------------------------------------------------------------- + +loc_72C3: ; CODE XREF: sub_713F+DDj sub_713F+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_7349 + 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_5970 + add sp, 8 + or ax, ax + jnz short loc_7312 + 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_70BC + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_7312: ; CODE XREF: sub_713F+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_7390 + 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_5E6E + add sp, 0Eh + +loc_7342: ; CODE XREF: sub_713F+D5j + ; sub_713F+227j + mov [bp+var_14], 1 + jmp short loc_73A9 +; --------------------------------------------------------------------------- + +loc_7349: ; CODE XREF: sub_713F+18Cj + test cl, 20h + jz short loc_7368 + 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_7342 +; --------------------------------------------------------------------------- + +loc_7368: ; CODE XREF: sub_713F+20Dj + test cl, 10h + jz short loc_7390 + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_7390 + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_10], ds + mov [bp+var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+var_12] + +loc_738D: ; CODE XREF: sub_713F+181j + push ax + jmp short loc_7399 +; --------------------------------------------------------------------------- + +loc_7390: ; CODE XREF: sub_713F+1DBj + ; sub_713F+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_7399: ; CODE XREF: sub_713F+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_73A9: ; CODE XREF: sub_713F+208j + cmp [bp+var_14], 0 + jnz short loc_73DF + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_73D7 + 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_6E4B + add sp, 0Ah + +loc_73D7: ; CODE XREF: sub_713F+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_73DF: ; CODE XREF: sub_713F+2Cj sub_713F+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_713F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_73E5 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_758A +; --------------------------------------------------------------------------- + +loc_743D: ; CODE XREF: sub_73E5+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_7478 + jmp loc_7587 +; --------------------------------------------------------------------------- + +loc_7478: ; CODE XREF: sub_73E5+8Ej + add bx, bx + jmp cs:off_75A4[bx] + +loc_747F: ; DATA XREF: seg000:off_75A4o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_263E6+2, dx + mov word ptr dword_263E6, 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_263E6 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_7587 +; --------------------------------------------------------------------------- + +loc_74BA: ; CODE XREF: sub_73E5+95j + ; DATA XREF: seg000:75ACo + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_74E9 +; --------------------------------------------------------------------------- + +loc_74C9: ; CODE XREF: sub_73E5+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_74E3 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_74E3 + jmp short loc_7503 +; --------------------------------------------------------------------------- + +loc_74E3: ; CODE XREF: sub_73E5+EEj sub_73E5+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_74E9: ; CODE XREF: sub_73E5+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_74C9 + +loc_7503: ; CODE XREF: sub_73E5+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_6E9B + 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_7587 +; --------------------------------------------------------------------------- + +loc_753C: ; CODE XREF: sub_73E5+95j + ; DATA XREF: seg000:75AEo + 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_7FBB + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_7587: ; CODE XREF: sub_73E5+90j sub_73E5+95j ... + mov ax, [bp+var_8] + +loc_758A: ; CODE XREF: sub_73E5+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_759E + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_759E + jmp loc_743D +; --------------------------------------------------------------------------- + +loc_759E: ; CODE XREF: sub_73E5+1ACj + ; sub_73E5+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_73E5 endp + +; --------------------------------------------------------------------------- +off_75A4 dw offset loc_747F ; DATA XREF: sub_73E5+95r + dw offset loc_7587 + dw offset loc_7587 + dw offset loc_7587 + dw offset loc_74BA + dw offset loc_753C + +; =============== 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_73E5 + 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_73E5 + 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_75FA 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_7668 +; --------------------------------------------------------------------------- + +loc_7613: ; CODE XREF: sub_75FA+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_765C + 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_5D69 + add sp, 10h + or ax, ax + jz short loc_7664 + +loc_765C: ; CODE XREF: sub_75FA+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_7678 +; --------------------------------------------------------------------------- + +loc_7664: ; CODE XREF: sub_75FA+60j + add word ptr [bp+var_4], 10h + +loc_7668: ; CODE XREF: sub_75FA+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7613 + xor dx, dx + xor ax, ax + +loc_7678: ; CODE XREF: sub_75FA+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_75FA 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_7712 + jmp loc_77BA +; --------------------------------------------------------------------------- + +loc_7712: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_73E5 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_772B + jmp loc_79ED +; --------------------------------------------------------------------------- + +loc_772B: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_7735 + jmp loc_79ED +; --------------------------------------------------------------------------- + +loc_7735: ; 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_7750 + jmp loc_79ED +; --------------------------------------------------------------------------- + +loc_7750: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_778E +; --------------------------------------------------------------------------- + +loc_7752: ; 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_5D69 + add sp, 10h + or ax, ax + jz short loc_778A + jmp loc_79ED +; --------------------------------------------------------------------------- + +loc_778A: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_778E: ; CODE XREF: __ExceptionHandler:loc_7750j + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7752 + 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_79ED +; --------------------------------------------------------------------------- + +loc_77BA: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_79E1 +; --------------------------------------------------------------------------- + +loc_77C4: ; 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_77F5 + jmp loc_79DE +; --------------------------------------------------------------------------- + +loc_77F5: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_79F6[bx] + +loc_77FC: ; DATA XREF: seg000:79FCo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_780A + jmp loc_79DE +; --------------------------------------------------------------------------- + +loc_780A: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_7814 + jmp loc_79DE +; --------------------------------------------------------------------------- + +loc_7814: ; 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_75FA + 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_784E + jmp loc_79DE +; --------------------------------------------------------------------------- + +loc_784E: ; 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_7882: ; 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_73E5 + 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_78D4 + 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_713F + add sp, 10h + +loc_78D4: ; 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_79DE +; --------------------------------------------------------------------------- + +loc_78ED: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:79F8o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7902 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7902 + jmp loc_79DE +; --------------------------------------------------------------------------- + +loc_7902: ; 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_263EA+2, dx + mov word ptr dword_263EA, 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_263EA + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_7999 +; --------------------------------------------------------------------------- + +loc_7964: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:79FAo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7978 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7978 + jmp short loc_79DE +; --------------------------------------------------------------------------- + +loc_7978: ; 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_7999: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_79B7 + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_79B3 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_79B3: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_79F0 +; --------------------------------------------------------------------------- + +loc_79B7: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_79BF + jmp short loc_79DE +; --------------------------------------------------------------------------- + +loc_79BF: ; 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_7882 +; --------------------------------------------------------------------------- + +loc_79DE: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_79E1: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_79ED + jmp loc_77C4 +; --------------------------------------------------------------------------- + +loc_79ED: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_79F0: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_79F6 dw offset loc_79DE ; DATA XREF: __ExceptionHandler+171r + dw offset loc_78ED + dw offset loc_7964 + dw offset loc_77FC + dw offset loc_79DE + dw offset loc_79DE + db 4 dup(0), 95h, 7Ah + dw seg seg000 + db 14h dup(0), 0A5h, 7Ah + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 1Ah, 7Ah + dw seg seg000 + db 2 dup(0), 4, 0, 6, 0, 3, 0, 2, 7Ah + 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_7A50 proc far ; CODE XREF: sub_7B3D+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, 7A32h + 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_61BC + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_7A9E +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7A9E: ; CODE XREF: sub_7A50+43j + mov [bp+var_12], 0 + jmp short loc_7AAE +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7AAE: ; CODE XREF: sub_7A50+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_7A50 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7ABC proc far ; CODE XREF: sub_7B3D+DCp + ; sub_7B3D+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_7B2B +; --------------------------------------------------------------------------- + +loc_7AC9: ; CODE XREF: sub_7ABC+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_7AF1 + 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_7AF1: ; CODE XREF: sub_7ABC+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_7B2B + 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_7B3D + add sp, 10h + xor cx, cx + +loc_7B2B: ; CODE XREF: sub_7ABC+Bj sub_7ABC+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_7AC9 + pop di + pop si + mov sp, bp + pop bp + retf +sub_7ABC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7B3D proc far ; CODE XREF: sub_7ABC+67p + ; sub_7B3D+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_7B54 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_7B5B +; --------------------------------------------------------------------------- + +loc_7B54: ; CODE XREF: sub_7B3D+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_7B5B: ; CODE XREF: sub_7B3D+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_7B7D + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_7B96 + jnz short loc_7B7D + cmp ax, [bp+var_1C] + jb short loc_7B96 + +loc_7B7D: ; CODE XREF: sub_7B3D+2Cj sub_7B3D+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_7A50 + add sp, 0Ah + jmp loc_7E02 +; --------------------------------------------------------------------------- + +loc_7B96: ; CODE XREF: sub_7B3D+37j sub_7B3D+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_7C2F + +loc_7BC1: ; CODE XREF: sub_7B3D+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_7C2F + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7C29 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7C22 + jnz short loc_7BF8 + cmp bx, [bp+var_1C] + jb short loc_7C22 + +loc_7BF8: ; CODE XREF: sub_7B3D+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_7C12: ; CODE XREF: sub_7B3D+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_7ABC + add sp, 12h + jmp loc_7E02 +; --------------------------------------------------------------------------- + +loc_7C22: ; CODE XREF: sub_7B3D+B2j sub_7B3D+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7C29: ; CODE XREF: sub_7B3D+A4j + add word ptr [bp+var_10], 8 + jmp short loc_7BC1 +; --------------------------------------------------------------------------- + +loc_7C2F: ; CODE XREF: sub_7B3D+82j sub_7B3D+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_7C48: ; CODE XREF: sub_7B3D+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_7CBE + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7CB8 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7CB1 + jnz short loc_7C7F + cmp bx, [bp+var_1C] + jb short loc_7CB1 + +loc_7C7F: ; CODE XREF: sub_7B3D+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_7ABC + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_7CAE + jmp loc_7E02 +; --------------------------------------------------------------------------- + +loc_7CAE: ; CODE XREF: sub_7B3D+16Cj + jmp loc_7DE2 +; --------------------------------------------------------------------------- + +loc_7CB1: ; CODE XREF: sub_7B3D+139j + ; sub_7B3D+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7CB8: ; CODE XREF: sub_7B3D+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_7C48 +; --------------------------------------------------------------------------- + +loc_7CBE: ; CODE XREF: sub_7B3D+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_7CD7: ; CODE XREF: sub_7B3D+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_7D11 + 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_7D11: ; CODE XREF: sub_7B3D+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_7D35 + jb short loc_7D2B + cmp bx, [bp+var_1C] + jnb short loc_7D35 + +loc_7D2B: ; CODE XREF: sub_7B3D+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_7DFB +; --------------------------------------------------------------------------- + +loc_7D35: ; CODE XREF: sub_7B3D+1E5j + ; sub_7B3D+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_7D81 + 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_7E08 + add sp, 0Eh + jmp short loc_7DA1 +; --------------------------------------------------------------------------- + +loc_7D81: ; CODE XREF: sub_7B3D+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_7B3D + add sp, 10h + +loc_7DA1: ; CODE XREF: sub_7B3D+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_7DBA + jmp loc_7D35 +; --------------------------------------------------------------------------- + +loc_7DBA: ; CODE XREF: sub_7B3D+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_7ABC + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_7E02 + +loc_7DE2: ; CODE XREF: sub_7B3D:loc_7CAEj + 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_7C12 +; --------------------------------------------------------------------------- + +loc_7DFB: ; CODE XREF: sub_7B3D+1F5j + add word ptr [bp+var_18], 6 + jmp loc_7CD7 +; --------------------------------------------------------------------------- + +loc_7E02: ; CODE XREF: sub_7B3D+56j sub_7B3D+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_7B3D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7E08 proc far ; CODE XREF: sub_7B3D+23Cp + ; sub_7FBB+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_7E62 + 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_7E62: ; CODE XREF: sub_7E08+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_7EF2 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_7EDF +; --------------------------------------------------------------------------- + +loc_7EC0: ; CODE XREF: sub_7E08+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_7EDF: ; CODE XREF: sub_7E08+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_7B3D + add sp, 10h + +loc_7EF2: ; CODE XREF: sub_7E08+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_7EC0 + pop di + pop si + mov sp, bp + pop bp + retf +sub_7E08 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7F0A proc far ; CODE XREF: sub_7FBB+1B1p + ; sub_7FBB+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_7FAF + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_7FAF + 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_7F69 + 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_7F72 +; --------------------------------------------------------------------------- + +loc_7F69: ; CODE XREF: sub_7F0A+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_7F72: ; CODE XREF: sub_7F0A+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_7FAF: ; CODE XREF: sub_7F0A+27j sub_7F0A+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_7F0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7FBB proc near ; CODE XREF: sub_73E5+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_7FD1 + jmp loc_83BE +; --------------------------------------------------------------------------- + +loc_7FD1: ; CODE XREF: sub_7FBB+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_802A + 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_802A: ; CODE XREF: sub_7FBB+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_8041 + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_83C0 +; --------------------------------------------------------------------------- + +loc_8041: ; CODE XREF: sub_7FBB+77j + cmp [bp+var_6], 0 + jg short loc_8073 + jnz short loc_804F + cmp [bp+var_8], 0 + ja short loc_8073 + +loc_804F: ; CODE XREF: sub_7FBB+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_8061 + jmp loc_83BE +; --------------------------------------------------------------------------- + +loc_8061: ; CODE XREF: sub_7FBB+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_81D8 +; --------------------------------------------------------------------------- + +loc_8073: ; CODE XREF: sub_7FBB+8Aj sub_7FBB+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_807F: ; CODE XREF: sub_7FBB+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8092 + sub word ptr [bp+var_C], 0Ah + jmp loc_81D8 +; --------------------------------------------------------------------------- + +loc_8092: ; CODE XREF: sub_7FBB+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_80BA + jmp loc_8184 +; --------------------------------------------------------------------------- + +loc_80BA: ; CODE XREF: sub_7FBB+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_80DE + jmp loc_8184 +; --------------------------------------------------------------------------- + +loc_80DE: ; CODE XREF: sub_7FBB+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_80EB + jmp loc_8184 +; --------------------------------------------------------------------------- + +loc_80EB: ; CODE XREF: sub_7FBB+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_80F8 + jmp loc_8184 +; --------------------------------------------------------------------------- + +loc_80F8: ; CODE XREF: sub_7FBB+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_8111 + 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_811F +; --------------------------------------------------------------------------- + +loc_8111: ; CODE XREF: sub_7FBB+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_811F: ; CODE XREF: sub_7FBB+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_8147 + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_8150 +; --------------------------------------------------------------------------- + +loc_8147: ; CODE XREF: sub_7FBB+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_8150: ; CODE XREF: sub_7FBB+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_8161 + add word ptr [bp+var_1C], 4 + +loc_8161: ; CODE XREF: sub_7FBB+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_7F0A + 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_8184: ; CODE XREF: sub_7FBB+FCj + ; sub_7FBB+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_81A9 + 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_81A9: ; CODE XREF: sub_7FBB+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_81C7 + jnz short loc_81D8 + cmp ax, [bp+var_8] + jnb short loc_81D8 + +loc_81C7: ; CODE XREF: sub_7FBB+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_807F +; --------------------------------------------------------------------------- + +loc_81D8: ; CODE XREF: sub_7FBB+B5j sub_7FBB+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_8207 + 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_8215 +; --------------------------------------------------------------------------- + +loc_8207: ; CODE XREF: sub_7FBB+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_8215: ; CODE XREF: sub_7FBB+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_8221 + jmp loc_82AB +; --------------------------------------------------------------------------- + +loc_8221: ; CODE XREF: sub_7FBB+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_8253 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_825C +; --------------------------------------------------------------------------- + +loc_8253: ; CODE XREF: sub_7FBB+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_825C: ; CODE XREF: sub_7FBB+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_827A + add [bp+var_18], 4 + +loc_827A: ; CODE XREF: sub_7FBB+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_82AB + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_82AB + test byte ptr [bp+var_16+2], 8 + jz short loc_82AB + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_7F0A + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_82AB: ; CODE XREF: sub_7FBB+263j + ; sub_7FBB+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_82F9 + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_82D9 + 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_7E08 + add sp, 0Eh + jmp short loc_82F9 +; --------------------------------------------------------------------------- + +loc_82D9: ; CODE XREF: sub_7FBB+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_7B3D + add sp, 10h + +loc_82F9: ; CODE XREF: sub_7FBB+2F4j + ; sub_7FBB+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_8307 + jmp loc_83A5 +; --------------------------------------------------------------------------- + +loc_8307: ; CODE XREF: sub_7FBB+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_8316 + sub word ptr [bp+driver], 4 + +loc_8316: ; CODE XREF: sub_7FBB+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8365 + 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_8352 + 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_8384 +; --------------------------------------------------------------------------- + +loc_8352: ; CODE XREF: sub_7FBB+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_83A5 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_83A3 +; --------------------------------------------------------------------------- + +loc_8365: ; CODE XREF: sub_7FBB+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_8392 + 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_8384: ; CODE XREF: sub_7FBB+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_6374 + add sp, 0Ah + jmp short loc_83A5 +; --------------------------------------------------------------------------- + +loc_8392: ; CODE XREF: sub_7FBB+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_83A5 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_83A3: ; CODE XREF: sub_7FBB+3A8j + pop cx + pop cx + +loc_83A5: ; CODE XREF: sub_7FBB+349j + ; sub_7FBB+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_83BE + jmp loc_81D8 +; --------------------------------------------------------------------------- + +loc_83BE: ; CODE XREF: sub_7FBB+13j sub_7FBB+A3j ... + xor ax, ax + +loc_83C0: ; CODE XREF: sub_7FBB+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7FBB 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_8409 + 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, 10C3h + 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_840E + +loc_8409: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_8415 +; --------------------------------------------------------------------------- + +loc_840E: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_8415: ; 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 + +; typeinfo::typeinfo(typeinfo const &) +@typeinfo@0$bctr$qmx8typeinfo proc far + +var_4 = 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_8471 + 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_84AF + +loc_8471: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8A4Dh + xor ax, ax + push ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + mov [bp+var_2], 0 + mov [bp+var_4], 0 + lea ax, [bp+var_4] + push ss + push ax + push cs + mov ax, 8A2Fh + push ax + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_84AF: ; 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_84FA + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8A4Dh + test dl, 1 + jz short loc_84FA + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_84FA: ; 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_5970 + 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_855E + xor ax, ax + jmp short loc_85B7 +; --------------------------------------------------------------------------- + +loc_855E: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_8570 + mov ax, 1 + jmp short loc_85B7 +; --------------------------------------------------------------------------- + +loc_8570: ; 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_85B5 + mov ax, 1 + jmp short loc_85B7 +; --------------------------------------------------------------------------- + +loc_85B5: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_85B7: ; 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_594B + 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 + +; __GetTypeInfo(void *, void *, void *, void *) +@__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 = dword 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_8619 + xor ax, ax + push ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 8E8Eh + push ax + push cs + mov ax, 8A19h + push ax + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_8619: ; CODE XREF: __GetTypeInfo(void *,void *,void *,void *)+1Aj + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + sub ax, es:[bx-2] + mov word ptr [bp+arg_4+2], dx + mov word ptr [bp+arg_4], ax + les bx, [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_865A proc near ; CODE XREF: sub_865A+143p + ; sub_865A+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_8695 + 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_5970 + add sp, 8 + or ax, ax + jnz short loc_869F + +loc_8695: ; CODE XREF: sub_865A+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_86A6 + +loc_869F: ; CODE XREF: sub_865A+39j + xor dx, dx + xor ax, ax + jmp loc_889A +; --------------------------------------------------------------------------- + +loc_86A6: ; CODE XREF: sub_865A+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_86B8: ; CODE XREF: sub_865A+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_86BE: ; CODE XREF: sub_865A+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_86D9 + jmp loc_8862 +; --------------------------------------------------------------------------- + +loc_86D9: ; CODE XREF: sub_865A+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_86E6 + jmp loc_885B +; --------------------------------------------------------------------------- + +loc_86E6: ; CODE XREF: sub_865A+87j + cmp [bp+arg_1A], 0 + jz short loc_8700 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_8700 + mov ax, 1 + jmp short loc_8702 +; --------------------------------------------------------------------------- + +loc_8700: ; CODE XREF: sub_865A+90j sub_865A+9Fj + xor ax, ax + +loc_8702: ; CODE XREF: sub_865A+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_8749 + 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_8749: ; CODE XREF: sub_865A+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_5970 + add sp, 8 + or ax, ax + jnz short loc_87CB + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_876D + jmp loc_885B +; --------------------------------------------------------------------------- + +loc_876D: ; CODE XREF: sub_865A+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_865A + 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_87B4 + jmp loc_885B +; --------------------------------------------------------------------------- + +loc_87B4: ; CODE XREF: sub_865A+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_8828 +; --------------------------------------------------------------------------- + +loc_87CB: ; CODE XREF: sub_865A+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_87EC + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_885B + cmp ax, word ptr [bp+var_14] + jnz short loc_885B + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_889A +; --------------------------------------------------------------------------- + +loc_87EC: ; CODE XREF: sub_865A+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_8828 + 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_865A + add sp, 20h + or ax, dx + jz short loc_885B + +loc_8828: ; CODE XREF: sub_865A+16Fj + ; sub_865A+198j + cmp [bp+var_E], 0 + jz short loc_8846 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_8846 + cmp ax, [bp+var_C] + jnz short loc_8846 + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_885B +; --------------------------------------------------------------------------- + +loc_8846: ; CODE XREF: sub_865A+1D2j + ; sub_865A+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_885B: ; CODE XREF: sub_865A+89j + ; sub_865A+110j ... + add word ptr [bp+var_4], 8 + jmp loc_86BE +; --------------------------------------------------------------------------- + +loc_8862: ; CODE XREF: sub_865A+7Cj + cmp [bp+var_6], 0 + jnz short loc_887B + 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_86B8 +; --------------------------------------------------------------------------- + +loc_887B: ; CODE XREF: sub_865A+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_8894 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_8894: ; CODE XREF: sub_865A+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_889A: ; CODE XREF: sub_865A+49j + ; sub_865A+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_865A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __DynamicCast(void *, void *, void *, void *, 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 = 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 + + 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_88CB + jmp loc_89CF +; --------------------------------------------------------------------------- + +loc_88CB: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+26j + les bx, [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, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + sub ax, es:[bx-2] + mov word ptr [bp+arg_4+2], dx + mov word ptr [bp+arg_4], ax + les bx, [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_8921 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_5970 + add sp, 8 + or ax, ax + jz short loc_892A + +loc_8921: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_89FF +; --------------------------------------------------------------------------- + +loc_892A: ; 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_5970 + add sp, 8 + or ax, ax + jnz short loc_8983 + 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_865A + 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_89C7 + +loc_8983: ; 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_865A + 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_89CF + cmp [bp+var_16], 0 + jz short loc_89CF + +loc_89C7: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_89FF +; --------------------------------------------------------------------------- + +loc_89CF: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_89FB + xor ax, ax + push ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 8E8Fh + push ax + push cs + mov ax, 8A05h + push ax + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_89FB: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_89FF: ; 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, 51h, 8Ah + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 51h, 8Ah + dw seg seg000 + db 4 dup(0), 0CAh, 84h + 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, 0CAh, 84h + 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_948B:loc_95F6p + +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_8AB6 + 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_8AB6: ; 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_8AE0 +; --------------------------------------------------------------------------- + +loc_8AC4: ; 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_8AE0: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8AC4 + push [bp+var_2] + nop + push cs + call near ptr sub_3DBA + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_8B06 + xor dx, dx + xor ax, ax + jmp loc_8BBC +; --------------------------------------------------------------------------- + +loc_8B06: ; 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_8B49 + 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_8B49: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8B97 + 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_8B8B +; --------------------------------------------------------------------------- + +loc_8B5F: ; 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_8B8B: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8B5F + +loc_8B97: ; 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_8BBC: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_8C53 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_8CA5 db 0 ; DATA XREF: __exec+50w +byte_8CA6 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_8D24 db 0FFh, 0 ; DATA XREF: __exec+22Dr +word_8D26 dw 0 ; DATA XREF: __exec+1D0w +word_8D28 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_8F24r ... +byte_8D2A 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_1D5D6 + mov cs:word_8D28, 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_8D4F + jmp loc_8F5D +; --------------------------------------------------------------------------- + +loc_8D4F: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_8C53, 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_8CA5, al + +loc_8D7F: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_8D90 + cmp al, 9 + jz short loc_8D90 + cmp al, 0Dh + jz short loc_8D90 + inc si + jmp short loc_8D7F +; --------------------------------------------------------------------------- + +loc_8D90: ; 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_8CA6, 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_1D5DC, 3 + jnb short loc_8DAF + sub bx, 280h + +loc_8DAF: ; 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_8DC4 + xor ax, ax + mov di, ax + jmp short loc_8DE1 +; --------------------------------------------------------------------------- + +loc_8DC4: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_8DCE: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_8DCE + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_8DE1: ; 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_1D5D6 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_8E09 + dec cs:byte_8D2A + inc ax + sub [bp+var_4], ax + +loc_8E09: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 8C55h + +loc_8E11: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_8E11 + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 8BC4h + 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_8E53 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_8E5F + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_8E50 + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_8E50 + jmp short loc_8E9B +; --------------------------------------------------------------------------- + +loc_8E50: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_8E53: ; 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_8F5D +; --------------------------------------------------------------------------- + +loc_8E5F: ; 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_8E79: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_8E79 + 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_8EC5 +; --------------------------------------------------------------------------- + +loc_8E9B: ; 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_8EA7: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_8EA7 + 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_8EC5: ; 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_8EDB + jmp loc_8E53 +; --------------------------------------------------------------------------- + +loc_8EDB: ; 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_8EF2 + jmp loc_8E53 +; --------------------------------------------------------------------------- + +loc_8EF2: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_8D26, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 8BC4h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_8D2A, 0 + jnz short loc_8F24 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_8F5D + jmp short loc_8F28 +; --------------------------------------------------------------------------- + +loc_8F24: ; CODE XREF: __exec+1EDj + mov ax, cs:word_8D28 + +loc_8F28: ; 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_8D2A, 0 + jnz short loc_8F57 + mov es, cs:word_8D28 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_8F57: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:byte_8D24 +; --------------------------------------------------------------------------- + +loc_8F5D: ; 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_B454+43P + +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, 8D2Bh + push ax ; int + call sub_948B + 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_3FA2+4Ep + +_segx = word ptr 6 +newsize = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ah, 4Ah ; 'J' + mov bx, [bp+newsize] + mov es, [bp+_segx] + int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) + ; ES = segment address of block to change + ; BX = new size in paragraphs + jb short loc_8FA2 + mov ax, 0FFFFh + jmp short loc_8FA8 +; --------------------------------------------------------------------------- + +loc_8FA2: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_8FA8: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_1D5D6 + xor di, di + push es + push word_1D5D8 + nop + push cs + call near ptr sub_3DBA + pop bx + mov bx, ax + pop es + mov word ptr dword_1E62C, ax + mov word ptr dword_1E62C+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_8FD5 + nop + nop + jmp near ptr sub_2EB0 +; --------------------------------------------------------------------------- + +loc_8FD5: ; CODE XREF: seg000:8FCEj + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_8FEF + +loc_8FE0: ; CODE XREF: seg000:8FEDj + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_8FE0 + +loc_8FEF: ; CODE XREF: seg000:8FDEj + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_1E62C+2 + mov word_1D5D2, ax + mov ax, word ptr dword_1E62C + 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_1C979 + db 4 dup(0), 9, 90h + 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_905E + 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_905C + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9060 +; --------------------------------------------------------------------------- + +loc_905C: ; CODE XREF: seg000:904Bj + jmp short loc_9060 +; --------------------------------------------------------------------------- + +loc_905E: ; CODE XREF: seg000:9022j + xor ax, ax + +loc_9060: ; CODE XREF: seg000:905Aj + ; seg000:loc_905Cj + 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_1CB21 + dd byte_1CAD3 + db 4 dup(0), 0BCh, 1 + dw seg seg012 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 69h, 90h + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 75h, 90h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_90E0 + 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_90DE + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_90E2 +; --------------------------------------------------------------------------- + +loc_90DE: ; CODE XREF: seg000:90CDj + jmp short loc_90E2 +; --------------------------------------------------------------------------- + +loc_90E0: ; CODE XREF: seg000:90A4j + xor ax, ax + +loc_90E2: ; CODE XREF: seg000:90DCj + ; seg000:loc_90DEj + 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_912D + 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_912B + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_912F +; --------------------------------------------------------------------------- + +loc_912B: ; CODE XREF: seg000:911Aj + jmp short loc_912F +; --------------------------------------------------------------------------- + +loc_912D: ; CODE XREF: seg000:90F1j + xor ax, ax + +loc_912F: ; CODE XREF: seg000:9129j + ; seg000:loc_912Bj + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + +unknown_libname_4: ; BCC v4.x/5.x DOS runtime + push si + push di + pop di + pop si + retf +; --------------------------------------------------------------------------- + db 4 dup(0), 38h, 91h + dw seg seg000 + db 0E2h, 0FFh, 4, 0Ch + dw seg seg012 + db 4 dup(0), 0CAh, 0Bh + dw seg seg012 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 4, 0Ch + dw seg seg012 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 92h, 0Bh + dw seg seg012 + db 0, 2 dup(1), 7 dup(0), 42h, 91h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 4Ah, 91h, 6, 0, 5 + db 0, 1, 0, 62h, 91h, 4, 0Ch + dw seg seg012 + db 4 dup(0), 0CAh, 0Bh + dw seg seg012 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 4, 0Ch + dw seg seg012 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 92h, 0Bh + dw seg seg012 + db 0, 2 dup(1), 7 dup(0), 86h, 91h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 8Eh, 91h, 6, 0, 5 + db 0, 1, 0, 0A6h, 91h, 4, 0Ch + dw seg seg012 + db 4 dup(0), 0CAh, 0Bh + dw seg seg012 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 4, 0Ch + dw seg seg012 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 92h, 0Bh + dw seg seg012 + db 0, 2 dup(1), 7 dup(0), 0CAh, 91h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0D2h, 91h, 6, 0 + db 5, 0, 1, 0, 0EAh, 91h, 4 dup(0), 0Eh, 92h + dw seg seg000 + db 0E2h, 0FFh, 50h, 0Bh + dw seg seg012 + dd byte_1D504 + db 4 dup(0), 18h, 92h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 2Ah, 92h + dw seg seg000 +byte_9232 db 0E2h, 0FFh, 50h, 0Bh ; DATA XREF: seg000:9240o + dw seg seg012 + dd byte_1D402 + dd 0 + dd byte_9232+2 + db 0E2h, 0FFh, 4 dup(0), 46h, 92h + dw seg seg000 + db 0E2h, 0FFh, 50h, 0Bh + dw seg seg012 + dd byte_1D402 + db 4 dup(0), 50h, 92h + dw seg seg000 + db 0E2h, 0FFh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_92DE + 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_92DC + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_92E0 +; --------------------------------------------------------------------------- + +loc_92DC: ; CODE XREF: seg000:92CBj + jmp short loc_92E0 +; --------------------------------------------------------------------------- + +loc_92DE: ; CODE XREF: seg000:92A2j + xor ax, ax + +loc_92E0: ; CODE XREF: seg000:92DAj + ; seg000:loc_92DCj + 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_932B + 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_9329 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_932D +; --------------------------------------------------------------------------- + +loc_9329: ; CODE XREF: seg000:9318j + jmp short loc_932D +; --------------------------------------------------------------------------- + +loc_932B: ; CODE XREF: seg000:92EFj + xor ax, ax + +loc_932D: ; CODE XREF: seg000:9327j + ; seg000:loc_9329j + 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_9378 + 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_9376 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_937A +; --------------------------------------------------------------------------- + +loc_9376: ; CODE XREF: seg000:9365j + jmp short loc_937A +; --------------------------------------------------------------------------- + +loc_9378: ; CODE XREF: seg000:933Cj + xor ax, ax + +loc_937A: ; CODE XREF: seg000:9374j + ; seg000:loc_9376j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_937E proc far ; CODE XREF: sub_948B+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_93EF +; --------------------------------------------------------------------------- + +loc_9394: ; CODE XREF: sub_937E+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_4487 + pop cx + or ax, ax + jz short loc_93B3 + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_93EC + jmp short loc_93F8 +; --------------------------------------------------------------------------- + +loc_93B3: ; CODE XREF: sub_937E+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_93D2 +; --------------------------------------------------------------------------- + +loc_93C1: ; CODE XREF: sub_937E+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_93DB + inc word ptr [bp+var_8] + +loc_93D2: ; CODE XREF: sub_937E+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_93C1 + +loc_93DB: ; CODE XREF: sub_937E+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_93EC + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_93FC +; --------------------------------------------------------------------------- + +loc_93EC: ; CODE XREF: sub_937E+31j sub_937E+64j + inc word ptr [bp+var_4] + +loc_93EF: ; CODE XREF: sub_937E+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_9394 + +loc_93F8: ; CODE XREF: sub_937E+33j + xor dx, dx + xor ax, ax + +loc_93FC: ; CODE XREF: sub_937E+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_937E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_9402(int, int, char *pathname, char *src, int) +sub_9402 proc far ; CODE XREF: sub_948B+7Fp sub_948B+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_9456 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 1136h + 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_9483 + jmp short loc_947E +; --------------------------------------------------------------------------- + +loc_9456: ; CODE XREF: sub_9402+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_9483 + +loc_947E: ; CODE XREF: sub_9402+52j + mov ax, 1 + jmp short loc_9485 +; --------------------------------------------------------------------------- + +loc_9483: ; CODE XREF: sub_9402+50j sub_9402+7Aj + xor ax, ax + +loc_9485: ; CODE XREF: sub_9402+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_9402 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_948B(int, char *s, int, int, int, int, int) +sub_948B 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_94A5 + sub dx, 20h ; ' ' + +loc_94A5: ; CODE XREF: sub_948B+15j + cmp dx, 41h ; 'A' + jb short loc_94B9 + cmp dx, 5Ah ; 'Z' + ja short loc_94B9 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_94CF + +loc_94B9: ; CODE XREF: sub_948B+1Dj sub_948B+22j + push ds + mov ax, 113Bh + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_937E + add sp, 8 + or ax, dx + jz short loc_94D4 + +loc_94CF: ; CODE XREF: sub_948B+2Cj + mov [bp+arg_E], 0 + +loc_94D4: ; CODE XREF: sub_948B+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_5136 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_9533 + push [bp+arg_E] ; int + push ds + mov ax, 113Eh + 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_9402 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_951A + jmp loc_959E +; --------------------------------------------------------------------------- + +loc_951A: ; CODE XREF: sub_948B+8Aj + push ds + mov ax, 113Fh + 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_959E + jmp short loc_9599 +; --------------------------------------------------------------------------- + +loc_9533: ; CODE XREF: sub_948B+68j + push [bp+arg_E] ; int + push ds + mov ax, 1144h + 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_9402 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_959E + push [bp+arg_E] ; int + push ds + mov ax, 1149h + 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_9402 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_959E + push [bp+arg_E] ; int + push ds + mov ax, 114Eh + 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_9402 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_959E + +loc_9599: ; CODE XREF: sub_948B+A6j + mov [bp+var_1A], 1 + +loc_959E: ; CODE XREF: sub_948B+8Cj sub_948B+A4j ... + cmp [bp+var_18], 0 + jz short loc_95C0 + cmp [bp+var_1A], 0 + jz short loc_95C9 + push ds + mov ax, 1153h + push ax + nop + push cs ; name + call _getenv + pop cx + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_95C9 + +loc_95C0: ; CODE XREF: sub_948B+117j + mov word_1D5DE, 2 + jmp loc_968F +; --------------------------------------------------------------------------- + +loc_95C9: ; CODE XREF: sub_948B+11Dj + ; sub_948B+133j + cmp [bp+var_1A], 0 + jz short loc_95E2 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 115Bh + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_95F6 +; --------------------------------------------------------------------------- + +loc_95E2: ; CODE XREF: sub_948B+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_95F6: ; CODE XREF: sub_948B+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_9610 + mov word_1D5DE, 8 + jmp loc_968F +; --------------------------------------------------------------------------- + +loc_9610: ; CODE XREF: sub_948B+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_9639 + mov word_1D5DE, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + jmp short loc_968F +; --------------------------------------------------------------------------- + +loc_9639: ; CODE XREF: sub_948B+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_964E + mov dx, word ptr dword_1E62C+2 + mov ax, word ptr dword_1E62C + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_964E: ; CODE XREF: sub_948B+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_9662 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_9668 +; --------------------------------------------------------------------------- + +loc_9662: ; CODE XREF: sub_948B+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_9668: ; CODE XREF: sub_948B+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_9694 + mov word_1D5DE, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3C87 + pop cx + pop cx + +loc_968F: ; CODE XREF: sub_948B+13Bj + ; sub_948B+182j ... + mov ax, 0FFFFh + jmp short loc_96DF +; --------------------------------------------------------------------------- + +loc_9694: ; CODE XREF: sub_948B+1EFj + call off_1E170 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_96B2 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_96B8 +; --------------------------------------------------------------------------- + +loc_96B2: ; CODE XREF: sub_948B+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_96B8: ; CODE XREF: sub_948B+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_3C87 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3C87 + add sp, 8 + mov ax, [bp+var_16] + +loc_96DF: ; CODE XREF: sub_948B+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_948B endp ; sp-analysis failed + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + ;org 5 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; 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 + push ds + push offset aCOul ; "–²Žž‹ó2.dat" + call sub_ECD0 + call sub_A346 + or ax, ax + jz short loc_9775 + mov byte_1EF6D, 0 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+15h], 0 + jz short loc_970F + call sub_E922 + +loc_970F: ; CODE XREF: _main+22j + call sub_11B6 + push ds + push offset aGameft_bft ; "GAMEFT.bft" + call sub_11F6 + call sub_9B14 + call dword_20F20 + +loc_9724: ; CODE XREF: _main+65j + mov word_1D834, 64h ; 'd' + call far ptr loc_1C7E + call sub_9778 + mov ah, 0 + mov si, ax + les bx, dword_1F2F0 + mov eax, dword_23AF2 + mov es:[bx+10h], eax + cmp si, 1 + jnz short loc_974D + call sub_A21F + jmp short loc_9724 +; --------------------------------------------------------------------------- + +loc_974D: ; CODE XREF: _main+60j + call sub_13DF9 + push 100h + call sub_ECB2 + or si, si + jnz short loc_9764 + push ds + push offset aOp ; "op" + jmp short loc_9770 +; --------------------------------------------------------------------------- + +loc_9764: ; CODE XREF: _main+76j + les bx, dword_1F2F0 + inc byte ptr es:[bx+33h] + push ds + push offset arg0 ; "mainl" + +loc_9770: ; CODE XREF: _main+7Cj + nop + push cs + call near ptr sub_B454 + +loc_9775: ; CODE XREF: _main+12j + pop si + pop bp + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9778 proc near ; CODE XREF: _main+49p + push bp + mov bp, sp + jmp loc_9AC9 +; --------------------------------------------------------------------------- + +loc_977E: ; CODE XREF: sub_9778+356j + call sub_A438 + call sub_1797F + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_1FE70 + call dword_1F32E + call dword_205CE + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_1FE7C + call dword_1F332 + call dword_205D2 + call sub_B7E5 + call sub_E83F + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_2028C + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_20290 + call sub_BB12 + call sub_13CC7 + call sub_17A1B + call sub_1609E + call sub_18059 + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_202A4 + call dword_202AC + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_202A8 + call dword_202B0 + nop + push cs + call near ptr sub_CEB2 + call dword_1E6E2 + mov byte ptr word_23AF0, 0 + push word_1EFF6 + push 65A6h + call sub_DA43 + mov byte ptr word_23AF0, 1 + push word_1EFF8 + push 6626h + call sub_DA43 + call sub_EC76 + test byte_1EFFB, 10h + jz short loc_9845 + call sub_C7A5 + +loc_9845: ; CODE XREF: sub_9778+C8j + nop + push cs + call near ptr sub_CA3C + push 0 + nop + push cs + call near ptr sub_CB81 + push 1 + nop + push cs + call near ptr sub_CB81 + call dword_20F24 + cmp byte_23AFA, 0 + jz short loc_986C + test byte ptr word_23AF6, 1 + jz loc_9A62 + +loc_986C: ; CODE XREF: sub_9778+E9j + call sub_704 + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_205D6 + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_205DA + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_1F336 + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_1F33A + call sub_E86A + call sub_164DA + call sub_1837C + call sub_B80B + mov byte ptr word_1FE88, 0 + mov byte ptr word_23AF0, 0 + call dword_1FE74 + call dword_20294 + mov byte ptr word_1FE88, 1 + mov byte ptr word_23AF0, 28h ; '(' + call dword_1FE80 + call dword_20298 + mov byte ptr word_23AF0, 0 + push 65A6h + call sub_DE95 + mov byte ptr word_23AF0, 1 + push 6626h + call sub_DE95 + call sub_71A + mov byte ptr word_23AF0, 0 + push 65A6h + call sub_DF18 + mov byte ptr word_23AF0, 1 + push 6626h + call sub_DF18 + nop + push cs + call near ptr sub_CEE0 + call sub_17BD1 + cmp byte_20E3C, 2 + jnz loc_99B1 + call sub_C2F9 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+28h], 1 + jz short loc_9973 + cmp byte_23B72, 2 + jnb short loc_994E + cmp byte_23BF2, 2 + jnb short loc_994E + cmp word_23AF6, 0A0h ; ' ' + jz short loc_9986 + cmp byte_1FBC3, 0 + jz short loc_99B1 + jmp short loc_99A4 +; --------------------------------------------------------------------------- + +loc_994E: ; CODE XREF: sub_9778+1BCj + ; sub_9778+1C3j ... + call sub_E3F2 + mov ax, word_23AF6 + cmp ax, word_1E6E8 + jz short loc_9986 + cmp byte_1FBC3, 0 + jz short loc_99B1 + les bx, dword_1F2F0 + mov al, es:[bx+17h] + mov ah, 0 + push ax + call sub_A289 + mov al, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_9973: ; CODE XREF: sub_9778+1B5j + les bx, dword_1F2F0 + cmp byte ptr es:[bx+17h], 0 + jz short loc_994E + cmp word_23AF6, 0A0h ; ' ' + jnz short loc_998E + +loc_9986: ; CODE XREF: sub_9778+1CBj + ; sub_9778+1E0j + mov word_1FBC0, 1DC8h + jmp short loc_99B1 +; --------------------------------------------------------------------------- + +loc_998E: ; CODE XREF: sub_9778+20Cj + cmp byte_1FBC3, 0 + jz short loc_99B1 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+34h], 0 + jz short loc_99A8 + dec byte ptr es:[bx+34h] + +loc_99A4: ; CODE XREF: sub_9778+1D4j + mov al, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_99A8: ; CODE XREF: sub_9778+226j + push 0 + call sub_A289 + mov al, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_99B1: ; CODE XREF: sub_9778+1A5j + ; sub_9778+1D2j ... + call sub_C830 + call sub_C8C4 + call sub_D52E + push 0 + nop + push cs + call near ptr sub_C9FE + push 1 + nop + push cs + call near ptr sub_C9FE + call sub_BE5D + call sub_15D53 + call word_1FBC0 + call word_1E6EA + cmp byte_23AFA, 0 + jnz short loc_99F7 + +loc_99DF: ; CODE XREF: sub_9778+270j + mov al, byte_23AF9 + mov ah, 0 + cmp ax, word_1E74A + ja short loc_99DF + mov word_1E74A, 0 + mov byte_23AF9, 1 + jmp short loc_9A14 +; --------------------------------------------------------------------------- + +loc_99F7: ; CODE XREF: sub_9778+265j + test byte ptr word_23AF6, 1 + jnz short loc_9A14 + mov word_1E74A, 0 + +loc_9A04: ; CODE XREF: sub_9778+295j + mov al, byte_23AF9 + mov ah, 0 + cmp ax, word_1E74A + ja short loc_9A04 + mov byte_23AF9, 2 + +loc_9A14: ; CODE XREF: sub_9778+27Dj + ; sub_9778+284j + cmp byte_23B01, 0 + jz short loc_9A25 + call far ptr loc_1C7E + mov byte_23B01, 0 + +loc_9A25: ; CODE XREF: sub_9778+2A1j + mov dx, 0A6h ; '¦' + mov al, byte_23AEF + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, byte_23AEE + out dx, al ; Interrupt Controller #2, 8259A + mov byte_23AEF, al + xor byte_23AEE, 1 + push large 0C00000h + call sub_F5C + mov bx, 3932h + call sub_B37C + push large 0C00001h + call sub_F5C + mov bx, 395Ah + call sub_B37C + call sub_F86 + +loc_9A62: ; CODE XREF: sub_9778+F0j + inc dword_23AF2 + inc word_23AF6 + mov al, byte ptr dword_23AF2 + and al, 0Fh + mov byte_23B05, al + and al, 7 + mov byte_23B04, al + and al, 3 + mov byte_23B03, al + and al, 1 + mov byte_23B02, al + test byte ptr word_23AF6, 3Fh + jnz short loc_9AC9 + cmp byte_23AF8, 7Fh ; '' + jnb short loc_9A94 + inc byte_23AF8 + +loc_9A94: ; CODE XREF: sub_9778+316j + test word_23AF6, 3FFh + jnz short loc_9AB5 + call sub_A3FA + cmp byte_23B79, 6 + jnb short loc_9AAA + inc byte_23B79 + +loc_9AAA: ; CODE XREF: sub_9778+32Cj + cmp byte_23BF9, 6 + jnb short loc_9AB5 + inc byte_23BF9 + +loc_9AB5: ; CODE XREF: sub_9778+322j + ; sub_9778+337j + cmp word_23AF6, 7D0h + jnb short loc_9AC9 + mov word_23B7A, 0 + mov word_23BFA, 0 + +loc_9AC9: ; CODE XREF: sub_9778+3j sub_9778+30Fj ... + cmp byte_23B00, 0 + jz loc_977E + mov al, 0 + pop bp + retn +sub_9778 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + cmp word_1E6E6, 1B58h + jnb short loc_9AE7 + inc word_1E6E6 + jmp short loc_9AF5 +; --------------------------------------------------------------------------- + +loc_9AE7: ; CODE XREF: seg001:03FFj + cmp word_1E6E6, 1B58h + jnz short loc_9AF5 + mov word_1FBC0, 1DC8h + +loc_9AF5: ; CODE XREF: seg001:0405j seg001:040Dj + cmp byte_1FBC3, 0 + jz short loc_9B01 + mov byte_23B00, 1 + +loc_9B01: ; CODE XREF: seg001:041Aj + cmp word ptr unk_1EFFA, 0 + jz short loc_9B0D + mov byte_23B00, 1 + +loc_9B0D: ; CODE XREF: seg001:0426j + pop bp + retn +; --------------------------------------------------------------------------- + push bp + mov bp, sp + pop bp + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9B14 proc near ; CODE XREF: _main+37p + +var_8 = word ptr -8 +var_6 = dword ptr -6 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + les bx, dword_1F2F0 + mov eax, es:[bx+10h] + mov dword_1D872, eax + push large 200005h + call sub_1FEC + push 0 + call sub_14E4 + call sub_13CDD + mov byte_207E3, 0 + call sub_9EBF + call sub_EEC4 + nop + push cs + call near ptr sub_D5A2 + mov byte_23AFA, 0 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+33h], 8 + jnb short loc_9B68 + mov word_1E6E8, 140h + jmp short loc_9B6E +; --------------------------------------------------------------------------- + +loc_9B68: ; CODE XREF: sub_9B14+4Aj + mov word_1E6E8, 1CCh + +loc_9B6E: ; CODE XREF: sub_9B14+52j + les bx, dword_1F2F0 + cmp byte ptr es:[bx+28h], 1 + jnz loc_9BFF + xor si, si + jmp short loc_9B8E +; --------------------------------------------------------------------------- + +loc_9B7F: ; CODE XREF: sub_9B14+7Dj + les bx, dword_1F2F0 + add bx, si + mov al, es:[bx+18h] + mov [si+4B64h], al + inc si + +loc_9B8E: ; CODE XREF: sub_9B14+69j + cmp si, 8 + jl short loc_9B7F + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov ah, 0 + mov bx, ax + cmp bx, 5 + ja short loc_9BC0 + add bx, bx + jmp cs:off_9EB3[bx] + +loc_9BAB: ; CODE XREF: sub_9B14+112j + ; sub_9B14+2D6j + ; DATA XREF: ... + mov byte_23AEA, 3 + jmp short loc_9BC5 +; --------------------------------------------------------------------------- + +loc_9BB2: ; CODE XREF: sub_9B14+92j + ; sub_9B14+112j ... + mov byte_23AEA, 2 + jmp short loc_9BC5 +; --------------------------------------------------------------------------- + +loc_9BB9: ; CODE XREF: sub_9B14+92j + ; sub_9B14+112j ... + mov byte_23AEA, 1 + jmp short loc_9BC5 +; --------------------------------------------------------------------------- + +loc_9BC0: ; CODE XREF: sub_9B14+8Ej + mov byte_23AEA, 0 + +loc_9BC5: ; CODE XREF: sub_9B14+9Cj sub_9B14+A3j ... + les bx, dword_1F2F0 + mov al, es:[bx+33h] + inc al + mov byte_202B6, al + mov al, es:[bx+33h] + inc al + mov byte_202B7, al + mov al, byte_220CA + mov byte_220DC, al + cmp byte_220DC, 2 + jnb short loc_9BEF + cmp byte_220CB, 0 + jz short loc_9BF4 + +loc_9BEF: ; CODE XREF: sub_9B14+D2j + mov byte_220DC, 0FFh + +loc_9BF4: ; CODE XREF: sub_9B14+D9j + les bx, dword_1F2F0 + mov al, es:[bx+36h] + push ax + jmp short loc_9C70 +; --------------------------------------------------------------------------- + +loc_9BFF: ; CODE XREF: sub_9B14+63j + les bx, dword_1F2F0 + cmp byte ptr es:[bx+0Fh], 0 + jz short loc_9C13 + cmp byte ptr es:[bx+0Eh], 0 + jz short loc_9C13 + jmp short loc_9C49 +; --------------------------------------------------------------------------- + +loc_9C13: ; CODE XREF: sub_9B14+F4j sub_9B14+FBj + les bx, dword_1F2F0 + mov al, es:[bx+0Bh] + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja short loc_9C51 + add bx, bx + jmp cs:off_9EAB[bx] + +loc_9C2B: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:off_9EABo + mov [bp+var_6], 3E8h + jmp short loc_9C51 +; --------------------------------------------------------------------------- + +loc_9C35: ; CODE XREF: sub_9B14+112j + ; sub_9B14+2D6j + ; DATA XREF: ... + mov [bp+var_6], 76Ch + jmp short loc_9C51 +; --------------------------------------------------------------------------- + +loc_9C3F: ; CODE XREF: sub_9B14+112j + ; sub_9B14+2D6j + ; DATA XREF: ... + mov [bp+var_6], 0FA0h + jmp short loc_9C51 +; --------------------------------------------------------------------------- + +loc_9C49: ; CODE XREF: sub_9B14+FDj + ; sub_9B14+112j ... + mov [bp+var_6], 0FFFFh + +loc_9C51: ; CODE XREF: sub_9B14+10Ej + ; sub_9B14+11Fj ... + mov ax, word ptr [bp+var_6] + mov word_23B74, ax + mov word_23BF4, ax + mov byte_202B6, 1 + mov byte_202B7, 1 + mov byte_220DC, 0FFh + mov byte_23AEA, 0 + push 3 + +loc_9C70: ; CODE XREF: sub_9B14+E9j + nop + push cs + call near ptr sub_D6C0 + mov di, 65A6h + xor si, si + jmp short loc_9C93 +; --------------------------------------------------------------------------- + +loc_9C7C: ; CODE XREF: sub_9B14+182j + mov byte ptr [di+6Ch], 0 + mov word ptr [di+1Ah], 400h + mov byte ptr [di+72h], 0 + mov word ptr [di+70h], 0 + inc si + add di, 80h ; '€' + +loc_9C93: ; CODE XREF: sub_9B14+166j + cmp si, 2 + jl short loc_9C7C + les bx, dword_1F2F0 + cmp byte ptr es:[bx+39h], 0 + jnz short loc_9CAB + mov word_1E6EA, 42Fh + jmp short loc_9CD0 +; --------------------------------------------------------------------------- + +loc_9CAB: ; CODE XREF: sub_9B14+18Dj + mov word_1E6E6, 0 + mov word_1E6EA, 3F6h + mov byte_23AF8, 40h ; '@' + mov byte_23E3C, 0 + mov byte_1F39E, 8 + mov byte_202B6, 9 + mov byte_202B7, 9 + +loc_9CD0: ; CODE XREF: sub_9B14+195j + mov word_1FBC0, 1DC3h + les bx, dword_1F2F0 + cmp byte ptr es:[bx+39h], 0 + jz short loc_9CF0 + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 557h + jmp loc_9D80 +; --------------------------------------------------------------------------- + +loc_9CF0: ; CODE XREF: sub_9B14+1CBj + les bx, dword_1F2F0 + cmp byte ptr es:[bx+0Fh], 0 + jz short loc_9D10 + cmp byte ptr es:[bx+0Eh], 0 + jz short loc_9D10 + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 52Dh + jmp short loc_9D80 +; --------------------------------------------------------------------------- + +loc_9D10: ; CODE XREF: sub_9B14+1E5j + ; sub_9B14+1ECj + les bx, dword_1F2F0 + cmp byte ptr es:[bx+0Fh], 0 + jz short loc_9D29 + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 4D6h + jmp short loc_9D80 +; --------------------------------------------------------------------------- + +loc_9D29: ; CODE XREF: sub_9B14+205j + les bx, dword_1F2F0 + cmp byte ptr es:[bx+0Eh], 0 + jz short loc_9D42 + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 500h + jmp short loc_9D80 +; --------------------------------------------------------------------------- + +loc_9D42: ; CODE XREF: sub_9B14+21Ej + les bx, dword_1F2F0 + cmp byte ptr es:[bx+16h], 0 + jnz short loc_9D5B + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 488h + jmp short loc_9D80 +; --------------------------------------------------------------------------- + +loc_9D5B: ; CODE XREF: sub_9B14+237j + les bx, dword_1F2F0 + cmp byte ptr es:[bx+16h], 1 + jnz short loc_9D74 + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 492h + jmp short loc_9D80 +; --------------------------------------------------------------------------- + +loc_9D74: ; CODE XREF: sub_9B14+250j + mov word ptr dword_1E6E2+2, seg seg002 + mov word ptr dword_1E6E2, 4B4h + +loc_9D80: ; CODE XREF: sub_9B14+1D9j + ; sub_9B14+1FAj ... + xor si, si + jmp loc_9E24 +; --------------------------------------------------------------------------- + +loc_9D85: ; CODE XREF: sub_9B14+313j + mov bx, si + shl bx, 7 + mov al, [bx+65AEh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_2], ax + imul ax, 5 + add ax, 108h + mov [bp+var_8], ax + mov ax, si + shl ax, 7 + add ax, 65A6h + mov di, ax + mov bx, [bp+var_8] + mov al, [bx] + mov [di+9], al + inc [bp+var_8] + mov bx, [bp+var_8] + mov al, [bx] + mov [di+0Ah], al + inc [bp+var_8] + mov bx, [bp+var_8] + mov al, [bx] + mov [di+0Bh], al + inc [bp+var_8] + mov bx, [bp+var_8] + mov al, [bx] + mov [di+0Ch], al + inc [bp+var_8] + mov bx, [bp+var_8] + mov al, [bx] + mov [di+17h], al + mov bx, [bp+var_2] + cmp bx, 8 + ja short loc_9E23 + add bx, bx + jmp cs:off_9E99[bx] + +loc_9DEF: ; DATA XREF: seg001:off_9E99o + push si + call sub_A524 + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9DF5: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07BBo + push si + call sub_A6BC + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9DFB: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07BDo + push si + call sub_A854 + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E01: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07BFo + push si + call sub_A9EC + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E07: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07C1o + push si + call sub_AB84 + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E0D: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07C3o + push si + call sub_AD1C + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E13: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07C5o + push si + call sub_AEB4 + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E19: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07C7o + push si + call sub_B04C + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E1F: ; CODE XREF: sub_9B14+2D6j + ; DATA XREF: seg001:07C9o + push si + call sub_B1E4 + +loc_9E23: ; CODE XREF: sub_9B14+2D2j + ; sub_9B14+2DFj ... + inc si + +loc_9E24: ; CODE XREF: sub_9B14+26Ej + cmp si, 2 + jl loc_9D85 + push ds + push offset aLose_bf2 ; "lose.bf2" + call sub_25F0 + push ds + push offset aRound_bf2 ; "round.bf2" + call sub_25F0 + push ds + push offset aZikicw_bf2 ; "zikicw.bf2" + call sub_25F0 + call sub_E266 + nop + push cs + call near ptr sub_A38E + push 0 + call sub_1402 + call sub_F0EE + mov byte_23AEE, 0 + mov byte_23AEF, 1 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_EC2E + nop + push cs + call near ptr sub_B8F7 + nop + push cs + call near ptr sub_BAE0 + push large 0 + push large 27F00C7h + call sub_C40 + push 0 + call sub_ECB2 + pop di + pop si + leave + retn +sub_9B14 endp + +; --------------------------------------------------------------------------- + db 0 +off_9E99 dw offset loc_9DEF ; DATA XREF: sub_9B14+2D6r + dw offset loc_9DF5 + dw offset loc_9DFB + dw offset loc_9E01 + dw offset loc_9E07 + dw offset loc_9E0D + dw offset loc_9E13 + dw offset loc_9E19 + dw offset loc_9E1F +off_9EAB dw offset loc_9C2B ; DATA XREF: sub_9B14+112r + dw offset loc_9C35 + dw offset loc_9C3F + dw offset loc_9C49 +off_9EB3 dw offset loc_9BAB ; DATA XREF: sub_9B14+92r + dw offset loc_9BAB + dw offset loc_9BB2 + dw offset loc_9BB2 + dw offset loc_9BB9 + dw offset loc_9BB9 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9EBF proc near ; CODE XREF: sub_9B14+2Fp sub_A21F+41p + +var_6 = dword ptr -6 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov word_1F32A, 0 + mov word_1F32C, 0 + mov byte_26356, 0 + mov byte_1FBC2, 0 + mov byte_1FBC3, 0 + mov byte_1F520, 0 + call sub_E313 + call sub_A3FA + call sub_17384 + xor di, di + jmp short loc_9EFF +; --------------------------------------------------------------------------- + +loc_9EF4: ; CODE XREF: sub_9EBF+43j + mov bx, di + imul bx, 30h + mov byte ptr [bx+3ED6h], 0 + inc di + +loc_9EFF: ; CODE XREF: sub_9EBF+33j + cmp di, 40h ; '@' + jl short loc_9EF4 + xor di, di + jmp short loc_9F1D +; --------------------------------------------------------------------------- + +loc_9F08: ; CODE XREF: sub_9EBF+61j + mov bx, di + shl bx, 5 + mov byte ptr [bx+292Ah], 0 + mov bx, di + shl bx, 5 + mov byte ptr [bx+2B2Ah], 0 + inc di + +loc_9F1D: ; CODE XREF: sub_9EBF+47j + cmp di, 10h + jl short loc_9F08 + xor di, di + jmp short loc_9F31 +; --------------------------------------------------------------------------- + +loc_9F26: ; CODE XREF: sub_9EBF+75j + mov bx, di + imul bx, 0Eh + mov byte ptr [bx+66A6h], 0 + inc di + +loc_9F31: ; CODE XREF: sub_9EBF+65j + cmp di, 20h ; ' ' + jl short loc_9F26 + call sub_14A76 + call sub_153BB + call sub_142D0 + call sub_1B653 + call sub_193BC + les bx, dword_1F2F0 + cmp byte ptr es:[bx+28h], 1 + jnz loc_9FFA + mov al, byte_207E3 + mov ah, 0 + mov dl, es:[bx+36h] + mov dh, 0 + sub ax, dx + add ax, 3 + mov di, ax + cmp di, 5 + jle short loc_9F76 + mov di, 5 + +loc_9F76: ; CODE XREF: sub_9EBF+B2j + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov ah, 0 + imul ax, 0Ch + mov dx, di + add dx, dx + add ax, dx + mov bx, ax + movzx eax, word ptr [bx+90h] + mov [bp+var_6], eax + mov bx, word ptr dword_1F2F0 + mov al, es:[bx+0Bh] + mov ah, 0 + or ax, ax + jz short loc_9FAF + cmp ax, 2 + jz short loc_9FC4 + cmp ax, 3 + jz short loc_9FCE + jmp short loc_9FE2 +; --------------------------------------------------------------------------- + +loc_9FAF: ; CODE XREF: sub_9EBF+E2j + mov ebx, 3 + mov eax, [bp+var_6] + cdq + idiv ebx + +loc_9FBE: ; CODE XREF: sub_9EBF+10Dj + mov [bp+var_6], eax + jmp short loc_9FE2 +; --------------------------------------------------------------------------- + +loc_9FC4: ; CODE XREF: sub_9EBF+E7j + mov eax, [bp+var_6] + imul eax, 2 + jmp short loc_9FBE +; --------------------------------------------------------------------------- + +loc_9FCE: ; CODE XREF: sub_9EBF+ECj + mov eax, [bp+var_6] + imul eax, 3 + mov [bp+var_6], eax + add [bp+var_6], 1F4h + +loc_9FE2: ; CODE XREF: sub_9EBF+EEj + ; sub_9EBF+103j + cmp [bp+var_6], 0FFFFh + jle short loc_9FF4 + mov [bp+var_6], 0FFFFh + +loc_9FF4: ; CODE XREF: sub_9EBF+12Bj + mov ax, word ptr [bp+var_6] + mov word_23BF4, ax + +loc_9FFA: ; CODE XREF: sub_9EBF+99j + les bx, dword_1F2F0 + mov al, es:[bx+0Bh] + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja loc_A0E7 + add bx, bx + jmp cs:off_A217[bx] + +loc_A014: ; DATA XREF: seg001:off_A217o + mov al, byte_207E3 + shl al, 4 + mov byte_23AF8, al + mov byte_23E3C, 0 + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, byte_207E3 + mov byte_1F39E, al + cmp byte ptr es:[bx+28h], 1 + jz loc_A0E7 + inc byte_202B6 + inc byte_202B7 + jmp loc_A0E7 +; --------------------------------------------------------------------------- + +loc_A04C: ; CODE XREF: sub_9EBF+150j + ; DATA XREF: seg001:0B39o + mov al, byte_207E3 + shl al, 5 + mov byte_23AF8, al + mov byte_23E3C, 0 + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov dl, byte_207E3 + add dl, dl + add al, dl + mov byte_1F39E, al + cmp byte ptr es:[bx+28h], 1 + jz short loc_A0E7 + jmp short loc_A0A2 +; --------------------------------------------------------------------------- + +loc_A076: ; CODE XREF: sub_9EBF+150j + ; DATA XREF: seg001:0B3Bo + mov al, byte_207E3 + shl al, 5 + add al, 20h ; ' ' + mov byte_23AF8, al + mov byte_23E3C, 8 + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov dl, byte_207E3 + add dl, dl + add al, dl + add al, 2 + mov byte_1F39E, al + cmp byte ptr es:[bx+28h], 1 + jz short loc_A0E7 + +loc_A0A2: ; CODE XREF: sub_9EBF+1B5j + mov al, byte_202B6 + add al, 2 + mov byte_202B6, al + mov al, byte_202B7 + add al, 2 + jmp short loc_A0E4 +; --------------------------------------------------------------------------- + +loc_A0B1: ; CODE XREF: sub_9EBF+150j + ; DATA XREF: seg001:0B3Do + mov byte_23AF8, 60h ; '`' + mov byte_23E3C, 18h + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov dl, byte_207E3 + add dl, dl + add al, dl + add al, 8 + mov byte_1F39E, al + cmp byte ptr es:[bx+28h], 1 + jz short loc_A0E7 + mov al, byte_202B6 + add al, 4 + mov byte_202B6, al + mov al, byte_202B7 + add al, 4 + +loc_A0E4: ; CODE XREF: sub_9EBF+1F0j + mov byte_202B7, al + +loc_A0E7: ; CODE XREF: sub_9EBF+14Aj + ; sub_9EBF+17Ej ... + cmp byte_23AF8, 80h ; '€' + jb short loc_A0F3 + mov byte_23AF8, 7Fh ; '' + +loc_A0F3: ; CODE XREF: sub_9EBF+22Dj + cmp byte_1F39E, 10h + jbe short loc_A0FF + mov byte_1F39E, 10h + +loc_A0FF: ; CODE XREF: sub_9EBF+239j + cmp byte_202B6, 10h + jbe short loc_A10B + mov byte_202B6, 10h + +loc_A10B: ; CODE XREF: sub_9EBF+245j + cmp byte_202B7, 10h + jbe short loc_A117 + mov byte_202B7, 10h + +loc_A117: ; CODE XREF: sub_9EBF+251j + mov byte_1DB9E, 0FFh + mov byte_20E3C, 0 + mov byte_207E2, 1 + mov word_21434, 1400h + mov byte_23B05, 0 + mov byte_23B04, 0 + mov byte_23B03, 0 + mov byte_23B02, 0 + mov si, 65A6h + xor di, di + jmp loc_A206 +; --------------------------------------------------------------------------- + +loc_A148: ; CODE XREF: sub_9EBF+34Aj + mov byte ptr [di+4AD6h], 0 + les bx, dword_1F2F0 + add bx, di + mov al, es:[bx+0Ch] + mov [si+8], al + mov bx, word ptr dword_1F2F0 + add bx, di + mov al, es:[bx+0Eh] + mov [si+15h], al + mov byte ptr [si+4], 0 + mov byte ptr [si+5], 0 + mov byte ptr [si+6], 32h ; '2' + mov byte ptr [si+4], 0 + mov byte ptr [si+0Dh], 1 + mov byte ptr [si+7], 0Ah + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov byte ptr [si+14h], 0 + mov word ptr [si], 900h + mov word ptr [si+2], 1500h + mov word ptr [si+18h], 0 + mov byte ptr [si+22h], 1 + mov byte ptr [si+73h], 1 + mov [bp+var_2], 0 + jmp short loc_A1BD +; --------------------------------------------------------------------------- + +loc_A1A8: ; CODE XREF: sub_9EBF+302j + call sub_1EEC + and al, 3 + shl al, 6 + add al, 3Fh ; '?' + mov bx, [bp+var_2] + mov [bx+si+24h], al + inc [bp+var_2] + +loc_A1BD: ; CODE XREF: sub_9EBF+2E7j + cmp [bp+var_2], 40h ; '@' + jl short loc_A1A8 + mov byte ptr [si+1Ch], 0 + mov byte ptr [si+1Dh], 2 + mov byte ptr [si+1Fh], 0 + mov byte ptr [si+1Eh], 0 + mov word ptr [si+74h], 0 + mov byte ptr [si+76h], 0 + mov byte ptr [si+77h], 0 + mov byte ptr [si+78h], 0 + mov byte ptr [si+79h], 0 + mov byte ptr [di+2D54h], 0 + mov bx, di + add bx, bx + mov word ptr [bx+659Ch], 0 + mov byte ptr [di+658Bh], 0 + mov byte ptr [di+798h], 0 + inc di + add si, 80h ; '€' + +loc_A206: ; CODE XREF: sub_9EBF+286j + cmp di, 2 + jl loc_A148 + call sub_13D9C + pop di + pop si + leave + retn +sub_9EBF endp + +; --------------------------------------------------------------------------- + db 0 +off_A217 dw offset loc_A014 ; DATA XREF: sub_9EBF+150r + dw offset loc_A04C + dw offset loc_A076 + dw offset loc_A0B1 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A21F proc near ; CODE XREF: _main+62p + push bp + mov bp, sp + push large 0C00002h + call sub_F5C + push large 0 + push large 27F00C7h + call sub_C40 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_CD2 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_CD2 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_F86 + inc byte_207E3 + call sub_9EBF + call dword_20F28 + mov word_23B6A, 4110h + mov word_23BEA, 4110h + call sub_EC2E + nop + push cs + call near ptr sub_B8F7 + nop + push cs + call near ptr sub_A38E + nop + push cs + call near ptr sub_BAE0 + pop bp + retn +sub_A21F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A289 proc near ; CODE XREF: sub_9778+1F4p + ; sub_9778+232p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + xor cx, cx + jmp short loc_A2C6 +; --------------------------------------------------------------------------- + +loc_A294: ; CODE XREF: sub_A289+40j + mov bx, si + shl bx, 3 + add bx, cx + mov al, [bx+4B64h] + mov dx, si + shl dx, 3 + les bx, dword_1F2F0 + add bx, dx + add bx, cx + mov es:[bx+18h], al + mov ax, 1 + sub ax, si + shl ax, 3 + mov bx, word ptr dword_1F2F0 + add bx, ax + add bx, cx + mov byte ptr es:[bx+18h], 0 + inc cx + +loc_A2C6: ; CODE XREF: sub_A289+9j + cmp cx, 8 + jl short loc_A294 + pop si + pop bp + retn 2 +sub_A289 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A2D0 proc far ; CODE XREF: sub_B73A+5Ep sub_B7B3+18p ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov bx, [bp+arg_0] + sar ax, 4 + or bx, bx + jz short loc_A2E6 + add ax, 140h + mov bx, 2 + +loc_A2E6: ; CODE XREF: sub_A2D0+Ej + add ax, [bx+659Ch] + add ax, 10h + pop bp + retf 4 +sub_A2D0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A2F2 proc far ; CODE XREF: sub_17730+1CEP + ; sub_17DAE+12DP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov bx, sp + mov dx, [bp+arg_0] + or dl, dl + jz short loc_A301 + mov dx, 140h + +loc_A301: ; CODE XREF: sub_A2F2+Aj + mov ax, [bp+arg_2] + sub ax, dx + add ax, 0FFF0h + shl ax, 4 + pop bp + retf 4 +sub_A2F2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A310 proc far ; CODE XREF: sub_14B7C+EFP + ; sub_154C4+6FP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov cx, [bp+arg_2] + mov dx, [bp+arg_0] + mov bx, word_1F2EC + cmp cx, bx + jle short loc_A33F + neg bx + add bx, 1200h + cmp cx, bx + jge short loc_A33F + mov bx, word_1F2EE + cmp dx, bx + jle short loc_A33F + neg bx + add bx, 1700h + cmp dx, bx + jl short loc_A341 + +loc_A33F: ; CODE XREF: sub_A310+11j sub_A310+1Bj ... + mov al, 1 + +loc_A341: ; CODE XREF: sub_A310+2Dj + pop bp + retf 4 +sub_A310 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A346 proc near ; CODE XREF: _main+Dp + +var_8 = byte ptr -8 +var_3 = word ptr -3 + + enter 8, 0 + push si + push ds + push offset aYume_cfg ; "YUME.CFG" + call sub_896 + push ss + lea ax, [bp+var_8] + push ax + push 8 + call sub_7E2 + call sub_7D2 + mov si, [bp+var_3] + mov word ptr dword_1F2F0+2, si + mov word ptr dword_1F2F0, 0 + mov ax, si + pop si + leave + retn +sub_A346 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_A378 proc far ; CODE XREF: sub_A4A1+1Dp + push si + push di + mov ax, ds + mov es, ax + assume es:dseg + mov di, 1D94h + mov si, 11BAh + mov cx, 0Ch + rep movsd + pop di + pop si + retf +sub_A378 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_A38E proc far ; CODE XREF: sub_9B14+337p + ; sub_A21F+60p + push si + push di + mov ax, ds + mov es, ax + mov di, 11BAh + mov si, 1D94h + mov cx, 0Ch + rep movsd + call far ptr loc_1C7E + pop di + pop si + retf +sub_A38E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A3A8 proc far ; CODE XREF: sub_CB81+C7p + ; sub_CB81+157p ... + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, ds + mov es, ax + xor bx, bx + mov al, [bp+arg_0] + or al, al + jz short loc_A3BC + mov bl, 3 + +loc_A3BC: ; CODE XREF: sub_A3A8+10j + lea di, [bx+11BAh] + lea si, [bx+1D94h] + movsw + movsb + mov byte_23B01, 1 + pop di + pop si + pop bp + retf 2 +sub_A3A8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A3D2 proc far ; CODE XREF: sub_126A8+B8P + ; sub_126A8+1F5P ... + +arg_0 = byte ptr 6 +arg_2 = byte ptr 8 + + push bp + mov bp, sp + push di + mov cx, 3 + xor bx, bx + mov al, [bp+arg_0] + or al, al + jz short loc_A3E4 + mov bl, 3 + +loc_A3E4: ; CODE XREF: sub_A3D2+Ej + lea di, [bx+11BAh] + mov al, [bp+arg_2] + +loc_A3EB: ; CODE XREF: sub_A3D2+1Cj + mov [di], al + inc di + loop loc_A3EB + mov byte_23B01, 1 + pop di + pop bp + retf 4 +sub_A3D2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A3FA proc near ; CODE XREF: sub_9778+324p + ; sub_9EBF+29p + push si + mov si, 0FFh + +loc_A3FE: ; CODE XREF: sub_A3FA+Ej + call sub_1EEC + mov [si+1E52h], al + dec si + jge short loc_A3FE + pop si + retn +sub_A3FA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A40C proc near ; CODE XREF: sub_BB12+121p + ; sub_BB12+17Ep ... + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + retn +sub_A40C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A41E proc near ; CODE XREF: sub_BB12+114p + ; sub_BB12+171p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + and ax, [bp+arg_0] + pop bp + retn 2 +sub_A41E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A438 proc near ; CODE XREF: sub_9778:loc_977Ep + push di + mov ax, ds + mov es, ax + mov di, 4BA0h + mov cx, 678h + xor eax, eax + rep stosd + pop di + retn +sub_A438 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A44C proc near ; CODE XREF: sub_A4C3+58p + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov si, [bp+arg_4] + push large [bp+arg_0] + call sub_25F0 + les bx, [bp+arg_0] + assume es:nothing + mov byte ptr es:[bx+2], 65h ; 'e' + mov byte ptr es:[bx+3], 78h ; 'x' + mov byte ptr es:[bx+5], 6Dh ; 'm' + mov byte ptr es:[bx+6], 72h ; 'r' + mov byte ptr es:[bx+7], 73h ; 's' + push si + push word ptr [bp+arg_0+2] + push bx + call sub_EEE2 + les bx, [bp+arg_0] + mov byte ptr es:[bx+2], 62h ; 'b' + mov byte ptr es:[bx+3], 6Dh ; 'm' + lea ax, [si+2] + push ax + push word ptr [bp+arg_0+2] + push bx + call sub_EEE2 + pop si + pop bp + retn 6 +sub_A44C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A4A1 proc near ; CODE XREF: sub_A524+166p + ; sub_A6BC+166p ... + push bp + mov bp, sp + push 1 + call sub_F0A6 + push 3 + call sub_F0A6 + call sub_292E + call far ptr loc_1C7E + nop + push cs + call near ptr sub_A378 + pop bp + retn +sub_A4A1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A4C3 proc near ; CODE XREF: sub_A524+Ap sub_A6BC+Ap ... + +var_C = byte ptr -0Ch +var_B = byte ptr -0Bh +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 0Ch, 0 + push si + push di + mov di, [bp+arg_2] + xor si, si + jmp short loc_A4D8 +; --------------------------------------------------------------------------- + +loc_A4D0: ; CODE XREF: sub_A4C3+18j + mov al, [si+640h] + mov [bp+si+var_C], al + inc si + +loc_A4D8: ; CODE XREF: sub_A4C3+Bj + cmp si, 0Ch + jl short loc_A4D0 + mov bx, di + shl bx, 7 + mov al, [bx+65AEh] + mov ah, 0 + and ax, 1 + sub [bp+arg_0], ax + cmp [bp+arg_0], 0Ah + jl short loc_A50C + mov ax, [bp+arg_0] + mov bx, 0Ah + cwd + idiv bx + add al, [bp+var_C] + mov [bp+var_C], al + mov ax, [bp+arg_0] + cwd + idiv bx + mov [bp+arg_0], dx + +loc_A50C: ; CODE XREF: sub_A4C3+2Fj + mov al, [bp+var_B] + add al, byte ptr [bp+arg_0] + mov [bp+var_B], al + push di + push ss + lea ax, [bp+var_C] + push ax + call sub_A44C + pop di + pop si + leave + retn 4 +sub_A4C3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A524 proc near ; CODE XREF: sub_9B14+2DCp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 1 + call sub_A4C3 + or si, si + jnz loc_A5E2 + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_1A27E + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_1A4E0 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1A5F9 + mov word_23B70, seg seg004 + mov word_23B6E, offset sub_14A97 + mov word ptr dword_2028C+2, seg seg004 + mov word ptr dword_2028C, offset sub_14B7C + mov word ptr dword_20294+2, seg seg004 + mov word ptr dword_20294, offset sub_14D83 + mov word ptr dword_2029C+2, seg seg004 + mov word ptr dword_2029C, offset sub_14CE3 + mov word ptr dword_202A4+2, seg seg004 + mov word ptr dword_202A4, offset sub_14FEE + mov word ptr dword_202AC+2, seg seg004 + mov word ptr dword_202AC, offset sub_15006 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_11033 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_113A9 + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1508C + mov word ptr dword_205D6+2, seg seg004 + mov word ptr dword_205D6, offset sub_151E1 + mov word_23B6C, 4129h + mov word_23B6A, 4110h + jmp loc_A68D +; --------------------------------------------------------------------------- + +loc_A5E2: ; CODE XREF: sub_A524+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_1A27E + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_1A4E0 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1A5F9 + mov word_23BF0, seg seg004 + mov word_23BEE, offset sub_14A97 + mov word ptr dword_20290+2, seg seg004 + mov word ptr dword_20290, offset sub_14B7C + mov word ptr dword_20298+2, seg seg004 + mov word ptr dword_20298, offset sub_14D83 + mov word ptr dword_202A0+2, seg seg004 + mov word ptr dword_202A0, offset sub_14CE3 + mov word ptr dword_202A8+2, seg seg004 + mov word ptr dword_202A8, offset sub_14FEE + mov word ptr dword_202B0+2, seg seg004 + mov word ptr dword_202B0, offset sub_15006 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_11033 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_113A9 + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1508C + mov word ptr dword_205DA+2, seg seg004 + mov word ptr dword_205DA, offset sub_151E1 + mov word_23BEC, 4129h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_A68D: ; CODE XREF: sub_A524+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D092 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D135 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_10BFE + pop si + pop bp + retn 2 +sub_A524 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A6BC proc near ; CODE XREF: sub_9B14+2E2p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 3 + call sub_A4C3 + or si, si + jnz loc_A77A + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_1A62B + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_1A745 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1A8D3 + mov word_23B70, seg seg004 + mov word_23B6E, offset sub_153DC + mov word ptr dword_2028C+2, seg seg004 + mov word ptr dword_2028C, offset sub_154C4 + mov word ptr dword_20294+2, seg seg004 + mov word ptr dword_20294, offset sub_15652 + mov word ptr dword_2029C+2, seg seg004 + mov word ptr dword_2029C, offset sub_15597 + mov word ptr dword_202A4+2, seg seg004 + mov word ptr dword_202A4, offset sub_158C5 + mov word ptr dword_202AC+2, seg seg004 + mov word ptr dword_202AC, offset sub_158DD + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_FED8 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_10263 + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_17043 + mov word ptr dword_205D6+2, seg seg004 + mov word ptr dword_205D6, offset sub_171BA + mov word_23B6C, 4167h + mov word_23B6A, 4110h + jmp loc_A825 +; --------------------------------------------------------------------------- + +loc_A77A: ; CODE XREF: sub_A6BC+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_1A62B + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_1A745 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1A8D3 + mov word_23BF0, seg seg004 + mov word_23BEE, offset sub_153DC + mov word ptr dword_20290+2, seg seg004 + mov word ptr dword_20290, offset sub_154C4 + mov word ptr dword_20298+2, seg seg004 + mov word ptr dword_20298, offset sub_15652 + mov word ptr dword_202A0+2, seg seg004 + mov word ptr dword_202A0, offset sub_15597 + mov word ptr dword_202A8+2, seg seg004 + mov word ptr dword_202A8, offset sub_158C5 + mov word ptr dword_202B0+2, seg seg004 + mov word ptr dword_202B0, offset sub_158DD + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_FED8 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_10263 + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_17043 + mov word ptr dword_205DA+2, seg seg004 + mov word ptr dword_205DA, offset sub_171BA + mov word_23BEC, 4167h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_A825: ; CODE XREF: sub_A6BC+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D092 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D135 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_FB46 + pop si + pop bp + retn 2 +sub_A6BC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A854 proc near ; CODE XREF: sub_9B14+2E8p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 5 + call sub_A4C3 + or si, si + jnz loc_A912 + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_19ABC + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_19C36 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_19D31 + mov word_23B70, seg seg004 + mov word_23B6E, offset sub_142DF + mov word ptr dword_2028C+2, seg seg004 + mov word ptr dword_2028C, offset sub_143BE + mov word ptr dword_20294+2, seg seg004 + mov word ptr dword_20294, offset sub_14511 + mov word ptr dword_2029C+2, seg seg004 + mov word ptr dword_2029C, offset sub_14487 + mov word ptr dword_202A4+2, seg seg004 + mov word ptr dword_202A4, offset sub_14885 + mov word ptr dword_202AC+2, seg seg004 + mov word ptr dword_202AC, offset sub_1489D + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_F848 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_FAE8 + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg004 + mov word ptr dword_205D6, offset sub_148B5 + mov word_23B6C, 41A9h + mov word_23B6A, 4110h + jmp loc_A9BD +; --------------------------------------------------------------------------- + +loc_A912: ; CODE XREF: sub_A854+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_19ABC + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_19C36 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_19D31 + mov word_23BF0, seg seg004 + mov word_23BEE, offset sub_142DF + mov word ptr dword_20290+2, seg seg004 + mov word ptr dword_20290, offset sub_143BE + mov word ptr dword_20298+2, seg seg004 + mov word ptr dword_20298, offset sub_14511 + mov word ptr dword_202A0+2, seg seg004 + mov word ptr dword_202A0, offset sub_14487 + mov word ptr dword_202A8+2, seg seg004 + mov word ptr dword_202A8, offset sub_14885 + mov word ptr dword_202B0+2, seg seg004 + mov word ptr dword_202B0, offset sub_1489D + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_F848 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_FAE8 + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg004 + mov word ptr dword_205DA, offset sub_148B5 + mov word_23BEC, 41A9h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_A9BD: ; CODE XREF: sub_A854+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_F5AF + pop si + pop bp + retn 2 +sub_A854 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A9EC proc near ; CODE XREF: sub_9B14+2EEp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 7 + call sub_A4C3 + or si, si + jnz loc_AAAA + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_193EF + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_1961D + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_197F3 + mov word_23B70, seg seg008 + mov word_23B6E, offset sub_1B674 + mov word ptr dword_2028C+2, seg seg008 + mov word ptr dword_2028C, offset sub_1B723 + mov word ptr dword_20294+2, seg seg008 + mov word ptr dword_20294, offset sub_1B979 + mov word ptr dword_2029C+2, seg seg008 + mov word ptr dword_2029C, offset sub_1B903 + mov word ptr dword_202A4+2, seg seg008 + mov word ptr dword_202A4, offset sub_1BC1D + mov word ptr dword_202AC+2, seg seg008 + mov word ptr dword_202AC, offset sub_1BC35 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_116B6 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset loc_11A01 + mov word ptr dword_205CE+2, seg seg005 + mov word ptr dword_205CE, offset sub_185AB + mov word ptr dword_205D6+2, seg seg005 + mov word ptr dword_205D6, offset sub_18766 + mov word_23B6C, 41ECh + mov word_23B6A, 4110h + jmp loc_AB55 +; --------------------------------------------------------------------------- + +loc_AAAA: ; CODE XREF: sub_A9EC+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_193EF + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_1961D + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_197F3 + mov word_23BF0, seg seg008 + mov word_23BEE, offset sub_1B674 + mov word ptr dword_20290+2, seg seg008 + mov word ptr dword_20290, offset sub_1B723 + mov word ptr dword_20298+2, seg seg008 + mov word ptr dword_20298, offset sub_1B979 + mov word ptr dword_202A0+2, seg seg008 + mov word ptr dword_202A0, offset sub_1B903 + mov word ptr dword_202A8+2, seg seg008 + mov word ptr dword_202A8, offset sub_1BC1D + mov word ptr dword_202B0+2, seg seg008 + mov word ptr dword_202B0, offset sub_1BC35 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_116B6 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset loc_11A01 + mov word ptr dword_205D2+2, seg seg005 + mov word ptr dword_205D2, offset sub_185AB + mov word ptr dword_205DA+2, seg seg005 + mov word ptr dword_205DA, offset sub_18766 + mov word_23BEC, 41ECh + mov word_23BEA, 4110h + call sub_A4A1 + +loc_AB55: ; CODE XREF: sub_A9EC+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_113E2 + pop si + pop bp + retn 2 +sub_A9EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AB84 proc near ; CODE XREF: sub_9B14+2F4p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 9 + call sub_A4C3 + or si, si + jnz loc_AC42 + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_19D60 + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_19FEF + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1A14E + mov word_23B70, seg seg010 + mov word_23B6E, offset sub_1C167 + mov word ptr dword_2028C+2, seg seg010 + mov word ptr dword_2028C, offset sub_1C19F + mov word ptr dword_20294+2, seg seg010 + mov word ptr dword_20294, offset sub_1C295 + mov word ptr dword_2029C+2, seg seg010 + mov word ptr dword_2029C, offset sub_1C22E + mov word ptr dword_202A4+2, seg seg010 + mov word ptr dword_202A4, offset sub_1C3DA + mov word ptr dword_202AC+2, seg seg010 + mov word ptr dword_202AC, offset sub_1C3F2 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_11E48 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_12140 + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg005 + mov word ptr dword_205D6, offset sub_18BB8 + mov word_23B6C, 421Bh + mov word_23B6A, 4110h + jmp loc_ACED +; --------------------------------------------------------------------------- + +loc_AC42: ; CODE XREF: sub_AB84+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_19D60 + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_19FEF + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1A14E + mov word_23BF0, seg seg010 + mov word_23BEE, offset sub_1C167 + mov word ptr dword_20290+2, seg seg010 + mov word ptr dword_20290, offset sub_1C19F + mov word ptr dword_20298+2, seg seg010 + mov word ptr dword_20298, offset sub_1C295 + mov word ptr dword_202A0+2, seg seg010 + mov word ptr dword_202A0, offset sub_1C22E + mov word ptr dword_202A8+2, seg seg010 + mov word ptr dword_202A8, offset sub_1C3DA + mov word ptr dword_202B0+2, seg seg010 + mov word ptr dword_202B0, offset sub_1C3F2 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_11E48 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_12140 + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg005 + mov word ptr dword_205DA, offset sub_18BB8 + mov word_23BEC, 421Bh + mov word_23BEA, 4110h + call sub_A4A1 + +loc_ACED: ; CODE XREF: sub_AB84+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_11A6D + pop si + pop bp + retn 2 +sub_AB84 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AD1C proc near ; CODE XREF: sub_9B14+2FAp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 0Bh + call sub_A4C3 + or si, si + jnz loc_ADDA + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_19825 + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_19999 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_19A8D + mov word_23B70, seg seg009 + mov word_23B6E, offset sub_1BC5C + mov word ptr dword_2028C+2, seg seg009 + mov word ptr dword_2028C, offset sub_1BCD5 + mov word ptr dword_20294+2, seg seg009 + mov word ptr dword_20294, offset sub_1BEF3 + mov word ptr dword_2029C+2, seg seg009 + mov word ptr dword_2029C, offset sub_1BE52 + mov word ptr dword_202A4+2, seg seg009 + mov word ptr dword_202A4, offset sub_1C128 + mov word ptr dword_202AC+2, seg seg009 + mov word ptr dword_202AC, offset sub_1C140 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_12FE8 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset loc_132FE + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg005 + mov word ptr dword_205D6, offset sub_189AA + mov word_23B6C, 42D5h + mov word_23B6A, 4110h + jmp loc_AE85 +; --------------------------------------------------------------------------- + +loc_ADDA: ; CODE XREF: sub_AD1C+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_19825 + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_19999 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_19A8D + mov word_23BF0, seg seg009 + mov word_23BEE, offset sub_1BC5C + mov word ptr dword_20290+2, seg seg009 + mov word ptr dword_20290, offset sub_1BCD5 + mov word ptr dword_20298+2, seg seg009 + mov word ptr dword_20298, offset sub_1BEF3 + mov word ptr dword_202A0+2, seg seg009 + mov word ptr dword_202A0, offset sub_1BE52 + mov word ptr dword_202A8+2, seg seg009 + mov word ptr dword_202A8, offset sub_1C128 + mov word ptr dword_202B0+2, seg seg009 + mov word ptr dword_202B0, offset sub_1C140 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_12FE8 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset loc_132FE + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg005 + mov word ptr dword_205DA, offset sub_189AA + mov word_23BEC, 42D5h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_AE85: ; CODE XREF: sub_AD1C+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_12BFB + pop si + pop bp + retn 2 +sub_AD1C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AEB4 proc near ; CODE XREF: sub_9B14+300p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 0Dh + call sub_A4C3 + or si, si + jnz loc_AF72 + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_1AFA2 + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_1B105 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1B231 + mov word_23B70, seg seg011 + mov word_23B6E, offset sub_1C419 + mov word ptr dword_2028C+2, seg seg011 + mov word ptr dword_2028C, offset sub_1C4C5 + mov word ptr dword_20294+2, seg seg011 + mov word ptr dword_20294, offset sub_1C6E8 + mov word ptr dword_2029C+2, seg seg011 + mov word ptr dword_2029C, offset sub_1C66B + mov word ptr dword_202A4+2, seg seg011 + mov word ptr dword_202A4, offset sub_1C8DA + mov word ptr dword_202AC+2, seg seg011 + mov word ptr dword_202AC, offset sub_1C8F2 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_13661 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_1398B + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg005 + mov word ptr dword_205D6, offset sub_18DC8 + mov word_23B6C, 4313h + mov word_23B6A, 4110h + jmp loc_B01D +; --------------------------------------------------------------------------- + +loc_AF72: ; CODE XREF: sub_AEB4+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_1AFA2 + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_1B105 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1B231 + mov word_23BF0, seg seg011 + mov word_23BEE, offset sub_1C419 + mov word ptr dword_20290+2, seg seg011 + mov word ptr dword_20290, offset sub_1C4C5 + mov word ptr dword_20298+2, seg seg011 + mov word ptr dword_20298, offset sub_1C6E8 + mov word ptr dword_202A0+2, seg seg011 + mov word ptr dword_202A0, offset sub_1C66B + mov word ptr dword_202A8+2, seg seg011 + mov word ptr dword_202A8, offset sub_1C8DA + mov word ptr dword_202B0+2, seg seg011 + mov word ptr dword_202B0, offset sub_1C8F2 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_13661 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_1398B + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg005 + mov word ptr dword_205DA, offset sub_18DC8 + mov word_23BEC, 4313h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_B01D: ; CODE XREF: sub_AEB4+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D092 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D135 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_1334D + pop si + pop bp + retn 2 +sub_AEB4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B04C proc near ; CODE XREF: sub_9B14+306p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 0Fh + call sub_A4C3 + or si, si + jnz loc_B10A + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset sub_18FEA + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_19260 + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1938A + mov word_23B70, seg seg007 + mov word_23B6E, offset sub_1B277 + mov word ptr dword_2028C+2, seg seg007 + mov word ptr dword_2028C, offset sub_1B2C2 + mov word ptr dword_20294+2, seg seg007 + mov word ptr dword_20294, offset sub_1B427 + mov word ptr dword_2029C+2, seg seg007 + mov word ptr dword_2029C, offset sub_1B3B0 + mov word ptr dword_202A4+2, seg seg007 + mov word ptr dword_202A4, offset sub_1B623 + mov word ptr dword_202AC+2, seg seg007 + mov word ptr dword_202AC, offset sub_1B63B + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_126A8 + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_12B99 + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg005 + mov word ptr dword_205D6, offset sub_183C1 + mov word_23B6C, 4259h + mov word_23B6A, 4110h + jmp loc_B1B5 +; --------------------------------------------------------------------------- + +loc_B10A: ; CODE XREF: sub_B04C+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset sub_18FEA + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_19260 + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1938A + mov word_23BF0, seg seg007 + mov word_23BEE, offset sub_1B277 + mov word ptr dword_20290+2, seg seg007 + mov word ptr dword_20290, offset sub_1B2C2 + mov word ptr dword_20298+2, seg seg007 + mov word ptr dword_20298, offset sub_1B427 + mov word ptr dword_202A0+2, seg seg007 + mov word ptr dword_202A0, offset sub_1B3B0 + mov word ptr dword_202A8+2, seg seg007 + mov word ptr dword_202A8, offset sub_1B623 + mov word ptr dword_202B0+2, seg seg007 + mov word ptr dword_202B0, offset sub_1B63B + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_126A8 + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_12B99 + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg005 + mov word ptr dword_205DA, offset sub_183C1 + mov word_23BEC, 4259h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_B1B5: ; CODE XREF: sub_B04C+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_1219D + pop si + pop bp + retn 2 +sub_B04C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B1E4 proc near ; CODE XREF: sub_9B14+30Cp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push si + push 11h + call sub_A4C3 + or si, si + jnz loc_B2A2 + mov word ptr dword_1FE6C+2, seg seg006 + mov word ptr dword_1FE6C, offset loc_1A902 + mov word ptr dword_1FE70+2, seg seg006 + mov word ptr dword_1FE70, offset sub_1AE2E + mov word ptr dword_1FE74+2, seg seg006 + mov word ptr dword_1FE74, offset sub_1AF72 + mov word_23B70, seg seg004 + mov word_23B6E, offset sub_16A64 + mov word ptr dword_2028C+2, seg seg004 + mov word ptr dword_2028C, offset sub_16A8D + mov word ptr dword_20294+2, seg seg004 + mov word ptr dword_20294, offset sub_16C65 + mov word ptr dword_2029C+2, seg seg004 + mov word ptr dword_2029C, offset sub_16B0C + mov word ptr dword_202A4+2, seg seg004 + mov word ptr dword_202A4, offset sub_16FC0 + mov word ptr dword_202AC+2, seg seg004 + mov word ptr dword_202AC, offset sub_16FD8 + mov word ptr dword_1F32E+2, seg seg003 + mov word ptr dword_1F32E, offset sub_1070A + mov word ptr dword_1F336+2, seg seg003 + mov word ptr dword_1F336, offset sub_10BAB + mov word ptr dword_205CE+2, seg seg004 + mov word ptr dword_205CE, offset sub_1501E + mov word ptr dword_205D6+2, seg seg004 + mov word ptr dword_205D6, offset sub_159FF + mov word_23B6C, 4297h + mov word_23B6A, 4110h + jmp loc_B34D +; --------------------------------------------------------------------------- + +loc_B2A2: ; CODE XREF: sub_B1E4+Fj + mov word ptr dword_1FE78+2, seg seg006 + mov word ptr dword_1FE78, offset loc_1A902 + mov word ptr dword_1FE7C+2, seg seg006 + mov word ptr dword_1FE7C, offset sub_1AE2E + mov word ptr dword_1FE80+2, seg seg006 + mov word ptr dword_1FE80, offset sub_1AF72 + mov word_23BF0, seg seg004 + mov word_23BEE, offset sub_16A64 + mov word ptr dword_20290+2, seg seg004 + mov word ptr dword_20290, offset sub_16A8D + mov word ptr dword_20298+2, seg seg004 + mov word ptr dword_20298, offset sub_16C65 + mov word ptr dword_202A0+2, seg seg004 + mov word ptr dword_202A0, offset sub_16B0C + mov word ptr dword_202A8+2, seg seg004 + mov word ptr dword_202A8, offset sub_16FC0 + mov word ptr dword_202B0+2, seg seg004 + mov word ptr dword_202B0, offset sub_16FD8 + mov word ptr dword_1F332+2, seg seg003 + mov word ptr dword_1F332, offset sub_1070A + mov word ptr dword_1F33A+2, seg seg003 + mov word ptr dword_1F33A, offset sub_10BAB + mov word ptr dword_205D2+2, seg seg004 + mov word ptr dword_205D2, offset sub_1501E + mov word ptr dword_205DA+2, seg seg004 + mov word ptr dword_205DA, offset sub_159FF + mov word_23BEC, 4297h + mov word_23BEA, 4110h + call sub_A4A1 + +loc_B34D: ; CODE XREF: sub_B1E4+BBj + mov word ptr dword_20F20+2, seg seg001 + mov word ptr dword_20F20, offset sub_D2E8 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, offset sub_D340 + mov word ptr dword_20F28+2, seg seg001 + mov word ptr dword_20F28, offset sub_D05D + push si + call sub_102C8 + pop si + pop bp + retn 2 +sub_B1E4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B37C proc near ; CODE XREF: sub_9778+2D1p + ; sub_9778+2E2p ... + mov ax, 0A828h + +loc_B37F: ; CODE XREF: sub_B398+3j + push di + mov di, bx + mov es, ax + assume es:nothing + xor eax, eax + not eax + +loc_B38A: ; CODE XREF: sub_B37C+17j + mov cx, 9 + rep stosd + sub di, 74h ; 't' + jge short loc_B38A + pop di + retn +sub_B37C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B398 proc near ; CODE XREF: sub_C830+4Ap sub_C830+8Ap + mov ax, 0ABC0h + jmp short loc_B37F +sub_B398 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B39E proc far ; CODE XREF: sub_B4A8+12Bp + ; sub_B4A8+133p ... + call sub_B37C + retf +sub_B39E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B3A2 proc near ; CODE XREF: sub_C830+9p + push di + push si + mov ax, 0FFF0h + mov dx, 4A0h + out dx, ax + mov ax, 0FFh + mov dx, 4A2h + out dx, ax + mov ax, 3100h + mov dx, 4A4h + out dx, ax + mov ax, 0FFFFh + mov dx, 4A8h + out dx, ax + mov ax, 0 + mov dx, 4ACh + out dx, ax + mov ax, 0Fh + mov dx, 4AEh + out dx, ax + mov dx, ds + mov di, 232h + mov si, 40D8h + mov ax, 0ABC0h + mov es, ax + assume es:nothing + mov ds, ax + assume ds:nothing + nop + +loc_B3DE: ; CODE XREF: sub_B3A2+4Cj + mov cx, 12h + +loc_B3E1: ; CODE XREF: sub_B3A2+44j + movsw + mov es:[di+26h], ax + loop loc_B3E1 + sub si, 74h ; 't' + sub di, 74h ; 't' + jge short loc_B3DE + mov ds, dx + assume ds:dseg + pop si + pop di + retn +sub_B3A2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B3F6 proc near ; CODE XREF: sub_C8C4+5Ap sub_C8C4+8Fp ... + push di + push si + mov di, 0F0h ; 'ð' + mov ax, 0ABCAh + mov es, ax + assume es:nothing + mov si, 50h ; 'P' + mov ax, dx + and ax, 0Fh + add bx, ax + shr dx, 4 + shl dx, 1 + add di, dx + mov ax, bx + and bx, 0Fh + shl bx, 1 + shr ax, 4 + jz short loc_B446 + mov dx, ax + shl ax, 1 + add si, ax + xor ax, ax + not ax + nop + mov cx, dx + rep stosw + sub di, si + mov cx, dx + rep stosw + sub di, si + mov cx, dx + rep stosw + sub di, si + mov cx, dx + rep stosw + or bx, bx + jz short loc_B450 + add di, 0F0h ; 'ð' + +loc_B446: ; CODE XREF: sub_B3F6+25j + mov ax, [bx+64Ch] + +loc_B44A: ; CODE XREF: sub_B3F6+58j + stosw + sub di, 52h ; 'R' + jge short loc_B44A + +loc_B450: ; CODE XREF: sub_B3F6+4Aj + pop si + pop di + retn +sub_B3F6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __stdcall __far sub_B454(char *arg0) +sub_B454 proc far ; CODE XREF: _main+8Cp + +_arg0 = dword ptr 6 + + push bp + mov bp, sp + push ds + push offset unk_1F014 + push large [dword_1EFFC] + call sub_1596 + call sub_248C + call sub_1590 + call sub_1FDA + call sub_11DA + push 0 + call sub_EF1C + push 1 + call sub_EF1C + call sub_EA1A + push large 0 + push large [bp+_arg0] ; arg0 + push large [bp+_arg0] ; path + call _execl + add sp, 0Ch + pop bp + retf 4 +sub_B454 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4A3 proc near + push bp + mov bp, sp + pop bp + retn +sub_B4A3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4A8 proc near + push bp + mov bp, sp + push si + cmp byte_1FBC2, 0 + jnz short loc_B4E3 + mov word_1FBC4, 12Fh + mov word_1FBC6, 17Eh + mov word_1FBC8, 10h + mov word_1FBCA, 17Eh + mov word_1FBCC, 10h + mov word_1FBCE, 10h + mov word_1FBD0, 12Fh + mov word_1FBD2, 10h + +loc_B4E3: ; CODE XREF: sub_B4A8+9j + push large 80000h + push large 26F00BFh + call sub_C40 + sub word_1FBC4, 12h + sub word_1FBCA, 17h + add word_1FBCC, 12h + add word_1FBD2, 17h + push large 0C00002h + call sub_F5C + mov word_1DB48, 5555h + xor si, si + jmp short loc_B565 +; --------------------------------------------------------------------------- + +loc_B51D: ; CODE XREF: sub_B4A8+C1j + lea ax, [si+12Fh] + push ax + push 8 + lea ax, [si+12Fh] + push ax + push 0BFh ; '¿' + mov ax, word_1FBC4 + add ax, si + push ax + mov ax, word_1FBC6 + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + lea ax, [si+10h] + push ax + push 8 + lea ax, [si+10h] + push ax + push 0BFh ; '¿' + mov ax, word_1FBCC + add ax, si + push ax + mov ax, word_1FBCE + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + add si, 140h + +loc_B565: ; CODE XREF: sub_B4A8+73j + cmp si, 140h + jle short loc_B51D + mov word_1DB48, 0AAAAh + xor si, si + jmp short loc_B5BD +; --------------------------------------------------------------------------- + +loc_B575: ; CODE XREF: sub_B4A8+119j + lea ax, [si+10h] + push ax + push 0BFh ; '¿' + lea ax, [si+12Fh] + push ax + push 0BFh ; '¿' + mov ax, word_1FBC8 + add ax, si + push ax + mov ax, word_1FBCA + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + lea ax, [si+10h] + push ax + push 8 + lea ax, [si+12Fh] + push ax + push 8 + mov ax, word_1FBD0 + add ax, si + push ax + mov ax, word_1FBD2 + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + add si, 140h + +loc_B5BD: ; CODE XREF: sub_B4A8+CBj + cmp si, 140h + jle short loc_B575 + inc byte_1FBC2 + cmp byte_1FBC2, 10h + jb short loc_B5EE + mov bx, 3932h + nop + push cs + call near ptr sub_B39E + mov bx, 395Ah + nop + push cs + call near ptr sub_B39E + mov byte_1FBC3, 1 + mov byte_1FBC2, 0 + mov word_1FBC0, 1F2Ah + +loc_B5EE: ; CODE XREF: sub_B4A8+124j + mov word_1DB48, 0FFFFh + call sub_F86 + push large 0 + push large 27F00C7h + call sub_C40 + pop si + pop bp + retn +sub_B4A8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B60A proc near + push bp + mov bp, sp + push si + cmp byte_1FBC2, 0 + jnz short loc_B645 + mov word_1FBC4, 12Fh + mov word_1FBC6, 10h + mov word_1FBC8, 12Fh + mov word_1FBCA, 17Eh + mov word_1FBCC, 10h + mov word_1FBCE, 17Eh + mov word_1FBD0, 10h + mov word_1FBD2, 10h + +loc_B645: ; CODE XREF: sub_B60A+9j + push large 100000h + push large 26F00BFh + call sub_C40 + add word_1FBC6, 17h + sub word_1FBC8, 12h + sub word_1FBCE, 17h + add word_1FBD0, 12h + push large 0C00002h + call sub_F5C + xor si, si + jmp loc_B706 +; --------------------------------------------------------------------------- + +loc_B67A: ; CODE XREF: sub_B60A+100j + lea ax, [si+10h] + push ax + push 0BFh ; '¿' + lea ax, [si+12Fh] + push ax + push 0BFh ; '¿' + mov ax, word_1FBC4 + add ax, si + push ax + mov ax, word_1FBC6 + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + lea ax, [si+10h] + push ax + push 8 + lea ax, [si+10h] + push ax + push 0BFh ; '¿' + mov ax, word_1FBC8 + add ax, si + push ax + mov ax, word_1FBCA + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + lea ax, [si+10h] + push ax + push 8 + lea ax, [si+12Fh] + push ax + push 8 + mov ax, word_1FBCC + add ax, si + push ax + mov ax, word_1FBCE + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + lea ax, [si+12Fh] + push ax + push 8 + lea ax, [si+12Fh] + push ax + push 0BFh ; '¿' + mov ax, word_1FBD0 + add ax, si + push ax + mov ax, word_1FBD2 + cwd + sub ax, dx + sar ax, 1 + push ax + call sub_FAC + add si, 140h + +loc_B706: ; CODE XREF: sub_B60A+6Dj + cmp si, 140h + jle loc_B67A + inc byte_1FBC2 + cmp byte_1FBC2, 10h + jb short loc_B724 + mov byte_1FBC2, 0 + mov word_1FBC0, 1DC3h + +loc_B724: ; CODE XREF: sub_B60A+10Dj + call sub_F86 + push large 0 + push large 27F00C7h + call sub_C40 + pop si + pop bp + retn +sub_B60A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B73A proc far ; CODE XREF: sub_14487+71P + ; sub_14CE3+87P ... + +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] + inc byte_1FDE0 + cmp byte_1FDE0, 0Ch + jb short loc_B752 + mov byte_1FDE0, 0 + +loc_B752: ; CODE XREF: sub_B73A+11j + mov al, byte_1FDE0 + mov ah, 0 + imul ax, 6 + add ax, 2832h + mov si, ax + mov byte ptr [si], 1 + mov al, byte ptr [bp+arg_0] + mov [si+1], al + cmp byte_1FDE1, 0 + jnz short loc_B792 + mov ax, word_20E32 + add ax, ax + push ax + call sub_13A50 + add ax, word_20E2E + mov di, ax + mov ax, word_20E34 + add ax, ax + push ax + call sub_13A50 + add ax, word_20E30 + mov [bp+arg_2], ax + +loc_B792: ; CODE XREF: sub_B73A+33j + push di + push [bp+arg_0] + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFE8h + mov [si+2], ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 0FFF8h + mov [si+4], ax + pop di + pop si + pop bp + retf 6 +sub_B73A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B7B3 proc far ; CODE XREF: sub_DA43+3B6p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov si, 287Ah + mov byte ptr [si], 1 + mov al, byte ptr [bp+arg_0] + mov [si+1], al + push [bp+arg_4] + push [bp+arg_0] + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFE8h + mov [si+2], ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 0FFF8h + mov [si+4], ax + pop si + pop bp + retf 6 +sub_B7B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B7E5 proc near ; CODE XREF: sub_9778+3Ap + push bp + mov bp, sp + push si + mov si, 2832h + xor ax, ax + jmp short loc_B803 +; --------------------------------------------------------------------------- + +loc_B7F0: ; CODE XREF: sub_B7E5+21j + cmp byte ptr [si], 0 + jz short loc_B7FF + inc byte ptr [si] + cmp byte ptr [si], 10h + jbe short loc_B7FF + mov byte ptr [si], 0 + +loc_B7FF: ; CODE XREF: sub_B7E5+Ej sub_B7E5+15j + inc ax + add si, 6 + +loc_B803: ; CODE XREF: sub_B7E5+9j + cmp ax, 0Dh + jl short loc_B7F0 + pop si + pop bp + retn +sub_B7E5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B80B proc near ; CODE XREF: sub_9778+13Ep + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov si, 2832h + mov dx, 1 + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov dx, word_23AF6 + ; Hack (and dx, 1) + db 081h + db 0e2h + db 001h + db 000h + add dx, 0Bh + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + xor di, di + jmp short loc_B88F +; --------------------------------------------------------------------------- + +loc_B839: ; CODE XREF: sub_B80B+87j + cmp byte ptr [si], 0 + jz short loc_B88B + cmp byte ptr [si+1], 0 + jnz short loc_B852 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_B85E +; --------------------------------------------------------------------------- + +loc_B852: ; CODE XREF: sub_B80B+37j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_B85E: ; CODE XREF: sub_B80B+45j + mov al, [si] + mov ah, 0 + dec ax + mov bx, ax + mov ax, bx + shr ax, 2 + mov bx, ax + mov ax, 2 + imul bx + mov bx, ax + mov ax, bx + add ax, bx + add ax, bx + add ax, 1910h + mov [bp+var_2], ax + push word ptr [si+2] + push word ptr [si+4] + push ax + call sub_F100 + +loc_B88B: ; CODE XREF: sub_B80B+31j + inc di + add si, 6 + +loc_B88F: ; CODE XREF: sub_B80B+2Cj + cmp di, 0Ch + jl short loc_B839 + mov dx, 0Fh + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + cmp byte ptr [si], 0 + jz short loc_B8ED + cmp byte ptr [si+1], 0 + jnz short loc_B8B4 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_B8C0 +; --------------------------------------------------------------------------- + +loc_B8B4: ; CODE XREF: sub_B80B+99j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_B8C0: ; CODE XREF: sub_B80B+A7j + mov al, [si] + mov ah, 0 + dec ax + mov bx, ax + mov ax, bx + shr ax, 2 + mov bx, ax + mov ax, 2 + imul bx + mov bx, ax + mov ax, bx + add ax, bx + add ax, bx + add ax, 1910h + mov [bp+var_2], ax + push word ptr [si+2] + push word ptr [si+4] + push ax + call sub_F100 + +loc_B8ED: ; CODE XREF: sub_B80B+93j + xor dx, dx + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + pop di + pop si + leave + retn +sub_B80B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B8F7 proc far ; CODE XREF: sub_9B14+363p + ; sub_A21F+5Bp + push bp + mov bp, sp + push large 200005h + call sub_1FEC + push large 20001h + push large 250018h + push 0E1h ; 'á' + call sub_1F8C + push large 2A0001h + push large 4D0018h + push 0E1h ; 'á' + call sub_1F8C + pop bp + retf +sub_B8F7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B92F proc far ; CODE XREF: sub_BAE0+Ap sub_DA43+3F9p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 6 + + enter 4, 0 + push si + push di + xor di, di + cmp [bp+arg_0], 0 + jnz short loc_B942 + mov si, 0Fh + jmp short loc_B945 +; --------------------------------------------------------------------------- + +loc_B942: ; CODE XREF: sub_B92F+Cj + mov si, 37h ; '7' + +loc_B945: ; CODE XREF: sub_B92F+11j + mov [bp+var_4], 1 + mov al, [bp+arg_0] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov al, [bx+65ADh] + cbw + mov [bp+var_2], ax + jmp short loc_B984 +; --------------------------------------------------------------------------- + +loc_B95E: ; CODE XREF: sub_B92F+58j + mov ax, [bp+var_2] + sub ax, di + cmp ax, 2 + jl short loc_B970 + push si + push [bp+var_4] + push 5 + jmp short loc_B976 +; --------------------------------------------------------------------------- + +loc_B970: ; CODE XREF: sub_B92F+37j + push si + push [bp+var_4] + push 6 + +loc_B976: ; CODE XREF: sub_B92F+3Fj + push 0E1h ; 'á' + call sub_128C + add si, 2 + add di, 2 + +loc_B984: ; CODE XREF: sub_B92F+2Dj + cmp di, [bp+var_2] + jl short loc_B95E + jmp short loc_B9A0 +; --------------------------------------------------------------------------- + +loc_B98B: ; CODE XREF: sub_B92F+74j + push si + push [bp+var_4] + push large 400E1h + call sub_128C + add si, 2 + add di, 2 + +loc_B9A0: ; CODE XREF: sub_B92F+5Aj + cmp di, 0Ah + jl short loc_B98B + pop di + pop si + leave + retf 2 +sub_B92F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9AB proc far ; CODE XREF: sub_BAE0+Fp sub_E080+3Ap + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 6 + + enter 6, 0 + push si + push di + xor di, di + cmp [bp+arg_0], 0 + jnz short loc_B9C3 + mov si, 24h ; '$' + mov [bp+var_6], 0FFFEh + jmp short loc_B9CB +; --------------------------------------------------------------------------- + +loc_B9C3: ; CODE XREF: sub_B9AB+Cj + mov si, 2Ah ; '*' + mov [bp+var_6], 2 + +loc_B9CB: ; CODE XREF: sub_B9AB+16j + mov [bp+var_4], 17h + mov al, [bp+arg_0] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov al, [bx+65C3h] + mov ah, 0 + mov [bp+var_2], ax + jmp short loc_B9F8 +; --------------------------------------------------------------------------- + +loc_B9E5: ; CODE XREF: sub_B9AB+50j + push si + push [bp+var_4] + push large 700E1h + call sub_128C + add si, [bp+var_6] + inc di + +loc_B9F8: ; CODE XREF: sub_B9AB+38j + cmp di, [bp+var_2] + jl short loc_B9E5 + push si + push [bp+var_4] + push large 0CF00E1h + call sub_128C + pop di + pop si + leave + retf 2 +sub_B9AB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA12 proc near ; CODE XREF: sub_BAE0+13p sub_C0D8+F0p + +var_2 = word ptr -2 +arg_0 = byte ptr 4 + + enter 2, 0 + push si + push di + xor di, di + cmp [bp+arg_0], 0 + jnz short loc_BA25 + mov si, 2 + jmp short loc_BA28 +; --------------------------------------------------------------------------- + +loc_BA25: ; CODE XREF: sub_BA12+Cj + mov si, 2Ah ; '*' + +loc_BA28: ; CODE XREF: sub_BA12+11j + mov al, [bp+arg_0] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov al, [bx+6612h] + mov ah, 0 + mov [bp+var_2], ax + jmp short loc_BA50 +; --------------------------------------------------------------------------- + +loc_BA3D: ; CODE XREF: sub_BA12+41j + push si + push large 10009h + push 0E1h ; 'á' + call sub_128C + add si, 2 + inc di + +loc_BA50: ; CODE XREF: sub_BA12+29j + cmp di, [bp+var_2] + jl short loc_BA3D + pop di + pop si + leave + retn 2 +sub_BA12 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA5B proc near ; CODE XREF: sub_BAE0+2Cp sub_D52E+5Fp + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + xor si, si + mov di, 24h ; '$' + les bx, dword_1F2F0 + assume es:nothing + mov al, es:[bx+34h] + mov ah, 0 + mov [bp+var_2], ax + jmp short loc_BA88 +; --------------------------------------------------------------------------- + +loc_BA75: ; CODE XREF: sub_BA5B+30j + push di + push large 20002h + push 0E1h ; 'á' + call sub_128C + sub di, 2 + inc si + +loc_BA88: ; CODE XREF: sub_BA5B+18j + cmp si, [bp+var_2] + jl short loc_BA75 + pop di + pop si + leave + retn +sub_BA5B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA91 proc far ; CODE XREF: sub_BAE0+18p sub_CA3C+27p ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov di, 2 + cmp [bp+arg_0], 0 + jz short loc_BAA2 + add di, 28h ; '(' + +loc_BAA2: ; CODE XREF: sub_BA91+Cj + mov bx, [bp+arg_0] + mov al, [bx+2D56h] + mov ah, 0 + mov si, ax + push di + push 18h + add ax, 1Fh + push ax + push 81h ; '' + call sub_128C + add di, 22h ; '"' + mov al, byte_1F39E + mov ah, 0 + mov si, ax + cmp si, 10h + jl short loc_BACC + dec si + +loc_BACC: ; CODE XREF: sub_BA91+38j + push di + push 18h + lea ax, [si+20h] + push ax + push 41h ; 'A' + call sub_128C + pop di + pop si + pop bp + retf 2 +sub_BA91 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BAE0 proc far ; CODE XREF: sub_9B14+368p + ; sub_A21F+65p + push bp + mov bp, sp + push si + xor si, si + jmp short loc_BAFC +; --------------------------------------------------------------------------- + +loc_BAE8: ; CODE XREF: sub_BAE0+1Fj + push si + push cs + call near ptr sub_B92F + push si + push cs + call near ptr sub_B9AB + push si + call sub_BA12 + push si + push cs + call near ptr sub_BA91 + inc si + +loc_BAFC: ; CODE XREF: sub_BAE0+6j + cmp si, 2 + jl short loc_BAE8 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+28h], 1 + jnz short loc_BB0F + call sub_BA5B + +loc_BB0F: ; CODE XREF: sub_BAE0+2Aj + pop si + pop bp + retf +sub_BAE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB12 proc near ; CODE XREF: sub_9778+5Cp + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + cmp byte_207E2, 1 + jnz short loc_BB86 + mov word_20CE8, 0 + mov word_20CE4, 3284h + mov di, 0FEE0h + mov [bp+var_2], 54h ; 'T' + xor si, si + jmp short loc_BB58 +; --------------------------------------------------------------------------- + +loc_BB37: ; CODE XREF: sub_BB12+49j + mov bx, word_20CE4 + mov [bx], di + mov ax, [bp+var_2] + mov [bx+2], ax + mov word ptr [bx+4], 8 + mov byte ptr [bx+7], 1 + inc si + add word_20CE4, 0Ah + inc [bp+var_2] + add di, 8 + +loc_BB58: ; CODE XREF: sub_BB12+23j + cmp si, 10h + jl short loc_BB37 + mov byte_20CE6, 0 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+28h], 1 + jnz short loc_BB75 + mov word_20CEA, 16h + jmp short loc_BB7B +; --------------------------------------------------------------------------- + +loc_BB75: ; CODE XREF: sub_BB12+59j + mov word_20CEA, 1Ah + +loc_BB7B: ; CODE XREF: sub_BB12+61j + mov byte_207E2, 2 + mov word_20CEC, 0 + +loc_BB86: ; CODE XREF: sub_BB12+Bj + cmp byte_20CE6, 0 + jnz short loc_BBEC + mov word_20CE4, 3284h + xor si, si + jmp short loc_BBE4 +; --------------------------------------------------------------------------- + +loc_BB97: ; CODE XREF: sub_BB12+D5j + mov bx, word_20CE4 + cmp byte ptr [bx+7], 0 + jz short loc_BBDE + mov bx, word_20CE4 + mov ax, [bx+4] + add [bx], ax + cmp byte ptr [bx+7], 1 + jnz short loc_BBBB + cmp word ptr [bx], 60h ; '`' + jl short loc_BBDE + mov byte ptr [bx+7], 2 + jmp short loc_BBDE +; --------------------------------------------------------------------------- + +loc_BBBB: ; CODE XREF: sub_BB12+9Cj + mov bx, word_20CE4 + cmp word ptr [bx], 40h ; '@' + jg short loc_BBD7 + mov word ptr [bx], 40h ; '@' + mov byte ptr [bx+7], 0 + or si, si + jnz short loc_BBDE + mov byte_20CE6, 1 + jmp short loc_BBDE +; --------------------------------------------------------------------------- + +loc_BBD7: ; CODE XREF: sub_BB12+B0j + mov bx, word_20CE4 + dec word ptr [bx+4] + +loc_BBDE: ; CODE XREF: sub_BB12+8Dj sub_BB12+A1j ... + inc si + add word_20CE4, 0Ah + +loc_BBE4: ; CODE XREF: sub_BB12+83j + cmp si, 10h + jl short loc_BB97 + jmp loc_BDBE +; --------------------------------------------------------------------------- + +loc_BBEC: ; CODE XREF: sub_BB12+79j + cmp byte_20CE6, 1 + jnz short loc_BC07 + inc word_20CE8 + cmp word_20CE8, 56h ; 'V' + jle loc_BDBE + inc byte_20CE6 + jmp loc_BDBE +; --------------------------------------------------------------------------- + +loc_BC07: ; CODE XREF: sub_BB12+DFj + cmp byte_20CE6, 2 + jnz loc_BCDD + mov word_20CE4, 3284h + mov di, 600h + xor si, si + jmp short loc_BC6E +; --------------------------------------------------------------------------- + +loc_BC1D: ; CODE XREF: sub_BB12+15Fj + mov bx, word_20CE4 + mov [bx], di + push 1FFh + call sub_A41E + add ax, 0A80h + mov bx, word_20CE4 + mov [bx+2], ax + call sub_A40C + mov bx, word_20CE4 + mov [bx+6], al + call sub_1EEC + mov bx, 3 + cwd + idiv bx + mov bx, word_20CE4 + mov [bx+8], dl + call sub_1EEC + mov bx, 3 + cwd + idiv bx + mov bx, word_20CE4 + mov [bx+9], dl + mov byte ptr [bx+7], 1 + inc si + add word_20CE4, 0Ah + add di, 20h ; ' ' + +loc_BC6E: ; CODE XREF: sub_BB12+109j + cmp si, 40h ; '@' + jl short loc_BC1D + mov di, 1A00h + xor si, si + jmp short loc_BCCB +; --------------------------------------------------------------------------- + +loc_BC7A: ; CODE XREF: sub_BB12+1BCj + mov bx, word_20CE4 + mov [bx], di + push 1FFh + call sub_A41E + add ax, 0A80h + mov bx, word_20CE4 + mov [bx+2], ax + call sub_A40C + mov bx, word_20CE4 + mov [bx+6], al + call sub_1EEC + mov bx, 3 + cwd + idiv bx + mov bx, word_20CE4 + mov [bx+8], dl + call sub_1EEC + mov bx, 3 + cwd + idiv bx + mov bx, word_20CE4 + mov [bx+9], dl + mov byte ptr [bx+7], 1 + inc si + add word_20CE4, 0Ah + add di, 20h ; ' ' + +loc_BCCB: ; CODE XREF: sub_BB12+166j + cmp si, 40h ; '@' + jl short loc_BC7A + inc byte_20CE6 + mov word_20CE8, 0 + jmp loc_BDBE +; --------------------------------------------------------------------------- + +loc_BCDD: ; CODE XREF: sub_BB12+FAj + cmp byte_20CE6, 3 + jnz loc_BDB9 + inc word_20CE8 + cmp word_20CE8, 40h ; '@' + jl short loc_BCF5 + inc byte_20CE6 + +loc_BCF5: ; CODE XREF: sub_BB12+1DDj + mov word_20CE4, 3284h + xor si, si + jmp loc_BDAF +; --------------------------------------------------------------------------- + +loc_BD00: ; CODE XREF: sub_BB12+2A1j + mov bx, word_20CE4 + cmp byte ptr [bx+7], 0 + jz loc_BDA9 + mov bx, word_20CE4 + mov al, [bx+6] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push large 500000h + call sub_EA5D + add sp, 6 + mov di, ax + mov bx, word_20CE4 + mov al, [bx+6] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push large 500000h + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + mov bx, word_20CE4 + add [bx], di + add [bx+2], ax + cmp word ptr [bx], 0 + jl short loc_BD70 + cmp word ptr [bx], 2700h + jge short loc_BD70 + cmp word ptr [bx+2], 0 + jl short loc_BD70 + cmp word ptr [bx+2], 1800h + jl short loc_BD7A + +loc_BD70: ; CODE XREF: sub_BB12+249j + ; sub_BB12+24Fj ... + mov bx, word_20CE4 + mov byte ptr [bx+7], 0 + jmp short loc_BDA9 +; --------------------------------------------------------------------------- + +loc_BD7A: ; CODE XREF: sub_BB12+25Cj + cmp word_20CE8, 20h ; ' ' + jge short loc_BD8A + mov bx, word_20CE4 + mov al, [bx+8] + jmp short loc_BD91 +; --------------------------------------------------------------------------- + +loc_BD8A: ; CODE XREF: sub_BB12+26Dj + mov bx, word_20CE4 + mov al, [bx+9] + +loc_BD91: ; CODE XREF: sub_BB12+276j + mov [bp+var_3], al + dec [bp+var_3] + mov bx, word_20CE4 + mov al, [bx+6] + mov dl, [bp+var_3] + shl dl, 2 + add al, dl + mov [bx+6], al + +loc_BDA9: ; CODE XREF: sub_BB12+1F6j + ; sub_BB12+266j + inc si + add word_20CE4, 0Ah + +loc_BDAF: ; CODE XREF: sub_BB12+1EBj + cmp si, 80h ; '€' + jl loc_BD00 + jmp short loc_BDBE +; --------------------------------------------------------------------------- + +loc_BDB9: ; CODE XREF: sub_BB12+1D0j + mov byte_207E2, 0 + +loc_BDBE: ; CODE XREF: sub_BB12+D7j sub_BB12+EAj ... + pop di + pop si + leave + retn +sub_BB12 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BDC2 proc near ; CODE XREF: sub_BE5D+3Ap sub_BE5D+50p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + push ds + mov ax, 0A800h + mov es, ax + assume es:nothing + mov cx, [bp+arg_6] + ; Hack (and cx, 7) + db 081h + db 0e1h + db 007h + db 000h + mov ax, [bp+arg_6] + mov bx, [bp+arg_4] + sar ax, 3 + shl bx, 6 + add ax, bx + shr bx, 2 + add ax, bx + mov di, ax + mov bx, [bp+arg_2] + shl bx, 1 + add bx, 11FCh + mov ax, [bx] + mov ds, ax + mov ax, [bp+arg_0] + shl ax, 2 + add ax, 80h ; '€' + mov si, ax + mov bx, 4 + +loc_BE04: ; CODE XREF: sub_BDC2+5Fj + cmp [bp+arg_6], 0 + jl short loc_BE1A + cmp [bp+arg_6], 270h + jge short loc_BE23 + xor ah, ah + mov al, [si] + ror ax, cl + mov es:[di], ax + +loc_BE1A: ; CODE XREF: sub_BDC2+46j + inc si + inc di + add [bp+arg_6], 8 + dec bx + jnz short loc_BE04 + +loc_BE23: ; CODE XREF: sub_BDC2+4Dj + pop ds + pop di + pop si + pop bp + retn 8 +sub_BDC2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BE2A proc near ; CODE XREF: sub_BE5D+264p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push di + mov ax, [bp+arg_2] + mov bx, [bp+arg_0] + sar ax, 7 + shr bx, 5 + shl bx, 6 + add ax, bx + shr bx, 2 + add ax, bx + mov di, ax + mov cx, [bp+arg_2] + shr cx, 4 + ; Hack (and cx, 7) + db 081h + db 0e1h + db 007h + db 000h + mov bx, 0C0h ; 'À' + ror bx, cl + mov es:[di], bx + pop di + pop bp + retn 4 +sub_BE2A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BE5D proc near ; CODE XREF: sub_9778+250p + push bp + mov bp, sp + push si + cmp byte_207E2, 0 + jz loc_C0D5 + cmp byte_20CE6, 0 + jnz loc_BF51 + push large 0C0000Fh + call sub_F5C + mov word_20CE4, 3284h + xor si, si + jmp loc_BF41 +; --------------------------------------------------------------------------- + +loc_BE89: ; CODE XREF: sub_BE5D+E7j + mov bx, word_20CE4 + push word ptr [bx] + push word ptr [bx+2] + push word_20CEA + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push word ptr [bx+2] + mov ax, word_20CEA + inc ax + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, [bx] + add ax, 40h ; '@' + push ax + push word ptr [bx+2] + mov ax, word_20CEA + add ax, 2 + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, [bx] + add ax, 60h ; '`' + push ax + push word ptr [bx+2] + mov ax, word_20CEA + add ax, 3 + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, 220h + sub ax, [bx] + push ax + push word ptr [bx+2] + mov ax, word_20CEA + add ax, 3 + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, 200h + sub ax, [bx] + push ax + push word ptr [bx+2] + mov ax, word_20CEA + add ax, 2 + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, 1E0h + sub ax, [bx] + push ax + push word ptr [bx+2] + mov ax, word_20CEA + inc ax + push ax + push si + call sub_BDC2 + mov bx, word_20CE4 + mov ax, 1C0h + sub ax, [bx] + push ax + push word ptr [bx+2] + push word_20CEA + push si + call sub_BDC2 + inc si + add word_20CE4, 0Ah + +loc_BF41: ; CODE XREF: sub_BE5D+29j + cmp si, 10h + jl loc_BE89 + mov ax, word_2087A + mov word_20CEC, ax + jmp loc_C0D0 +; --------------------------------------------------------------------------- + +loc_BF51: ; CODE XREF: sub_BE5D+12j + cmp byte_20CE6, 1 + jnz loc_C08D + les bx, dword_1F2F0 + assume es:nothing + cmp byte ptr es:[bx+28h], 1 + jz short loc_BF9B + cmp word_20CE8, 18h + jl short loc_BF92 + cmp word_20CE8, 40h ; '@' + jge short loc_BF92 + push large 0D00054h + mov al, byte_207E3 + mov ah, 0 + add ax, 22h ; '"' + push ax + call sub_26CA + push large 2200054h + mov al, byte_207E3 + jmp short loc_BFD0 +; --------------------------------------------------------------------------- + +loc_BF92: ; CODE XREF: sub_BE5D+10Dj + ; sub_BE5D+114j + cmp word_20CE8, 40h ; '@' + jnz short loc_BFF0 + jmp short loc_BFE4 +; --------------------------------------------------------------------------- + +loc_BF9B: ; CODE XREF: sub_BE5D+106j + cmp word_20CE8, 18h + jl short loc_BFDD + cmp word_20CE8, 38h ; '8' + jge short loc_BFDD + push large 0D00054h + les bx, dword_1F2F0 + mov al, es:[bx+33h] + mov ah, 0 + add ax, 22h ; '"' + push ax + call sub_26CA + push large 2200054h + les bx, dword_1F2F0 + mov al, es:[bx+33h] + +loc_BFD0: ; CODE XREF: sub_BE5D+133j + mov ah, 0 + add ax, 22h ; '"' + push ax + call sub_26CA + jmp short loc_BFF0 +; --------------------------------------------------------------------------- + +loc_BFDD: ; CODE XREF: sub_BE5D+143j + ; sub_BE5D+14Aj + cmp word_20CE8, 38h ; '8' + jnz short loc_BFF0 + +loc_BFE4: ; CODE XREF: sub_BE5D+13Cj + mov word_20CEC, 60h ; '`' + mov word_20CEA, 1Eh + +loc_BFF0: ; CODE XREF: sub_BE5D+13Aj + ; sub_BE5D+17Ej ... + push word_20CEC + push 54h ; 'T' + push word_20CEA + call sub_26CA + mov ax, word_20CEC + add ax, 20h ; ' ' + push ax + push 54h ; 'T' + mov ax, word_20CEA + inc ax + push ax + call sub_26CA + mov ax, word_20CEC + add ax, 40h ; '@' + push ax + push 54h ; 'T' + mov ax, word_20CEA + add ax, 2 + push ax + call sub_26CA + mov ax, word_20CEC + add ax, 60h ; '`' + push ax + push 54h ; 'T' + mov ax, word_20CEA + add ax, 3 + push ax + call sub_26CA + mov ax, word_20CEC + add ax, 140h + push ax + push 54h ; 'T' + push word_20CEA + call sub_26CA + mov ax, word_20CEC + add ax, 160h + push ax + push 54h ; 'T' + mov ax, word_20CEA + inc ax + push ax + call sub_26CA + mov ax, word_20CEC + add ax, 180h + push ax + push 54h ; 'T' + mov ax, word_20CEA + add ax, 2 + push ax + call sub_26CA + mov ax, word_20CEC + add ax, 1A0h + push ax + push 54h ; 'T' + mov ax, word_20CEA + add ax, 3 + push ax + call sub_26CA + jmp short loc_C0D5 +; --------------------------------------------------------------------------- + +loc_C08D: ; CODE XREF: sub_BE5D+F9j + cmp byte_20CE6, 3 + jnz short loc_C0D5 + push large 0C0000Fh + call sub_F5C + mov ax, 0A800h + mov es, ax + assume es:nothing + mov word_20CE4, 3284h + xor si, si + jmp short loc_C0CA +; --------------------------------------------------------------------------- + +loc_C0AE: ; CODE XREF: sub_BE5D+271j + mov bx, word_20CE4 + cmp byte ptr [bx+7], 0 + jz short loc_C0C4 + mov bx, word_20CE4 + push word ptr [bx] + push word ptr [bx+2] + call sub_BE2A + +loc_C0C4: ; CODE XREF: sub_BE5D+259j + inc si + add word_20CE4, 0Ah + +loc_C0CA: ; CODE XREF: sub_BE5D+24Fj + cmp si, 80h ; '€' + jl short loc_C0AE + +loc_C0D0: ; CODE XREF: sub_BE5D+F1j + call sub_F86 + +loc_C0D5: ; CODE XREF: sub_BE5D+9j sub_BE5D+22Ej ... + pop si + pop bp + retn +sub_BE5D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C0D8 proc near ; CODE XREF: sub_DA43+409p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + cmp byte ptr [si+1Fh], 30h ; '0' + jnz short loc_C127 + push word ptr [si] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFE8h + mov word_20E3E, ax + mov ax, [si+2] + sar ax, 4 + add ax, 0FFF8h + mov word_20E40, ax + mov byte_20E3C, 1 + push 0Eh + call sub_EC3A + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, 1 + sub bx, ax + mov byte ptr [bx+658Bh], 1 + mov word_20E42, 0 + jmp short loc_C12C +; --------------------------------------------------------------------------- + +loc_C127: ; CODE XREF: sub_C0D8+Bj + add word_20E42, 9 + +loc_C12C: ; CODE XREF: sub_C0D8+4Dj + mov al, [si+1Fh] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_C14A + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 6 + jmp short loc_C159 +; --------------------------------------------------------------------------- + +loc_C14A: ; CODE XREF: sub_C0D8+5Fj + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFAh + +loc_C159: ; CODE XREF: sub_C0D8+70j + mov byte_23AF9, 2 + dec byte ptr [si+1Fh] + cmp byte ptr [si+1Fh], 0 + jnz short loc_C1CD + mov word_20E3E, 0 + mov word_20E40, 0 + mov word_20E42, 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov byte ptr [si+1Fh], 0FFh + mov word_1D834, 64h ; 'd' + call far ptr loc_1C7E + mov byte_20E3C, 2 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, 1 + sub bx, ax + shl bx, 7 + inc byte ptr [bx+6612h] + les bx, dword_1F2F0 + assume es:nothing + mov al, 1 + sub al, byte ptr word_23AF0 + mov es:[bx+17h], al + mov word_23AF6, 0 + mov al, 1 + sub al, byte ptr word_23AF0 + push ax + call sub_BA12 + jmp short loc_C1E1 +; --------------------------------------------------------------------------- + +loc_C1CD: ; CODE XREF: sub_C0D8+8Dj + mov ax, word_23AF6 + and ax, 1 + imul ax, 1Eh + add ax, 64h ; 'd' + mov word_1D834, ax + call far ptr loc_1C7E + +loc_C1E1: ; CODE XREF: sub_C0D8+F3j + pop si + pop bp + retn 2 +sub_C0D8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C1E6 proc near ; CODE XREF: sub_C248+48p sub_C248+76p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + enter 4, 0 + mov al, [bp+arg_2] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push word_20E42 + push word_20E3E + call sub_EA5D + add sp, 6 + mov dl, byte ptr word_23AF0 + mov dh, 0 + add dx, dx + mov bx, dx + add ax, [bx+659Ch] + mov [bp+var_2], ax + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push word_20E42 + push word_20E40 + call sub_EA5D + add sp, 6 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push 34B4h + call sub_F100 + leave + retn 4 +sub_C1E6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C248 proc near ; CODE XREF: sub_DE95+18p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + cmp byte ptr word_23AF0, 0 + jnz short loc_C263 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_C26F +; --------------------------------------------------------------------------- + +loc_C263: ; CODE XREF: sub_C248+Bj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_C26F: ; CODE XREF: sub_C248+19j + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + xor di, di + mov ax, word_20E42 + mov bx, 4 + cwd + idiv bx + jmp short loc_C299 +; --------------------------------------------------------------------------- + +loc_C287: ; CODE XREF: sub_C248+57j + push word ptr [bp-1] + mov al, [bp+var_1] + add al, 20h ; ' ' + push ax + call sub_C1E6 + inc di + mov al, [bp+var_1] + add al, 10h + +loc_C299: ; CODE XREF: sub_C248+3Dj + mov [bp+var_1], al + cmp di, 10h + jl short loc_C287 + xor di, di + mov ax, word_20E42 + mov bx, 4 + cwd + idiv bx + mov dl, 0 + sub dl, al + mov [bp+var_1], dl + jmp short loc_C2CA +; --------------------------------------------------------------------------- + +loc_C2B5: ; CODE XREF: sub_C248+85j + push word ptr [bp+var_1] + mov al, [bp+var_1] + add al, 0E0h ; 'à' + push ax + call sub_C1E6 + inc di + mov al, [bp+var_1] + add al, 10h + mov [bp+var_1], al + +loc_C2CA: ; CODE XREF: sub_C248+6Bj + cmp di, 10h + jl short loc_C2B5 + xor di, di + mov ax, word_20E42 + mov bx, 4 + cwd + idiv bx + jmp short loc_C2EB +; --------------------------------------------------------------------------- + +loc_C2DC: ; CODE XREF: sub_C248+A9j + push word ptr [bp+var_1] + push word ptr [bp+var_1] + call sub_C1E6 + inc di + mov al, [bp+var_1] + add al, 10h + +loc_C2EB: ; CODE XREF: sub_C248+92j + mov [bp+var_1], al + cmp di, 10h + jl short loc_C2DC + pop di + pop si + leave + retn 2 +sub_C248 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C2F9 proc near ; CODE XREF: sub_9778+1A9p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov al, byte_20E3D + mov ah, 0 + imul ax, 140h + add ax, 60h ; '`' + mov si, ax + push ax + push large 280012h + call sub_26CA + lea ax, [si+40h] + push ax + push large 280013h + call sub_26CA + mov al, byte_20E3D + mov ah, 0 + mov dx, 1 + sub dx, ax + imul dx, 140h + add dx, 60h ; '`' + mov si, dx + mov ax, word_23AF6 + and ax, 1Fh + mov [bp+var_2], ax + cmp [bp+var_2], 10h + jge short loc_C34F + add ax, 20h ; ' ' + jmp short loc_C355 +; --------------------------------------------------------------------------- + +loc_C34F: ; CODE XREF: sub_C2F9+4Fj + mov ax, 40h ; '@' + sub ax, [bp+var_2] + +loc_C355: ; CODE XREF: sub_C2F9+54j + mov di, ax + push si + push di + push 14h + call sub_26CA + lea ax, [si+40h] + push ax + push di + push 15h + call sub_26CA + pop di + pop si + leave + retn +sub_C2F9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C370 proc near ; CODE XREF: sub_C568+152p + +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 di, [bp+arg_4] + mov cx, [bp+arg_2] + mov si, [bp+arg_0] + cmp di, 0FF00h + jge short loc_C3C0 + cmp cx, 0F00h + jl short loc_C39D + cmp si, 800h + jl short loc_C398 + mov bx, word_20E4A + mov dx, [bx] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C398: ; CODE XREF: sub_C370+1Ej + mov dx, 4 + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C39D: ; CODE XREF: sub_C370+18j + cmp cx, 100h + jl short loc_C3AC + mov bx, word_20E4A + mov dx, [bx+2] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3AC: ; CODE XREF: sub_C370+31j + cmp si, 800h + jl short loc_C3BB + mov bx, word_20E4A + mov dx, [bx+4] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3BB: ; CODE XREF: sub_C370+40j + mov dx, 8 + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3C0: ; CODE XREF: sub_C370+12j + cmp di, 200h + jge short loc_C3ED + cmp cx, 0F00h + jl short loc_C3D5 + mov bx, word_20E4A + mov dx, [bx+6] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3D5: ; CODE XREF: sub_C370+5Aj + cmp cx, 100h + jl short loc_C3E4 + mov bx, word_20E4A + mov dx, [bx+8] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3E4: ; CODE XREF: sub_C370+69j + mov bx, word_20E4A + mov dx, [bx+0Ah] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3ED: ; CODE XREF: sub_C370+54j + cmp cx, 0F00h + jl short loc_C3FC + mov bx, word_20E4A + mov dx, [bx+0Ch] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C3FC: ; CODE XREF: sub_C370+81j + cmp cx, 100h + jl short loc_C40B + mov bx, word_20E4A + mov dx, [bx+0Eh] + jmp short loc_C412 +; --------------------------------------------------------------------------- + +loc_C40B: ; CODE XREF: sub_C370+90j + mov bx, word_20E4A + mov dx, [bx+10h] + +loc_C412: ; CODE XREF: sub_C370+26j sub_C370+2Bj ... + cmp si, 1300h + jl short loc_C42B + cmp dx, 2 + jnz short loc_C42B + cmp cx, 800h + jl short loc_C428 + mov dx, 4 + jmp short loc_C42B +; --------------------------------------------------------------------------- + +loc_C428: ; CODE XREF: sub_C370+B1j + mov dx, 8 + +loc_C42B: ; CODE XREF: sub_C370+A6j sub_C370+ABj ... + mov ax, dx + pop di + pop si + pop bp + retn 6 +sub_C370 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C433 proc near ; CODE XREF: sub_C54A+16p + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov si, [bp+arg_0] + mov ax, [si] + mov [bp+var_2], ax + mov ax, [si+2] + mov [bp+var_4], ax + xor di, di + push word_23AF0 + call sub_16983 + mov ax, word_2142E + add ax, 100h + cmp ax, [bp+var_2] + jge short loc_C464 + mov ax, 1 + jmp short loc_C466 +; --------------------------------------------------------------------------- + +loc_C464: ; CODE XREF: sub_C433+2Aj + xor ax, ax + +loc_C466: ; CODE XREF: sub_C433+2Fj + mov [bp+var_7], al + mov ax, word_2142E + add ax, 0FF00h + cmp ax, [bp+var_2] + jle short loc_C479 + mov ax, 1 + jmp short loc_C47B +; --------------------------------------------------------------------------- + +loc_C479: ; CODE XREF: sub_C433+3Fj + xor ax, ax + +loc_C47B: ; CODE XREF: sub_C433+44j + add al, al + or [bp+var_7], al + mov ax, word_21430 + add ax, 500h + cmp ax, [bp+var_4] + jge short loc_C490 + mov ax, 1 + jmp short loc_C492 +; --------------------------------------------------------------------------- + +loc_C490: ; CODE XREF: sub_C433+56j + xor ax, ax + +loc_C492: ; CODE XREF: sub_C433+5Bj + shl al, 2 + or [bp+var_7], al + mov ax, [bp+var_4] + cmp ax, word_21430 + jge short loc_C4A6 + mov ax, 1 + jmp short loc_C4A8 +; --------------------------------------------------------------------------- + +loc_C4A6: ; CODE XREF: sub_C433+6Cj + xor ax, ax + +loc_C4A8: ; CODE XREF: sub_C433+71j + shl al, 3 + or [bp+var_7], al + mov al, [bp+var_7] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 9 + ja short loc_C4E8 + add bx, bx + jmp cs:off_C536[bx] + +loc_C4C2: ; DATA XREF: seg001:off_C536o + mov di, 4 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4C7: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E58o + mov di, 8 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4CC: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E5Co + mov di, 1 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4D1: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E64o + mov di, 2 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4D6: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E5Eo + mov di, 5 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4DB: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E66o + mov di, 6 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4E0: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E60o + mov di, 9 + jmp short loc_C4E8 +; --------------------------------------------------------------------------- + +loc_C4E5: ; CODE XREF: sub_C433+8Aj + ; DATA XREF: seg001:2E68o + mov di, 0Ah + +loc_C4E8: ; CODE XREF: sub_C433+86j sub_C433+8Aj ... + mov [bp+var_7], 0 + call sub_A40C + mov bx, 3 + xor dx, dx + div bx + mov [bp+var_6], dx + push di + call sub_D71E + cmp al, 1 + jnz short loc_C505 + push si + call sub_D6D4 + +loc_C505: ; CODE XREF: sub_C433+CCj + push 4 + call sub_E0F7 + cmp byte ptr [si+4], 0 + jz short loc_C52F + mov byte ptr [si+4], 0 + inc [bp+var_7] + cmp word ptr [si+18h], 500h + ja short loc_C52B + call sub_A40C + test al, 3 + jnz short loc_C52B + push si + call sub_E080 + jmp short loc_C52F +; --------------------------------------------------------------------------- + +loc_C52B: ; CODE XREF: sub_C433+E9j sub_C433+F0j + mov byte ptr [si+4], 1 + +loc_C52F: ; CODE XREF: sub_C433+DBj sub_C433+F6j + pop di + pop si + leave + retn 2 +sub_C433 endp + +; --------------------------------------------------------------------------- + db 0 +off_C536 dw offset loc_C4C2 ; DATA XREF: sub_C433+8Ar + dw offset loc_C4C7 + dw offset loc_C4E8 + dw offset loc_C4CC + dw offset loc_C4D6 + dw offset loc_C4E0 + dw offset loc_C4E8 + dw offset loc_C4D1 + dw offset loc_C4DB + dw offset loc_C4E5 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C54A proc near ; CODE XREF: sub_DA43+CBp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov ax, [si+74h] + cmp ax, [si+6Eh] + ja short loc_C55F + push si + call sub_C568 + jmp short loc_C563 +; --------------------------------------------------------------------------- + +loc_C55F: ; CODE XREF: sub_C54A+Dj + push si + call sub_C433 + +loc_C563: ; CODE XREF: sub_C54A+13j + pop si + pop bp + retn 2 +sub_C54A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C568 proc near ; CODE XREF: sub_C54A+10p + +var_B = byte ptr -0Bh +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 0Ch + push si + push di + mov si, [bp+arg_0] + mov ax, [si] + mov [bp+var_6], ax + mov ax, [si+2] + mov [bp+var_8], ax + test byte ptr word_23AF6, 3 + jnz short loc_C5AA + mov [bp+var_B], 20h ; ' ' + jmp short loc_C5A1 +; --------------------------------------------------------------------------- + +loc_C58B: ; CODE XREF: sub_C568+40j + mov al, [bp+var_B] + cbw + push ax + call sub_E0F7 + cmp byte ptr [si+4], 0 + jnz short loc_C5AA + mov al, [bp+var_B] + add al, 10h + mov [bp+var_B], al + +loc_C5A1: ; CODE XREF: sub_C568+21j + mov al, [bp+var_B] + cbw + cmp ax, 50h ; 'P' + jle short loc_C58B + +loc_C5AA: ; CODE XREF: sub_C568+1Bj sub_C568+2Fj + cmp byte ptr [si+4], 0 + jnz loc_C658 + xor di, di + push word_23AF0 + call sub_16983 + mov ax, word_2142E + add ax, 100h + cmp ax, [bp+var_6] + jge short loc_C5CD + mov ax, 1 + jmp short loc_C5CF +; --------------------------------------------------------------------------- + +loc_C5CD: ; CODE XREF: sub_C568+5Ej + xor ax, ax + +loc_C5CF: ; CODE XREF: sub_C568+63j + mov [bp+var_9], al + mov ax, word_2142E + add ax, 0FF00h + cmp ax, [bp+var_6] + jle short loc_C5E2 + mov ax, 1 + jmp short loc_C5E4 +; --------------------------------------------------------------------------- + +loc_C5E2: ; CODE XREF: sub_C568+73j + xor ax, ax + +loc_C5E4: ; CODE XREF: sub_C568+78j + add al, al + or [bp+var_9], al + mov ax, word_21430 + add ax, 500h + cmp ax, [bp+var_8] + jge short loc_C5F9 + mov ax, 1 + jmp short loc_C5FB +; --------------------------------------------------------------------------- + +loc_C5F9: ; CODE XREF: sub_C568+8Aj + xor ax, ax + +loc_C5FB: ; CODE XREF: sub_C568+8Fj + shl al, 2 + or [bp+var_9], al + mov ax, [bp+var_8] + cmp ax, word_21430 + jge short loc_C60F + mov ax, 1 + jmp short loc_C611 +; --------------------------------------------------------------------------- + +loc_C60F: ; CODE XREF: sub_C568+A0j + xor ax, ax + +loc_C611: ; CODE XREF: sub_C568+A5j + shl al, 3 + or [bp+var_9], al + mov al, [bp+var_9] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 9 + ja loc_C6BF + add bx, bx + jmp cs:off_C791[bx] + +loc_C62D: ; DATA XREF: seg001:off_C791o + mov di, 4 + jmp loc_C6BF +; --------------------------------------------------------------------------- + +loc_C633: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30B3o + mov di, 8 + jmp loc_C6BF +; --------------------------------------------------------------------------- + +loc_C639: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30B7o + mov di, 1 + jmp loc_C6BF +; --------------------------------------------------------------------------- + +loc_C63F: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30BFo + mov di, 2 + jmp short loc_C6BF +; --------------------------------------------------------------------------- + +loc_C644: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30B9o + mov di, 5 + jmp short loc_C6BF +; --------------------------------------------------------------------------- + +loc_C649: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30C1o + mov di, 6 + jmp short loc_C6BF +; --------------------------------------------------------------------------- + +loc_C64E: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30BBo + mov di, 9 + jmp short loc_C6BF +; --------------------------------------------------------------------------- + +loc_C653: ; CODE XREF: sub_C568+C0j + ; DATA XREF: seg001:30C3o + mov di, 0Ah + jmp short loc_C6BF +; --------------------------------------------------------------------------- + +loc_C658: ; CODE XREF: sub_C568+46j + mov ax, word_20E44 + sub ax, [bp+var_6] + mov [bp+var_2], ax + mov ax, word_20E46 + sub ax, [bp+var_8] + mov [bp+var_4], ax + mov byte ptr [si+4], 0 + cmp [bp+var_2], 0FF00h + jg short loc_C67B + mov [bp+var_9], 0 + jmp short loc_C68C +; --------------------------------------------------------------------------- + +loc_C67B: ; CODE XREF: sub_C568+10Bj + cmp [bp+var_2], 100h + jg short loc_C688 + mov [bp+var_9], 1 + jmp short loc_C68C +; --------------------------------------------------------------------------- + +loc_C688: ; CODE XREF: sub_C568+118j + mov [bp+var_9], 2 + +loc_C68C: ; CODE XREF: sub_C568+111j + ; sub_C568+11Ej + cmp byte ptr [si+16h], 0 + jz short loc_C6A3 + mov al, [si+16h] + mov ah, 0 + mov dx, ax + add dx, dx + add dx, ax + add dl, [bp+var_9] + mov [bp+var_9], dl + +loc_C6A3: ; CODE XREF: sub_C568+128j + mov al, [bp+var_9] + mov ah, 0 + imul ax, 12h + add ax, 67Eh + mov word_20E4A, ax + push [bp+var_4] + push [bp+var_6] + push [bp+var_8] + call sub_C370 + mov di, ax + +loc_C6BF: ; CODE XREF: sub_C568+BAj sub_C568+C0j ... + mov [bp+var_9], 0 + mov [bp+var_B], 0 + +loc_C6C7: ; CODE XREF: sub_C568+1CBj + ; sub_C568+20Fj + push di + call sub_D71E + cmp al, 1 + jnz short loc_C6D3 + push si + call sub_D6D4 + +loc_C6D3: ; CODE XREF: sub_C568+165j + cmp [bp+var_B], 0 + jnz short loc_C6DD + push 14h + jmp short loc_C6DF +; --------------------------------------------------------------------------- + +loc_C6DD: ; CODE XREF: sub_C568+16Fj + push 4 + +loc_C6DF: ; CODE XREF: sub_C568+173j + call sub_E0F7 + cmp byte ptr [si+4], 0 + jz loc_C78B + mov byte ptr [si+4], 0 + mov ax, [bp+var_6] + mov [si], ax + mov ax, [bp+var_8] + mov [si+2], ax + inc [bp+var_9] + cmp [bp+var_9], 9 + jnb short loc_C735 + cmp word_20E44, 500h + jge short loc_C70E + mov al, 0 + jmp short loc_C71C +; --------------------------------------------------------------------------- + +loc_C70E: ; CODE XREF: sub_C568+1A0j + cmp word_20E44, 0B00h + jge short loc_C71A + mov al, 1 + jmp short loc_C71C +; --------------------------------------------------------------------------- + +loc_C71A: ; CODE XREF: sub_C568+1ACj + mov al, 2 + +loc_C71C: ; CODE XREF: sub_C568+1A4j + ; sub_C568+1B0j + mov [bp+var_A], al + mov ah, 0 + imul ax, 12h + mov dl, [bp+var_9] + mov dh, 0 + add dx, dx + add ax, dx + mov bx, ax + mov di, [bx+756h] + jmp short loc_C6C7 +; --------------------------------------------------------------------------- + +loc_C735: ; CODE XREF: sub_C568+198j + mov al, [bp+var_B] + cbw + cmp ax, 9 + jge short loc_C77A + cmp [bp+var_9], 0 + jnz short loc_C75E + inc byte ptr [si+16h] + cmp byte ptr [si+16h], 2 + jb short loc_C751 + mov byte ptr [si+16h], 0 + +loc_C751: ; CODE XREF: sub_C568+1E3j + call sub_A40C + mov bx, 3 + xor dx, dx + div bx + mov [bp+var_A], dl + +loc_C75E: ; CODE XREF: sub_C568+1DAj + mov al, [bp+var_A] + mov ah, 0 + imul ax, 12h + push ax + mov al, [bp+var_B] + cbw + add ax, ax + pop bx + add bx, ax + mov di, [bx+756h] + inc [bp+var_B] + jmp loc_C6C7 +; --------------------------------------------------------------------------- + +loc_C77A: ; CODE XREF: sub_C568+1D4j + cmp word ptr [si+18h], 400h + ja short loc_C787 + push si + call sub_E080 + jmp short loc_C78B +; --------------------------------------------------------------------------- + +loc_C787: ; CODE XREF: sub_C568+217j + mov byte ptr [si+4], 1 + +loc_C78B: ; CODE XREF: sub_C568+17Ej + ; sub_C568+21Dj + pop di + pop si + leave + retn 2 +sub_C568 endp + +; --------------------------------------------------------------------------- +off_C791 dw offset loc_C62D ; DATA XREF: sub_C568+C0r + dw offset loc_C633 + dw offset loc_C6BF + dw offset loc_C639 + dw offset loc_C644 + dw offset loc_C64E + dw offset loc_C6BF + dw offset loc_C63F + dw offset loc_C649 + dw offset loc_C653 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7A5 proc near ; CODE XREF: sub_9778+CAp sub_CA3C+69p + push bp + mov bp, sp + les bx, dword_1F2F0 + cmp byte ptr es:[bx+0Eh], 0 + jz short loc_C7C8 + cmp byte ptr es:[bx+0Fh], 0 + jz short loc_C7C8 + push 1 + call sub_536 + +loc_C7C1: ; CODE XREF: sub_C7A5+53j + mov byte_23B00, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_C7C8: ; CODE XREF: sub_C7A5+Cj sub_C7A5+13j + call sub_EC2E + push 15h + call sub_EC3A + call sub_EC76 + jmp short loc_C7E7 +; --------------------------------------------------------------------------- + +loc_C7DB: ; CODE XREF: sub_C7A5+47j + call sub_EA8C + push 1 + call sub_EA77 + +loc_C7E7: ; CODE XREF: sub_C7A5+34j + cmp word ptr unk_1EFFA, 0 + jnz short loc_C7DB + +loc_C7EE: ; CODE XREF: sub_C7A5+63j + call sub_EA8C + test byte_1EFFB, 40h + jnz short loc_C7C1 + test byte_1EFFB, 10h + jnz short loc_C816 + push 1 + call sub_EA77 + jmp short loc_C7EE +; --------------------------------------------------------------------------- + +loc_C80A: ; CODE XREF: sub_C7A5+76j + call sub_EA8C + push 1 + call sub_EA77 + +loc_C816: ; CODE XREF: sub_C7A5+5Aj + cmp word ptr unk_1EFFA, 0 + jnz short loc_C80A + call sub_EC2E + push 15h + call sub_EC3A + call sub_EC76 + pop bp + retn +sub_C7A5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C830 proc near ; CODE XREF: sub_9778:loc_99B1p + push bp + mov bp, sp + push si + call sub_704 + call sub_B3A2 + call sub_71A + cmp byte_23B24, 0 + jz short loc_C881 + test byte ptr word_23AF6, 1 + jz short loc_C881 + mov ax, word_23B20 + shr ax, 0Ah + mov si, ax + cmp si, 1 + jnz short loc_C861 + mov si, 8 + jmp short loc_C86E +; --------------------------------------------------------------------------- + +loc_C861: ; CODE XREF: sub_C830+2Aj + cmp si, 2 + jnz short loc_C86B + mov si, 0Ch + jmp short loc_C86E +; --------------------------------------------------------------------------- + +loc_C86B: ; CODE XREF: sub_C830+34j + mov si, 6 + +loc_C86E: ; CODE XREF: sub_C830+2Fj sub_C830+39j + push 0C0h ; 'À' + push si + call sub_F5C + mov bx, 232h + call sub_B398 + xor ax, ax + out 7Ch, ax + +loc_C881: ; CODE XREF: sub_C830+16j sub_C830+1Dj + cmp byte_23BA4, 0 + jz short loc_C8C1 + test byte ptr word_23AF6, 1 + jz short loc_C8C1 + mov ax, word_23BA0 + shr ax, 0Ah + mov si, ax + cmp si, 1 + jnz short loc_C8A1 + mov si, 8 + jmp short loc_C8AE +; --------------------------------------------------------------------------- + +loc_C8A1: ; CODE XREF: sub_C830+6Aj + cmp si, 2 + jnz short loc_C8AB + mov si, 0Ch + jmp short loc_C8AE +; --------------------------------------------------------------------------- + +loc_C8AB: ; CODE XREF: sub_C830+74j + mov si, 6 + +loc_C8AE: ; CODE XREF: sub_C830+6Fj sub_C830+79j + push 0C0h ; 'À' + push si + call sub_F5C + mov bx, 25Ah + call sub_B398 + xor ax, ax + out 7Ch, ax + +loc_C8C1: ; CODE XREF: sub_C830+56j sub_C830+5Dj + pop si + pop bp + retn +sub_C830 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C8C4 proc near ; CODE XREF: sub_9778+23Cp + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 6, 0 + push si + push di + mov ax, word_23B1E + shr ax, 4 + mov [bp+var_4], ax + mov ax, word_23B20 + shr ax, 4 + mov si, ax + mov ax, word_23B9E + shr ax, 4 + mov [bp+var_6], ax + mov ax, word_23BA0 + shr ax, 4 + mov di, ax + sub si, [bp+var_4] + or si, si + jle short loc_C921 + cmp byte_23B24, 0 + jz short loc_C901 + test byte ptr word_23AF6, 1 + jz short loc_C909 + +loc_C901: ; CODE XREF: sub_C8C4+34j + push large 0C00009h + jmp short loc_C90F +; --------------------------------------------------------------------------- + +loc_C909: ; CODE XREF: sub_C8C4+3Bj + push large 0C0000Fh + +loc_C90F: ; CODE XREF: sub_C8C4+43j + call sub_F5C + mov ax, [bp+var_4] + add ax, 20h ; ' ' + mov dx, ax + mov bx, si + call sub_B3F6 + +loc_C921: ; CODE XREF: sub_C8C4+2Dj + sub di, [bp+var_6] + or di, di + jle short loc_C956 + cmp byte_23BA4, 0 + jz short loc_C936 + test byte ptr word_23AF6, 1 + jz short loc_C93E + +loc_C936: ; CODE XREF: sub_C8C4+69j + push large 0C00009h + jmp short loc_C944 +; --------------------------------------------------------------------------- + +loc_C93E: ; CODE XREF: sub_C8C4+70j + push large 0C0000Fh + +loc_C944: ; CODE XREF: sub_C8C4+78j + call sub_F5C + mov ax, [bp+var_6] + add ax, 160h + mov dx, ax + mov bx, di + call sub_B3F6 + +loc_C956: ; CODE XREF: sub_C8C4+62j + mov cx, [bp+var_4] + or cx, cx + jz short loc_C9A6 + cmp cx, 40h ; '@' + jnb short loc_C968 + mov [bp+var_1], 0Fh + jmp short loc_C990 +; --------------------------------------------------------------------------- + +loc_C968: ; CODE XREF: sub_C8C4+9Cj + cmp cx, 80h ; '€' + jnb short loc_C974 + mov [bp+var_1], 0Ah + jmp short loc_C990 +; --------------------------------------------------------------------------- + +loc_C974: ; CODE XREF: sub_C8C4+A8j + cmp cx, 0C0h ; 'À' + jnb short loc_C980 + mov [bp+var_1], 8 + jmp short loc_C990 +; --------------------------------------------------------------------------- + +loc_C980: ; CODE XREF: sub_C8C4+B4j + cmp cx, 0FFh + jnb short loc_C98C + mov [bp+var_1], 6 + jmp short loc_C990 +; --------------------------------------------------------------------------- + +loc_C98C: ; CODE XREF: sub_C8C4+C0j + mov [bp+var_1], 0Ch + +loc_C990: ; CODE XREF: sub_C8C4+A2j sub_C8C4+AEj ... + push 0C0h ; 'À' + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_F5C + mov dx, 20h ; ' ' + mov bx, cx + call sub_B3F6 + +loc_C9A6: ; CODE XREF: sub_C8C4+97j + mov cx, [bp+var_6] + or cx, cx + jz short loc_C9F6 + cmp cx, 40h ; '@' + jnb short loc_C9B8 + mov [bp+var_1], 0Fh + jmp short loc_C9E0 +; --------------------------------------------------------------------------- + +loc_C9B8: ; CODE XREF: sub_C8C4+ECj + cmp cx, 80h ; '€' + jnb short loc_C9C4 + mov [bp+var_1], 0Ah + jmp short loc_C9E0 +; --------------------------------------------------------------------------- + +loc_C9C4: ; CODE XREF: sub_C8C4+F8j + cmp cx, 0C0h ; 'À' + jnb short loc_C9D0 + mov [bp+var_1], 8 + jmp short loc_C9E0 +; --------------------------------------------------------------------------- + +loc_C9D0: ; CODE XREF: sub_C8C4+104j + cmp cx, 0FFh + jnb short loc_C9DC + mov [bp+var_1], 6 + jmp short loc_C9E0 +; --------------------------------------------------------------------------- + +loc_C9DC: ; CODE XREF: sub_C8C4+110j + mov [bp+var_1], 0Ch + +loc_C9E0: ; CODE XREF: sub_C8C4+F2j sub_C8C4+FEj ... + push 0C0h ; 'À' + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_F5C + mov dx, 160h + mov bx, cx + call sub_B3F6 + +loc_C9F6: ; CODE XREF: sub_C8C4+E7j + xor ax, ax + out 7Ch, ax + pop di + pop si + leave + retn +sub_C8C4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C9FE proc far ; CODE XREF: sub_9778+246p + ; sub_9778+24Dp + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + mov al, [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 1 + jnz short loc_CA37 + mov si, 10h + cmp [bp+arg_0], 0 + jz short loc_CA1D + add si, 140h + +loc_CA1D: ; CODE XREF: sub_C9FE+19j + push si + push 10h + mov al, [bp+arg_0] + mov ah, 0 + push ax + call sub_EF46 + mov al, [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+798h], 2 + +loc_CA37: ; CODE XREF: sub_C9FE+10j + pop si + pop bp + retf 2 +sub_C9FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA3C proc far ; CODE XREF: sub_9778+CFp + push bp + mov bp, sp + push si + cmp byte_1DCF8, 2 + jz short loc_CA4E + cmp byte_1DCF9, 2 + jnz short loc_CAC8 + +loc_CA4E: ; CODE XREF: sub_CA3C+9j + call sub_EC2E + push 13h + call sub_EC3A + call sub_EC76 + push 0 + nop + push cs + call near ptr sub_BA91 + push 1 + nop + push cs + call near ptr sub_BA91 + cmp byte_1DCF8, 2 + jnz short loc_CA81 + mov byte_1DCF8, 3 + push 0 + push 0E1h ; 'á' + call sub_CACB + +loc_CA81: ; CODE XREF: sub_CA3C+36j + cmp byte_1DCF9, 2 + jnz short loc_CA95 + mov byte_1DCF9, 3 + push 1 + push 0E1h ; 'á' + call sub_CACB + +loc_CA95: ; CODE XREF: sub_CA3C+4Aj + xor si, si + jmp short loc_CAC3 +; --------------------------------------------------------------------------- + +loc_CA99: ; CODE XREF: sub_CA3C+8Aj + call sub_EA8C + test byte_1EFFB, 10h + jz short loc_CAA8 + call sub_C7A5 + +loc_CAA8: ; CODE XREF: sub_CA3C+67j + push 1 + call sub_EA77 + mov ax, si + and ax, 1 + imul ax, 32h + add ax, 64h ; 'd' + mov word_1D834, ax + call far ptr loc_1C7E + inc si + +loc_CAC3: ; CODE XREF: sub_CA3C+5Bj + cmp si, 1Bh + jl short loc_CA99 + +loc_CAC8: ; CODE XREF: sub_CA3C+10j + pop si + pop bp + retf +sub_CA3C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CACB proc near ; CODE XREF: sub_CA3C+42p sub_CA3C+56p ... + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_0] + mov si, 4 + cmp [bp+arg_2], 0 + jnz short loc_CADF + add si, 28h ; '(' + +loc_CADF: ; CODE XREF: sub_CACB+Fj + push si + push 0Bh + push ds + push offset aPqrstuvwxyz_ ; "PQRSTUVWXYZ[\\]^_" + push di + call sub_12D0 + push si + push 0Ch + push ds + push offset aAbcdefghijklmn ; "`abcdefghijklmno" + push di + call sub_12D0 + push si + push 0Dh + push ds + push offset aPqrstuvwxyz ; "pqrstuvwxyz{|}~" + push di + call sub_12D0 + add si, 4 + push si + push 0Eh + push ds + push offset aVgdejziiklm ; "‚ƒ„…†‡ˆ‰Š‹Œ" + push di + call sub_12D0 + mov al, [bp+arg_2] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ch], 5 + jz short loc_CB47 + lea ax, [si+2] + push ax + push 0Fh + push ds + push offset asc_1DD39 ; "ÇÈÉÊËÌÍÎ" + push di + call sub_12D0 + lea ax, [si+13h] + push ax + push 0Fh + mov al, [bp+arg_2] + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + jmp short loc_CB60 +; --------------------------------------------------------------------------- + +loc_CB47: ; CODE XREF: sub_CACB+57j + lea ax, [si+2] + push ax + push 0Fh + push ds + push offset asc_1DD42 ; "ÐÑÒÊËÌÍÎ" + push di + call sub_12D0 + lea ax, [si+13h] + push ax + push 0Fh + mov al, byte_1F39E + +loc_CB60: ; CODE XREF: sub_CACB+7Aj + mov ah, 0 + add ax, 1Fh + push ax + push 0E1h ; 'á' + call sub_128C + push si + push 10h + push ds + push offset aNoptufxccssI ; "Ž’“”•–—˜™š›œ" + push di + call sub_12D0 + pop di + pop si + pop bp + retn 4 +sub_CACB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB81 proc far ; CODE XREF: sub_9778+D6p sub_9778+DDp + +var_3 = word ptr -3 +arg_0 = word ptr 6 + + enter 4, 0 + push si + push di + mov al, 1 + sub al, byte ptr [bp+arg_0] + mov byte ptr [bp+var_3], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 3 + jb loc_CD15 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 3 + jnz short loc_CBB9 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3938h], 0 + +loc_CBB9: ; CODE XREF: sub_CB81+2Aj + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 21h ; '!' + jnb loc_CCA6 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 12h + jnb short loc_CBE6 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+3938h] + add al, 0Dh + jmp short loc_CBF3 +; --------------------------------------------------------------------------- + +loc_CBE6: ; CODE XREF: sub_CB81+54j + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+3938h] + add al, 0F3h ; 'ó' + +loc_CBF3: ; CODE XREF: sub_CB81+63j + mov dl, byte ptr [bp+arg_0] + mov dh, 0 + mov bx, dx + mov [bx+3938h], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + inc byte ptr [bx+798h] + mov si, 1 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + test byte ptr [bx+798h], 1 + jz short loc_CC4D + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ch], 1 + jnz short loc_CC2D + mov si, 0A1h ; '¡' + jmp short loc_CC43 +; --------------------------------------------------------------------------- + +loc_CC2D: ; CODE XREF: sub_CB81+A5j + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ch], 3 + jnz short loc_CC40 + mov si, 61h ; 'a' + jmp short loc_CC43 +; --------------------------------------------------------------------------- + +loc_CC40: ; CODE XREF: sub_CB81+B8j + mov si, 41h ; 'A' + +loc_CC43: ; CODE XREF: sub_CB81+AAj sub_CB81+BDj + push [bp+var_3] + nop + push cs + call near ptr sub_A3A8 + jmp short loc_CC9D +; --------------------------------------------------------------------------- + +loc_CC4D: ; CODE XREF: sub_CB81+97j + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ch], 1 + jz short loc_CC78 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ch], 3 + jnz short loc_CC89 + mov al, byte ptr [bp+var_3] + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 78h ; 'x' + +loc_CC78: ; CODE XREF: sub_CB81+D8j + mov al, byte ptr [bp+var_3] + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BCh], 78h ; 'x' + jmp short loc_CC98 +; --------------------------------------------------------------------------- + +loc_CC89: ; CODE XREF: sub_CB81+E6j + mov al, byte ptr [bp+var_3] + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 78h ; 'x' + +loc_CC98: ; CODE XREF: sub_CB81+106j + mov byte_23B01, 1 + +loc_CC9D: ; CODE XREF: sub_CB81+CAj + push [bp+arg_0] + push si + call sub_CACB + jmp short loc_CD15 +; --------------------------------------------------------------------------- + +loc_CCA6: ; CODE XREF: sub_CB81+44j + mov [bp+var_3+1], 4 + cmp byte ptr [bp+var_3], 1 + jnz short loc_CCB5 + add [bp+var_3+1], 28h ; '(' + +loc_CCB5: ; CODE XREF: sub_CB81+12Ej + xor di, di + mov si, 0Bh + jmp short loc_CCCE +; --------------------------------------------------------------------------- + +loc_CCBC: ; CODE XREF: sub_CB81+150j + push [bp+var_3+1] + push si + push ds + push offset asc_1DD5A ; " " + push 0E1h ; 'á' + call sub_2086 + inc di + inc si + +loc_CCCE: ; CODE XREF: sub_CB81+139j + cmp di, 6 + jb short loc_CCBC + push [bp+var_3] + nop + push cs + call near ptr sub_A3A8 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+798h], 0 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+393Ch] + mov dl, byte ptr [bp+arg_0] + mov dh, 0 + mov bx, dx + mov [bx+2D54h], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3938h], 0 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ah], 0 + +loc_CD15: ; CODE XREF: sub_CB81+1Aj + ; sub_CB81+123j + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz loc_CDB7 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+393Ah], 0 + jnz short loc_CD67 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+3938h] + add al, 4 + mov dl, byte ptr [bp+arg_0] + mov dh, 0 + mov bx, dx + mov [bx+3938h], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3938h], 90h ; '' + jb short loc_CD99 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ah], 1 + jmp short loc_CD99 +; --------------------------------------------------------------------------- + +loc_CD67: ; CODE XREF: sub_CB81+1B0j + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+3938h] + add al, 0FCh ; 'ü' + mov dl, byte ptr [bp+arg_0] + mov dh, 0 + mov bx, dx + mov [bx+3938h], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3938h], 0 + ja short loc_CD99 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ah], 0 + +loc_CD99: ; CODE XREF: sub_CB81+1D6j + ; sub_CB81+1E4j ... + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+3938h] + mov dl, byte ptr [bp+var_3] + mov dh, 0 + imul dx, 3 + mov bx, dx + mov [bx+11BAh], al + mov byte_23B01, 1 + +loc_CDB7: ; CODE XREF: sub_CB81+1A0j + pop di + pop si + leave + retf 2 +sub_CB81 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CDBD proc far ; CODE XREF: sub_E080+6Cp + ; sub_10324+70P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + inc byte_20F1E + cmp byte_20F1E, 0Ch + jb short loc_CDD1 + mov byte_20F1E, 0 + +loc_CDD1: ; CODE XREF: sub_CDBD+Dj + mov al, byte_20F1E + mov ah, 0 + imul ax, 0Ah + add ax, 3946h + mov si, ax + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + push [bp+arg_4] + push [bp+arg_0] + nop + push cs + call near ptr sub_A2D0 + mov [si+2], ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 10h + mov [si+4], ax + mov byte ptr [si+6], 8 + mov byte ptr [si+7], 8 + pop si + pop bp + retf 6 +sub_CDBD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CE0C proc far ; CODE XREF: sub_FC6B+53P + ; sub_11439+2AP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + inc byte_20F1E + cmp byte_20F1E, 0Ch + jb short loc_CE20 + mov byte_20F1E, 0 + +loc_CE20: ; CODE XREF: sub_CE0C+Dj + mov al, byte_20F1E + mov ah, 0 + imul ax, 0Ah + add ax, 3946h + mov si, ax + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + push [bp+arg_4] + push [bp+arg_0] + nop + push cs + call near ptr sub_A2D0 + mov [si+2], ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 10h + mov [si+4], ax + mov byte ptr [si+6], 88h ; 'ˆ' + mov byte ptr [si+7], 0F8h ; 'ø' + pop si + pop bp + retf 6 +sub_CE0C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CE5B proc far ; CODE XREF: sub_10324+4BP + ; sub_10405+73P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + inc byte_20F1E + cmp byte_20F1E, 0Ch + jb short loc_CE6F + mov byte_20F1E, 0 + +loc_CE6F: ; CODE XREF: sub_CE5B+Dj + mov al, byte_20F1E + mov ah, 0 + imul ax, 0Ah + add ax, 3946h + mov si, ax + mov byte ptr [si], 2 + mov byte ptr [si+1], 0 + push [bp+arg_4] + push [bp+arg_0] + nop + push cs + call near ptr sub_A2D0 + mov [si+2], ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 10h + mov [si+4], ax + mov byte ptr [si+6], 0A2h ; '¢' + mov byte ptr [si+7], 0F6h ; 'ö' + call sub_13A24 + mov [si+8], al + pop si + pop bp + retf 6 +sub_CE5B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CEB2 proc far ; CODE XREF: sub_9778+99p + push bp + mov bp, sp + push si + mov si, 3946h + xor dx, dx + jmp short loc_CED8 +; --------------------------------------------------------------------------- + +loc_CEBD: ; CODE XREF: sub_CEB2+29j + cmp byte ptr [si], 0 + jz short loc_CED4 + inc byte ptr [si+1] + cmp byte ptr [si+1], 10h + jbe short loc_CECE + mov byte ptr [si], 0 + +loc_CECE: ; CODE XREF: sub_CEB2+17j + mov al, [si+7] + add [si+6], al + +loc_CED4: ; CODE XREF: sub_CEB2+Ej + inc dx + add si, 0Ah + +loc_CED8: ; CODE XREF: sub_CEB2+9j + cmp dx, 0Ch + jl short loc_CEBD + pop si + pop bp + retf +sub_CEB2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CEE0 proc far ; CODE XREF: sub_9778+198p + +var_13 = byte ptr -13h +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 + + enter 14h, 0 + push si + push di + mov si, 3946h + push large 0C0000Dh + call sub_F5C + mov [bp+var_2], 0 + jmp loc_D013 +; --------------------------------------------------------------------------- + +loc_CEFC: ; CODE XREF: sub_CEE0+137j + cmp byte ptr [si], 0 + jz loc_D00D + cmp word ptr [si+2], 140h + jge short loc_CF15 + push large 100008h + push 12Fh + jmp short loc_CF1E +; --------------------------------------------------------------------------- + +loc_CF15: ; CODE XREF: sub_CEE0+28j + push large 1500008h + push 26Fh + +loc_CF1E: ; CODE XREF: sub_CEE0+33j + push 0BFh ; '¿' + call sub_C40 + cmp byte ptr [si], 1 + jnz short loc_CF42 + push word ptr [si+2] + mov ax, [si+4] + sar ax, 1 + push ax + mov al, [si+6] + mov ah, 0 + push ax + call sub_9E2 + jmp loc_D00D +; --------------------------------------------------------------------------- + +loc_CF42: ; CODE XREF: sub_CEE0+49j + mov ax, [bp+var_2] + mov bx, 2 + cwd + idiv bx + or dx, dx + jnz short loc_CF53 + mov al, 8 + jmp short loc_CF55 +; --------------------------------------------------------------------------- + +loc_CF53: ; CODE XREF: sub_CEE0+6Dj + mov al, 0F8h ; 'ø' + +loc_CF55: ; CODE XREF: sub_CEE0+71j + add al, [si+8] + mov [si+8], al + xor di, di + mov al, [si+8] + jmp short loc_CFC1 +; --------------------------------------------------------------------------- + +loc_CF62: ; CODE XREF: sub_CEE0+E7j + mov al, [bp+var_13] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + mov al, [si+6] + mov ah, 0 + push ax + push word ptr [si+2] + call sub_EA5D + add sp, 6 + mov bx, di + add bx, bx + lea dx, [bp+var_A] + add bx, dx + mov ss:[bx], ax + mov al, [bp+var_13] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + mov al, [si+6] + mov ah, 0 + push ax + push word ptr [si+4] + call sub_EA5D + add sp, 6 + cwd + sub ax, dx + sar ax, 1 + mov bx, di + add bx, bx + lea dx, [bp+var_12] + add bx, dx + mov ss:[bx], ax + inc di + mov al, [bp+var_13] + add al, 40h ; '@' + +loc_CFC1: ; CODE XREF: sub_CEE0+80j + mov [bp+var_13], al + cmp di, 4 + jl short loc_CF62 + push [bp+var_A] + push [bp+var_12] + push [bp+var_8] + push [bp+var_10] + call sub_DBE + push [bp+var_8] + push [bp+var_10] + push [bp+var_6] + push [bp+var_E] + call sub_DBE + push [bp+var_6] + push [bp+var_E] + push [bp+var_4] + push [bp+var_C] + call sub_DBE + push [bp+var_4] + push [bp+var_C] + push [bp+var_A] + push [bp+var_12] + call sub_DBE + +loc_D00D: ; CODE XREF: sub_CEE0+1Fj sub_CEE0+5Fj + inc [bp+var_2] + add si, 0Ah + +loc_D013: ; CODE XREF: sub_CEE0+19j + cmp [bp+var_2], 0Ch + jl loc_CEFC + xor ax, ax + out 7Ch, ax + push large 0 + push large 27F00C7h + call sub_C40 + pop di + pop si + leave + retf +sub_CEE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D031 proc near ; CODE XREF: sub_D135+4Ap + ; sub_D1E7:loc_D2ABp ... + push bp + mov bp, sp + push di + mov ax, [di] + mov bx, [di+2] + sar ax, 4 + mov cx, ax + sar ax, 3 + ; Hack (and bx, 0FFE0h) + db 081h + db 0e3h + db 0e0h + db 0ffh + shl bx, 1 + add ax, bx + shr bx, 2 + add bx, ax + and cl, 7 + mov ax, 0C0h ; 'À' + ror ax, cl + mov es:[bx], ax + pop di + pop bp + retn +sub_D031 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D05D proc far ; DATA XREF: sub_A524+187o + ; sub_A6BC+187o ... + push bp + mov bp, sp + push si + push di + mov byte_2142C, 40h ; '@' + mov si, 39CCh + xor di, di + jmp short loc_D089 +; --------------------------------------------------------------------------- + +loc_D06E: ; CODE XREF: sub_D05D+2Fj + push ds + lea ax, [si+4] + push ax + push ds + lea ax, [si+6] + push ax + push 40h ; '@' + mov al, [si+8] + mov ah, 0 + push ax + call sub_E97A + inc di + add si, 10h + +loc_D089: ; CODE XREF: sub_D05D+Fj + cmp di, 50h ; 'P' + jl short loc_D06E + pop di + pop si + pop bp + retf +sub_D05D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D092 proc far ; DATA XREF: sub_A524+16Fo + ; sub_A6BC+16Fo ... + push bp + mov bp, sp + push si + push di + mov byte_2142C, 40h ; '@' + mov si, 39CCh + xor di, di + jmp short loc_D0F1 +; --------------------------------------------------------------------------- + +loc_D0A3: ; CODE XREF: sub_D092+62j + call sub_1EEC + mov bx, 2800h + cwd + idiv bx + mov [si], dx + call sub_1EEC + mov bx, 1900h + cwd + idiv bx + mov [si+2], dx + mov word ptr [si+4], 0 + mov word ptr [si+6], 10h + mov byte ptr [si+8], 20h ; ' ' + mov word ptr [si+0Ah], 210Eh + call sub_1EEC + test al, 1 + jz short loc_D0DF + add word ptr [si+0Ah], 280h + +loc_D0DF: ; CODE XREF: sub_D092+46j + call sub_1EEC + mov bx, 0FA0h + cwd + idiv bx + mov [si+0Ch], dx + inc di + add si, 10h + +loc_D0F1: ; CODE XREF: sub_D092+Fj + cmp di, 30h ; '0' + jl short loc_D0A3 + pop di + pop si + pop bp + retf +sub_D092 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D0FA proc near ; CODE XREF: sub_D135+47p sub_D135+71p ... + push bp + mov bp, sp + push di + mov ax, [di] + add ax, [di+4] + cmp ax, 80h ; '€' + jnb short loc_D10D + add ax, 2700h + jmp short loc_D115 +; --------------------------------------------------------------------------- + +loc_D10D: ; CODE XREF: sub_D0FA+Cj + cmp ax, 2780h + jbe short loc_D115 + sub ax, 2700h + +loc_D115: ; CODE XREF: sub_D0FA+11j sub_D0FA+16j + mov [di], ax + mov ax, [di+2] + add ax, [di+6] + cmp ax, 0E0h ; 'à' + jnb short loc_D127 + add ax, 1720h + jmp short loc_D12F +; --------------------------------------------------------------------------- + +loc_D127: ; CODE XREF: sub_D0FA+26j + cmp ax, 1800h + jbe short loc_D12F + sub ax, 1720h + +loc_D12F: ; CODE XREF: sub_D0FA+2Bj sub_D0FA+30j + mov [di+2], ax + pop di + pop bp + retn +sub_D0FA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D135 proc far ; DATA XREF: sub_A524+17Bo + ; sub_A6BC+17Bo ... + push bp + mov bp, sp + push si + push di + mov byte_1F2EA, 1 + mov word_1F2E8, 3 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + push large 0C0000Ah + call sub_F5C + mov ax, 0A800h + mov es, ax + assume es:nothing + mov byte_2142C, 40h ; '@' + mov di, 39CCh + xor si, si + +loc_D16B: ; CODE XREF: sub_D135+54j + call sub_1EEC + and ax, 1 + add ax, [di+6] + mov [di+6], ax + mov [di+8], al + call sub_D0FA + call sub_D031 + add di, 10h + inc si + cmp si, 18h + jb short loc_D16B + call sub_F86 + call sub_704 + +loc_D195: ; CODE XREF: sub_D135+90j + call sub_1EEC + and ax, 1 + add ax, [di+6] + mov [di+6], ax + mov [di+8], al + call sub_D0FA + mov ax, [di] + sar ax, 4 + push ax + mov ax, [di+2] + sar ax, 4 + push ax + push word ptr [di+0Ah] + call sub_F100 + add di, 10h + inc si + cmp si, 30h ; '0' + jb short loc_D195 + cmp dword_23AF2, 80h ; '€' + jbe short loc_D1DE + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, 3B07h + +loc_D1DE: ; CODE XREF: sub_D135+9Bj + call sub_71A + pop di + pop si + pop bp + retf +sub_D135 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D1E7 proc far + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov ax, word_23AF6 + and ax, 0FFFh + mov [bp+var_2], ax + cmp [bp+var_2], 400h + jl short loc_D24B + cmp [bp+var_2], 500h + jge short loc_D20C + test byte ptr [bp+var_2], 7 + jnz short loc_D24F + jmp short loc_D23B +; --------------------------------------------------------------------------- + +loc_D20C: ; CODE XREF: sub_D1E7+1Bj + cmp [bp+var_2], 800h + jl short loc_D24B + cmp [bp+var_2], 900h + jge short loc_D222 + test byte ptr [bp+var_2], 3 + jnz short loc_D24F + jmp short loc_D241 +; --------------------------------------------------------------------------- + +loc_D222: ; CODE XREF: sub_D1E7+31j + cmp [bp+var_2], 0C00h + jl short loc_D24B + cmp [bp+var_2], 0FE0h + jge short loc_D24B + mov ax, [bp+var_2] + and ax, 7Fh + cmp ax, 40h ; '@' + jge short loc_D241 + +loc_D23B: ; CODE XREF: sub_D1E7+23j + inc byte_2142C + jmp short loc_D245 +; --------------------------------------------------------------------------- + +loc_D241: ; CODE XREF: sub_D1E7+39j sub_D1E7+52j + dec byte_2142C + +loc_D245: ; CODE XREF: sub_D1E7+58j + mov [bp+var_3], 1 + jmp short loc_D24F +; --------------------------------------------------------------------------- + +loc_D24B: ; CODE XREF: sub_D1E7+14j sub_D1E7+2Aj ... + mov [bp+var_3], 0 + +loc_D24F: ; CODE XREF: sub_D1E7+21j sub_D1E7+37j ... + mov di, 39CCh + xor si, si + +loc_D254: ; CODE XREF: sub_D1E7+96j + call sub_D0FA + cmp [bp+var_3], 0 + jz short loc_D276 + lea bx, [di+4] + push ds + push bx + lea bx, [di+6] + push ds + push bx + mov al, byte_2142C + mov ah, 0 + push ax + mov al, [di+8] + push ax + call sub_E97A + +loc_D276: ; CODE XREF: sub_D1E7+74j + add di, 10h + inc si + cmp si, 30h ; '0' + jb short loc_D254 + mov byte_1F2EA, 1 + mov word_1F2E8, 3 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + push large 0C0000Ah + call sub_F5C + mov ax, 0A800h + mov es, ax + mov di, 39CCh + xor si, si + +loc_D2AB: ; CODE XREF: sub_D1E7+CEj + call sub_D031 + add di, 10h + inc si + cmp si, 18h + jb short loc_D2AB + call sub_F86 + call sub_704 + +loc_D2C1: ; CODE XREF: sub_D1E7+F6j + mov ax, [di] + sar ax, 4 + push ax + mov ax, [di+2] + sar ax, 4 + push ax + push word ptr [di+0Ah] + call sub_F1D2 + add di, 10h + inc si + cmp si, 30h ; '0' + jb short loc_D2C1 + call sub_71A + pop di + pop si + leave + retf +sub_D1E7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D2E8 proc far ; DATA XREF: sub_A854+16Fo + ; sub_A9EC+16Fo ... + push bp + mov bp, sp + push si + push di + mov byte_2142C, 40h ; '@' + mov si, 39CCh + xor di, di + jmp short loc_D337 +; --------------------------------------------------------------------------- + +loc_D2F9: ; CODE XREF: sub_D2E8+52j + call sub_1EEC + mov bx, 2800h + cwd + idiv bx + mov [si], dx + call sub_1EEC + mov bx, 1900h + cwd + idiv bx + mov [si+2], dx + mov word ptr [si+4], 0 + mov word ptr [si+6], 10h + mov byte ptr [si+8], 10h + cmp di, 28h ; '(' + jge short loc_D32E + mov word ptr [si+0Ah], 233Eh + jmp short loc_D333 +; --------------------------------------------------------------------------- + +loc_D32E: ; CODE XREF: sub_D2E8+3Dj + mov word ptr [si+0Ah], 20BEh + +loc_D333: ; CODE XREF: sub_D2E8+44j + inc di + add si, 10h + +loc_D337: ; CODE XREF: sub_D2E8+Fj + cmp di, 32h ; '2' + jl short loc_D2F9 + pop di + pop si + pop bp + retf +sub_D2E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D340 proc far ; DATA XREF: sub_A854+17Bo + ; sub_A9EC+17Bo ... + push bp + mov bp, sp + push si + push di + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + push large 0C0000Dh + call sub_F5C + mov ax, 0A800h + mov es, ax + mov byte_2142C, 40h ; '@' + mov di, 39CCh + xor si, si + +loc_D376: ; CODE XREF: sub_D340+54j + call sub_1EEC + and ax, 1 + add ax, [di+6] + mov [di+6], ax + mov [di+8], al + call sub_D0FA + call sub_D031 + add di, 10h + inc si + cmp si, 18h + jb short loc_D376 + call sub_F86 + call sub_704 + +loc_D3A0: ; CODE XREF: sub_D340+97j + xor ax, ax + cmp si, 28h ; '(' + jnb short loc_D3AF + call sub_1EEC + and ax, 1 + +loc_D3AF: ; CODE XREF: sub_D340+65j + add ax, [di+6] + mov [di+6], ax + mov [di+8], al + call sub_D0FA + mov ax, [di] + sar ax, 4 + push ax + mov ax, [di+2] + sar ax, 4 + push ax + push word ptr [di+0Ah] + call sub_F1D2 + add di, 10h + inc si + cmp si, 32h ; '2' + jb short loc_D3A0 + cmp dword_23AF2, 90h ; '' + jbe short loc_D3F0 + mov word ptr dword_20F24+2, seg seg001 + mov word ptr dword_20F24, 3D19h + +loc_D3F0: ; CODE XREF: sub_D340+A2j + call sub_71A + pop di + pop si + pop bp + retf +sub_D340 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D3F9 proc far + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov ax, word_23AF6 + and ax, 0FFFh + mov [bp+var_2], ax + cmp [bp+var_2], 400h + jl short loc_D45D + cmp [bp+var_2], 500h + jge short loc_D41E + test byte ptr [bp+var_2], 7 + jnz short loc_D461 + jmp short loc_D44D +; --------------------------------------------------------------------------- + +loc_D41E: ; CODE XREF: sub_D3F9+1Bj + cmp [bp+var_2], 800h + jl short loc_D45D + cmp [bp+var_2], 900h + jge short loc_D434 + test byte ptr [bp+var_2], 3 + jnz short loc_D461 + jmp short loc_D453 +; --------------------------------------------------------------------------- + +loc_D434: ; CODE XREF: sub_D3F9+31j + cmp [bp+var_2], 0C00h + jl short loc_D45D + cmp [bp+var_2], 0FE0h + jge short loc_D45D + mov ax, [bp+var_2] + and ax, 7Fh + cmp ax, 40h ; '@' + jge short loc_D453 + +loc_D44D: ; CODE XREF: sub_D3F9+23j + inc byte_2142C + jmp short loc_D457 +; --------------------------------------------------------------------------- + +loc_D453: ; CODE XREF: sub_D3F9+39j sub_D3F9+52j + dec byte_2142C + +loc_D457: ; CODE XREF: sub_D3F9+58j + mov [bp+var_3], 1 + jmp short loc_D461 +; --------------------------------------------------------------------------- + +loc_D45D: ; CODE XREF: sub_D3F9+14j sub_D3F9+2Aj ... + mov [bp+var_3], 0 + +loc_D461: ; CODE XREF: sub_D3F9+21j sub_D3F9+37j ... + mov di, 39CCh + xor si, si + +loc_D466: ; CODE XREF: sub_D3F9+96j + call sub_D0FA + cmp [bp+var_3], 0 + jz short loc_D488 + lea bx, [di+4] + push ds + push bx + lea bx, [di+6] + push ds + push bx + mov al, byte_2142C + mov ah, 0 + push ax + mov al, [di+8] + push ax + call sub_E97A + +loc_D488: ; CODE XREF: sub_D3F9+74j + add di, 10h + inc si + cmp si, 32h ; '2' + jb short loc_D466 + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + push large 0C0000Dh + call sub_F5C + mov ax, 0A800h + mov es, ax + mov di, 39CCh + xor si, si + +loc_D4BD: ; CODE XREF: sub_D3F9+CEj + call sub_D031 + add di, 10h + inc si + cmp si, 18h + jb short loc_D4BD + call sub_F86 + call sub_704 + +loc_D4D3: ; CODE XREF: sub_D3F9+10Aj + xor dx, dx + cmp si, 28h ; '(' + jb short loc_D4E6 + mov dx, [bp+var_2] + ; Hack (and dx, 1Fh) + db 081h + db 0e2h + db 01fh + db 000h + shr dx, 3 + shl dx, 1 + +loc_D4E6: ; CODE XREF: sub_D3F9+DFj + mov ax, [di] + sar ax, 4 + push ax + mov ax, [di+2] + sar ax, 4 + push ax + add dx, [di+0Ah] + push dx + call sub_F1D2 + add di, 10h + inc si + cmp si, 32h ; '2' + jb short loc_D4D3 + call sub_71A + pop di + pop si + leave + retf +sub_D3F9 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D50E proc near ; CODE XREF: sub_D52E+23p sub_D52E+35p ... + push si + push di + mov ah, 0 + mov si, 858h + shl ax, 3 + add si, ax + mov ax, cx + sar ax, 3 + add ax, 1E0h + mov di, ax + +loc_D524: ; CODE XREF: sub_D50E+1Aj + movsb + sub di, 51h ; 'Q' + jnb short loc_D524 + pop di + pop si + retn +sub_D50E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D52E proc near ; CODE XREF: sub_9778+23Fp + push large 0C0000Fh + call sub_F5C + mov ax, 0A82Dh + mov es, ax + assume es:nothing + mov cx, 220h + mov bx, 4B64h + add bx, 0Fh + mov dh, 10h + +loc_D549: ; CODE XREF: sub_D52E+3Bj + xor dl, dl + +loc_D54B: ; CODE XREF: sub_D52E+31j + mov al, [bx] + or dl, al + jz short loc_D554 + call sub_D50E + +loc_D554: ; CODE XREF: sub_D52E+21j + dec bx + add cx, 8 + dec dh + jz short loc_D56B + cmp dh, 8 + jnz short loc_D54B + xor ax, ax + call sub_D50E + mov cx, 0E0h ; 'à' + jmp short loc_D549 +; --------------------------------------------------------------------------- + +loc_D56B: ; CODE XREF: sub_D52E+2Cj + ; DATA XREF: sub_D6C0+Aw + mov al, 80h ; '€' + call sub_D50E + call sub_F86 + mov al, byte_220CA + cmp byte_220DC, al + jnb short locret_D5A0 + push 8 + call sub_EC3A + les bx, dword_1F2F0 + assume es:nothing + inc byte ptr es:[bx+34h] + call sub_BA5B + inc byte_220DC + cmp byte_220DC, 2 + jnz short locret_D5A0 + mov byte_220DC, 0FFh + +locret_D5A0: ; CODE XREF: sub_D52E+4Ej sub_D52E+6Bj + retn +sub_D52E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D5A2 proc far ; CODE XREF: sub_9B14+39p + xor ax, ax + mov bx, 3E2Eh + mov cx, 0Eh + +loc_D5AA: ; CODE XREF: sub_D5A2+Bj + mov [bx], ax + inc bx + loop loc_D5AA + retf +sub_D5A2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D5B0 proc far ; CODE XREF: sub_E3F2+314p + ; sub_E3F2+335p ... + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov bx, 4B74h + mov word ptr [bx+6], 0 + mov byte ptr [bx+5], 0 + mov si, 8A8h + add bx, 4 + mov cx, [bp+arg_2] + +loc_D5C9: ; CODE XREF: sub_D5B0+2Aj + mov ax, cx + xor dx, dx + div word ptr [si] + mov cx, dx + mov [bx], al + dec bx + add si, 2 + cmp word ptr [si], 1 + ja short loc_D5C9 + mov [bx], cl + mov si, 4B64h + mov ch, [bp+arg_0] + or ch, ch + jz short loc_D5EB + add si, 8 + +loc_D5EB: ; CODE XREF: sub_D5B0+36j + mov cx, 7 + xor ax, ax + +loc_D5F0: ; CODE XREF: sub_D5B0+4Dj + mov al, [bx] + add al, [si] + aaa + mov [si], al + inc bx + inc si + add [si], ah + mov ah, 0 + loop loc_D5F0 + mov al, [bx] + add [si], al + pop si + pop bp + retf 4 +sub_D5B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D608 proc far ; CODE XREF: sub_E3F2+226p + ; sub_E3F2+238p ... + +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 + push si + push di + push 0C0h ; 'À' + mov al, [bp+arg_0] + mov ah, 0 + push ax + call sub_F5C + mov ax, [bp+arg_4] + mov dx, ax + shl ax, 2 + add ax, dx + add ax, 0A805h + mov es, ax + mov cx, [bp+arg_6] + mov si, 8A8h + mov di, [bp+arg_2] + mov bl, 0 + nop + +loc_D636: ; CODE XREF: sub_D608+46j + mov ax, di + xor dx, dx + div word ptr [si] + mov di, dx + or bl, al + jz short loc_D645 + call sub_D50E + +loc_D645: ; CODE XREF: sub_D608+38j + add cx, 8 + add si, 2 + cmp word ptr [si], 1 + ja short loc_D636 + mov ax, di + call sub_D50E + add cx, 8 + xor ax, ax + call sub_D50E + call sub_F86 + pop di + pop si + pop bp + retf 8 +sub_D608 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D668 proc far ; CODE XREF: sub_E3F2+2FBp + +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 + push si + push di + push 0C0h ; 'À' + mov al, [bp+arg_0] + mov ah, 0 + push ax + call sub_F5C + mov ax, [bp+arg_4] + mov dx, ax + shl ax, 2 + add ax, dx + add ax, 0A805h + mov es, ax + mov cx, [bp+arg_6] + mov si, 8A8h + mov di, [bp+arg_2] + mov bl, 0 + nop + +loc_D696: ; CODE XREF: sub_D668+46j + mov ax, di + xor dx, dx + div word ptr [si] + mov di, dx + or bl, al + jz short loc_D6A5 + call sub_D50E + +loc_D6A5: ; CODE XREF: sub_D668+38j + add cx, 8 + add si, 2 + cmp word ptr [si], 1 + ja short loc_D696 + mov ax, di + or bl, al + jz short loc_D6B9 + call sub_D50E + +loc_D6B9: ; CODE XREF: sub_D668+4Cj + pop di + pop si + pop bp + retf 8 +sub_D668 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6C0 proc far ; CODE XREF: sub_9B14+15Ep + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + mov al, [bp+arg_0] + mov ah, 3 + sub ah, al + mov byte ptr cs:loc_D56B+1, ah + pop bp + retf 2 +sub_D6C0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6D4 proc near ; CODE XREF: sub_C433+CFp + ; sub_C568+168p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov dx, [si] + mov cx, [si+2] + mov al, byte_23AE6 + cbw + add dx, ax + mov al, byte_23AE7 + cbw + add cx, ax + cmp dx, 80h ; '€' + jge short loc_D6F7 + mov dx, 80h ; '€' + jmp short loc_D700 +; --------------------------------------------------------------------------- + +loc_D6F7: ; CODE XREF: sub_D6D4+1Cj + cmp dx, 1180h + jle short loc_D700 + mov dx, 1180h + +loc_D700: ; CODE XREF: sub_D6D4+21j sub_D6D4+27j + cmp cx, 180h + jge short loc_D70B + mov cx, 180h + jmp short loc_D714 +; --------------------------------------------------------------------------- + +loc_D70B: ; CODE XREF: sub_D6D4+30j + cmp cx, 1600h + jle short loc_D714 + mov cx, 1600h + +loc_D714: ; CODE XREF: sub_D6D4+35j sub_D6D4+3Bj + mov [si], dx + mov [si+2], cx + pop si + pop bp + retn 2 +sub_D6D4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D71E proc near ; CODE XREF: sub_C433+C7p + ; sub_C568+160p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + mov byte_23AE6, 0 + mov byte_23AE7, 0 + mov bx, [bp+arg_0] + cmp bx, 8 + jz short loc_D79B + ja short loc_D743 + cmp bx, 6 + ja loc_D7CF + add bx, bx + jmp cs:off_D7E2[bx] +; --------------------------------------------------------------------------- + +loc_D743: ; CODE XREF: sub_D71E+15j + cmp bx, 200h + jz short loc_D775 + ja short loc_D75D + cmp bx, 9 + jz short loc_D7A3 + cmp bx, 0Ah + jz short loc_D78D + cmp bx, 100h + jz short loc_D7BD + jmp short loc_D7CF +; --------------------------------------------------------------------------- + +loc_D75D: ; CODE XREF: sub_D71E+2Bj + cmp bx, 400h + jz short loc_D7A3 + cmp bx, 800h + jz short loc_D78D + jmp short loc_D7CF +; --------------------------------------------------------------------------- + +loc_D76B: ; CODE XREF: sub_D71E+20j + ; DATA XREF: seg001:410Ao + mov al, byte_23AE2 + neg al + mov byte_23AE6, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D775: ; CODE XREF: sub_D71E+20j sub_D71E+29j + ; DATA XREF: ... + mov al, byte_23AE4 + neg al + mov byte_23AE6, al + mov al, byte_23AE5 + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D785: ; CODE XREF: sub_D71E+20j + ; DATA XREF: seg001:4106o + mov al, byte_23AE3 + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D78D: ; CODE XREF: sub_D71E+35j sub_D71E+49j + mov al, byte_23AE4 + mov byte_23AE6, al + mov al, byte_23AE5 + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D79B: ; CODE XREF: sub_D71E+13j + mov al, byte_23AE2 + mov byte_23AE6, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D7A3: ; CODE XREF: sub_D71E+30j sub_D71E+43j + mov al, byte_23AE4 + mov byte_23AE6, al + mov al, byte_23AE5 + neg al + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D7B3: ; CODE XREF: sub_D71E+20j + ; DATA XREF: seg001:4104o + mov al, byte_23AE3 + neg al + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D7BD: ; CODE XREF: sub_D71E+20j sub_D71E+3Bj + ; DATA XREF: ... + mov al, byte_23AE4 + neg al + mov byte_23AE6, al + mov al, byte_23AE5 + neg al + mov byte_23AE7, al + jmp short loc_D7D5 +; --------------------------------------------------------------------------- + +loc_D7CF: ; CODE XREF: sub_D71E+1Aj sub_D71E+20j ... + mov al, 0 + pop bp + retn 2 +; --------------------------------------------------------------------------- + +loc_D7D5: ; CODE XREF: sub_D71E+55j sub_D71E+65j ... + mov al, 1 + pop bp + retn 2 +; --------------------------------------------------------------------------- + +loc_D7DB: ; CODE XREF: sub_D71E+20j + ; DATA XREF: seg001:off_D7E2o + mov al, 2 + pop bp + retn 2 +sub_D71E endp + +; --------------------------------------------------------------------------- + db 0 +off_D7E2 dw offset loc_D7DB ; DATA XREF: sub_D71E+20r + dw offset loc_D7B3 + dw offset loc_D785 + dw offset loc_D7CF + dw offset loc_D76B + dw offset loc_D7BD + dw offset loc_D775 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D7F0 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 1 + cmp byte ptr [bx+1Eh], 0 + jz short loc_D807 + mov ax, [bx+66h] + mov [bx+64h], ax + +loc_D807: ; CODE XREF: sub_D7F0+Fj + pop bp + retn +sub_D7F0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D809 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D81D + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D81D: ; CODE XREF: sub_D809+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 4 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D809 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D847 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D85B + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D85B: ; CODE XREF: sub_D847+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 2 + mov byte ptr [bx+22h], 2 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D847 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D889 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D89D + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D89D: ; CODE XREF: sub_D889+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 0 + call sub_14340 + mov al, byte_23AE2 + add al, 0F0h ; 'ð' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 0F0h ; 'ð' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 0F4h ; 'ô' + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 0F4h ; 'ô' + mov byte_23AE5, al + pop bp + retn +sub_D889 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D8CC proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D8E0 + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D8E0: ; CODE XREF: sub_D8CC+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 1 + test byte ptr dword_23AF2, 3 + jnz short loc_D8F9 + push word ptr [bx] + push word ptr [bx+2] + call sub_1B6CA + +loc_D8F9: ; CODE XREF: sub_D8CC+21j + pop bp + retn +sub_D8CC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D8FB proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D90F + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D90F: ; CODE XREF: sub_D8FB+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 3 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D8FB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D939 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D94D + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D94D: ; CODE XREF: sub_D939+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 3 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D939 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D977 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D98B + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D98B: ; CODE XREF: sub_D977+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 3 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D977 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D9B5 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_D9C9 + mov word ptr [bx+64h], 4110h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_D9C9: ; CODE XREF: sub_D9B5+Bj + mov bx, word_23AE8 + mov byte ptr [bx+0Dh], 3 + mov al, byte_23AE2 + add al, 20h ; ' ' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 20h ; ' ' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 18h + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 18h + mov byte_23AE5, al + pop bp + retn +sub_D9B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D9F3 proc near + push bp + mov bp, sp + mov bx, word_23AE8 + cmp byte ptr [bx+1Eh], 0 + jnz short loc_DA0C + mov word ptr [bx+64h], 4110h + call sub_1C4B4 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_DA0C: ; CODE XREF: sub_D9F3+Bj + mov bx, word_23AE8 + cmp word ptr [bx+1Ah], 0FA0h + jbe short loc_DA21 + push word ptr [bx] + push word ptr [bx+2] + call sub_1C497 + +loc_DA21: ; CODE XREF: sub_D9F3+22j + mov al, byte_23AE2 + add al, 0F0h ; 'ð' + mov byte_23AE2, al + mov al, byte_23AE3 + add al, 0F0h ; 'ð' + mov byte_23AE3, al + mov al, byte_23AE4 + add al, 0F8h ; 'ø' + mov byte_23AE4, al + mov al, byte_23AE5 + add al, 0F8h ; 'ø' + mov byte_23AE5, al + pop bp + retn +sub_D9F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DA43 proc near ; CODE XREF: sub_9778+ACp sub_9778+BBp + +var_6 = byte ptr -6 +var_5 = byte ptr -5 +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, 6 + push si + push di + mov di, [bp+arg_2] + mov si, [bp+arg_0] + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov word_23AE8, ax + cmp byte ptr [si+6], 0 + jz short loc_DA68 + dec byte ptr [si+6] + +loc_DA68: ; CODE XREF: sub_DA43+20j + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+658Bh], 0 + jz short loc_DA81 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + dec byte ptr [bx+658Bh] + +loc_DA81: ; CODE XREF: sub_DA43+31j + cmp byte_20E3C, 2 + jz loc_DE4F + cmp byte ptr [si+1Fh], 0 + jnz loc_DE45 + mov al, [si+9] + mov byte_23AE2, al + mov al, [si+0Ah] + mov byte_23AE3, al + mov al, [si+0Bh] + mov byte_23AE4, al + mov al, [si+0Ch] + mov byte_23AE5, al + call word ptr [si+64h] + cmp byte ptr [si+11h], 0 + jnz loc_DBDC + cmp byte ptr [si+15h], 0 + jnz short loc_DB0A + mov ax, di + and ax, 0F0Fh + mov [bp+var_4], ax + mov [bp+var_6], 1 + +loc_DAC7: ; CODE XREF: sub_DA43+AAj + push [bp+var_4] + call sub_D71E + mov [bp+var_5], al + cmp [bp+var_5], 0 + jnz short loc_DAEF + cmp [bp+var_6], 0 + jz short loc_DAEF + mov ax, [si+20h] + cmp ax, [bp+var_4] + jz short loc_DAF9 + not ax + and [bp+var_4], ax + mov [bp+var_6], 0 + jmp short loc_DAC7 +; --------------------------------------------------------------------------- + +loc_DAEF: ; CODE XREF: sub_DA43+91j sub_DA43+97j + cmp [bp+var_5], 1 + jnz short loc_DAF9 + push si + call sub_D6D4 + +loc_DAF9: ; CODE XREF: sub_DA43+9Fj sub_DA43+B0j + cmp [bp+var_6], 0 + jz loc_DBDF + mov ax, [bp+var_4] + mov [si+20h], ax + jmp loc_DBDF +; --------------------------------------------------------------------------- + +loc_DB0A: ; CODE XREF: sub_DA43+76j + inc word ptr [si+74h] + push si + call sub_C54A + cmp byte_20E48, 0 + jnz short loc_DB1E + mov [bp+var_5], 6 + jmp short loc_DB3C +; --------------------------------------------------------------------------- + +loc_DB1E: ; CODE XREF: sub_DA43+D3j + cmp byte_20E48, 0FFh + jnz short loc_DB2B + mov [bp+var_5], 20h ; ' ' + jmp short loc_DB3C +; --------------------------------------------------------------------------- + +loc_DB2B: ; CODE XREF: sub_DA43+E0j + cmp byte_20E48, 0FEh ; 'þ' + jnz short loc_DB38 + mov [bp+var_5], 7 + jmp short loc_DB3C +; --------------------------------------------------------------------------- + +loc_DB38: ; CODE XREF: sub_DA43+EDj + mov [bp+var_5], 0Ah + +loc_DB3C: ; CODE XREF: sub_DA43+D9j sub_DA43+E6j ... + mov al, [bp+var_5] + mov ah, 0 + push ax + mov ax, word_23AF6 + xor dx, dx + pop bx + div bx + or dx, dx + jnz short loc_DB5D + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B9Ch], 4 + mov di, 20h ; ' ' + +loc_DB5D: ; CODE XREF: sub_DA43+109j + mov byte_20E48, 0 + cmp byte ptr [si+4], 0 + jnz short loc_DBC8 + cmp byte ptr [si+1Dh], 0 + jnz short loc_DB77 + mov al, [si+7] + cbw + cmp ax, 3 + jle short loc_DBDF + +loc_DB77: ; CODE XREF: sub_DA43+129j + mov al, [si+1Ch] + mov ah, 0 + mov bx, ax + mov al, [bx+si+24h] + mov ah, 0 + mov dx, [si+1Ah] + shr dx, 4 + cmp ax, dx + jb short loc_DB94 + cmp word ptr [si+1Ah], 0FF0h + jnz short loc_DBDF + +loc_DB94: ; CODE XREF: sub_DA43+148j + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B9Ch], 0 + mov di, 20h ; ' ' + mov ax, [si+18h] + cmp ax, [si+1Ah] + jb short loc_DBDF + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B9Ch], 4 + xor di, di + inc byte ptr [si+1Ch] + cmp byte ptr [si+1Ch], 40h ; '@' + jb short loc_DBDF + mov byte ptr [si+1Ch], 0 + jmp short loc_DBDF +; --------------------------------------------------------------------------- + +loc_DBC8: ; CODE XREF: sub_DA43+123j + mov byte ptr [si+4], 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B9Ch], 4 + xor di, di + jmp short loc_DBDF +; --------------------------------------------------------------------------- + +loc_DBDC: ; CODE XREF: sub_DA43+6Ej + dec byte ptr [si+11h] + +loc_DBDF: ; CODE XREF: sub_DA43+BAj sub_DA43+C4j ... + mov [bp+var_5], 0 + cmp byte ptr [si+14h], 0 + jz short loc_DBFE + push si + call sub_DFE9 + mov word ptr [si+18h], 0 + mov word ptr [si+74h], 0 + mov [bp+var_5], 1 + jmp loc_DD3C +; --------------------------------------------------------------------------- + +loc_DBFE: ; CODE XREF: sub_DA43+1A4j + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B9Ch], 2 + ja short loc_DC54 + cmp byte ptr [si+1Eh], 0 + jnz short loc_DC54 + mov ax, [si+18h] + cmp ax, [si+1Ah] + jnb short loc_DC47 + mov al, [si+17h] + mov ah, 0 + add [si+18h], ax + mov ax, [si+18h] + cmp ax, [si+1Ah] + jbe short loc_DC34 + mov ax, [si+1Ah] + mov [si+18h], ax + mov byte ptr [si+23h], 0 + +loc_DC34: ; CODE XREF: sub_DA43+1E5j + cmp word ptr [si+18h], 180h + jnz loc_DD3C + push 9 + call sub_EC3A + jmp loc_DD3C +; --------------------------------------------------------------------------- + +loc_DC47: ; CODE XREF: sub_DA43+1D5j + inc byte ptr [si+23h] + cmp byte ptr [si+23h], 80h ; '€' + jb loc_DD3C + jmp short loc_DC64 +; --------------------------------------------------------------------------- + +loc_DC54: ; CODE XREF: sub_DA43+1C7j + ; sub_DA43+1CDj + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B9Ch], 4 + ja loc_DD3C + +loc_DC64: ; CODE XREF: sub_DA43+20Fj + mov ax, [si+18h] + mov [bp+var_2], ax + cmp [bp+var_2], 400h + jl loc_DD37 + push word ptr [si] + push word ptr [si+2] + call dword ptr [si+68h] + cmp [bp+var_2], 800h + jl loc_DD2B + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+798h], 1 + cmp [bp+var_2], 0FF0h + jl short loc_DCD3 + mov al, byte_1DB9E + cmp al, byte ptr word_23AF0 + jz short loc_DCDA + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ch], 5 + mov word ptr [si+1Ah], 400h + cmp byte_1F39E, 10h + jnb short loc_DCBC + inc byte_1F39E + +loc_DCBC: ; CODE XREF: sub_DA43+273j + add word_21434, 2800h + cmp byte_1DB9E, 0FFh + jnz short loc_DCCE + inc byte ptr [si+77h] + jmp short loc_DD2B +; --------------------------------------------------------------------------- + +loc_DCCE: ; CODE XREF: sub_DA43+284j + inc byte ptr [si+78h] + jmp short loc_DD2B +; --------------------------------------------------------------------------- + +loc_DCD3: ; CODE XREF: sub_DA43+252j + cmp [bp+var_2], 0C00h + jl short loc_DCFE + +loc_DCDA: ; CODE XREF: sub_DA43+25Bj + inc byte ptr [si+76h] + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ch], 3 + sub word ptr [si+1Ah], 800h + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D56h], 10h + jnb short loc_DD2B + jmp short loc_DD20 +; --------------------------------------------------------------------------- + +loc_DCFE: ; CODE XREF: sub_DA43+295j + inc byte ptr [si+76h] + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ch], 1 + sub word ptr [si+1Ah], 400h + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D56h], 10h + jnb short loc_DD2B + +loc_DD20: ; CODE XREF: sub_DA43+2B9j + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D56h] + +loc_DD2B: ; CODE XREF: sub_DA43+23Dj + ; sub_DA43+289j ... + mov al, [si+6] + add al, 6 + mov [si+6], al + mov [bp+var_5], 1 + +loc_DD37: ; CODE XREF: sub_DA43+22Cj + mov word ptr [si+18h], 0 + +loc_DD3C: ; CODE XREF: sub_DA43+1B8j + ; sub_DA43+1F6j ... + cmp byte ptr [si+22h], 2 + jnz short loc_DD44 + xor di, di + +loc_DD44: ; CODE XREF: sub_DA43+2FDj + cmp byte ptr [si+11h], 0 + jnz short loc_DDAE + cmp byte ptr [si+22h], 0 + jz short loc_DDAE + test di, 20h + jnz short loc_DD5C + cmp byte ptr [si+22h], 2 + jnz short loc_DD7B + +loc_DD5C: ; CODE XREF: sub_DA43+311j + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B9Ch], 2 + jbe short loc_DD7B + call sub_E737 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B9Ch], 0 + jmp short loc_DD9A +; --------------------------------------------------------------------------- + +loc_DD7B: ; CODE XREF: sub_DA43+317j + ; sub_DA43+325j + test di, 20h + jnz short loc_DD9A + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B9Ch], 8 + jnb short loc_DD9A + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+4B9Ch] + +loc_DD9A: ; CODE XREF: sub_DA43+336j + ; sub_DA43+33Cj ... + test di, 10h + jz short loc_DDA4 + push si + call sub_E080 + +loc_DDA4: ; CODE XREF: sub_DA43+35Bj + cmp byte ptr [si+22h], 2 + jnz short loc_DDAE + mov byte ptr [si+22h], 1 + +loc_DDAE: ; CODE XREF: sub_DA43+305j + ; sub_DA43+30Bj ... + cmp byte ptr [si+1Eh], 0 + jz short loc_DDCE + cmp word ptr [si+1Ah], 400h + jbe short loc_DDC1 + sub word ptr [si+1Ah], 6 + jmp short loc_DDCA +; --------------------------------------------------------------------------- + +loc_DDC1: ; CODE XREF: sub_DA43+376j + mov byte ptr [si+1Eh], 0 + mov word ptr [si+1Ah], 400h + +loc_DDCA: ; CODE XREF: sub_DA43+37Cj + mov [bp+var_5], 1 + +loc_DDCE: ; CODE XREF: sub_DA43+36Fj + cmp byte_20E3C, 0 + jnz short loc_DE4F + cmp [bp+var_5], 0 + jnz short loc_DE4F + push 4 + call sub_E0F7 + cmp byte ptr [si+4], 0 + jz short loc_DE4F + cmp byte ptr [si+7], 0 + jz short loc_DE3F + push word ptr [si] + push word ptr [si+2] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_B7B3 + push si + call sub_E1D5 + mov dl, [si+7] + sub dl, al + mov [si+7], dl + mov al, [si+7] + cbw + or ax, ax + jge short loc_DE14 + mov byte ptr [si+7], 0 + +loc_DE14: ; CODE XREF: sub_DA43+3CBj + cmp byte ptr [si+7], 0 + jnz short loc_DE26 + mov byte ptr [si+1Fh], 30h ; '0' + mov al, byte ptr word_23AF0 + mov byte_20E3D, al + jmp short loc_DE36 +; --------------------------------------------------------------------------- + +loc_DE26: ; CODE XREF: sub_DA43+3D5j + mov byte ptr [si+14h], 1 + mov byte ptr [si+10h], 40h ; '@' + mov byte ptr [si+6], 6Eh ; 'n' + mov byte ptr [si+11h], 40h ; '@' + +loc_DE36: ; CODE XREF: sub_DA43+3E1j + push word_23AF0 + nop + push cs + call near ptr sub_B92F + +loc_DE3F: ; CODE XREF: sub_DA43+3A7j + mov byte ptr [si+4], 0 + jmp short loc_DE4F +; --------------------------------------------------------------------------- + +loc_DE45: ; CODE XREF: sub_DA43+4Bj + cmp byte ptr [si+1Fh], 0FFh + jz short loc_DE4F + push si + call sub_C0D8 + +loc_DE4F: ; CODE XREF: sub_DA43+43j + ; sub_DA43+390j ... + cmp byte_23AE6, 0 + jnz short loc_DE5C + mov byte ptr [si+0Eh], 0 + jmp short loc_DE6E +; --------------------------------------------------------------------------- + +loc_DE5C: ; CODE XREF: sub_DA43+411j + mov al, byte_23AE6 + cbw + or ax, ax + jge short loc_DE6A + mov byte ptr [si+0Eh], 1 + jmp short loc_DE6E +; --------------------------------------------------------------------------- + +loc_DE6A: ; CODE XREF: sub_DA43+41Fj + mov byte ptr [si+0Eh], 2 + +loc_DE6E: ; CODE XREF: sub_DA43+417j + ; sub_DA43+425j + mov byte ptr [si+0Fh], 0 + cmp byte_23AEE, 0 + jz short loc_DE8F + cmp byte ptr [si+1Eh], 0 + jz short loc_DE85 + mov byte ptr [si+0Fh], 2 + jmp short loc_DE8F +; --------------------------------------------------------------------------- + +loc_DE85: ; CODE XREF: sub_DA43+43Aj + cmp byte ptr [si+6], 0 + jz short loc_DE8F + mov byte ptr [si+0Fh], 1 + +loc_DE8F: ; CODE XREF: sub_DA43+434j + ; sub_DA43+440j ... + pop di + pop si + leave + retn 4 +sub_DA43 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DE95 proc near ; CODE XREF: sub_9778+16Dp + ; sub_9778+178p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, [bp+arg_0] + cmp byte ptr [si+1Fh], 0 + jz short loc_DEB2 + cmp byte ptr [si+1Fh], 0FFh + jz short loc_DF12 + push si + call sub_C248 + jmp short loc_DF12 +; --------------------------------------------------------------------------- + +loc_DEB2: ; CODE XREF: sub_DE95+Fj + cmp byte ptr [si+0Fh], 0 + jnz short loc_DF12 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov byte_1F2EA, 2 + mov word_1F2E8, 20h ; ' ' + push word ptr [si] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov ax, [si+2] + sar ax, 4 + add ax, 0FFF0h + mov [bp+var_4], ax + mov al, [si+0Eh] + mov ah, 0 + shl ax, 2 + add ax, 2844h + mov di, ax + cmp byte ptr word_23AF0, 0 + jz short loc_DF06 + add di, 0A00h + +loc_DF06: ; CODE XREF: sub_DE95+6Bj + push [bp+var_2] + push [bp+var_4] + push di + call sub_F100 + +loc_DF12: ; CODE XREF: sub_DE95+15j sub_DE95+1Bj ... + pop di + pop si + leave + retn 2 +sub_DE95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DF18 proc near ; CODE XREF: sub_9778+188p + ; sub_9778+193p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, [bp+arg_0] + cmp byte ptr [si+1Fh], 0 + jnz loc_DFE3 + cmp byte ptr [si+0Fh], 0 + jz short loc_DF7D + push word ptr [si] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov ax, [si+2] + sar ax, 5 + add ax, 0FFF8h + mov [bp+var_4], ax + mov al, [si+0Fh] + mov ah, 0 + mov di, ax + cmp byte ptr word_23AF0, 0 + jz short loc_DF61 + add di, 9 + +loc_DF61: ; CODE XREF: sub_DF18+44j + mov al, [si+0Eh] + mov ah, 0 + add ax, ax + add di, ax + mov al, [si+0Eh] + mov ah, 0 + add di, ax + push [bp+var_2] + push [bp+var_4] + push di + call sub_26CA + +loc_DF7D: ; CODE XREF: sub_DF18+17j + cmp word ptr [si+18h], 100h + jb short loc_DFE3 + cmp word ptr [si+18h], 400h + jnb short loc_DF90 + mov di, 2Ch ; ',' + jmp short loc_DFAB +; --------------------------------------------------------------------------- + +loc_DF90: ; CODE XREF: sub_DF18+71j + cmp word ptr [si+18h], 800h + jnb short loc_DF9C + mov di, 30h ; '0' + jmp short loc_DFAB +; --------------------------------------------------------------------------- + +loc_DF9C: ; CODE XREF: sub_DF18+7Dj + cmp word ptr [si+18h], 0FF0h + jnb short loc_DFA8 + mov di, 34h ; '4' + jmp short loc_DFAB +; --------------------------------------------------------------------------- + +loc_DFA8: ; CODE XREF: sub_DF18+89j + mov di, 38h ; '8' + +loc_DFAB: ; CODE XREF: sub_DF18+76j sub_DF18+82j ... + push word ptr [si] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov ax, [si+2] + sar ax, 5 + add ax, 0FFF1h + mov [bp+var_4], ax + mov ax, word_23AF6 + shr ax, 2 + and ax, 3 + add ax, di + mov di, ax + push [bp+var_2] + push [bp+var_4] + push ax + call sub_26CA + +loc_DFE3: ; CODE XREF: sub_DF18+Fj sub_DF18+6Aj + pop di + pop si + leave + retn 2 +sub_DF18 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DFE9 proc near ; CODE XREF: sub_DA43+1A7p + +var_4 = byte ptr -4 +var_2 = byte ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 4 + push si + mov si, [bp+arg_0] + cmp byte ptr [si+10h], 40h ; '@' + jnz short loc_E036 + push 2 + call sub_EC3A + push 3Fh ; '?' + call sub_A41E + mov [si+12h], al + cmp word ptr [si], 900h + jge short loc_E01C + cmp word ptr [si+2], 0B80h + jle short loc_E032 + mov al, [si+12h] + add al, 0C0h ; 'À' + jmp short loc_E02F +; --------------------------------------------------------------------------- + +loc_E01C: ; CODE XREF: sub_DFE9+23j + cmp word ptr [si+2], 0B80h + jge short loc_E02A + mov al, [si+12h] + add al, 40h ; '@' + jmp short loc_E02F +; --------------------------------------------------------------------------- + +loc_E02A: ; CODE XREF: sub_DFE9+38j + mov al, [si+12h] + add al, 80h ; '€' + +loc_E02F: ; CODE XREF: sub_DFE9+31j sub_DFE9+3Fj + mov [si+12h], al + +loc_E032: ; CODE XREF: sub_DFE9+2Aj + mov byte ptr [si+13h], 40h ; '@' + +loc_E036: ; CODE XREF: sub_DFE9+Ej + cmp byte ptr [si+10h], 20h ; ' ' + jbe short loc_E06E + mov al, [si+13h] + add al, 0FEh ; 'þ' + mov [si+13h], al + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_4] + push ax + push word ptr [si+12h] + mov al, [si+13h] + mov ah, 0 + push ax + call sub_E97A + mov al, [bp+var_2] + mov byte_23AE6, al + mov al, [bp+var_4] + mov byte_23AE7, al + push si + call sub_D6D4 + jmp short loc_E078 +; --------------------------------------------------------------------------- + +loc_E06E: ; CODE XREF: sub_DFE9+51j + cmp byte ptr [si+10h], 0 + jnz short loc_E078 + mov byte ptr [si+14h], 0 + +loc_E078: ; CODE XREF: sub_DFE9+83j sub_DFE9+89j + dec byte ptr [si+10h] + pop si + leave + retn 2 +sub_DFE9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E080 proc near ; CODE XREF: sub_C433+F3p + ; sub_C568+21Ap ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jnz short loc_E0F2 + cmp byte ptr [si+1Eh], 0 + jnz short loc_E0F2 + cmp byte ptr [si+1Dh], 0 + jz short loc_E0BF + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 1 + dec byte ptr [si+1Dh] + mov byte ptr [si+6], 0B4h ; '´' + push word_23AF0 + nop + push cs + call near ptr sub_B9AB + jmp short loc_E0EF +; --------------------------------------------------------------------------- + +loc_E0BF: ; CODE XREF: sub_E080+1Fj + cmp word ptr [si+1Ah], 0FF0h + jb short loc_E0F2 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+658Bh], 1 + push 7 + call sub_EC3A + mov al, [si+8] + mov [si+1Eh], al + push word ptr [si] + push word ptr [si+2] + mov al, byte ptr word_23AF0 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_CDBD + +loc_E0EF: ; CODE XREF: sub_E080+3Dj + call sub_E24B + +loc_E0F2: ; CODE XREF: sub_E080+13j sub_E080+19j ... + pop si + pop bp + retn 2 +sub_E080 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0F7 proc near ; CODE XREF: sub_C433+D4p sub_C568+28p ... + +var_3 = byte ptr -3 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, word_23AE8 + cmp byte ptr [si+6], 0 + jnz short loc_E10F + cmp byte ptr [si+1Eh], 0 + jz short loc_E112 + +loc_E10F: ; CODE XREF: sub_E0F7+10j + jmp loc_E1CF +; --------------------------------------------------------------------------- + +loc_E112: ; CODE XREF: sub_E0F7+16j + mov ax, [bp+arg_0] + mov bx, ax + sar ax, 1 + mov dx, [si] + sar dx, 5 + sub dx, ax + mov cx, [si+2] + sar cx, 5 + sub cx, ax + add bx, cx + cmp cx, 0 + jge short loc_E133 + xor cx, cx + jmp short loc_E13C +; --------------------------------------------------------------------------- + +loc_E133: ; CODE XREF: sub_E0F7+36j + cmp bx, 0B8h ; '¸' + jl short loc_E13C + mov bx, 0B7h ; '·' + +loc_E13C: ; CODE XREF: sub_E0F7+3Aj sub_E0F7+40j + mov [bp+var_3], bl + mov [bp+var_2], cx + mov cx, dx + ; Hack (and cx, 7) + db 081h + db 0e1h + db 007h + db 000h + sar dx, 3 + mov di, [bp+arg_0] + add di, cx + mov ch, 0FFh + shr ch, cl + mov bx, di + cmp bx, 8 + jg short loc_E163 + mov bh, 0FFh + mov cl, bl + shr bh, cl + xor ch, bh + +loc_E163: ; CODE XREF: sub_E0F7+62j + mov al, dl + mov bl, 0B8h ; '¸' + mul bl + mov bx, 4BA0h + add bx, ax + cmp byte ptr word_23AF0, 1 + jnz short loc_E179 + add bx, 0CF0h + +loc_E179: ; CODE XREF: sub_E0F7+7Cj + add bx, [bp+var_2] + mov dh, [bp+var_3] + mov ax, [bp+var_2] + +loc_E182: ; CODE XREF: sub_E0F7+D6j + cmp dl, 12h + jge short loc_E1CF + or dl, dl + jl short loc_E1B3 + mov ah, al + mov cl, 0B8h ; '¸' + +loc_E18F: ; CODE XREF: sub_E0F7+BAj + test [bx], ch + jz short loc_E1AA + xor dh, dh + shl dx, 8 + mov word_20E44, dx + mov ah, 0 + shl ax, 5 + mov word_20E46, ax + mov byte ptr [si+4], 1 + jmp short loc_E1CF +; --------------------------------------------------------------------------- + +loc_E1AA: ; CODE XREF: sub_E0F7+9Aj + inc bx + dec cl + inc ah + cmp ah, dh + jb short loc_E18F + +loc_E1B3: ; CODE XREF: sub_E0F7+92j + inc dl + mov ch, 0 + add bx, cx + sub di, 8 + mov ch, 0FFh + cmp di, 8 + jnb short loc_E1CB + mov cx, di + mov ch, 0FFh + shr ch, cl + not ch + +loc_E1CB: ; CODE XREF: sub_E0F7+CAj + or di, di + jg short loc_E182 + +loc_E1CF: ; CODE XREF: sub_E0F7:loc_E10Fj + ; sub_E0F7+8Ej ... + pop di + pop si + leave + retn 2 +sub_E0F7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E1D5 proc near ; CODE XREF: sub_DA43+3BAp + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 2 + push si + mov si, [bp+arg_0] + mov al, 1 + sub al, byte ptr word_23AF0 + mov [bp+var_2], al + cmp byte ptr [si+15h], 0 + jnz short loc_E1F3 + mov al, [si+73h] + jmp short loc_E1FD +; --------------------------------------------------------------------------- + +loc_E1F3: ; CODE XREF: sub_E1D5+17j + mov al, [si+73h] + mov [bp+var_1], al + add al, byte_23AEA + +loc_E1FD: ; CODE XREF: sub_E1D5+1Cj + mov [bp+var_1], al + mov byte ptr [si+73h], 3 + mov al, [bp+var_2] + cbw + shl ax, 7 + mov bx, ax + cmp byte ptr [bx+6619h], 3 + jbe short loc_E221 + mov al, [bp+var_2] + cbw + shl ax, 7 + mov bx, ax + dec byte ptr [bx+6619h] + +loc_E221: ; CODE XREF: sub_E1D5+3Dj + mov al, [si+7] + cbw + push ax + mov al, [bp+var_1] + cbw + pop dx + sub dx, ax + jg short loc_E240 + mov al, [si+7] + cbw + cmp ax, 1 + jle short loc_E240 + mov al, [si+7] + dec al + mov [bp+var_1], al + +loc_E240: ; CODE XREF: sub_E1D5+58j sub_E1D5+61j + call sub_E24B + mov al, [bp+var_1] + pop si + leave + retn 2 +sub_E1D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E24B proc near ; CODE XREF: sub_E080:loc_E0EFp + ; sub_E1D5:loc_E240p + push bp + mov bp, sp + cmp byte ptr word_23AF0, 0 + jnz short loc_E264 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+38h], 0 + jbe short loc_E264 + dec byte ptr es:[bx+38h] + +loc_E264: ; CODE XREF: sub_E24B+8j sub_E24B+13j + pop bp + retn +sub_E24B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E266 proc near ; CODE XREF: sub_9B14+332p + push bp + mov bp, sp + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 2200148h + push 0 + call sub_26CA + push large 2400148h + push 3 + call sub_26CA + push large 2600148h + push 6 + call sub_26CA + push large 2200168h + push 9 + call sub_26CA + push large 2400168h + push 0Ch + call sub_26CA + push large 2600168h + push 0Fh + call sub_26CA + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 2200148h + push 0 + call sub_26CA + push large 2400148h + push 3 + call sub_26CA + push large 2600148h + push 6 + call sub_26CA + push large 2200168h + push 9 + call sub_26CA + push large 2400168h + push 0Ch + call sub_26CA + push large 2600168h + push 0Fh + call sub_26CA + pop bp + retn +sub_E266 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E313 proc near ; CODE XREF: sub_9EBF+26p + push bp + mov bp, sp + push si + push di + mov si, 66A6h + xor ax, ax + jmp short loc_E326 +; --------------------------------------------------------------------------- + +loc_E31F: ; CODE XREF: sub_E313+16j + mov byte ptr [si], 0 + inc ax + add si, 0Eh + +loc_E326: ; CODE XREF: sub_E313+Aj + cmp ax, 20h ; ' ' + jl short loc_E31F + mov di, 3ED6h + xor ax, ax + jmp short loc_E339 +; --------------------------------------------------------------------------- + +loc_E332: ; CODE XREF: sub_E313+29j + mov byte ptr [di], 0 + inc ax + add di, 30h ; '0' + +loc_E339: ; CODE XREF: sub_E313+1Dj + cmp ax, 40h ; '@' + jl short loc_E332 + mov dword_23AF2, 0 + mov word_23AF6, 0 + mov byte_23AF9, 1 + mov byte_23B00, 0 + pop di + pop si + pop bp + retn +sub_E313 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E35B proc near ; CODE XREF: sub_E3F2+1C3p + ; sub_E3F2+1CFp ... + +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 di, [bp+arg_4] + mov si, [bp+arg_0] + cmp si, 0Ah + jl short loc_E3CE + cmp si, 64h ; 'd' + jl short loc_E39F + lea ax, [di+12h] + push ax + mov ax, [bp+arg_2] + add ax, 60h ; '`' + mov bx, 10h + cwd + idiv bx + push ax + mov ax, si + mov bx, 64h ; 'd' + cwd + idiv bx + add ax, 0A0h ; ' ' + push ax + push 0E1h ; 'á' + call sub_128C + mov bx, 64h ; 'd' + mov ax, si + cwd + idiv bx + mov si, dx + +loc_E39F: ; CODE XREF: sub_E35B+13j + lea ax, [di+14h] + push ax + mov ax, [bp+arg_2] + add ax, 60h ; '`' + mov bx, 10h + cwd + idiv bx + push ax + mov ax, si + mov bx, 0Ah + cwd + idiv bx + add ax, 0A0h ; ' ' + push ax + push 0E1h ; 'á' + call sub_128C + mov bx, 0Ah + mov ax, si + cwd + idiv bx + mov si, dx + +loc_E3CE: ; CODE XREF: sub_E35B+Ej + lea ax, [di+16h] + push ax + mov ax, [bp+arg_2] + add ax, 60h ; '`' + mov bx, 10h + cwd + idiv bx + push ax + lea ax, [si+0A0h] + push ax + push 0E1h ; 'á' + call sub_128C + pop di + pop si + pop bp + retn 6 +sub_E35B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E3F2 proc near ; CODE XREF: sub_9778:loc_994Ep + +var_6 = dword ptr -6 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte_20E3D + mov ah, 0 + mov dx, 1 + sub dx, ax + mov [bp+var_2], dx + mov si, 4 + cmp [bp+var_2], 0 + jz short loc_E411 + add si, 28h ; '(' + +loc_E411: ; CODE XREF: sub_E3F2+1Aj + mov ax, word_23AF6 + and ax, 7 + cmp ax, 1 + jnz loc_E602 + push si + push 8 + push ds + push offset aVlvVwb@vbvpvnv ; "‚l‚`‚w@‚b‚‚‚‚‚@@@~" + push 0E1h ; 'á' + call sub_2086 + push si + push 0Ah + push ds + push offset aGqbGwgagGbgni ; "ƒQ[ƒWƒAƒ^ƒbƒN‰ñ”@@@~" + push 0E1h ; 'á' + call sub_2086 + push si + push 0Ch + push ds + push offset aGGxgagGbgni ; "ƒ{ƒXƒAƒ^ƒbƒN‰ñ”@@@@~" + push 0E1h ; 'á' + call sub_2086 + push si + push 0Eh + push ds + push offset aGGxgkgobGtgli ; "ƒ{ƒXƒŠƒo[ƒTƒ‹‰ñ”@@@~" + push 0E1h ; 'á' + call sub_2086 + push si + push 10h + push ds + push offset aGGxgpgjgbgni ; "ƒ{ƒXƒpƒjƒbƒN‰ñ”@@@@~" + push 0E1h ; 'á' + call sub_2086 + push si + push 14h + push ds + push offset aB@b@b@vsvnvsvV ; "@@@‚s‚n‚s‚`‚k@@@@@" + push 0E1h ; 'á' + call sub_2086 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+33h], 8 + jnb short loc_E48C + push si + push 6 + push ds + push offset aB@b@vvvhvmvmvd ; "@@‚v‚h‚m‚m‚d‚q@‚a‚n‚m‚t‚r@@" + jmp short loc_E4A2 +; --------------------------------------------------------------------------- + +loc_E48C: ; CODE XREF: sub_E3F2+8Fj + push si + push 6 + push ds + push offset aB@b@b@vVkvkb@v ; "@@@‚`‚k‚k@‚b‚k‚d‚`‚qII@@" + push 0E1h ; 'á' + call sub_2086 + push si + push 12h + push ds + push offset aOcvsrlrfb@b@b@ ; "Žc‚èl”@@@@@@@@~" + +loc_E4A2: ; CODE XREF: sub_E3F2+98j + push 0E1h ; 'á' + call sub_2086 + mov ax, [bp+var_2] + shl ax, 7 + add ax, 65A6h + mov di, ax + cmp word_23AF6, 1 + jnz loc_E5AC + mov al, [di+72h] + mov byte_23DF4, al + mov al, [di+76h] + mov byte_23DF5, al + mov al, [di+77h] + mov byte_23DF6, al + mov al, [di+78h] + mov byte_23DF7, al + mov al, [di+79h] + mov byte_23DF8, al + movzx eax, byte_23DF4 + imul eax, 3E8h + mov dword_23DF0, eax + movzx eax, byte_23DF5 + imul eax, 2710h + add dword_23DF0, eax + movzx eax, byte_23DF6 + imul eax, 3A98h + add dword_23DF0, eax + movzx eax, byte_23DF7 + imul eax, 4E20h + add dword_23DF0, eax + movzx eax, byte_23DF8 + imul eax, 7530h + add dword_23DF0, eax + les bx, dword_1F2F0 + cmp byte ptr es:[bx+33h], 8 + jnz short loc_E55E + mov al, es:[bx+34h] + mov byte_23DF9, al + movzx eax, byte_23DF9 + imul eax, 186A0h + add dword_23DF0, eax + mov byte_220DC, 0FFh + +loc_E55E: ; CODE XREF: sub_E3F2+14Cj + mov eax, dword_23DF0 + mov ebx, 0C0h ; 'À' + cdq + idiv ebx + mov [bp+var_6], eax + cmp [bp+var_6], 0FFFFh + jbe short loc_E583 + mov word_23DEA, 0FFFFh + jmp short loc_E589 +; --------------------------------------------------------------------------- + +loc_E583: ; CODE XREF: sub_E3F2+187j + mov ax, word ptr [bp+var_6] + mov word_23DEA, ax + +loc_E589: ; CODE XREF: sub_E3F2+18Fj + mov eax, dword_23DF0 + mov [bp+var_6], eax + mov ebx, 2710h + cdq + idiv ebx + mov word_23DEC, dx + mov eax, [bp+var_6] + cdq + idiv ebx + mov word_23DEE, ax + +loc_E5AC: ; CODE XREF: sub_E3F2+C8j + push si + push 20h ; ' ' + mov al, byte_23DF4 + mov ah, 0 + push ax + call sub_E35B + push si + push 40h ; '@' + mov al, byte_23DF5 + mov ah, 0 + push ax + call sub_E35B + push si + push 60h ; '`' + mov al, byte_23DF6 + mov ah, 0 + push ax + call sub_E35B + push si + push 80h ; '€' + mov al, byte_23DF7 + mov ah, 0 + push ax + call sub_E35B + push si + push 0A0h ; ' ' + mov al, byte_23DF8 + mov ah, 0 + push ax + call sub_E35B + les bx, dword_1F2F0 + cmp byte ptr es:[bx+33h], 8 + jnz short loc_E602 + push si + push 0C0h ; 'À' + mov al, byte_23DF9 + mov ah, 0 + push ax + call sub_E35B + +loc_E602: ; CODE XREF: sub_E3F2+28j + ; sub_E3F2+201j + mov ax, 8 + imul si + mov si, ax + lea ax, [si+0D8h] + push ax + push large 4003E8h + push 0Fh + nop + push cs + call near ptr sub_D608 + lea ax, [si+0D8h] + push ax + push large 502710h + push 0Fh + nop + push cs + call near ptr sub_D608 + lea ax, [si+0D8h] + push ax + push large 603A98h + push 0Fh + nop + push cs + call near ptr sub_D608 + lea ax, [si+0D8h] + push ax + push large 704E20h + push 0Fh + nop + push cs + call near ptr sub_D608 + lea ax, [si+0D8h] + push ax + push large 807530h + push 0Fh + nop + push cs + call near ptr sub_D608 + les bx, dword_1F2F0 + cmp byte ptr es:[bx+33h], 8 + jnz short loc_E692 + lea ax, [si+0D0h] + push ax + push large 902710h + push 0Fh + nop + push cs + call near ptr sub_D608 + lea ax, [si+0D8h] + push ax + push large 900000h + push 0Fh + nop + push cs + call near ptr sub_D608 + +loc_E692: ; CODE XREF: sub_E3F2+27Aj + cmp word_23DEC, 0 + jz short loc_E6A7 + lea ax, [si+0D8h] + push ax + push 0A0h ; ' ' + push word_23DEC + jmp short loc_E6D6 +; --------------------------------------------------------------------------- + +loc_E6A7: ; CODE XREF: sub_E3F2+2A5j + lea ax, [si+0D8h] + push ax + push large 0A00000h + push 0Ch + nop + push cs + call near ptr sub_D608 + lea ax, [si+0C8h] + push ax + push large 0A00000h + push 0Ch + nop + push cs + call near ptr sub_D608 + lea ax, [si+0C0h] + push ax + push large 0A00000h + +loc_E6D6: ; CODE XREF: sub_E3F2+2B3j + push 0Ch + nop + push cs + call near ptr sub_D608 + lea ax, [si+0B8h] + push ax + push 0A0h ; ' ' + push word_23DEE + push 0Ch + nop + push cs + call near ptr sub_D668 + movzx eax, word_23DEA + cmp eax, dword_23DF0 + jge short loc_E716 + push word_23DEA + push [bp+var_2] + nop + push cs + call near ptr sub_D5B0 + movzx eax, word_23DEA + sub dword_23DF0, eax + jmp short loc_E733 +; --------------------------------------------------------------------------- + +loc_E716: ; CODE XREF: sub_E3F2+309j + cmp dword_23DF0, 0 + jle short loc_E733 + push word ptr dword_23DF0 + push [bp+var_2] + nop + push cs + call near ptr sub_D5B0 + mov dword_23DF0, 0 + +loc_E733: ; CODE XREF: sub_E3F2+322j + ; sub_E3F2+32Aj + pop di + pop si + leave + retn +sub_E3F2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E737 proc near ; CODE XREF: sub_DA43+327p + +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 al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov si, ax + mov ax, [si+2] + mov [bp+var_6], ax + cmp byte ptr [si+0Dh], 0 + jz loc_E83B + cmp byte ptr [si+0Dh], 3 + jnz short loc_E76D + mov ax, [si] + add ax, 0FC00h + mov [bp+var_4], ax + mov [bp+var_8], 0 + jmp short loc_E7C0 +; --------------------------------------------------------------------------- + +loc_E76D: ; CODE XREF: sub_E737+25j + cmp byte ptr [si+0Dh], 2 + jnz short loc_E782 + mov ax, [si] + add ax, 0FE00h + mov [bp+var_4], ax + mov [bp+var_8], 2 + jmp short loc_E7C0 +; --------------------------------------------------------------------------- + +loc_E782: ; CODE XREF: sub_E737+3Aj + cmp byte ptr [si+0Dh], 1 + jz short loc_E7B3 + cmp byte ptr [si+0Dh], 4 + jnz short loc_E7C0 + mov ax, [si] + add ax, 0FE80h + mov [bp+var_4], ax + sub [bp+var_6], 10h + push ax + push [bp+var_6] + call sub_14B0A + add [bp+var_4], 300h + push [bp+var_4] + push [bp+var_6] + call sub_14B0A + +loc_E7B3: ; CODE XREF: sub_E737+4Fj + mov ax, [si] + add ax, 0FF00h + mov [bp+var_4], ax + mov [bp+var_8], 3 + +loc_E7C0: ; CODE XREF: sub_E737+34j sub_E737+49j ... + mov di, 66A6h + push 1 + call sub_EC3A + jmp short loc_E7D4 +; --------------------------------------------------------------------------- + +loc_E7CC: ; CODE XREF: sub_E737+A2j + add [bp+var_4], 200h + inc [bp+var_8] + +loc_E7D4: ; CODE XREF: sub_E737+93j + cmp [bp+var_4], 0FE00h + jle short loc_E7CC + mov [bp+var_2], 0 + jmp short loc_E835 +; --------------------------------------------------------------------------- + +loc_E7E2: ; CODE XREF: sub_E737+102j + cmp byte ptr [di], 0 + jnz short loc_E82F + mov byte ptr [di], 1 + mov byte ptr [di+1], 0 + mov ax, [bp+var_4] + mov [di+2], ax + mov ax, [bp+var_6] + mov [di+4], ax + mov word ptr [di+6], 0FF40h + cmp byte ptr word_23AF0, 0 + jnz short loc_E80A + xor ax, ax + jmp short loc_E80D +; --------------------------------------------------------------------------- + +loc_E80A: ; CODE XREF: sub_E737+CDj + mov ax, 28h ; '(' + +loc_E80D: ; CODE XREF: sub_E737+D1j + mov [di+8], ax + mov byte ptr [di+0Ah], 0 + mov al, byte ptr word_23AF0 + mov [di+0Ch], al + inc [bp+var_8] + cmp [bp+var_8], 4 + jge short loc_E83B + add [bp+var_4], 200h + cmp [bp+var_4], 1200h + jge short loc_E83B + +loc_E82F: ; CODE XREF: sub_E737+AEj + inc [bp+var_2] + add di, 0Eh + +loc_E835: ; CODE XREF: sub_E737+A9j + cmp [bp+var_2], 20h ; ' ' + jl short loc_E7E2 + +loc_E83B: ; CODE XREF: sub_E737+1Dj sub_E737+EAj ... + pop di + pop si + leave + retn +sub_E737 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E83F proc near ; CODE XREF: sub_9778+3Dp + push bp + mov bp, sp + push si + mov si, 66A6h + xor dx, dx + jmp short loc_E862 +; --------------------------------------------------------------------------- + +loc_E84A: ; CODE XREF: sub_E83F+26j + cmp byte ptr [si], 0 + jz short loc_E85E + mov ax, [si+6] + add [si+4], ax + cmp word ptr [si+4], 0FFF0h + jg short loc_E85E + mov byte ptr [si], 0 + +loc_E85E: ; CODE XREF: sub_E83F+Ej sub_E83F+1Aj + inc dx + add si, 0Eh + +loc_E862: ; CODE XREF: sub_E83F+9j + cmp dx, 20h ; ' ' + jl short loc_E84A + pop si + pop bp + retn +sub_E83F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E86A proc near ; CODE XREF: sub_9778+131p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, 66A6h + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + xor di, di + jmp short loc_E8EF +; --------------------------------------------------------------------------- + +loc_E88E: ; CODE XREF: sub_E86A+88j + cmp byte ptr [si], 0 + jz short loc_E8EB + mov al, [si+0Ah] + mov ah, 0 + add ax, [si+8] + mov [bp+var_2], ax + push word ptr [si+2] + mov al, [si+0Ch] + mov ah, 0 + push ax + nop + push cs + call near ptr sub_A2D0 + mov [bp+var_4], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_6], ax + push [bp+var_4] + push ax + push [bp+var_2] + call sub_F100 + mov ax, [bp+var_4] + add ax, 10h + push ax + push [bp+var_6] + push [bp+var_2] + call sub_F100 + mov al, [si+0Ah] + add al, 2 + mov [si+0Ah], al + cmp byte ptr [si+0Ah], 8 + jb short loc_E8EB + mov byte ptr [si+0Ah], 0 + +loc_E8EB: ; CODE XREF: sub_E86A+27j sub_E86A+7Bj + inc di + add si, 0Eh + +loc_E8EF: ; CODE XREF: sub_E86A+22j + cmp di, 20h ; ' ' + jl short loc_E88E + pop di + pop si + leave + retn +sub_E86A endp + +seg001 ends + +; =========================================================================== + +; Segment type: Pure code +seg002 segment byte public 'CODE' use16 + assume cs:seg002 + ;org 8 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E8F8 proc far ; CODE XREF: sub_ECD0+18p + push bp + mov bp, sp + mov dword_1EF5C, 0A8000000h + mov dword_1EF60, 0B0000000h + mov dword_1EF64, 0B8000000h + mov dword_1EF68, 0E0000000h + pop bp + retf +sub_E8F8 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_E922 proc far ; CODE XREF: _main+24P + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_E934 + inc bx + mov byte_1EF6C, 1 + jmp short loc_E938 +; --------------------------------------------------------------------------- + +loc_E934: ; CODE XREF: sub_E922+8j + mov bl, byte_1EF6D + +loc_E938: ; CODE XREF: sub_E922+10j + mov byte_1DB3C, bl + mov ax, bx + retf +sub_E922 endp + +; --------------------------------------------------------------------------- + nop + mov byte_1EF6E, 60h ; '`' + mov byte_1EF6D, 0 + mov byte_1EF6C, 0 + mov byte_1EF6F, 0 + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_17E+2 + assume es:nothing + cmp byte ptr es:[bx+2], 50h ; 'P' + jnz short loc_E976 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_E976 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_E976 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_E976: ; CODE XREF: seg002:0072j seg002:0079j ... + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E97A proc far ; CODE XREF: sub_D05D+23P sub_D1E7+8AP ... + +arg_0 = word ptr 6 +arg_2 = byte ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = dword ptr 0Eh + + push bp + mov bp, sp + push si + mov dl, [bp+arg_2] + mov si, [bp+arg_0] + movsx eax, si + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+396h] + movsx ecx, word ptr [bx+316h] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_8] + mov es:[bx], ax + movsx eax, si + imul eax, ecx + sar eax, 8 + les bx, [bp+arg_4] + mov es:[bx], ax + pop si + pop bp + retf 0Ch +sub_E97A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E9C0 proc far ; CODE XREF: sub_173A2+2FFP + ; sub_17730+1C0P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = dword ptr 0Ch +arg_A = byte ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov ax, [bp+arg_C] + sub ax, [bp+arg_10] + push ax + mov ax, [bp+arg_E] + sub ax, [bp+arg_12] + push ax + call sub_1BD6 + add al, [bp+arg_A] + mov dl, al + movsx eax, si + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+396h] + movsx ecx, word ptr [bx+316h] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_6] + mov es:[bx], ax + movsx eax, si + imul eax, ecx + sar eax, 8 + les bx, [bp+arg_2] + mov es:[bx], ax + pop si + pop bp + retf 14h +sub_E9C0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EA1A proc far ; CODE XREF: sub_B454+33P + push bp + mov bp, sp + call sub_2A28 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_14AA + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_14AA + 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_21AA + call sub_2468 + call sub_1FDA + call sub_1C42 + call sub_73A + pop bp + retf +sub_EA1A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EA5D proc far ; CODE XREF: sub_BB12+211P + ; sub_BB12+232P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + movsx eax, [bp+arg_2] + movsx edx, [bp+arg_4] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_0] + pop bp + retf +sub_EA5D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EA77 proc far ; CODE XREF: sub_C7A5+3DP sub_C7A5+5EP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_1E74A, 0 + +loc_EA80: ; CODE XREF: sub_EA77+Fj + mov ax, word_1E74A + cmp ax, [bp+arg_0] + jb short loc_EA80 + pop bp + retf 2 +sub_EA77 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_EA8C proc far ; CODE XREF: sub_C7A5:loc_C7DBP + ; sub_C7A5:loc_C7EEP ... + xor ax, ax + mov word_1EFF6, ax + mov word_1EFF8, ax + mov word ptr unk_1EFFA, ax + mov word_1E716, ax + jmp short $+2 + mov bl, 2 + xor ax, ax + mov es, ax + assume es:seg000 + +loc_EAA2: ; CODE XREF: sub_EA8C+19Dj + mov ah, byte ptr es:loc_52F+2 + test ah, 4 + jz short loc_EAB1 + or word ptr unk_1EFFA, 1 + +loc_EAB1: ; CODE XREF: sub_EA8C+1Ej + test ah, 20h + jz short loc_EABB + or word ptr unk_1EFFA, 2 + +loc_EABB: ; CODE XREF: sub_EA8C+28j + test ah, 8 + jz short loc_EACA + or word_1EFF8, 20h + or word ptr unk_1EFFA, 4 + +loc_EACA: ; CODE XREF: sub_EA8C+32j + test ah, 10h + jz short loc_EAD9 + or word_1EFF8, 10h + or word ptr unk_1EFFA, 8 + +loc_EAD9: ; CODE XREF: sub_EA8C+41j + mov ah, byte ptr es:locret_533 + test ah, 1 + jz short loc_EAED + or word_1EFF8, 8 + or word ptr unk_1EFFA, 8 + +loc_EAED: ; CODE XREF: sub_EA8C+55j + test ah, 4 + jz short loc_EAFE + or word_1EFF8, 200h + or word ptr unk_1EFFA, 200h + +loc_EAFE: ; CODE XREF: sub_EA8C+64j + test ah, 8 + jz short loc_EB0D + or word_1EFF8, 2 + or word ptr unk_1EFFA, 2 + +loc_EB0D: ; CODE XREF: sub_EA8C+75j + test ah, 10h + jz short loc_EB1E + or word_1EFF8, 800h + or word ptr unk_1EFFA, 800h + +loc_EB1E: ; CODE XREF: sub_EA8C+84j + mov ah, byte ptr es:loc_532 + test ah, 40h + jz short loc_EB32 + or word_1EFF8, 4 + or word ptr unk_1EFFA, 4 + +loc_EB32: ; CODE XREF: sub_EA8C+9Aj + test ah, 4 + jz short loc_EB43 + or word_1EFF8, 100h + or word ptr unk_1EFFA, 100h + +loc_EB43: ; CODE XREF: sub_EA8C+A9j + test ah, 8 + jz short loc_EB52 + or word_1EFF8, 1 + or word ptr unk_1EFFA, 1 + +loc_EB52: ; CODE XREF: sub_EA8C+BAj + test ah, 10h + jz short loc_EB63 + or word_1EFF8, 400h + or word ptr unk_1EFFA, 400h + +loc_EB63: ; CODE XREF: sub_EA8C+C9j + mov ah, byte ptr es:loc_52F + test ah, 2 + jz short loc_EB77 + or word_1EFF6, 20h + or word ptr unk_1EFFA, 20h + +loc_EB77: ; CODE XREF: sub_EA8C+DFj + test ah, 4 + jz short loc_EB86 + or word_1EFF6, 10h + or word ptr unk_1EFFA, 10h + +loc_EB86: ; CODE XREF: sub_EA8C+EEj + test ah, 10h + jz short loc_EB91 + or word_1EFF6, 200h + +loc_EB91: ; CODE XREF: sub_EA8C+FDj + test ah, 20h + jz short loc_EB9B + or word_1EFF6, 2 + +loc_EB9B: ; CODE XREF: sub_EA8C+108j + test ah, 40h + jz short loc_EBA6 + or word_1EFF6, 800h + +loc_EBA6: ; CODE XREF: sub_EA8C+112j + mov ah, byte ptr es:loc_52E + test ah, 1 + jz short loc_EBB5 + or word_1EFF6, 4 + +loc_EBB5: ; CODE XREF: sub_EA8C+122j + test ah, 4 + jz short loc_EBBF + or word_1EFF6, 8 + +loc_EBBF: ; CODE XREF: sub_EA8C+12Cj + mov ah, byte ptr es:locret_52A+2 + test ah, 8 + jz short loc_EBCF + or word_1EFF6, 100h + +loc_EBCF: ; CODE XREF: sub_EA8C+13Bj + test ah, 10h + jz short loc_EBD9 + or word_1EFF6, 1 + +loc_EBD9: ; CODE XREF: sub_EA8C+146j + test ah, 20h + jz short loc_EBE4 + or word_1EFF6, 400h + +loc_EBE4: ; CODE XREF: sub_EA8C+150j + test ah, 1 + jz short loc_EBEF + or word ptr unk_1EFFA, 4000h + +loc_EBEF: ; CODE XREF: sub_EA8C+15Bj + mov ah, byte ptr es:locret_52A + test ah, 1 + jz short loc_EBFF + or word ptr unk_1EFFA, 1000h + +loc_EBFF: ; CODE XREF: sub_EA8C+16Bj + mov ah, byte ptr es:loc_52D + test ah, 10h + jz short loc_EC0F + or word ptr unk_1EFFA, 2000h + +loc_EC0F: ; CODE XREF: sub_EA8C+17Bj + mov ah, byte ptr es:loc_52F+1 + test ah, 10h + jz short loc_EC1E + or word ptr unk_1EFFA, 20h + +loc_EC1E: ; CODE XREF: sub_EA8C+18Bj + dec bl + jz short locret_EC2C + mov cx, 400h + +loc_EC25: ; CODE XREF: sub_EA8C+19Bj + out 5Fh, al + loop loc_EC25 + jmp loc_EAA2 +; --------------------------------------------------------------------------- + +locret_EC2C: ; CODE XREF: sub_EA8C+194j + retf +sub_EA8C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_EC2E proc far ; CODE XREF: sub_9B14+35CP + ; sub_A21F+54P ... + mov byte_1DB4B, 0 + mov byte_1DB4A, 0FFh + retf +sub_EC2E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EC3A proc far ; CODE XREF: sub_C0D8+33P sub_C7A5+2AP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov dx, [bp+arg_0] + cmp byte_1EF6C, 0 + jz short loc_EC72 + cmp byte_1DB4A, 0FFh + jnz short loc_EC56 + mov byte_1DB4A, dl + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_EC56: ; CODE XREF: sub_EC3A+12j + mov al, byte_1DB4A + mov ah, 0 + mov bx, ax + mov al, [bx+5F2h] + mov bx, dx + cmp al, [bx+5F2h] + ja short loc_EC72 + mov byte_1DB4A, dl + mov byte_1DB4B, 0 + +loc_EC72: ; CODE XREF: sub_EC3A+Bj sub_EC3A+2Dj + pop bp + retf 2 +sub_EC3A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_EC76 proc far ; CODE XREF: sub_9778+BEP sub_C7A5+2FP ... + cmp byte_1EF6C, 0 + jz short locret_ECB1 + cmp byte_1DB4A, 0FFh + jz short locret_ECB1 + cmp byte_1DB4B, 0 + jnz short loc_EC92 + mov ah, 0Ch + mov al, byte_1DB4A + int 60h ; - Banyan VINES, 3com - GET STATION ADDRESS + ; Return: AL = status, 00h successful, ES:SI -> 6-byte station address + ; 02h semaphore service is unavailable + +loc_EC92: ; CODE XREF: sub_EC76+13j + inc byte_1DB4B + mov al, byte_1DB4A + mov ah, 0 + mov bx, ax + mov al, [bx+613h] + cmp al, byte_1DB4B + jnb short locret_ECB1 + mov byte_1DB4B, 0 + mov byte_1DB4A, 0FFh + +locret_ECB1: ; CODE XREF: sub_EC76+5j sub_EC76+Cj ... + retf +sub_EC76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ECB2 proc far ; CODE XREF: _main+6FP sub_9B14+37BP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_1DB3C, 0 + jz short loc_ECCC + mov ax, [bp+arg_0] + cmp byte_1EF6D, 1 + jz short loc_ECCA + int 60h + jmp short loc_ECCC +; --------------------------------------------------------------------------- + +loc_ECCA: ; CODE XREF: sub_ECB2+12j + int 61h ; reserved for user interrupt + +loc_ECCC: ; CODE XREF: sub_ECB2+8j sub_ECB2+16j + pop bp + retf 2 +sub_ECB2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ECD0 proc far ; CODE XREF: _main+8P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push 4650h + call sub_224C + or ax, ax + jz short loc_ECE6 + mov ax, 1 + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_ECE6: ; CODE XREF: sub_ECD0+Dj + nop + push cs + call near ptr sub_E8F8 + call sub_20FC + call sub_73A + call sub_145C + call sub_2BC4 + push large [bp+arg_0] + call sub_296C + xor ax, ax + pop bp + retf 4 +sub_ECD0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED0E proc far + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + mov si, [bp+arg_4] + mov ax, si + imul ax, 48h + add ax, 1AB4h + push ds + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+1A9Ch] + call sub_1596 + push large [bp+arg_0] + mov ax, si + imul ax, 48h + add ax, 1AB4h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 1A9Ch + push ds + push ax + call sub_15EE + mov [bp+var_2], ax + pop si + leave + retf 6 +sub_ED0E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED54 proc far ; CODE XREF: sub_EE77+Bp sub_EE77+28p + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + cmp word_1D82C, 0 + jz short loc_ED6F + call sub_2C00 + mov ax, word_1E716 + or word ptr unk_1EFFA, ax + +loc_ED6F: ; CODE XREF: sub_ED54+Dj + mov ax, word_1EFF6 + or word ptr unk_1EFFA, ax + pop bp + retf +sub_ED54 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED78 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + pop bp + retf +sub_ED78 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED82 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + cmp word_1D82C, 0 + jz short loc_EDA2 + call sub_2C00 + mov ax, word_1E716 + mov word_1EFF6, ax + mov ax, word ptr unk_1EFFA + mov word_1EFF8, ax + +loc_EDA2: ; CODE XREF: sub_ED82+Dj + pop bp + retf +sub_ED82 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EDA4 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + cmp word_1D82C, 0 + jz short loc_EDC4 + call sub_2C00 + mov ax, word_1E716 + mov word_1EFF8, ax + mov ax, word ptr unk_1EFFA + mov word_1EFF6, ax + +loc_EDC4: ; CODE XREF: sub_EDA4+Dj + pop bp + retf +sub_EDA4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EDC6 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + mov ax, word ptr unk_1EFFA + or word_1EFF6, ax + cmp word_1D82C, 0 + jz short loc_EDE8 + call sub_2C00 + mov ax, word_1E716 + or word_1EFF6, ax + +loc_EDE8: ; CODE XREF: sub_EDC6+14j + mov word_1EFF8, 0 + pop bp + retf +sub_EDC6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EDF0 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + mov ax, word ptr unk_1EFFA + or ax, word_1EFF6 + mov word_1EFF8, ax + cmp word_1D82C, 0 + jz short loc_EE15 + call sub_2C00 + mov ax, word_1E716 + or word_1EFF8, ax + +loc_EE15: ; CODE XREF: sub_EDF0+17j + mov word_1EFF6, 0 + pop bp + retf +sub_EDF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EE1D proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + test byte_1EFFB, 10h + jnz short loc_EE33 + test byte_1EFFB, 20h + jz short loc_EE39 + +loc_EE33: ; CODE XREF: sub_EE1D+Dj + mov word ptr unk_1EFFA, 1000h + +loc_EE39: ; CODE XREF: sub_EE1D+14j + mov word_1EFF6, 0 + mov word_1EFF8, 0 + pop bp + retf +sub_EE1D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EE47 proc far + push bp + mov bp, sp + nop + push cs + call near ptr sub_EA8C + cmp word_1D82C, 0 + jz short loc_EE62 + call sub_2C00 + mov ax, word_1E716 + or word ptr unk_1EFFA, ax + +loc_EE62: ; CODE XREF: sub_EE47+Dj + mov ax, word_1EFF6 + or word ptr unk_1EFFA, ax + mov word_1EFF6, 0 + mov word_1EFF8, 0 + pop bp + retf +sub_EE47 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EE77 proc far + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + xor di, di + +loc_EE81: ; CODE XREF: sub_EE77+1Cj + push cs + call near ptr sub_ED54 + cmp word ptr unk_1EFFA, 0 + jz short loc_EE95 + push 1 + nop + push cs + call near ptr sub_EA77 + jmp short loc_EE81 +; --------------------------------------------------------------------------- + +loc_EE95: ; CODE XREF: sub_EE77+13j + or si, si + jnz short loc_EEB9 + mov si, 270Fh + jmp short loc_EEB9 +; --------------------------------------------------------------------------- + +loc_EE9E: ; CODE XREF: sub_EE77+44j + push cs + call near ptr sub_ED54 + cmp word ptr unk_1EFFA, 0 + jnz short loc_EEBD + inc di + push 1 + nop + push cs + call near ptr sub_EA77 + cmp si, 270Fh + jnz short loc_EEB9 + xor di, di + +loc_EEB9: ; CODE XREF: sub_EE77+20j sub_EE77+25j ... + cmp di, si + jl short loc_EE9E + +loc_EEBD: ; CODE XREF: sub_EE77+30j + pop di + pop si + pop bp + retf 2 +sub_EE77 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_EEC4 proc far ; CODE XREF: sub_9B14+32P + push di + xor ax, ax + mov di, 1C64h + xor dl, dl + jmp short loc_EED9 +; --------------------------------------------------------------------------- + +loc_EECE: ; CODE XREF: sub_EEC4+1Aj + xor dl, dl + mov cx, 8 + +loc_EED3: ; CODE XREF: sub_EEC4+13j + rol al, 1 + rcr dl, 1 + loop loc_EED3 + +loc_EED9: ; CODE XREF: sub_EEC4+8j + mov [di], dl + inc di + inc al + jnz short loc_EECE + pop di + retf +sub_EEC4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EEE2 proc far ; CODE XREF: sub_A44C+31P sub_A44C+4BP + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push large [bp+arg_0] + call sub_896 + push 8160h + call sub_22BC + mov bx, [bp+arg_4] + shl bx, 2 + mov [bx+1D66h], ax + mov word ptr [bx+1D64h], 0 + push large dword ptr [bx+1D64h] + push 8160h + call sub_7E2 + call sub_7D2 + pop bp + retf 6 +sub_EEE2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EF1C proc far ; CODE XREF: sub_B454+27P sub_B454+2EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov bx, [bp+arg_0] + shl bx, 2 + mov ax, [bx+1D66h] + or dx, [bx+1D64h] + or dx, ax + jz short loc_EF41 + push ax + call sub_23C0 + xor ax, ax + mov [bx+1D66h], ax + mov [bx+1D64h], ax + +loc_EF41: ; CODE XREF: sub_EF1C+13j + pop bp + retf 2 +sub_EF1C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EF46 proc far ; CODE XREF: sub_C9FE+28P + +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 0C0h ; 'À' + push 0 + call sub_F5C + mov ax, [bp+arg_4] + sar ax, 3 + add ax, 3930h + mov di, ax + mov ax, [bp+arg_2] + shr ax, 1 + mov dx, ax + shl ax, 2 + add ax, dx + add ax, 0A800h + mov es, ax + assume es:nothing + add ax, 800h + mov fs, ax + add ax, 800h + mov gs, ax + push ds + mov bx, [bp+arg_0] + shl bx, 2 + lds si, [bx+1D64h] + mov dx, 9 + nop + +loc_EF8A: ; CODE XREF: sub_EF46+4Cj + mov cx, dx + rep movsd + sub di, 74h ; 't' + jnb short loc_EF8A + xor al, al + out 7Ch, al + xor si, si + add di, 3980h + mov ax, gs + add ax, 2800h + mov bx, ax + mov dx, 9 + +loc_EFA8: ; CODE XREF: sub_EF46+A4j + mov cx, dx + +loc_EFAA: ; CODE XREF: sub_EF46+9Fj + mov eax, [si] + or eax, eax + jz short loc_EFDF + mov eax, [si+19E0h] + or es:[di], eax + mov eax, [si+33C0h] + or fs:[di], eax + mov eax, [si+4DA0h] + or gs:[di], eax + mov gs, bx + assume gs:nothing + mov eax, [si+6780h] + or gs:[di], eax + mov ax, bx + sub ax, 2800h + mov gs, ax + assume gs:nothing + +loc_EFDF: ; CODE XREF: sub_EF46+6Aj + add si, 4 + add di, 4 + loop loc_EFAA + sub di, 74h ; 't' + jnb short loc_EFA8 + pop ds + pop di + pop si + pop bp + retf 6 +sub_EF46 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EFF4 proc far ; CODE XREF: sub_148B5+C4P + ; sub_151E1+130P ... + +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 + push si + push di + push ds + mov ax, [bp+arg_6] + sar ax, 3 + add ax, 3930h + mov di, ax + mov ax, [bp+arg_4] + shr ax, 1 + mov dx, ax + shl ax, 2 + add ax, dx + mov bx, [bp+arg_2] + shl bx, 2 + lds si, [bx+1D64h] + mov si, 4DA0h + add ax, 0A800h + mov fs, ax + add ax, 800h + mov gs, ax + add ax, 800h + mov es, ax + add ax, 2800h + mov bx, ax + mov dx, di + cmp [bp+arg_0], 0 + jz short loc_F071 + +loc_F03A: ; CODE XREF: sub_EFF4+6Aj + mov cx, 9 + +loc_F03D: ; CODE XREF: sub_EFF4+65j + mov eax, [si-4DA0h] + not eax + or eax, [si-33C0h] + mov fs:[di], eax + mov eax, [si-19E0h] + mov gs:[di], eax + movsd + loop loc_F03D + sub di, 74h ; 't' + jnb short loc_F03A + mov di, dx + mov es, bx + +loc_F064: ; CODE XREF: sub_EFF4+79j + mov cx, 9 + rep movsd + sub di, 74h ; 't' + jnb short loc_F064 + jmp short loc_F09E +; --------------------------------------------------------------------------- + +loc_F071: ; CODE XREF: sub_EFF4+44j sub_EFF4+99j + mov cx, 9 + +loc_F074: ; CODE XREF: sub_EFF4+94j + mov eax, [si-33C0h] + mov fs:[di], eax + mov eax, [si-19E0h] + mov gs:[di], eax + movsd + loop loc_F074 + sub di, 74h ; 't' + jnb short loc_F071 + mov di, dx + mov es, bx + +loc_F093: ; CODE XREF: sub_EFF4+A8j + mov cx, 9 + rep movsd + sub di, 74h ; 't' + jnb short loc_F093 + +loc_F09E: ; CODE XREF: sub_EFF4+7Bj + pop ds + pop di + pop si + pop bp + retf 8 +sub_EFF4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F0A6 proc far ; CODE XREF: sub_A4A1+5P sub_A4A1+CP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + +loc_F0A9: + push si + push di + mov cx, 8160h + mov bx, [bp+arg_0] + shl bx, 2 + les di, [bx+1D64h] + mov bx, 1C64h + +loc_F0BB: ; CODE XREF: sub_F0A6+1Dj + mov al, es:[di] + xlat + mov es:[di], al + inc di + loop loc_F0BB + mov cx, 398h + xor bx, bx + +loc_F0CA: ; CODE XREF: sub_F0A6+3Fj + xor di, di + mov si, 23h ; '#' + +loc_F0CF: ; CODE XREF: sub_F0A6+3Aj + mov al, es:[bx+di] + mov dl, es:[bx+si] + mov es:[bx+si], al + mov es:[bx+di], dl + dec si + inc di + cmp di, 11h + jbe short loc_F0CF + add bx, 24h ; '$' + loop loc_F0CA + pop di + pop si + pop bp + retf 2 +sub_F0A6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F0EE proc far ; CODE XREF: sub_9B14+341P + push 1 + call sub_2C42 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov ah, 1 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + retf +sub_F0EE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F100 proc far ; CODE XREF: sub_B80B+7BP sub_B80B+DDP ... + +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_0] + mov dx, [bp+arg_4] + mov al, byte_1F2EA + xor bh, bh + mov bl, al + shl bx, 4 + add bx, dx + mov si, word_1F2E4 + mov cx, word_1F2E6 + cmp bx, cx + jge short loc_F14A + cmp dx, si + jl short loc_F136 + +loc_F127: ; CODE XREF: sub_F100+48j sub_F100+59j + mov ah, 2 + mov bx, [bp+arg_2] + sar bx, 1 + mov cx, word_1F2E8 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + jmp short loc_F15B +; --------------------------------------------------------------------------- + +loc_F136: ; CODE XREF: sub_F100+25j + cmp bx, si + jl short loc_F15B + +loc_F13A: ; CODE XREF: sub_F100+46j + add dx, 10h + dec al + jz short loc_F15B + add di, 2 + cmp dx, si + jl short loc_F13A + jmp short loc_F127 +; --------------------------------------------------------------------------- + +loc_F14A: ; CODE XREF: sub_F100+21j + cmp dx, cx + jge short loc_F15B + +loc_F14E: ; CODE XREF: sub_F100+57j + sub bx, 10h + dec al + jz short loc_F15B + cmp bx, cx + jge short loc_F14E + jmp short loc_F127 +; --------------------------------------------------------------------------- + +loc_F15B: ; CODE XREF: sub_F100+34j sub_F100+38j ... + pop di + pop si + pop bp + retf 6 +sub_F100 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F162 proc far ; CODE XREF: sub_1714F+58P + ; sub_19B4F+BEP + +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 di, [bp+arg_2] + mov dx, [bp+arg_6] + mov al, byte_1F2EA + xor bh, bh + mov bl, al + shl bx, 4 + add bx, dx + mov si, word_1F2E4 + mov cx, word_1F2E6 + cmp bx, cx + jge short loc_F1BA + cmp dx, si + jl short loc_F1A6 + +loc_F189: ; CODE XREF: sub_F162+56j sub_F162+67j + mov ah, 2 + mov bx, [bp+arg_4] + sar bx, 1 + mov cx, word_1F2E8 + +loc_F194: ; CODE XREF: sub_F162+42j + mov si, [bp+arg_0] + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + dec si + jz short loc_F1CB + add bx, cx + cmp bx, 0C8h ; 'È' + jge short loc_F1CB + jmp short loc_F194 +; --------------------------------------------------------------------------- + +loc_F1A6: ; CODE XREF: sub_F162+25j + cmp bx, si + jl short loc_F1CB + +loc_F1AA: ; CODE XREF: sub_F162+54j + add dx, 10h + dec al + jz short loc_F1CB + add di, 2 + cmp dx, si + jl short loc_F1AA + jmp short loc_F189 +; --------------------------------------------------------------------------- + +loc_F1BA: ; CODE XREF: sub_F162+21j + cmp dx, cx + jge short loc_F1CB + +loc_F1BE: ; CODE XREF: sub_F162+65j + sub bx, 10h + dec al + jz short loc_F1CB + cmp bx, cx + jge short loc_F1BE + jmp short loc_F189 +; --------------------------------------------------------------------------- + +loc_F1CB: ; CODE XREF: sub_F162+38j sub_F162+40j ... + pop di + pop si + pop bp + retf 8 +sub_F162 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F1D2 proc far ; CODE XREF: sub_D1E7+EAP sub_D340+8BP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov di, [bp+arg_0] + mov dx, [bp+arg_4] + xor bh, bh + mov bl, al + shl bx, 4 + add bx, dx + mov ah, 2 + mov bx, [bp+arg_2] + sar bx, 1 + mov al, byte_1F2EA + mov cx, word_1F2E8 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + pop di + pop bp + retf 6 +sub_F1D2 endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 0Ah + 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_F1FA proc near ; CODE XREF: sub_F58C+Fp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 6, 0 + push si + push di + mov di, [bp+arg_4] + cmp [bp+arg_0], 1 + jnz short loc_F210 + push 10h + call sub_EC3A + +loc_F210: ; CODE XREF: sub_F1FA+Dj + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + mov di, ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 10h + mov [bp+arg_2], ax + mov ax, 8 + imul [bp+arg_0] + mov [bp+arg_0], ax + mov al, byte ptr [bp+arg_0] + mov [bp+var_5], al + cmp byte ptr word_1FE88, 1 + jnz short loc_F253 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_F25F +; --------------------------------------------------------------------------- + +loc_F253: ; CODE XREF: sub_F1FA+49j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_F25F: ; CODE XREF: sub_F1FA+57j + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + xor si, si + jmp short loc_F2C3 +; --------------------------------------------------------------------------- + +loc_F26E: ; CODE XREF: sub_F1FA+CCj + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+arg_0] + push di + call sub_EA5D + add sp, 6 + add ax, 0FFE8h + mov [bp+var_2], ax + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+arg_0] + push [bp+arg_2] + call sub_EA5D + add sp, 6 + add ax, 0FFE8h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push 1930h + call sub_F100 + inc si + mov al, [bp+var_5] + add al, 10h + mov [bp+var_5], al + +loc_F2C3: ; CODE XREF: sub_F1FA+72j + cmp si, 10h + jl short loc_F26E + mov al, 0 + sub al, byte ptr [bp+arg_0] + mov [bp+var_5], al + xor si, si + jmp short loc_F32F +; --------------------------------------------------------------------------- + +loc_F2D4: ; CODE XREF: sub_F1FA+138j + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + mov ax, [bp+arg_0] + add ax, ax + push ax + push di + call sub_EA5D + add sp, 6 + add ax, 0FFE8h + mov [bp+var_2], ax + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + mov ax, [bp+arg_0] + add ax, ax + push ax + push [bp+arg_2] + call sub_EA5D + add sp, 6 + add ax, 0FFE8h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push 1930h + call sub_F100 + inc si + mov al, [bp+var_5] + add al, 20h ; ' ' + mov [bp+var_5], al + +loc_F32F: ; CODE XREF: sub_F1FA+D8j + cmp si, 8 + jl short loc_F2D4 + cmp [bp+arg_0], 0C8h ; 'È' + jl short loc_F34E + push 0A00h + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_D5B0 + mov al, 0 + jmp short loc_F350 +; --------------------------------------------------------------------------- + +loc_F34E: ; CODE XREF: sub_F1FA+13Fj + mov al, 0FFh + +loc_F350: ; CODE XREF: sub_F1FA+152j + pop di + pop si + leave + retn 6 +sub_F1FA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F356 proc near ; CODE XREF: sub_F52D+4p sub_F72D+3p ... + push bp + mov bp, sp + mov ax, word_1F346 + add word_1F33E, ax + mov ax, word_1F348 + add word_1F340, ax + inc byte_1F350 + mov al, byte_1F350 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push large 100000h + call sub_EA5D + add sp, 6 + mov word_1F348, ax + cmp word_1F33E, 300h + jg short loc_F399 + mov word_1F346, 20h ; ' ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_F399: ; CODE XREF: sub_F356+39j + cmp word_1F33E, 0F00h + jl short loc_F3A7 + mov word_1F346, 0FFE0h + +loc_F3A7: ; CODE XREF: sub_F356+49j + pop bp + retn +sub_F356 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F3A9 proc near ; CODE XREF: sub_F848:loc_F8F2p + ; sub_FED8:loc_FF9Fp ... + push bp + mov bp, sp + mov ax, word_1F346 + add word_1F33E, ax + add word_1F340, 20h ; ' ' + cmp word_1F33E, 300h + jg short loc_F3C8 + mov word_1F346, 20h ; ' ' + jmp short loc_F3D6 +; --------------------------------------------------------------------------- + +loc_F3C8: ; CODE XREF: sub_F3A9+15j + cmp word_1F33E, 0F00h + jl short loc_F3D6 + mov word_1F346, 0FFE0h + +loc_F3D6: ; CODE XREF: sub_F3A9+1Dj sub_F3A9+25j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, 1 + sub bx, ax + add bx, bx + mov word ptr [bx+1DCAh], 0 + cmp word_1F340, 1A00h + jl short loc_F400 + mov byte_1F34F, 0 + mov byte_1DB9E, 0FFh + mov word_21434, 1400h + +loc_F400: ; CODE XREF: sub_F3A9+45j + pop bp + retn +sub_F3A9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F402 proc near ; CODE XREF: sub_F848+4p sub_FED8+4p ... + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 5 + jnz loc_F4AE + cmp byte_1DB9E, 0FFh + jnz short loc_F481 + mov si, 1DFEh + cmp byte ptr word_1FE88, 1 + jnz short loc_F42B + add si, 20h ; ' ' + +loc_F42B: ; CODE XREF: sub_F402+24j + mov di, 1DDEh + mov ax, ds + mov es, ax + assume es:dseg + mov cx, 10h + rep movsw + push 7 + call sub_13A36 + inc al + mov byte_1F352, al + mov word_1F3B0, 0 + mov al, byte ptr word_1FE88 + mov byte_1DB9E, al + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push 12h + call sub_EC3A + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, 1 + sub bx, ax + add bx, bx + mov word ptr [bx+1DCAh], 1 + mov al, 1 + jmp short loc_F4B0 +; --------------------------------------------------------------------------- + +loc_F481: ; CODE XREF: sub_F402+1Aj + cmp byte_1F34F, 0FFh + jz short loc_F4AE + mov byte_1F34F, 0FFh + mov word_1F3B0, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+1DCAh], 0 + +loc_F4AE: ; CODE XREF: sub_F402+11j sub_F402+84j + mov al, 0 + +loc_F4B0: ; CODE XREF: sub_F402+7Dj + pop di + pop si + pop bp + retn +sub_F402 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F4B4 proc far ; CODE XREF: sub_F848+108p + ; sub_FED8+125p ... + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp word_1F34A, 0 + jg short locret_F510 + cmp byte_1F34F, 0FFh + jz short locret_F510 + mov byte_1F34F, 0FFh + mov word_1F3B0, 0 + push word ptr [bp+var_1] + call sub_A3A8 + mov al, [bp+var_1] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 5 + jz short loc_F4F6 + mov word_21434, 1400h + +loc_F4F6: ; CODE XREF: sub_F4B4+3Aj + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+1DCAh], 0 + cmp byte_1F39E, 10h + jnb short locret_F510 + inc byte_1F39E + +locret_F510: ; CODE XREF: sub_F4B4+12j sub_F4B4+19j ... + leave + retf +sub_F4B4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F512 proc near ; CODE XREF: sub_F848+53p sub_FED8+67p ... + push bp + mov bp, sp + cmp byte_1F34F, 80h ; '€' + jz short loc_F52B + mov ax, word_1F33E + mov word_1F326, ax + mov ax, word_1F340 + add ax, 800h + mov word_1F328, ax + +loc_F52B: ; CODE XREF: sub_F512+8j + pop bp + retn +sub_F512 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F52D proc near ; CODE XREF: sub_F848:loc_F8D9p + ; sub_FED8:loc_FF86p ... + +var_1 = byte ptr -1 + + enter 2, 0 + call sub_F356 + cmp word_1F3B0, 50h ; 'P' + jb short locret_F58A + +loc_F53B: ; CODE XREF: sub_F52D+38j + push 0Fh + call sub_13A36 + mov [bp+var_1], al + mov al, byte_1F324 + mov ah, 0 + add ax, 2 + mov dl, [bp+var_1] + mov dh, 0 + cmp ax, dx + jl short loc_F567 + mov al, byte_1F324 + mov ah, 0 + add ax, 0FFFEh + mov dl, [bp+var_1] + mov dh, 0 + cmp ax, dx + jle short loc_F53B + +loc_F567: ; CODE XREF: sub_F52D+27j + mov al, [bp+var_1] + mov byte_1F324, al + mov word_1F3B0, 0 + add al, 2 + mov byte_1F34F, al + inc byte_1F351 + mov al, byte_1F351 + cmp al, byte_1F352 + jbe short locret_F58A + mov byte_1F34F, 80h ; '€' + +locret_F58A: ; CODE XREF: sub_F52D+Cj sub_F52D+56j + leave + retn +sub_F52D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F58C proc near ; CODE XREF: sub_FAE8:loc_FB41p + ; sub_10263:loc_102C3p ... + push bp + mov bp, sp + push word_1F33E + push word_1F340 + push word_1F3B0 + call sub_F1FA + mov byte_1F34F, al + cmp byte_1F34F, 0 + jnz short loc_F5AD + mov byte_1DB9E, 0FFh + +loc_F5AD: ; CODE XREF: sub_F58C+1Aj + pop bp + retn +sub_F58C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F5AF proc far ; CODE XREF: sub_A854+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 6Eh ; 'n' + mov byte ptr [si+13h], 0 + mov word ptr [si+0Eh], 280h + or dx, dx + jz short loc_F5F5 + add word ptr [si+0Eh], 28h ; '(' + +loc_F5F5: ; CODE XREF: sub_F5AF+40j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_F5AF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F5FE proc near ; CODE XREF: sub_F848:loc_F8DEp + push bp + mov bp, sp + mov byte_1F353, 1 + cmp word_1F3B0, 20h ; ' ' + jb short loc_F683 + cmp word_1F3B0, 20h ; ' ' + jnz short loc_F619 + mov byte_1FE50, 0 + +loc_F619: ; CODE XREF: sub_F5FE+14j + cmp word_1F3B0, 50h ; 'P' + jnb short loc_F673 + test byte ptr word_1F3B0, 3 + jnz short loc_F683 + mov al, byte_1FE50 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 22h ; '"' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_1F39F + mov byte ptr word_23E42, al + mov byte_23E4E, 2 + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + call sub_17730 + mov al, byte_1F39F + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov byte ptr word_23E42, al + call sub_17730 + mov al, byte_1FE50 + add al, 7 + mov byte_1FE50, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_F673: ; CODE XREF: sub_F5FE+20j + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_F683: ; CODE XREF: sub_F5FE+Dj sub_F5FE+27j + pop bp + retn +sub_F5FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F685 proc near ; CODE XREF: sub_F848:loc_F8E3p + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte_1F353, 1 + cmp word_1F3B0, 38h ; '8' + jb locret_F72B + cmp word_1F3B0, 40h ; '@' + jnz short loc_F6BA + push large 801700h + push word ptr [bp+var_1] + call sub_19B06 + push 1180h + jmp short loc_F706 +; --------------------------------------------------------------------------- + +loc_F6BA: ; CODE XREF: sub_F685+20j + cmp word_1F3B0, 50h ; 'P' + jnz short loc_F6D4 + push large 3801700h + push word ptr [bp+var_1] + call sub_19B06 + push 0E80h + jmp short loc_F706 +; --------------------------------------------------------------------------- + +loc_F6D4: ; CODE XREF: sub_F685+3Aj + cmp word_1F3B0, 60h ; '`' + jnz short loc_F6EE + push large 6801700h + push word ptr [bp+var_1] + call sub_19B06 + push 0B80h + jmp short loc_F706 +; --------------------------------------------------------------------------- + +loc_F6EE: ; CODE XREF: sub_F685+54j + cmp word_1F3B0, 70h ; 'p' + jnz short loc_F713 + push large 9801700h + push word ptr [bp+var_1] + call sub_19B06 + push 880h + +loc_F706: ; CODE XREF: sub_F685+33j sub_F685+4Dj ... + push 1700h + push word ptr [bp+var_1] + call sub_19B06 + leave + retn +; --------------------------------------------------------------------------- + +loc_F713: ; CODE XREF: sub_F685+6Ej + cmp word_1F3B0, 84h ; '„' + jnz short locret_F72B + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +locret_F72B: ; CODE XREF: sub_F685+17j sub_F685+94j + leave + retn +sub_F685 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F72D proc near ; CODE XREF: sub_F848:loc_F8E8p + push bp + mov bp, sp + call sub_F356 + test byte ptr word_1F3B0, 1Fh + jnz short loc_F7A8 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 26h ; '&' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + cmp byte_1F39E, 8 + jnb short loc_F768 + mov al, byte_1F3A0 + jmp short loc_F795 +; --------------------------------------------------------------------------- + +loc_F768: ; CODE XREF: sub_F72D+34j + mov al, byte_1F3A2 + mov byte ptr word_23E42, al + mov al, byte_1F3A3 + mov byte_23E47, al + mov byte_23E4E, 2 + call sub_17730 + mov al, byte_1F3A3 + mov ah, 0 + push ax + mov ax, 100h + cwd + pop bx + idiv bx + add al, byte ptr word_23E42+1 + mov byte ptr word_23E42+1, al + mov al, byte_1F3A4 + +loc_F795: ; CODE XREF: sub_F72D+39j + mov byte_23E47, al + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + mov byte_23E4E, 4 + call sub_17730 + +loc_F7A8: ; CODE XREF: sub_F72D+Bj + cmp word_1F3B0, 82h ; '‚' + jb short loc_F7BB + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_F7BB: ; CODE XREF: sub_F72D+81j + pop bp + retn +sub_F72D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F7BD proc near ; CODE XREF: sub_F848:loc_F8EDp + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte_1F353, 1 + cmp word_1F3B0, 38h ; '8' + jb short locret_F846 + cmp word_1F3B0, 40h ; '@' + jnz short loc_F7F0 + push large 2001700h + push word ptr [bp+var_1] + call sub_19B06 + push 1000h + jmp short loc_F822 +; --------------------------------------------------------------------------- + +loc_F7F0: ; CODE XREF: sub_F7BD+1Ej + cmp word_1F3B0, 50h ; 'P' + jnz short loc_F80A + push large 5001700h + push word ptr [bp+var_1] + call sub_19B06 + push 0D00h + jmp short loc_F822 +; --------------------------------------------------------------------------- + +loc_F80A: ; CODE XREF: sub_F7BD+38j + cmp word_1F3B0, 60h ; '`' + jnz short loc_F82F + push large 8001700h + push word ptr [bp+var_1] + call sub_19B06 + push 0A00h + +loc_F822: ; CODE XREF: sub_F7BD+31j sub_F7BD+4Bj + push 1700h + push word ptr [bp+var_1] + call sub_19B06 + leave + retn +; --------------------------------------------------------------------------- + +loc_F82F: ; CODE XREF: sub_F7BD+52j + cmp word_1F3B0, 70h ; 'p' + jnz short locret_F846 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +locret_F846: ; CODE XREF: sub_F7BD+17j sub_F7BD+77j + leave + retn +sub_F7BD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F848 proc far ; DATA XREF: sub_A854+85o + ; sub_A854+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_F887 + mov al, byte_1F39E + add al, al + add al, 32h ; '2' + mov byte_1F39F, al + mov al, byte_1F39E + add al, al + add al, 18h + mov byte_1F3A0, al + mov al, byte_1F39E + add al, 20h ; ' ' + mov byte_1F3A1, al + mov al, byte_1F39E + add al, 0Ah + mov byte_1F3A2, al + mov al, byte_1F39E + add al, 16h + mov byte_1F3A3, al + mov al, byte_1F39E + add al, 16h + mov byte_1F3A4, al + +loc_F887: ; CODE XREF: sub_F848+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_F953 ; jumptable 0000F8BF case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_F956 + +loc_F8B0: ; CODE XREF: sub_F848+73j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_F8BF + add bx, 2 + loop loc_F8B0 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8BF: ; CODE XREF: sub_F848+6Ej + jmp word ptr cs:[bx+28h] ; switch jump + +loc_F8C3: ; DATA XREF: seg003:078Eo + cmp word_1F3B0, 64h ; 'd' ; jumptable 0000F8BF case 0 + jnz locret_F953 ; jumptable 0000F8BF case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8D9: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F52D ; jumptable 0000F8BF case 1 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8DE: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F5FE ; jumptable 0000F8BF cases 2-5 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8E3: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F685 ; jumptable 0000F8BF cases 8-10 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8E8: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F72D ; jumptable 0000F8BF cases 11-16 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8ED: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F7BD ; jumptable 0000F8BF cases 6,7,17 + jmp short loc_F8F5 ; default +; --------------------------------------------------------------------------- + +loc_F8F2: ; CODE XREF: sub_F848:loc_F8BFj + ; DATA XREF: seg003:078Eo + call sub_F3A9 ; jumptable 0000F8BF case 128 + +loc_F8F5: ; CODE XREF: sub_F848+75j sub_F848+8Fj ... + mov ax, word_1F33E ; default + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 1Ch + mov word_220F4, 1Ch + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_F953: ; CODE XREF: sub_F848+46j + ; sub_F848:loc_F8BFj ... + leave ; jumptable 0000F8BF case 255 + retf +sub_F848 endp + +; --------------------------------------------------------------------------- + db 0 +word_F956 dw 0, 1, 2, 3 ; DATA XREF: sub_F848+65o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_F8C3 ; jump table for switch statement + dw offset loc_F8D9 + dw offset loc_F8DE + dw offset loc_F8DE + dw offset loc_F8DE + dw offset loc_F8DE + dw offset loc_F8ED + dw offset loc_F8ED + dw offset loc_F8E3 + dw offset loc_F8E3 + dw offset loc_F8E3 + dw offset loc_F8E8 + dw offset loc_F8E8 + dw offset loc_F8E8 + dw offset loc_F8E8 + dw offset loc_F8E8 + dw offset loc_F8E8 + dw offset loc_F8ED + dw offset loc_F8F2 + dw offset locret_F953 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F9A6 proc near ; CODE XREF: sub_FAE8+54p + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_3], al + mov byte_1F2EA, 0Bh + mov word_1F2E8, 30h ; '0' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFA8h + mov si, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov di, ax + push si + push ax + push word_1F34C + call sub_F100 + cmp byte_1F34E, 0 + jz short loc_FA0A + mov byte_1F2EA, 3 + mov word_1F2E8, 28h ; '(' + add si, 40h ; '@' + add di, 10h + push si + push di + mov ax, word_1F34C + add ax, 16h + push ax + jmp short loc_FA68 +; --------------------------------------------------------------------------- + +loc_FA0A: ; CODE XREF: sub_F9A6+46j + cmp byte_1F353, 1 + jnz short loc_FA6D + mov ax, word_23AF6 + and ax, 3 + cmp ax, 2 + jnb short loc_FA49 + mov byte_1F2EA, 3 + mov word_1F2E8, 28h ; '(' + add si, 40h ; '@' + add di, 10h + push si + push di + mov ax, word_1F34C + add ax, 1Ch + push ax + call sub_F100 + sub si, 20h ; ' ' + add di, 20h ; ' ' + mov ax, word_1F34C + add ax, 0F00h + jmp short loc_FA55 +; --------------------------------------------------------------------------- + +loc_FA49: ; CODE XREF: sub_F9A6+74j + add si, 20h ; ' ' + add di, 30h ; '0' + mov ax, word_1F34C + add ax, 1180h + +loc_FA55: ; CODE XREF: sub_F9A6+A1j + mov [bp+var_2], ax + mov byte_1F2EA, 7 + mov word_1F2E8, 8 + push si + push di + push [bp+var_2] + +loc_FA68: ; CODE XREF: sub_F9A6+62j + call sub_F100 + +loc_FA6D: ; CODE XREF: sub_F9A6+69j + pop di + pop si + leave + retn +sub_F9A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FA71 proc near ; CODE XREF: sub_FAE8+48p + +var_3 = byte ptr -3 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov si, [bp+arg_0] + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_3], al + mov byte_1F2EA, 0Bh + mov word_1F2E8, 30h ; '0' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFA8h + mov di, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov [bp+var_2], ax + mov ah, 8 + mov dx, 0AAAAh + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov ax, di + sub ax, si + push ax + push [bp+var_2] + push word_1F34C + call sub_F100 + mov ah, 8 + mov dx, 5555h + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov ax, di + add ax, si + push ax + push [bp+var_2] + push word_1F34C + call sub_F100 + mov ah, 8 + mov dx, 0FFFFh + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + pop di + pop si + leave + retn 2 +sub_FA71 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FAE8 proc far ; DATA XREF: sub_A854+91o + ; sub_A854+13Co + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short locret_FB44 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp [bp+var_1], 0 + jnz short loc_FB12 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_FB1E +; --------------------------------------------------------------------------- + +loc_FB12: ; CODE XREF: sub_FAE8+1Aj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_FB1E: ; CODE XREF: sub_FAE8+28j + cmp byte_1F34F, 0 + jnz short loc_FB35 + mov ax, word_1F3B0 + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + push dx + call sub_FA71 + leave + retf +; --------------------------------------------------------------------------- + +loc_FB35: ; CODE XREF: sub_FAE8+3Bj + cmp byte_1F34F, 0FFh + jz short loc_FB41 + call sub_F9A6 + leave + retf +; --------------------------------------------------------------------------- + +loc_FB41: ; CODE XREF: sub_FAE8+52j + call sub_F58C + +locret_FB44: ; CODE XREF: sub_FAE8+Bj + leave + retf +sub_FAE8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FB46 proc far ; CODE XREF: sub_A6BC+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 6Eh ; 'n' + mov byte ptr [si+13h], 0 + mov word ptr [si+0Eh], 28Ch + or dx, dx + jz short loc_FB8C + add word ptr [si+0Eh], 28h ; '(' + +loc_FB8C: ; CODE XREF: sub_FB46+40j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_FB46 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FB95 proc near ; CODE XREF: sub_FED8:loc_FF8Bp + push bp + mov bp, sp + cmp word_1F3B0, 2 + jnb short loc_FBB5 + mov byte_1F353, 2 + mov byte_1F354, 0 + mov byte_20E28, 0 + mov byte_20E29, 0C0h ; 'À' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_FBB5: ; CODE XREF: sub_FB95+8j + cmp word_1F3B0, 20h ; ' ' + jb loc_FC69 + test byte ptr word_1F3B0, 1 + jnz loc_FC51 + push 3 + call sub_EC3A + mov al, byte_20E28 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 22h ; '"' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_1F39F + mov byte ptr word_23E42, al + mov byte_23E4E, 2 + mov byte_23E50, 0 + call sub_17730 + mov byte_23E50, 1 + mov al, byte_20E28 + add al, 9 + mov byte_20E28, al + mov al, byte_1F3A4 + mov ah, 0 + cmp ax, word_1F3B0 + jbe short loc_FC49 + mov ax, word_1F3B0 + mov bx, 6 + xor dx, dx + div bx + or dx, dx + jnz short loc_FC49 + mov byte_23E4E, 1 + mov byte ptr word_23E44+1, 0Fh + mov al, byte_1F3A3 + mov byte ptr word_23E42, al + mov al, byte_20E29 + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, 80h ; '€' + sub al, byte_20E29 + mov byte ptr word_23E42+1, al + call sub_17730 + +loc_FC49: ; CODE XREF: sub_FB95+7Bj sub_FB95+89j + mov al, byte_20E29 + add al, 3 + mov byte_20E29, al + +loc_FC51: ; CODE XREF: sub_FB95+2Ej + cmp word_1F3B0, 82h ; '‚' + jbe short loc_FC69 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_FC69: ; CODE XREF: sub_FB95+25j sub_FB95+C2j + pop bp + retn +sub_FB95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FC6B proc near ; CODE XREF: sub_FED8:loc_FF90p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp word_1F3B0, 10h + jnz short loc_FC88 + mov byte_1F353, 5 + jmp short loc_FC91 +; --------------------------------------------------------------------------- + +loc_FC88: ; CODE XREF: sub_FC6B+14j + cmp word_1F3B0, 20h ; ' ' + jb loc_FD6D + +loc_FC91: ; CODE XREF: sub_FC6B+1Bj + mov ax, word_1F33E + add ax, 180h + mov si, ax + mov ax, word_1F340 + add ax, 0FE00h + mov di, ax + cmp word_1F3B0, 20h ; ' ' + jz short loc_FCB6 + cmp word_1F3B0, 24h ; '$' + jz short loc_FCB6 + cmp word_1F3B0, 28h ; '(' + jnz short loc_FCC6 + +loc_FCB6: ; CODE XREF: sub_FC6B+3Bj sub_FC6B+42j + push si + push di + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_FD6D +; --------------------------------------------------------------------------- + +loc_FCC6: ; CODE XREF: sub_FC6B+49j + cmp word_1F3B0, 30h ; '0' + jbe loc_FD6D + test byte ptr word_1F3B0, 3 + jnz short loc_FD12 + mov byte ptr word_23E42+1, 0 + mov byte ptr word_23E44+1, 1Ch + mov word_23E3E, si + mov word_23E40, di + mov al, byte_1F3A0 + mov byte_23E47, al + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + mov byte_23E4E, 2 + mov byte_23E50, 0 + call sub_17730 + mov byte_23E4E, 1 + call sub_17730 + mov byte_23E50, 1 + +loc_FD12: ; CODE XREF: sub_FC6B+69j + cmp word_1F3B0, 40h ; '@' + jnz short loc_FD47 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 25h ; '%' + mov word_23E3E, si + mov word_23E40, di + mov byte ptr word_23E42, 20h ; ' ' + mov byte_23E4E, 2 + mov byte_23E50, 0 + call sub_17730 + mov byte_23E50, 1 + +loc_FD47: ; CODE XREF: sub_FC6B+ACj + test byte ptr word_1F3B0, 1 + jnz short loc_FD55 + push 3 + call sub_EC3A + +loc_FD55: ; CODE XREF: sub_FC6B+E1j + cmp word_1F3B0, 80h ; '€' + jb short loc_FD6D + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_FD6D: ; CODE XREF: sub_FC6B+22j sub_FC6B+58j ... + pop di + pop si + leave + retn +sub_FC6B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FD71 proc near ; CODE XREF: sub_FED8:loc_FF95p + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte_1F3A2 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + mov [bp+var_1], dl + call sub_F356 + mov byte_1F353, 5 + cmp [bp+var_1], 1 + jz short loc_FDAC + mov al, [bp+var_1] + mov ah, 0 + mov dl, byte_1F3A2 + mov dh, 0 + push ax + mov ax, dx + cwd + sub ax, dx + sar ax, 1 + pop dx + cmp dx, ax + jnz short loc_FE11 + +loc_FDAC: ; CODE XREF: sub_FD71+21j + mov al, [bp+var_1] + mov ah, 0 + mov dl, byte_1F3A2 + mov dh, 0 + push ax + mov ax, dx + cwd + sub ax, dx + sar ax, 1 + pop dx + cmp dx, ax + jnz short loc_FDCB + mov byte ptr word_23E44+1, 12h + jmp short loc_FDD0 +; --------------------------------------------------------------------------- + +loc_FDCB: ; CODE XREF: sub_FD71+51j + mov byte ptr word_23E44+1, 18h + +loc_FDD0: ; CODE XREF: sub_FD71+58j + push 0Ah + call sub_EC3A + mov byte ptr word_23E42+1, 0 + mov ax, word_1F33E + add ax, 180h + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 0FE00h + mov word_23E40, ax + mov byte ptr word_23E42, 58h ; 'X' + mov byte_23E4E, 2 + mov byte_23E50, 0 + mov byte_23E51, 1 + call sub_17730 + mov byte_23E51, 0 + mov byte_23E50, 1 + +loc_FE11: ; CODE XREF: sub_FD71+39j + cmp word_1F3B0, 96h ; '–' + jb short locret_FE29 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +locret_FE29: ; CODE XREF: sub_FD71+A6j + leave + retn +sub_FD71 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FE2B proc near ; CODE XREF: sub_FED8:loc_FF9Ap + push bp + mov bp, sp + call sub_F356 + cmp word_1F3B0, 1 + jnz short loc_FE54 + push 1 + call sub_13A36 + or ax, ax + jz short loc_FE47 + mov al, 7 + jmp short loc_FE49 +; --------------------------------------------------------------------------- + +loc_FE47: ; CODE XREF: sub_FE2B+16j + mov al, 0F9h ; 'ù' + +loc_FE49: ; CODE XREF: sub_FE2B+1Aj + mov byte_20E2A, al + call sub_13A24 + mov byte_20E2B, al + +loc_FE54: ; CODE XREF: sub_FE2B+Bj + test byte ptr word_1F3B0, 1 + jnz short loc_FEC4 + mov al, byte_20E2B + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 300h + push word_1F33E + call sub_EA5D + add sp, 6 + mov word_23E3E, ax + mov al, byte_20E2B + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 300h + push word_1F340 + call sub_EA5D + add sp, 6 + mov word_23E40, ax + mov al, byte_20E2B + add al, 40h ; '@' + mov byte ptr word_23E42+1, al + mov byte_23E4E, 4 + mov byte ptr word_23E44+1, 21h ; '!' + mov al, byte_1F3A5 + mov byte ptr word_23E42, al + call sub_17730 + push 0Ah + call sub_EC3A + mov al, byte_20E2A + add byte_20E2B, al + +loc_FEC4: ; CODE XREF: sub_FE2B+2Ej + cmp word_1F3B0, 48h ; 'H' + jb short loc_FED6 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_FED6: ; CODE XREF: sub_FE2B+9Ej + pop bp + retn +sub_FE2B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FED8 proc far ; DATA XREF: sub_A6BC+85o + ; sub_A6BC+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_FF2B + mov al, byte_1F39E + add al, 20h ; ' ' + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 4 + cwd + idiv bx + add al, 2 + mov byte_1F3A0, al + mov al, byte_1F39E + add al, 20h ; ' ' + mov byte_1F3A1, al + mov al, byte_1F39E + add al, al + mov dl, 40h ; '@' + sub dl, al + mov byte_1F3A2, dl + mov al, byte_1F39E + add al, 28h ; '(' + mov byte_1F3A3, al + mov al, byte_1F39E + shl al, 2 + add al, 40h ; '@' + mov byte_1F3A4, al + mov al, byte_1F39E + add al, 36h ; '6' + mov byte_1F3A5, al + +loc_FF2B: ; CODE XREF: sub_FED8+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_10000 ; jumptable 0000FF6C case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_10003 + +loc_FF5D: ; CODE XREF: sub_FED8+90j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_FF6C + add bx, 2 + loop loc_FF5D + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF6C: ; CODE XREF: sub_FED8+8Bj + jmp word ptr cs:[bx+28h] ; switch jump + +loc_FF70: ; DATA XREF: seg003:0E3Bo + cmp word_1F3B0, 64h ; 'd' ; jumptable 0000FF6C case 0 + jnz locret_10000 ; jumptable 0000FF6C case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF86: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_F52D ; jumptable 0000FF6C case 1 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF8B: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_FB95 ; jumptable 0000FF6C cases 2-5 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF90: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_FC6B ; jumptable 0000FF6C cases 6-10 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF95: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_FD71 ; jumptable 0000FF6C cases 11-13 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF9A: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_FE2B ; jumptable 0000FF6C cases 14-17 + jmp short loc_FFA2 ; default +; --------------------------------------------------------------------------- + +loc_FF9F: ; CODE XREF: sub_FED8:loc_FF6Cj + ; DATA XREF: seg003:0E3Bo + call sub_F3A9 ; jumptable 0000FF6C case 128 + +loc_FFA2: ; CODE XREF: sub_FED8+92j sub_FED8+ACj ... + mov ax, word_1F33E ; default + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 1Ch + mov word_220F4, 1Ch + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_10000: ; CODE XREF: sub_FED8+5Aj + ; sub_FED8:loc_FF6Cj ... + leave ; jumptable 0000FF6C case 255 + retf +sub_FED8 endp + +; --------------------------------------------------------------------------- + db 0 +word_10003 dw 0, 1, 2, 3 ; DATA XREF: sub_FED8+82o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_FF70 ; jump table for switch statement + dw offset loc_FF86 + dw offset loc_FF8B + dw offset loc_FF8B + dw offset loc_FF8B + dw offset loc_FF8B + dw offset loc_FF90 + dw offset loc_FF90 + dw offset loc_FF90 + dw offset loc_FF90 + dw offset loc_FF90 + dw offset loc_FF95 + dw offset loc_FF95 + dw offset loc_FF95 + dw offset loc_FF9A + dw offset loc_FF9A + dw offset loc_FF9A + dw offset loc_FF9A + dw offset loc_FF9F + dw offset locret_10000 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10053 proc near ; CODE XREF: sub_10263+5Bp + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_3], al + mov byte_1F2EA, 9 + mov word_1F2E8, 38h ; '8' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFB8h + mov si, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD8h + mov di, ax + push si + push ax + push word_1F34C + call sub_F100 + cmp byte_1F34E, 0 + jz short loc_100B8 + mov byte_1F2EA, 4 + mov word_1F2E8, 28h ; '(' + add si, 20h ; ' ' + add di, 10h + push si + push di + mov ax, word_1F34C + add ax, 12h + +loc_100B4: ; CODE XREF: sub_10053+EEj + push ax + jmp loc_1016A +; --------------------------------------------------------------------------- + +loc_100B8: ; CODE XREF: sub_10053+46j + cmp byte_1F353, 2 + jnz short loc_10121 + +loc_100BF: ; CODE XREF: sub_10053+12Aj + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov ax, word_1F34C + add ax, 1Ah + mov [bp+var_2], ax + lea ax, [si+30h] + push ax + lea ax, [di+20h] + push ax + push [bp+var_2] + call sub_F100 + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + add si, 50h ; 'P' + mov ax, word_1F34C + add ax, 0EF4h + mov [bp+var_2], ax + cmp byte_1F354, 10h + jb short loc_10111 + add [bp+var_2], 4 + cmp byte_1F354, 20h ; ' ' + jb short loc_10111 + mov byte_1F353, 3 + +loc_10111: ; CODE XREF: sub_10053+ACj + ; sub_10053+B7j + push si + push di + push [bp+var_2] + call sub_F100 + inc byte_1F354 + jmp short loc_10180 +; --------------------------------------------------------------------------- + +loc_10121: ; CODE XREF: sub_10053+6Aj + cmp byte_1F353, 3 + jnz short loc_10144 + mov byte_1F2EA, 5 + mov word_1F2E8, 18h + lea ax, [si+20h] + push ax + lea ax, [di+10h] + push ax + mov ax, word_1F34C + add ax, 0C92h + jmp loc_100B4 +; --------------------------------------------------------------------------- + +loc_10144: ; CODE XREF: sub_10053+D3j + cmp byte_1F353, 4 + jnz short loc_10171 + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov ax, word_1F34C + add ax, 1Ah + mov [bp+var_2], ax + lea ax, [si+30h] + push ax + lea ax, [di+20h] + push ax + push [bp+var_2] + +loc_1016A: ; CODE XREF: sub_10053+62j + call sub_F100 + jmp short loc_10180 +; --------------------------------------------------------------------------- + +loc_10171: ; CODE XREF: sub_10053+F6j + cmp byte_1F353, 5 + jnz short loc_10180 + mov byte_1F354, 0 + jmp loc_100BF +; --------------------------------------------------------------------------- + +loc_10180: ; CODE XREF: sub_10053+CCj + ; sub_10053+11Cj ... + pop di + pop si + leave + retn +sub_10053 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10184 proc near ; CODE XREF: sub_10263+4Fp + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = word ptr 6 + + enter 8, 0 + push si + push di + mov si, [bp+arg_2] + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_7], al + mov byte_1F2EA, 9 + mov word_1F2E8, 38h ; '8' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFB8h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD8h + mov [bp+var_4], ax + mov ah, 8 + mov dx, 0AAAAh + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push si + push [bp+var_2] + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push si + push [bp+var_4] + call sub_EA5D + add sp, 6 + mov [bp+var_6], ax + push di + push ax + push word_1F34C + call sub_F100 + mov ah, 8 + mov dx, 5555h + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov al, [bp+arg_0] + add al, 80h ; '€' + mov [bp+arg_0], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push si + push [bp+var_2] + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push si + push [bp+var_4] + call sub_EA5D + add sp, 6 + mov [bp+var_6], ax + push di + push ax + push word_1F34C + call sub_F100 + mov ah, 8 + mov dx, 0FFFFh + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + pop di + pop si + leave + retn 4 +sub_10184 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10263 proc far ; DATA XREF: sub_A6BC+91o + ; sub_A6BC+13Co + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short locret_102C6 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp [bp+var_1], 0 + jnz short loc_1028D + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_10299 +; --------------------------------------------------------------------------- + +loc_1028D: ; CODE XREF: sub_10263+1Aj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_10299: ; CODE XREF: sub_10263+28j + cmp byte_1F34F, 0 + jnz short loc_102B7 + mov ax, word_1F3B0 + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + push dx + mov ax, word_1F3B0 + imul ax, 3 + push ax + call sub_10184 + leave + retf +; --------------------------------------------------------------------------- + +loc_102B7: ; CODE XREF: sub_10263+3Bj + cmp byte_1F34F, 0FFh + jz short loc_102C3 + call sub_10053 + leave + retf +; --------------------------------------------------------------------------- + +loc_102C3: ; CODE XREF: sub_10263+59j + call sub_F58C + +locret_102C6: ; CODE XREF: sub_10263+Bj + leave + retf +sub_10263 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_102C8 proc far ; CODE XREF: sub_B1E4+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 82h ; '‚' + mov byte ptr [si+13h], 0 + mov byte ptr [si+16h], 0 + mov byte ptr [si+17h], 0 + mov word ptr [si+18h], 0 + mov word ptr [si+0Eh], 288h + or dx, dx + jz short loc_1031B + add word ptr [si+0Eh], 28h ; '(' + +loc_1031B: ; CODE XREF: sub_102C8+4Dj + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_102C8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10324 proc near ; CODE XREF: sub_1070A:loc_107E7p + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_1035A + mov byte_1F353, 1 + call sub_13A24 + mov byte_20E4E, al + mov byte_20E4C, 0 + mov word_1F356, 100h + push 1 + call sub_13A36 + or ax, ax + jnz short loc_10355 + mov al, 3 + jmp short loc_10357 +; --------------------------------------------------------------------------- + +loc_10355: ; CODE XREF: sub_10324+2Bj + mov al, 0FDh ; 'ý' + +loc_10357: ; CODE XREF: sub_10324+2Fj + mov byte_20E4D, al + +loc_1035A: ; CODE XREF: sub_10324+8j + cmp word_1F3B0, 4 + jnb short loc_10376 + push word_20E50 + push word_20E52 + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_CE5B + pop bp + retn +; --------------------------------------------------------------------------- + +loc_10376: ; CODE XREF: sub_10324+3Bj + cmp word_1F3B0, 20h ; ' ' + jb loc_10403 + cmp word_1F3B0, 20h ; ' ' + jnz short loc_103A5 + push word_20E50 + push word_20E52 + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_CDBD + mov byte_1F353, 2 + push 5 + call sub_EC3A + +loc_103A5: ; CODE XREF: sub_10324+60j + test byte ptr word_1F3B0, 3 + jnz short loc_103EC + mov byte_23E4E, 2 + mov al, byte_20E4E + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 26h ; '&' + mov ax, word_20E50 + mov word_23E3E, ax + mov ax, word_20E52 + mov word_23E40, ax + mov al, byte_1F39F + add al, byte_20E4C + mov byte ptr word_23E42, al + mov al, byte_1F3A0 + mov byte_23E47, al + call sub_17730 + mov al, byte_20E4D + add byte_20E4E, al + mov al, byte_20E4C + add al, 8 + mov byte_20E4C, al + +loc_103EC: ; CODE XREF: sub_10324+86j + cmp word_1F3B0, 3Ch ; '<' + jbe short loc_10403 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_10403: ; CODE XREF: sub_10324+57j + ; sub_10324+CDj + pop bp + retn +sub_10324 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10405 proc near ; CODE XREF: sub_1070A:loc_107ECp + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_10456 + mov byte_1F353, 1 + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov word_1F342, ax + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov word_1F344, ax + sub ax, word_20E52 + push ax + mov ax, word_1F342 + sub ax, word_20E50 + push ax + call sub_1BD6 + mov byte_20E4E, al + mov word_1F356, 100h + mov byte_1F354, 20h ; ' ' + +loc_10456: ; CODE XREF: sub_10405+8j + cmp word_1F3B0, 10h + jnb short loc_1047F + mov ax, word_1F3B0 + and ax, 3 + cmp ax, 1 + jnz loc_1050D + push word_1F342 + push word_1F344 + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_CE5B + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1047F: ; CODE XREF: sub_10405+56j + cmp word_1F3B0, 20h ; ' ' + jb loc_1050D + cmp word_1F3B0, 20h ; ' ' + jnz short loc_104A7 + push word_20E50 + push word_20E52 + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_CDBD + mov byte_1F353, 2 + +loc_104A7: ; CODE XREF: sub_10405+88j + test byte ptr word_1F3B0, 1 + jnz short loc_104F6 + push 3 + call sub_EC3A + mov ax, word_20E50 + mov word_23E3E, ax + mov ax, word_20E52 + mov word_23E40, ax + mov al, byte_20E4E + mov byte ptr word_23E42+1, al + push 1Fh + call sub_13A36 + add al, byte_1F3A1 + mov byte ptr word_23E42, al + push 1 + call sub_13A36 + inc al + mov byte_23E4E, al + push 5 + call sub_13A50 + mov bx, ax + mov al, [bx+792h] + mov byte ptr word_23E44+1, al + call sub_17730 + +loc_104F6: ; CODE XREF: sub_10405+A7j + cmp word_1F3B0, 60h ; '`' + jbe short loc_1050D + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_1050D: ; CODE XREF: sub_10405+61j + ; sub_10405+7Fj ... + pop bp + retn +sub_10405 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1050F proc near ; CODE XREF: sub_1070A:loc_107F1p + push bp + mov bp, sp + call sub_F356 + mov al, byte_1F3A2 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + or dx, dx + jnz short loc_105A1 + mov byte ptr word_23E44+1, 20h ; ' ' + mov byte ptr word_23E42, 20h ; ' ' + push 1 + call sub_13A36 + inc al + mov byte_23E4E, al + call sub_13A24 + mov byte ptr word_23E42+1, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 0FE00h + mov word_23E40, ax + call sub_17730 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov ax, word_1F340 + add ax, 200h + mov word_23E40, ax + call sub_17730 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov ax, word_1F33E + add ax, 0FE00h + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_17730 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov ax, word_1F33E + add ax, 200h + mov word_23E3E, ax + call sub_17730 + +loc_105A1: ; CODE XREF: sub_1050F+16j + cmp word_1F3B0, 60h ; '`' + jb short loc_105B3 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_105B3: ; CODE XREF: sub_1050F+97j + pop bp + retn +sub_1050F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_105B5 proc near ; CODE XREF: sub_1070A:loc_107F6p + push bp + mov bp, sp + cmp byte_1F355, 0 + jnz short loc_105E1 + cmp word_1F33E, 380h + jle short loc_105D4 + cmp word_1F33E, 0E80h + jge short loc_105D4 + call sub_F356 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_105D4: ; CODE XREF: sub_105B5+10j + ; sub_105B5+18j + mov byte_1F355, 1 + mov word_1F3B0, 0 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_105E1: ; CODE XREF: sub_105B5+8j + mov byte_1F354, 2 + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov word_1F342, ax + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov word_1F344, ax + cmp word_1F3B0, 20h ; ' ' + jb short loc_10667 + call sub_F356 + call sub_F356 + mov ax, word_1F3B0 + and ax, 0Fh + cmp ax, 0Fh + jnz short loc_10647 + mov byte_1F353, 1 + push word_1F342 + push word_1F344 + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_CE5B + push word_1F342 + push word_1F344 + call sub_1A95F + pop bp + retn +; --------------------------------------------------------------------------- + +loc_10647: ; CODE XREF: sub_105B5+69j + mov al, byte_1F3A3 + mov ah, 0 + cmp ax, word_1F3B0 + jnb short loc_10667 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F355, 0 + +loc_10667: ; CODE XREF: sub_105B5+58j + ; sub_105B5+9Bj + pop bp + retn +sub_105B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10669 proc near ; CODE XREF: sub_1070A:loc_107FBp + push bp + mov bp, sp + push si + call sub_F356 + mov al, byte_1F3A4 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + or dx, dx + jnz short loc_106F5 + mov byte_23E4E, 2 + cmp word_1F3B0, 40h ; '@' + jnb short loc_106B8 + mov ax, word_20E50 + mov word_23E3E, ax + mov ax, word_20E52 + mov word_23E40, ax + mov byte ptr word_23E42+1, 0C0h ; 'À' + mov byte ptr word_23E42, 60h ; '`' + mov byte ptr word_23E44+1, 16h + call sub_17730 + mov byte ptr word_23E44+1, 10h + call sub_17730 + +loc_106B8: ; CODE XREF: sub_10669+23j + cmp word_1F3B0, 20h ; ' ' + jb short loc_106F5 + mov byte ptr word_23E44+1, 0 + mov byte ptr word_23E42, 24h ; '$' + mov word_23E40, 0 + xor si, si + jmp short loc_106F0 +; --------------------------------------------------------------------------- + +loc_106D3: ; CODE XREF: sub_10669+8Aj + push 1200h + call sub_13A50 + mov word_23E3E, ax + push 3Fh ; '?' + call sub_13A36 + add al, 20h ; ' ' + mov byte ptr word_23E42+1, al + call sub_17730 + inc si + +loc_106F0: ; CODE XREF: sub_10669+68j + cmp si, 0Ch + jl short loc_106D3 + +loc_106F5: ; CODE XREF: sub_10669+17j + ; sub_10669+54j + cmp word_1F3B0, 60h ; '`' + jb short loc_10707 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_10707: ; CODE XREF: sub_10669+91j + pop si + pop bp + retn +sub_10669 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1070A proc far ; DATA XREF: sub_B1E4+85o + ; sub_B1E4+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_10761 + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F3A0, al + mov al, byte_1F39E + add al, 40h ; '@' + mov byte_1F3A1, al + mov al, 12h + sub al, byte_1F39E + mov byte_1F3A2, al + mov al, byte_1F39E + shl al, 2 + add al, 50h ; 'P' + mov byte_1F3A3, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov dl, 10h + sub dl, al + mov byte_1F3A4, dl + +loc_10761: ; CODE XREF: sub_1070A+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_10878 ; jumptable 000107AE case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + call sub_F512 + inc word_1F3B0 + mov ax, word_1F33E + add ax, 90h ; '' + mov word_20E50, ax + mov ax, word_1F340 + add ax, 0FE80h + mov word_20E52, ax + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_1087A + +loc_1079F: ; CODE XREF: sub_1070A+A0j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_107AE + add bx, 2 + loop loc_1079F + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107AE: ; CODE XREF: sub_1070A+9Bj + jmp word ptr cs:[bx+28h] ; switch jump + +loc_107B2: ; DATA XREF: seg003:16B2o + cmp word_1F3B0, 18h ; jumptable 000107AE case 0 + jz short loc_107C0 + cmp word_1F3B0, 48h ; 'H' + jnz short loc_107CC + +loc_107C0: ; CODE XREF: sub_1070A+ADj + call sub_EC2E + push 5 + call sub_EC3A + +loc_107CC: ; CODE XREF: sub_1070A+B4j + cmp word_1F3B0, 60h ; '`' + jnz locret_10878 ; jumptable 000107AE case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107E2: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_F52D ; jumptable 000107AE case 1 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107E7: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_10324 ; jumptable 000107AE cases 2-4 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107EC: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_10405 ; jumptable 000107AE cases 7-9 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107F1: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_1050F ; jumptable 000107AE cases 11-14 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107F6: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_105B5 ; jumptable 000107AE cases 15-17 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_107FB: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_10669 ; jumptable 000107AE cases 5,6,10 + jmp short loc_10803 ; default +; --------------------------------------------------------------------------- + +loc_10800: ; CODE XREF: sub_1070A:loc_107AEj + ; DATA XREF: seg003:16B2o + call sub_F3A9 ; jumptable 000107AE case 128 + +loc_10803: ; CODE XREF: sub_1070A+A2j + ; sub_1070A+D6j ... + cmp word_1F356, 0 ; default + jz short loc_1080F + sub word_1F356, 8 + +loc_1080F: ; CODE XREF: sub_1070A+FEj + cmp byte_1F354, 0 + jz short loc_1081A + dec byte_1F354 + +loc_1081A: ; CODE XREF: sub_1070A+10Aj + mov ax, word_1F33E + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 1Ch + mov word_220F4, 1Ch + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_10878: ; CODE XREF: sub_1070A+5Ej + ; sub_1070A:loc_107AEj ... + leave ; jumptable 000107AE case 255 + retf +sub_1070A endp + +; --------------------------------------------------------------------------- +word_1087A dw 0, 1, 2, 3 ; DATA XREF: sub_1070A+92o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_107B2 ; jump table for switch statement + dw offset loc_107E2 + dw offset loc_107E7 + dw offset loc_107E7 + dw offset loc_107E7 + dw offset loc_107FB + dw offset loc_107FB + dw offset loc_107EC + dw offset loc_107EC + dw offset loc_107EC + dw offset loc_107FB + dw offset loc_107F1 + dw offset loc_107F1 + dw offset loc_107F1 + dw offset loc_107F1 + dw offset loc_107F6 + dw offset loc_107F6 + dw offset loc_107F6 + dw offset loc_10800 + dw offset locret_10878 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_108CA proc near ; CODE XREF: sub_10BAB+49p + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_7], al + mov byte_1F2EA, 7 + mov word_1F2E8, 38h ; '8' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFC8h + mov si, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD8h + mov di, ax + push si + push ax + push word_1F34C + call sub_F100 + cmp byte_1F353, 0 + jz short loc_1093C + mov byte_1F2EA, 4 + mov word_1F2E8, 20h ; ' ' + mov ax, word_1F34C + add ax, 0Eh + mov [bp+var_2], ax + cmp byte_1F353, 2 + jnz short loc_10932 + add [bp+var_2], 0A00h + +loc_10932: ; CODE XREF: sub_108CA+61j + lea ax, [si+20h] + push ax + push di + push [bp+var_2] + jmp short loc_1095A +; --------------------------------------------------------------------------- + +loc_1093C: ; CODE XREF: sub_108CA+46j + cmp byte_1F34E, 0 + jz short loc_1095F + mov byte_1F2EA, 5 + mov word_1F2E8, 30h ; '0' + add si, 10h + push si + push di + mov ax, word_1F34C + add ax, 16h + push ax + +loc_1095A: ; CODE XREF: sub_108CA+70j + call sub_F100 + +loc_1095F: ; CODE XREF: sub_108CA+77j + cmp word_1F356, 0 + jnz short loc_1096F + cmp byte_1F354, 0 + jz loc_10A13 + +loc_1096F: ; CODE XREF: sub_108CA+9Aj + cmp byte ptr word_1FE88, 0 + jz short loc_10981 + push large 100008h + push 12Fh + jmp short loc_1098A +; --------------------------------------------------------------------------- + +loc_10981: ; CODE XREF: sub_108CA+AAj + push large 1500008h + push 26Fh + +loc_1098A: ; CODE XREF: sub_108CA+B5j + push 0BFh ; '¿' + call sub_C40 + call sub_71A + push large 0C0000Ah + call sub_F5C + push word_20E50 + mov al, [bp+var_7] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + mov ax, word_20E52 + sar ax, 5 + add ax, 8 + mov di, ax + cmp byte_1F354, 0 + jnz short loc_109D2 + push si + push ax + push word_1F356 + call sub_9E2 + jmp short loc_109FB +; --------------------------------------------------------------------------- + +loc_109D2: ; CODE XREF: sub_108CA+F9j + push word_1F342 + mov al, [bp+var_7] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_4], ax + mov ax, word_1F344 + sar ax, 5 + add ax, 8 + mov [bp+var_6], ax + push si + push di + push [bp+var_4] + push ax + call sub_DBE + +loc_109FB: ; CODE XREF: sub_108CA+106j + call sub_F86 + call sub_704 + push large 0 + push large 27F00C7h + call sub_C40 + +loc_10A13: ; CODE XREF: sub_108CA+A1j + pop di + pop si + leave + retn +sub_108CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10A17 proc near ; CODE XREF: sub_10BAB+3Dp + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_3], al + xor dx, dx + mov ah, 5 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov byte_1F2EA, 7 + mov word_1F2E8, 38h ; '8' + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD8h + mov [bp+var_2], ax + cmp word_1F3B0, 18h + jnb short loc_10A8D + push 0F980h + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + mov ax, word_1F3B0 + shl ax, 3 + shl ax, 4 + sub ax, 680h + push ax + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + jmp short loc_10A86 +; --------------------------------------------------------------------------- + +loc_10A76: ; CODE XREF: sub_10A17+71j + push si + push [bp+var_2] + push word_1F34C + call sub_F100 + add si, 8 + +loc_10A86: ; CODE XREF: sub_10A17+5Dj + cmp si, di + jle short loc_10A76 + jmp loc_10BA0 +; --------------------------------------------------------------------------- + +loc_10A8D: ; CODE XREF: sub_10A17+31j + cmp word_1F3B0, 30h ; '0' + jnb short loc_10ADE + mov al, byte ptr word_1F3B0 + sub al, 18h + mov [bp+var_4], al + mov ah, 0 + shl ax, 3 + shl ax, 4 + add ax, 0F980h + push ax + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push 580h + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + jmp short loc_10AD7 +; --------------------------------------------------------------------------- + +loc_10AC7: ; CODE XREF: sub_10A17+C2j + push si + push [bp+var_2] + push word_1F34C + call sub_F100 + add si, 8 + +loc_10AD7: ; CODE XREF: sub_10A17+AEj + cmp si, di + jle short loc_10AC7 + jmp loc_10BA0 +; --------------------------------------------------------------------------- + +loc_10ADE: ; CODE XREF: sub_10A17+7Bj + cmp word_1F3B0, 48h ; 'H' + jnb short loc_10B50 + mov al, byte ptr word_1F3B0 + sub al, 30h ; '0' + mov [bp+var_4], al + push 1100h + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + mov al, [bp+var_4] + mov ah, 0 + shl ax, 3 + shl ax, 4 + mov dx, 1100h + sub dx, ax + push dx + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + jmp short loc_10B2D +; --------------------------------------------------------------------------- + +loc_10B1D: ; CODE XREF: sub_10A17+118j + push si + push [bp+var_2] + push word_1F34C + call sub_F100 + sub si, 8 + +loc_10B2D: ; CODE XREF: sub_10A17+104j + cmp si, di + jge short loc_10B1D + push 580h + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push ax + push [bp+var_2] + push word_1F34C + call sub_F100 + jmp short loc_10BA0 +; --------------------------------------------------------------------------- + +loc_10B50: ; CODE XREF: sub_10A17+CCj + cmp word_1F3B0, 60h ; '`' + jnb short loc_10BA0 + mov al, byte ptr word_1F3B0 + sub al, 48h ; 'H' + mov [bp+var_4], al + mov ah, 0 + shl ax, 3 + shl ax, 4 + mov dx, 1100h + sub dx, ax + push dx + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push 580h + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + jmp short loc_10B9C +; --------------------------------------------------------------------------- + +loc_10B8C: ; CODE XREF: sub_10A17+187j + push si + push [bp+var_2] + push word_1F34C + call sub_F100 + sub si, 8 + +loc_10B9C: ; CODE XREF: sub_10A17+173j + cmp si, di + jge short loc_10B8C + +loc_10BA0: ; CODE XREF: sub_10A17+73j + ; sub_10A17+C4j ... + mov dx, 1 + mov ah, 5 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + pop di + pop si + leave + retn +sub_10A17 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10BAB proc far ; DATA XREF: sub_B1E4+91o + ; sub_B1E4+13Co + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short locret_10BFC + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp [bp+var_1], 0 + jnz short loc_10BD5 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_10BE1 +; --------------------------------------------------------------------------- + +loc_10BD5: ; CODE XREF: sub_10BAB+1Aj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_10BE1: ; CODE XREF: sub_10BAB+28j + cmp byte_1F34F, 0 + jnz short loc_10BED + call sub_10A17 + leave + retf +; --------------------------------------------------------------------------- + +loc_10BED: ; CODE XREF: sub_10BAB+3Bj + cmp byte_1F34F, 0FFh + jz short loc_10BF9 + call sub_108CA + leave + retf +; --------------------------------------------------------------------------- + +loc_10BF9: ; CODE XREF: sub_10BAB+47j + call sub_F58C + +locret_10BFC: ; CODE XREF: sub_10BAB+Bj + leave + retf +sub_10BAB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10BFE proc far ; CODE XREF: sub_A524+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 6Eh ; 'n' + mov byte ptr [si+13h], 0 + mov byte ptr [si+15h], 0 + mov word ptr [si+0Eh], 28Ch + or dx, dx + jz short loc_10C48 + add word ptr [si+0Eh], 28h ; '(' + +loc_10C48: ; CODE XREF: sub_10BFE+44j + pop si + pop bp + retf 2 +sub_10BFE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10C4D proc near ; CODE XREF: sub_11033:loc_110E4p + +var_1 = byte ptr -1 + + enter 2, 0 + cmp word_1F3B0, 0 + jnz short loc_10C76 + mov ax, word_1F33E + mov word_1F342, ax + mov ax, word_1F340 + add ax, 300h + mov word_1F344, ax + push 1 + call sub_13A36 + mov byte_23DC6, al + mov byte_23DC7, 10h + +loc_10C76: ; CODE XREF: sub_10C4D+9j + mov al, byte ptr word_1F3B0 + add al, al + mov [bp+var_1], al + cmp byte_23DC6, 0 + jz short loc_10C8D + mov al, 0 + sub al, [bp+var_1] + mov [bp+var_1], al + +loc_10C8D: ; CODE XREF: sub_10C4D+36j + mov al, byte_1F39F + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + or dx, dx + jnz loc_10D57 + mov byte_23E4E, 4 + mov byte ptr word_23E44+1, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + mov al, [bp+var_1] + add al, al + mov byte ptr word_23E42+1, al + mov al, byte_23DC7 + mov byte ptr word_23E42, al + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 200h + push word_1F33E + call sub_EA5D + add sp, 6 + mov word_23E3E, ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 200h + push word_1F340 + call sub_EA5D + add sp, 6 + mov word_23E40, ax + call sub_17730 + mov al, [bp+var_1] + add al, al + add al, 80h ; '€' + mov byte ptr word_23E42+1, al + mov al, [bp+var_1] + add al, 80h ; '€' + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 200h + push word_1F33E + call sub_EA5D + add sp, 6 + mov word_23E3E, ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 200h + push word_1F340 + call sub_EA5D + add sp, 6 + mov word_23E40, ax + call sub_17730 + +loc_10D57: ; CODE XREF: sub_10C4D+50j + test byte ptr word_1F3B0, 1 + jnz short loc_10D62 + inc byte_23DC7 + +loc_10D62: ; CODE XREF: sub_10C4D+10Fj + mov al, byte ptr word_1F3B0 + add al, al + mov [bp+var_1], al + add al, 0C0h ; 'À' + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 300h + push word_1F344 + call sub_EA5D + add sp, 6 + mov word_1F340, ax + cmp word_1F3B0, 80h ; '€' + jb short locret_10D9E + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +locret_10D9E: ; CODE XREF: sub_10C4D+144j + leave + retn +sub_10C4D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10DA0 proc near ; CODE XREF: sub_11033:loc_110E9p + push bp + mov bp, sp + call sub_F356 + mov byte_23E4E, 2 + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + cmp word_1F3B0, 40h ; '@' + jnb short loc_10DEF + cmp byte_23B05, 0 + jnz short loc_10E14 + mov byte ptr word_23E42+1, 20h ; ' ' + mov byte ptr word_23E44+1, 8 + call sub_17730 + mov byte ptr word_23E42+1, 60h ; '`' + +loc_10DE8: ; CODE XREF: sub_10DA0+67j + call sub_17730 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_10DEF: ; CODE XREF: sub_10DA0+2Bj + cmp word_1F3B0, 64h ; 'd' + jnb short loc_10E09 + cmp byte_23B05, 0 + jnz short loc_10E14 + mov byte ptr word_23E44+1, 15h + mov byte ptr word_23E42+1, 40h ; '@' + jmp short loc_10DE8 +; --------------------------------------------------------------------------- + +loc_10E09: ; CODE XREF: sub_10DA0+54j + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_10E14: ; CODE XREF: sub_10DA0+32j + ; sub_10DA0+5Bj + pop bp + retn +sub_10DA0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10E16 proc near ; CODE XREF: sub_11033:loc_110EEp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + call sub_F356 + cmp word_1F3B0, 0 + jnz short loc_10E32 + mov byte_1F353, 1 + call sub_13A24 + mov byte_23DC8, al + +loc_10E32: ; CODE XREF: sub_10E16+Dj + cmp word_1F3B0, 18h + jnb loc_10EBC + xor si, si + jmp short loc_10EA8 +; --------------------------------------------------------------------------- + +loc_10E3F: ; CODE XREF: sub_10E16+99j + mov ax, si + shl ax, 8 + mov dl, byte_1F3A2 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, byte_23DC8 + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + mov ax, word_1F3B0 + shl ax, 4 + add ax, ax + push ax + push word_1F33E + call sub_EA5D + add sp, 6 + mov bx, si + add bx, bx + mov [bx+686Ah], ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + mov ax, word_1F3B0 + shl ax, 4 + add ax, ax + push ax + push word_1F340 + call sub_EA5D + add sp, 6 + mov bx, si + add bx, bx + mov [bx+6876h], ax + inc si + +loc_10EA8: ; CODE XREF: sub_10E16+27j + mov al, byte_1F3A2 + mov ah, 0 + cmp ax, si + jg short loc_10E3F + mov al, byte_23DC8 + add al, 8 + mov byte_23DC8, al + jmp loc_10FCE +; --------------------------------------------------------------------------- + +loc_10EBC: ; CODE XREF: sub_10E16+21j + cmp word_1F3B0, 50h ; 'P' + jnb loc_10F7A + xor si, si + jmp short loc_10F26 +; --------------------------------------------------------------------------- + +loc_10EC9: ; CODE XREF: sub_10E16+117j + mov ax, si + shl ax, 8 + mov dl, byte_1F3A2 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, byte_23DC8 + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 300h + push word_1F33E + call sub_EA5D + add sp, 6 + mov bx, si + add bx, bx + mov [bx+686Ah], ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 300h + push word_1F340 + call sub_EA5D + add sp, 6 + mov bx, si + add bx, bx + mov [bx+6876h], ax + inc si + +loc_10F26: ; CODE XREF: sub_10E16+B1j + mov al, byte_1F3A2 + mov ah, 0 + cmp ax, si + jg short loc_10EC9 + mov al, byte_23DC8 + add al, 8 + mov byte_23DC8, al + cmp byte_23B05, 0 + jnz loc_10FCE + mov byte_23E4E, 2 + mov al, byte_1F3A3 + mov byte ptr word_23E42, al + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte_1F3A4 + mov byte_23E47, al + call sub_17730 + jmp short loc_10FCE +; --------------------------------------------------------------------------- + +loc_10F7A: ; CODE XREF: sub_10E16+ABj + cmp word_1F3B0, 50h ; 'P' + jnz short loc_10FCE + xor si, si + jmp short loc_10FB5 +; --------------------------------------------------------------------------- + +loc_10F85: ; CODE XREF: sub_10E16+1A6j + mov ax, si + shl ax, 8 + mov dl, byte_1F3A2 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, byte_23DC8 + mov [bp+var_1], al + mov bx, si + add bx, bx + push word ptr [bx+686Ah] + mov bx, si + add bx, bx + push word ptr [bx+6876h] + push word ptr [bp+var_1] + call sub_1A2CE + inc si + +loc_10FB5: ; CODE XREF: sub_10E16+16Dj + mov al, byte_1F3A2 + mov ah, 0 + cmp ax, si + jg short loc_10F85 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F353, 0 + +loc_10FCE: ; CODE XREF: sub_10E16+A3j + ; sub_10E16+126j ... + pop si + leave + retn +sub_10E16 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10FD1 proc near ; CODE XREF: sub_11033:loc_110F3p + push bp + mov bp, sp + call sub_F356 + cmp word_1F3B0, 80h ; '€' + jnb short loc_11026 + test byte ptr word_1F3B0, 0Fh + jnz short loc_11031 + mov byte_23E4E, 2 + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte ptr word_1F3B0 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 0Eh + call sub_17730 + mov al, 78h ; 'x' + sub al, byte ptr word_1F3B0 + mov byte ptr word_23E42+1, al + call sub_17730 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_11026: ; CODE XREF: sub_10FD1+Cj + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_11031: ; CODE XREF: sub_10FD1+13j + pop bp + retn +sub_10FD1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11033 proc far ; DATA XREF: sub_A524+85o + ; sub_A524+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_11083 + mov al, byte_1F39E + mov ah, 0 + mov bx, 5 + cwd + idiv bx + mov dl, 5 + sub dl, al + mov byte_1F39F, dl + mov al, byte_1F39E + add al, 18h + mov byte_1F3A0, al + mov al, byte_1F39E + add al, al + add al, 28h ; '(' + mov byte_1F3A1, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 8 + cwd + idiv bx + add al, 4 + mov byte_1F3A2, al + mov al, byte_1F39E + add al, 10h + mov byte_1F3A3, al + mov al, byte_1F39E + add al, 10h + mov byte_1F3A4, al + +loc_11083: ; CODE XREF: sub_11033+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_11159 ; jumptable 000110E0 case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + inc word_1F3B0 + cmp byte_1F34F, 0 + jnz short loc_110B9 + cmp word_1F3B0, 64h ; 'd' + jnz locret_11159 ; jumptable 000110E0 case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_110B9: ; CODE XREF: sub_11033+70j + cmp byte_1F34F, 1 + jnz short loc_110C3 + call sub_F52D + +loc_110C3: ; CODE XREF: sub_11033+8Bj + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 12h ; switch 18 cases + mov bx, offset word_1115B + +loc_110D1: ; CODE XREF: sub_11033+A9j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_110E0 + add bx, 2 + loop loc_110D1 + jmp short loc_110FB ; default +; --------------------------------------------------------------------------- + +loc_110E0: ; CODE XREF: sub_11033+A4j + jmp word ptr cs:[bx+24h] ; switch jump + +loc_110E4: ; DATA XREF: seg003:1F8Fo + call sub_10C4D ; jumptable 000110E0 cases 2-6 + jmp short loc_110FB ; default +; --------------------------------------------------------------------------- + +loc_110E9: ; CODE XREF: sub_11033:loc_110E0j + ; DATA XREF: seg003:1F8Fo + call sub_10DA0 ; jumptable 000110E0 cases 8-10,13 + jmp short loc_110FB ; default +; --------------------------------------------------------------------------- + +loc_110EE: ; CODE XREF: sub_11033:loc_110E0j + ; DATA XREF: seg003:1F8Fo + call sub_10E16 ; jumptable 000110E0 cases 15-17 + jmp short loc_110FB ; default +; --------------------------------------------------------------------------- + +loc_110F3: ; CODE XREF: sub_11033:loc_110E0j + ; DATA XREF: seg003:1F8Fo + call sub_10FD1 ; jumptable 000110E0 cases 7,11,12,14 + jmp short loc_110FB ; default +; --------------------------------------------------------------------------- + +loc_110F8: ; CODE XREF: sub_11033:loc_110E0j + ; DATA XREF: seg003:1F8Fo + call sub_F3A9 ; jumptable 000110E0 case 128 + +loc_110FB: ; CODE XREF: sub_11033+ABj + ; sub_11033+B4j ... + mov ax, word_1F33E ; default + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 1Ch + mov word_220F4, 1Ch + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_11159: ; CODE XREF: sub_11033+57j + ; sub_11033+77j ... + leave ; jumptable 000110E0 case 255 + retf +sub_11033 endp + +; --------------------------------------------------------------------------- +word_1115B dw 2, 3, 4, 5 ; DATA XREF: sub_11033+9Bo + dw 6, 7, 8, 9 ; value table for switch statement + dw 0Ah, 0Bh, 0Ch, 0Dh + dw 0Eh, 0Fh, 10h, 11h + dw 80h, 0FFh + dw offset loc_110E4 ; jump table for switch statement + dw offset loc_110E4 + dw offset loc_110E4 + dw offset loc_110E4 + dw offset loc_110E4 + dw offset loc_110F3 + dw offset loc_110E9 + dw offset loc_110E9 + dw offset loc_110E9 + dw offset loc_110F3 + dw offset loc_110F3 + dw offset loc_110E9 + dw offset loc_110F3 + dw offset loc_110EE + dw offset loc_110EE + dw offset loc_110EE + dw offset loc_110F8 + dw offset locret_11159 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_111A3 proc near ; CODE XREF: sub_113A9+2Fp + +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_5], al + mov byte_1F2EA, 6 + mov word_1F2E8, 30h ; '0' + cmp [bp+var_5], 0 + jnz short loc_111D1 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_111DD +; --------------------------------------------------------------------------- + +loc_111D1: ; CODE XREF: sub_111A3+1Ej + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_111DD: ; CODE XREF: sub_111A3+2Cj + mov si, word_1F34C + cmp byte_1F34E, 0 + jz short loc_111EB + add si, 0Ch + +loc_111EB: ; CODE XREF: sub_111A3+43j + push word_1F33E + mov al, [bp+var_5] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFD0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + call sub_F100 + cmp byte_1F353, 1 + jnz loc_112A2 + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + mov ax, word_1F34C + add ax, 0FFF4h + mov si, ax + mov ax, word_1F3B0 + shr ax, 2 + mov [bp+var_6], al + mov ah, 0 + and ax, 3 + cmp ax, 1 + jnz short loc_1124A + add si, 6 + jmp short loc_11260 +; --------------------------------------------------------------------------- + +loc_1124A: ; CODE XREF: sub_111A3+A0j + test [bp+var_6], 3 + jz short loc_11260 + mov al, [bp+var_6] + mov ah, 0 + and ax, 1 + imul ax, 6 + add ax, 780h + add si, ax + +loc_11260: ; CODE XREF: sub_111A3+A5j + ; sub_111A3+ABj + xor di, di + jmp short loc_11299 +; --------------------------------------------------------------------------- + +loc_11264: ; CODE XREF: sub_111A3+FDj + mov bx, di + add bx, bx + push word ptr [bx+686Ah] + mov al, [bp+var_5] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE8h + mov [bp+var_2], ax + mov bx, di + add bx, bx + mov ax, [bx+6876h] + sar ax, 4 + add ax, 0FFF8h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + call sub_F100 + inc di + +loc_11299: ; CODE XREF: sub_111A3+BFj + mov al, byte_1F3A2 + mov ah, 0 + cmp ax, di + jg short loc_11264 + +loc_112A2: ; CODE XREF: sub_111A3+78j + pop di + pop si + leave + retn +sub_111A3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_112A6 proc near ; CODE XREF: sub_113A9+23p + +var_6 = byte ptr -6 +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 + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_6], al + cmp byte_23B02, 0 + jz short loc_112C5 + cmp word_1F3B0, 40h ; '@' + jb loc_113A3 + +loc_112C5: ; CODE XREF: sub_112A6+14j + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + cmp byte ptr word_1FE88, 0 + jz short loc_112E5 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_112F1 +; --------------------------------------------------------------------------- + +loc_112E5: ; CODE XREF: sub_112A6+2Fj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_112F1: ; CODE XREF: sub_112A6+3Dj + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov si, ax + mov ax, word_1F3B0 + shr ax, 2 + mov [bp+var_5], al + mov ah, 0 + and ax, 3 + cmp ax, 1 + jnz short loc_11313 + add si, 6 + jmp short loc_11329 +; --------------------------------------------------------------------------- + +loc_11313: ; CODE XREF: sub_112A6+66j + test [bp+var_5], 3 + jz short loc_11329 + mov al, [bp+var_5] + mov ah, 0 + and ax, 1 + imul ax, 6 + add ax, 780h + add si, ax + +loc_11329: ; CODE XREF: sub_112A6+6Bj + ; sub_112A6+71j + mov [bp+var_4], 0 + jmp short loc_1139D +; --------------------------------------------------------------------------- + +loc_11330: ; CODE XREF: sub_112A6+FBj + mov al, [bp+arg_2] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+arg_0] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+arg_2] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+arg_0] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + mov al, [bp+var_6] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE8h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + add ax, 0FFF8h + mov [bp+var_2], ax + push di + push ax + push si + call sub_F100 + inc [bp+var_4] + mov al, [bp+arg_2] + add al, 20h ; ' ' + mov [bp+arg_2], al + +loc_1139D: ; CODE XREF: sub_112A6+88j + cmp [bp+var_4], 8 + jl short loc_11330 + +loc_113A3: ; CODE XREF: sub_112A6+1Bj + pop di + pop si + leave + retn 4 +sub_112A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_113A9 proc far ; DATA XREF: sub_A524+91o + ; sub_A524+13Co + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short loc_113E0 + cmp byte_1F34F, 0 + jnz short loc_113D1 + push word_1F3B0 + mov ax, word_1F3B0 + shl ax, 5 + mov dx, 0C80h + sub dx, ax + push dx + call sub_112A6 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_113D1: ; CODE XREF: sub_113A9+11j + cmp byte_1F34F, 0FFh + jz short loc_113DD + call sub_111A3 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_113DD: ; CODE XREF: sub_113A9+2Dj + call sub_F58C + +loc_113E0: ; CODE XREF: sub_113A9+Aj + pop bp + retf +sub_113A9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_113E2 proc far ; CODE XREF: sub_A9EC+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 64h ; 'd' + mov byte ptr [si+13h], 0 + mov byte ptr [si+16h], 0 + mov byte ptr [si+17h], 0 + mov word ptr [si+0Eh], 780h + or dx, dx + jz short loc_11430 + add word ptr [si+0Eh], 28h ; '(' + +loc_11430: ; CODE XREF: sub_113E2+48j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_113E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11439 proc near ; CODE XREF: sub_116B6:loc_11751p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp word_1F3B0, 10h + jz short loc_11455 + cmp word_1F3B0, 14h + jnz short loc_1146B + +loc_11455: ; CODE XREF: sub_11439+13j + push word_1F33E + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_11544 +; --------------------------------------------------------------------------- + +loc_1146B: ; CODE XREF: sub_11439+1Aj + cmp word_1F3B0, 18h + jnz short loc_1148D + push word_1F33E + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + mov byte_23DE2, 40h ; '@' + jmp loc_11544 +; --------------------------------------------------------------------------- + +loc_1148D: ; CODE XREF: sub_11439+37j + cmp word_1F3B0, 1Ch + jb loc_11544 + mov al, byte_23DE2 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 22h ; '"' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_1F39F + mov byte ptr word_23E42, al + mov byte_23E4E, 2 + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov word_23E4C, 8 + cmp byte ptr word_1FE88, 0 + jz short loc_114D1 + add word_23E4C, 280h + +loc_114D1: ; CODE XREF: sub_11439+90j + cmp word_1F3B0, 24h ; '$' + jnb short loc_114E1 + test byte ptr word_1F3B0, 1 + jnz short loc_1152D + jmp short loc_11519 +; --------------------------------------------------------------------------- + +loc_114E1: ; CODE XREF: sub_11439+9Dj + cmp word_1F3B0, 24h ; '$' + jnz short loc_1150B + push 3 + call sub_EC3A + xor si, si + jmp short loc_11504 +; --------------------------------------------------------------------------- + +loc_114F3: ; CODE XREF: sub_11439+CEj + call sub_17730 + mov al, byte_23DE2 + add al, 8 + mov byte_23DE2, al + mov byte ptr word_23E42+1, al + inc si + +loc_11504: ; CODE XREF: sub_11439+B8j + cmp si, 8 + jl short loc_114F3 + jmp short loc_1152D +; --------------------------------------------------------------------------- + +loc_1150B: ; CODE XREF: sub_11439+ADj + cmp word_1F3B0, 2Ch ; ',' + ja short loc_1152D + test byte ptr word_1F3B0, 1 + jnz short loc_1152D + +loc_11519: ; CODE XREF: sub_11439+A6j + push 3 + call sub_EC3A + call sub_17730 + mov al, byte_23DE2 + add al, 8 + mov byte_23DE2, al + +loc_1152D: ; CODE XREF: sub_11439+A4j + ; sub_11439+D0j ... + cmp word_1F3B0, 2Ch ; ',' + jb short loc_11544 + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_11544: ; CODE XREF: sub_11439+2Fj + ; sub_11439+51j ... + pop si + leave + retn +sub_11439 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11547 proc near ; CODE XREF: sub_116B6:loc_11756p + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr [bp+var_2+1], al + mov al, byte_1F354 + add al, 3 + mov byte_1F354, al + cmp word_1F3B0, 20h ; ' ' + jb loc_1161D + cmp word_1F3B0, 20h ; ' ' + jz short loc_1157B + cmp word_1F3B0, 24h ; '$' + jz short loc_1157B + cmp word_1F3B0, 28h ; '(' + jnz short loc_11591 + +loc_1157B: ; CODE XREF: sub_11547+24j + ; sub_11547+2Bj + push word_1F33E + push word_1F340 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_1161D +; --------------------------------------------------------------------------- + +loc_11591: ; CODE XREF: sub_11547+32j + cmp word_1F3B0, 30h ; '0' + jnz short loc_115D2 + xor si, si + call sub_13A24 + jmp short loc_115C4 +; --------------------------------------------------------------------------- + +loc_115A1: ; CODE XREF: sub_11547+87j + push word_1F33E + push word_1F340 + push word ptr [bp-2] + push 2 + call sub_194A9 + inc si + mov al, byte_1F3A0 + mov ah, 0 + push ax + mov ax, 100h + cwd + pop bx + idiv bx + add al, byte ptr [bp+var_2] + +loc_115C4: ; CODE XREF: sub_11547+58j + mov byte ptr [bp+var_2], al + mov al, byte_1F3A0 + mov ah, 0 + cmp ax, si + jg short loc_115A1 + jmp short loc_1161D +; --------------------------------------------------------------------------- + +loc_115D2: ; CODE XREF: sub_11547+4Fj + cmp word_1F3B0, 60h ; '`' + jnz short loc_1161D + xor si, si + call sub_13A24 + jmp short loc_11606 +; --------------------------------------------------------------------------- + +loc_115E2: ; CODE XREF: sub_11547+C9j + push word_1F33E + push word_1F340 + push [bp+var_2] + push 0FEh ; 'þ' + call sub_194A9 + inc si + mov al, byte_1F3A0 + mov ah, 0 + push ax + mov ax, 100h + cwd + pop bx + idiv bx + add al, byte ptr [bp+var_2] + +loc_11606: ; CODE XREF: sub_11547+99j + mov byte ptr [bp+var_2], al + mov al, byte_1F3A0 + mov ah, 0 + cmp ax, si + jg short loc_115E2 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_1161D: ; CODE XREF: sub_11547+1Bj + ; sub_11547+47j ... + pop si + leave + retn +sub_11547 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11620 proc near ; CODE XREF: sub_116B6:loc_1175Bp + push bp + mov bp, sp + call sub_F356 + mov al, byte_1F3A2 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + cmp dx, 1 + jnz short loc_116A2 + push 0Ah + call sub_EC3A + mov byte ptr word_23E44+1, 0Eh + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_23DE3 + mov byte ptr word_23E42+1, al + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + mov byte_23E4E, 1 + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_23E44, al + call sub_17730 + mov al, byte_23DE3 + add al, 80h ; '€' + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte_1F3A1 + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov byte ptr word_23E42, al + call sub_17730 + mov al, byte_23DE3 + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte_23DE3 + add al, 10h + mov byte_23DE3, al + +loc_116A2: ; CODE XREF: sub_11620+17j + cmp word_1F3B0, 60h ; '`' + jb short loc_116B4 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_116B4: ; CODE XREF: sub_11620+87j + pop bp + retn +sub_11620 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_116B6 proc far ; DATA XREF: sub_A9EC+85o + ; sub_A9EC+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_116F6 + mov al, byte_1F39E + add al, al + add al, 32h ; '2' + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 0Ah + cwd + idiv bx + add al, 4 + mov byte_1F3A0, al + mov al, byte_1F39E + add al, 30h ; '0' + mov byte_1F3A1, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov dl, 0Ah + sub dl, al + mov byte_1F3A2, dl + +loc_116F6: ; CODE XREF: sub_116B6+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_117C1 ; jumptable 00011732 case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + inc byte_1F354 + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_117C4 + +loc_11723: ; CODE XREF: sub_116B6+78j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_11732 + add bx, 2 + loop loc_11723 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_11732: ; CODE XREF: sub_116B6+73j + jmp word ptr cs:[bx+28h] ; switch jump + +loc_11736: ; DATA XREF: seg003:25FCo + cmp word_1F3B0, 64h ; 'd' ; jumptable 00011732 case 0 + jnz locret_117C1 ; jumptable 00011732 case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_1174C: ; CODE XREF: sub_116B6:loc_11732j + ; DATA XREF: seg003:25FCo + call sub_F52D ; jumptable 00011732 case 1 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_11751: ; CODE XREF: sub_116B6:loc_11732j + ; DATA XREF: seg003:25FCo + call sub_11439 ; jumptable 00011732 cases 2-5 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_11756: ; CODE XREF: sub_116B6:loc_11732j + ; DATA XREF: seg003:25FCo + call sub_11547 ; jumptable 00011732 cases 6-10 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_1175B: ; CODE XREF: sub_116B6:loc_11732j + ; DATA XREF: seg003:25FCo + call sub_11620 ; jumptable 00011732 cases 11-17 + jmp short loc_11763 ; default +; --------------------------------------------------------------------------- + +loc_11760: ; CODE XREF: sub_116B6:loc_11732j + ; DATA XREF: seg003:25FCo + call sub_F3A9 ; jumptable 00011732 case 128 + +loc_11763: ; CODE XREF: sub_116B6+7Aj + ; sub_116B6+94j ... + mov ax, word_1F33E ; default + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 14h + mov word_220F4, 18h + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 180h + mov word_20E34, 180h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_117C1: ; CODE XREF: sub_116B6+47j + ; sub_116B6:loc_11732j ... + leave ; jumptable 00011732 case 255 + retf +sub_116B6 endp + +; --------------------------------------------------------------------------- + db 0 +word_117C4 dw 0, 1, 2, 3 ; DATA XREF: sub_116B6+6Ao + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_11736 ; jump table for switch statement + dw offset loc_1174C + dw offset loc_11751 + dw offset loc_11751 + dw offset loc_11751 + dw offset loc_11751 + dw offset loc_11756 + dw offset loc_11756 + dw offset loc_11756 + dw offset loc_11756 + dw offset loc_11756 + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_1175B + dw offset loc_11760 + dw offset locret_117C1 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11814 proc near ; CODE XREF: sub_11885+66p + ; sub_11885+72p ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 6, 0 + push si + mov si, [bp+arg_0] + mov bx, si + add bx, bx + mov ax, [bx+8B2h] + imul ax, 28h + add ax, word_1F34C + add ax, 0FB10h + mov [bp+var_6], ax + mov byte_1F2EA, 6 + mov bx, si + add bx, bx + mov ax, [bx+8C4h] + cwd + sub ax, dx + sar ax, 1 + mov word_1F2E8, ax + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFD0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + mov bx, si + add bx, bx + add ax, [bx+8B2h] + add ax, 0FFD8h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push [bp+var_6] + call sub_F100 + pop si + leave + retn 2 +sub_11814 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11885 proc near ; CODE XREF: seg003:2873p + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_5], al + mov byte_1F2EA, 4 + mov word_1F2E8, 30h ; '0' + push word_1F33E + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov [bp+var_4], ax + mov di, word_1F34C + cmp byte_1F34E, 0 + jz short loc_118CB + add di, 8 + +loc_118CB: ; CODE XREF: sub_11885+41j + push [bp+var_2] + push [bp+var_4] + push di + call sub_F100 + mov al, byte_1F354 + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov bx, 9 + cwd + idiv bx + mov si, dx + push dx + call sub_11814 + dec si + or si, si + jge short loc_118F6 + mov si, 8 + +loc_118F6: ; CODE XREF: sub_11885+6Cj + push si + call sub_11814 + dec si + or si, si + jge short loc_11902 + mov si, 8 + +loc_11902: ; CODE XREF: sub_11885+78j + push si + call sub_11814 + pop di + pop si + leave + retn +sub_11885 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1190A proc near ; CODE XREF: seg003:2867p + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 + + enter 8, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + mov [bp+var_4], dx + mov al, [bp+arg_2] + mov ah, 0 + mov bx, 9 + cwd + idiv bx + mov si, dx + push dx + call sub_11814 + dec si + or si, si + jge short loc_11936 + mov si, 8 + +loc_11936: ; CODE XREF: sub_1190A+27j + push si + call sub_11814 + dec si + or si, si + jge short loc_11942 + mov si, 8 + +loc_11942: ; CODE XREF: sub_1190A+33j + push si + call sub_11814 + cmp byte_23B02, 0 + jz short loc_11956 + cmp word_1F3B0, 40h ; '@' + jb loc_119FB + +loc_11956: ; CODE XREF: sub_1190A+41j + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 28Ch + mov [bp+var_6], ax + xor si, si + jmp loc_119F4 +; --------------------------------------------------------------------------- + +loc_11971: ; CODE XREF: sub_1190A+EDj + mov [bp+var_8], 0 + jmp short loc_119E1 +; --------------------------------------------------------------------------- + +loc_11978: ; CODE XREF: sub_1190A+DBj + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+arg_4] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+arg_4] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + push [bp+var_4] + call sub_A2D0 + add ax, 0FFF0h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + mov [bp+var_2], ax + push di + push ax + push [bp+var_6] + call sub_F100 + mov al, [bp+arg_0] + add al, 20h ; ' ' + mov [bp+arg_0], al + inc [bp+var_8] + +loc_119E1: ; CODE XREF: sub_1190A+6Cj + cmp [bp+var_8], 8 + jl short loc_11978 + mov al, [bp+arg_0] + add al, 3 + mov [bp+arg_0], al + sub [bp+var_6], 4 + inc si + +loc_119F4: ; CODE XREF: sub_1190A+64j + cmp si, 4 + jl loc_11971 + +loc_119FB: ; CODE XREF: sub_1190A+48j + pop di + pop si + leave + retn 6 +sub_1190A endp + +; --------------------------------------------------------------------------- + +loc_11A01: ; DATA XREF: sub_A9EC+91o + ; sub_A9EC+13Co + enter 2, 0 + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short locret_11A6B + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp-1], al + cmp byte ptr [bp-1], 0 + jnz short loc_11A2B + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_11A37 +; --------------------------------------------------------------------------- + +loc_11A2B: ; CODE XREF: seg003:282Bj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_11A37: ; CODE XREF: seg003:2839j + cmp byte_1F34F, 0 + jnz short loc_11A5C + mov ax, word_1F3B0 + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + shl dx, 4 + push dx + push word_1F3B0 + mov ax, word_1F3B0 + imul ax, 3 + push ax + call sub_1190A + leave + retf +; --------------------------------------------------------------------------- + +loc_11A5C: ; CODE XREF: seg003:284Cj + cmp byte_1F34F, 0FFh + jz short loc_11A68 + call sub_11885 + leave + retf +; --------------------------------------------------------------------------- + +loc_11A68: ; CODE XREF: seg003:2871j + call sub_F58C + +locret_11A6B: ; CODE XREF: seg003:281Cj + leave + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11A6D proc far ; CODE XREF: sub_AB84+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 6Eh ; 'n' + mov byte ptr [si+13h], 0 + mov word ptr [si+18h], 0 + mov word ptr [si+0Eh], 288h + or dx, dx + jz short loc_11AB8 + add word ptr [si+0Eh], 28h ; '(' + +loc_11AB8: ; CODE XREF: sub_11A6D+45j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_11A6D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11AC1 proc near ; CODE XREF: sub_11B51+4Fp + ; sub_11BC6+5Ep ... + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 6, 0 + push si + mov byte_23E4E, 2 + xor si, si + jmp short loc_11B43 +; --------------------------------------------------------------------------- + +loc_11ACF: ; CODE XREF: sub_11AC1+89j + cmp [bp+arg_0], 0 + jz short loc_11ADD + call sub_13A24 + mov byte ptr word_23E42+1, al + +loc_11ADD: ; CODE XREF: sub_11AC1+12j + mov ax, si + shl ax, 8 + mov dl, byte_1F3A0 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, byte_1F355 + mov [bp+var_5], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push word_1F356 + push word_1F33E + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push word_1F356 + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_4], ax + mov ax, [bp+var_2] + mov word_23E3E, ax + mov ax, [bp+var_4] + mov word_23E40, ax + call sub_17730 + inc si + +loc_11B43: ; CODE XREF: sub_11AC1+Cj + mov al, byte_1F3A0 + mov ah, 0 + cmp ax, si + jg short loc_11ACF + pop si + leave + retn 2 +sub_11AC1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11B51 proc near ; CODE XREF: sub_11E48:loc_11F1Dp + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_11B6B + mov byte_1F353, 1 + mov word_1F356, 0 + mov byte_1F354, 0 + +loc_11B6B: ; CODE XREF: sub_11B51+8j + mov al, byte_1F355 + add al, 4 + mov byte_1F355, al + cmp word_1F356, 400h + jle short loc_11BBC + mov byte_1F353, 2 + mov al, byte_1F355 + add al, 2 + mov byte_1F355, al + inc byte_1F354 + cmp byte_1F354, 40h ; '@' + jbe short loc_11BC4 + mov byte ptr word_23E44+1, 24h ; '$' + mov al, byte_1F39F + mov byte ptr word_23E42, al + push 1 + call sub_11AC1 + push 3 + call sub_EC3A + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_11BBC: ; CODE XREF: sub_11B51+28j + call sub_F356 + add word_1F356, 20h ; ' ' + +loc_11BC4: ; CODE XREF: sub_11B51+40j + pop bp + retn +sub_11B51 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11BC6 proc near ; CODE XREF: sub_11E48:loc_11F22p + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_11BE5 + mov byte_1F353, 1 + mov word_1F356, 0 + mov byte_1F354, 0 + mov byte_1F355, 0 + +loc_11BE5: ; CODE XREF: sub_11BC6+8j + mov al, byte_1F355 + add al, 0FEh ; 'þ' + mov byte_1F355, al + cmp word_1F356, 400h + jle short loc_11C55 + mov byte_1F353, 2 + add word_1F356, 8 + mov al, byte_1F355 + add al, 2 + mov byte_1F355, al + inc byte_1F354 + cmp byte_1F354, 40h ; '@' + jbe short loc_11C5D + mov byte ptr word_23E44+1, 5 + mov byte ptr word_23E42+1, 0 + mov al, byte_1F3A2 + mov byte ptr word_23E42, al + push 0 + call sub_11AC1 + mov byte ptr word_23E44+1, 18h + mov byte ptr word_23E42+1, 0 + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + push 0 + call sub_11AC1 + push 3 + call sub_EC3A + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_11C55: ; CODE XREF: sub_11BC6+2Dj + call sub_F356 + add word_1F356, 20h ; ' ' + +loc_11C5D: ; CODE XREF: sub_11BC6+4Aj + pop bp + retn +sub_11BC6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11C5F proc near ; CODE XREF: sub_11E48:loc_11F27p + push bp + mov bp, sp + call sub_F356 + mov al, byte_1F3A4 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + cmp dx, 1 + jnz loc_11D06 + push 3 + call sub_EC3A + mov byte_23E4E, 1 + mov al, byte ptr word_1F3B0 + mov byte ptr word_23E42+1, al + mov al, byte_1F3A3 + mov byte ptr word_23E42, al + mov byte ptr word_23E44+1, 26h ; '&' + mov byte_23E47, 4 + mov ax, word_1F33E + add ax, 0FD00h + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_17730 + mov ax, word_1F33E + add ax, 0FE80h + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 0C0h ; 'À' + mov word_23E40, ax + call sub_17730 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 180h + mov word_23E40, ax + call sub_17730 + mov ax, word_1F33E + add ax, 180h + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 0C0h ; 'À' + mov word_23E40, ax + call sub_17730 + mov ax, word_1F33E + add ax, 300h + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_17730 + +loc_11D06: ; CODE XREF: sub_11C5F+17j + cmp word_1F3B0, 60h ; '`' + jb short loc_11D18 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +loc_11D18: ; CODE XREF: sub_11C5F+ACj + pop bp + retn +sub_11C5F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11D1A proc near ; CODE XREF: sub_11E48:loc_11F2Cp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + cmp word_1F3B0, 1 + jnz short loc_11D37 + mov byte_1F353, 1 + mov word_1F356, 0 + mov byte_1F354, 0 + +loc_11D37: ; CODE XREF: sub_11D1A+Bj + mov al, byte_1F355 + add al, 0FCh ; 'ü' + mov byte_1F355, al + cmp word_1F356, 400h + jle loc_11E3C + mov byte_1F353, 2 + add word_1F356, 8 + mov al, byte_1F355 + add al, 0FEh ; 'þ' + mov byte_1F355, al + inc byte_1F354 + cmp byte_1F354, 40h ; '@' + jbe loc_11E44 + mov byte ptr word_23E44+1, 0 + mov byte_23E4E, 2 + xor di, di + jmp loc_11E18 +; --------------------------------------------------------------------------- + +loc_11D77: ; CODE XREF: sub_11D1A+105j + mov ax, di + shl ax, 8 + mov dl, byte_1F3A0 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, byte_1F355 + mov [bp+var_5], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push word_1F356 + push word_1F33E + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + mov al, [bp+var_5] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push word_1F356 + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_4], ax + mov ax, [bp+var_2] + mov word_23E3E, ax + mov ax, [bp+var_4] + mov word_23E40, ax + xor si, si + jmp short loc_11E0E +; --------------------------------------------------------------------------- + +loc_11DDB: ; CODE XREF: sub_11D1A+FBj + mov ax, si + shl ax, 7 + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, [bp+var_5] + add al, 40h ; '@' + mov byte ptr word_23E42+1, al + mov ax, si + imul ax, 30h + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, 10h + mov byte ptr word_23E42, al + call sub_17730 + inc si + +loc_11E0E: ; CODE XREF: sub_11D1A+BFj + mov al, byte_1F3A5 + mov ah, 0 + cmp ax, si + jg short loc_11DDB + inc di + +loc_11E18: ; CODE XREF: sub_11D1A+5Aj + mov al, byte_1F3A0 + mov ah, 0 + cmp ax, di + jg loc_11D77 + push 3 + call sub_EC3A + mov byte_1F353, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + jmp short loc_11E44 +; --------------------------------------------------------------------------- + +loc_11E3C: ; CODE XREF: sub_11D1A+2Bj + call sub_F356 + add word_1F356, 20h ; ' ' + +loc_11E44: ; CODE XREF: sub_11D1A+4Aj + ; sub_11D1A+120j + pop di + pop si + leave + retn +sub_11D1A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11E48 proc far ; DATA XREF: sub_AB84+85o + ; sub_AB84+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_11EC0 + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 3 + cwd + idiv bx + add al, 6 + mov byte_1F3A0, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F3A1, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 20h ; ' ' + mov byte_1F3A2, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 18h + mov byte_1F3A3, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov dl, 20h ; ' ' + sub dl, al + mov byte_1F3A4, dl + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 8 + mov byte_1F3A5, al + +loc_11EC0: ; CODE XREF: sub_11E48+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_11F92 ; jumptable 00011EFE case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + mov al, [bp+var_1] + mov byte ptr word_23E44, al + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_11F94 + +loc_11EEF: ; CODE XREF: sub_11E48+B2j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_11EFE + add bx, 2 + loop loc_11EEF + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11EFE: ; CODE XREF: sub_11E48+ADj + jmp word ptr cs:[bx+28h] ; switch jump + +loc_11F02: ; DATA XREF: seg003:2DCCo + cmp word_1F3B0, 64h ; 'd' ; jumptable 00011EFE case 0 + jnz locret_11F92 ; jumptable 00011EFE case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F18: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_F52D ; jumptable 00011EFE case 1 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F1D: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_11B51 ; jumptable 00011EFE cases 2-6 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F22: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_11BC6 ; jumptable 00011EFE cases 7-9 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F27: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_11C5F ; jumptable 00011EFE cases 12-14 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F2C: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_11D1A ; jumptable 00011EFE cases 10,11,15-17 + jmp short loc_11F34 ; default +; --------------------------------------------------------------------------- + +loc_11F31: ; CODE XREF: sub_11E48:loc_11EFEj + ; DATA XREF: seg003:2DCCo + call sub_F3A9 ; jumptable 00011EFE case 128 + +loc_11F34: ; CODE XREF: sub_11E48+B4j + ; sub_11E48+CEj ... + mov ax, word_1F33E ; default + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 20h ; ' ' + mov word_220F4, 18h + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_11F92: ; CODE XREF: sub_11E48+7Fj + ; sub_11E48:loc_11EFEj ... + leave ; jumptable 00011EFE case 255 + retf +sub_11E48 endp + +; --------------------------------------------------------------------------- +word_11F94 dw 0, 1, 2, 3 ; DATA XREF: sub_11E48+A4o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_11F02 ; jump table for switch statement + dw offset loc_11F18 + dw offset loc_11F1D + dw offset loc_11F1D + dw offset loc_11F1D + dw offset loc_11F1D + dw offset loc_11F1D + dw offset loc_11F22 + dw offset loc_11F22 + dw offset loc_11F22 + dw offset loc_11F2C + dw offset loc_11F2C + dw offset loc_11F27 + dw offset loc_11F27 + dw offset loc_11F27 + dw offset loc_11F2C + dw offset loc_11F2C + dw offset loc_11F2C + dw offset loc_11F31 + dw offset locret_11F92 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11FE4 proc near ; CODE XREF: sub_120A0+5Dp + ; sub_12103+31p + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 8, 0 + push si + push di + mov ax, word_1F356 + mov [bp+var_6], ax + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 502h + mov [bp+var_4], ax + cmp byte_1F353, 2 + jnz short loc_12012 + mov ax, word_1F3B0 + and ax, 3 + cmp ax, 2 + jnb short loc_12012 + add [bp+var_4], 0A00h + +loc_12012: ; CODE XREF: sub_11FE4+1Cj + ; sub_11FE4+27j + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + xor si, si + jmp short loc_12095 +; --------------------------------------------------------------------------- + +loc_12021: ; CODE XREF: sub_11FE4+B4j + mov ax, si + shl ax, 8 + cwd + idiv [bp+arg_0] + add al, byte_1F355 + mov [bp+var_7], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+var_6] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+var_7] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+var_6] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFF0h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + mov [bp+var_2], ax + push di + push ax + push [bp+var_4] + call sub_F100 + inc si + +loc_12095: ; CODE XREF: sub_11FE4+3Bj + cmp si, [bp+arg_0] + jl short loc_12021 + pop di + pop si + leave + retn 2 +sub_11FE4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_120A0 proc near ; CODE XREF: sub_12140+53p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte_1F2EA, 8 + mov word_1F2E8, 30h ; '0' + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFC0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov [bp+var_4], ax + mov si, word_1F34C + cmp byte_1F34E, 0 + jz short loc_120E4 + add si, 10h + +loc_120E4: ; CODE XREF: sub_120A0+3Fj + push [bp+var_2] + push [bp+var_4] + push si + call sub_F100 + cmp byte_1F353, 0 + jz short loc_12100 + mov al, byte_1F3A0 + mov ah, 0 + push ax + call sub_11FE4 + +loc_12100: ; CODE XREF: sub_120A0+55j + pop si + leave + retn +sub_120A0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12103 proc near ; CODE XREF: sub_12140+47p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + cmp byte_23B02, 0 + jz short loc_12114 + cmp word_1F3B0, 40h ; '@' + jb short loc_1213C + +loc_12114: ; CODE XREF: sub_12103+8j + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov byte_1F353, 1 + mov al, byte_1F355 + add al, 2 + mov byte_1F355, al + mov ax, [bp+arg_0] + mov word_1F356, ax + push 8 + call sub_11FE4 + mov byte_1F353, 0 + +loc_1213C: ; CODE XREF: sub_12103+Fj + pop bp + retn 2 +sub_12103 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12140 proc far ; DATA XREF: sub_AB84+91o + ; sub_AB84+13Co + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short loc_1219B + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + jnz short loc_12166 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_12172 +; --------------------------------------------------------------------------- + +loc_12166: ; CODE XREF: sub_12140+16j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_12172: ; CODE XREF: sub_12140+24j + cmp byte_1F34F, 0 + jnz short loc_1218C + mov ax, word_1F3B0 + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + shl dx, 4 + push dx + call sub_12103 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1218C: ; CODE XREF: sub_12140+37j + cmp byte_1F34F, 0FFh + jz short loc_12198 + call sub_120A0 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_12198: ; CODE XREF: sub_12140+51j + call sub_F58C + +loc_1219B: ; CODE XREF: sub_12140+Aj + pop bp + retf +sub_12140 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1219D proc far ; CODE XREF: sub_B04C+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 8Ch ; 'Œ' + mov byte ptr [si+13h], 0 + mov byte ptr [si+17h], 0 + mov word ptr [si+18h], 0 + mov word ptr [si+0Eh], 288h + or dx, dx + jz short loc_121EC + add word ptr [si+0Eh], 28h ; '(' + +loc_121EC: ; CODE XREF: sub_1219D+49j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_1219D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_121F5 proc near ; CODE XREF: sub_126A8:loc_12838p + +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte_1F3A0 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + cmp dx, 1 + jnz locret_12353 + cmp word_1F3B0, 1 + jnz short loc_12282 + mov byte_23DE4, 0E0h ; 'à' + mov byte_23DE5, 0 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov ax, word_1F33E + add ax, 0FC80h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + mov ax, word_1F33E + add ax, 380h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + push word_1F33E + mov ax, word_1F340 + add ax, 0FC80h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + push word_1F33E + mov ax, word_1F340 + add ax, 380h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + jmp short loc_1229A +; --------------------------------------------------------------------------- + +loc_12282: ; CODE XREF: sub_121F5+1Ej + cmp word_1F3B0, 80h ; '€' + jb short loc_1229A + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F353, 20h ; ' ' + +loc_1229A: ; CODE XREF: sub_121F5+8Bj + ; sub_121F5+93j + mov byte_23E4E, 1 + mov byte ptr word_23E44+1, 0 + mov al, byte_1F39F + mov byte ptr word_23E42, al + cmp byte_23DE5, 0 + jnz short loc_122CC + mov al, byte_23DE4 + add al, 8 + mov byte_23DE4, al + cmp byte_23DE4, 20h ; ' ' + jnz short loc_122E5 + mov byte_23DE5, 1 + mov byte_23DE4, 24h ; '$' + jmp short loc_122E5 +; --------------------------------------------------------------------------- + +loc_122CC: ; CODE XREF: sub_121F5+BAj + mov al, byte_23DE4 + add al, 0F8h ; 'ø' + mov byte_23DE4, al + cmp byte_23DE4, 0E4h ; 'ä' + jnz short loc_122E5 + mov byte_23DE5, 0 + mov byte_23DE4, 0E0h ; 'à' + +loc_122E5: ; CODE XREF: sub_121F5+C9j + ; sub_121F5+D5j ... + mov ax, word_1F33E + add ax, 380h + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_23DE4 + mov byte ptr word_23E42+1, al + call sub_17730 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 380h + mov word_23E40, ax + mov al, byte ptr word_23E42+1 + add al, 40h ; '@' + mov byte ptr word_23E42+1, al + call sub_17730 + mov ax, word_1F33E + add ax, 0FC80h + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte ptr word_23E42+1 + add al, 40h ; '@' + mov byte ptr word_23E42+1, al + call sub_17730 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 0FC80h + mov word_23E40, ax + mov al, byte ptr word_23E42+1 + add al, 40h ; '@' + mov byte ptr word_23E42+1, al + call sub_17730 + +locret_12353: ; CODE XREF: sub_121F5+15j + leave + retn +sub_121F5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12355 proc near ; CODE XREF: sub_126A8:loc_1283Dp + push bp + mov bp, sp + mov al, byte_1F3A2 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + cmp dx, 1 + jnz loc_12423 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE5B + cmp word_1F3B0, 80h ; '€' + jb short loc_1239D + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F353, 20h ; ' ' + +loc_1239D: ; CODE XREF: sub_12355+36j + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte_23E4E, 2 + mov byte ptr word_23E44+1, 25h ; '%' + mov al, byte_1F3A1 + mov byte ptr word_23E42, al + call sub_17730 + cmp byte_1F39E, 8 + jb short loc_12423 + mov byte_23E4E, 1 + mov byte ptr word_23E44+1, 23h ; '#' + mov al, byte_1F3A1 + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov byte ptr word_23E42, al + mov ax, word_1F33E + add ax, 380h + mov word_23E3E, ax + call sub_17730 + mov ax, word_1F33E + add ax, 0FC80h + mov word_23E3E, ax + call sub_17730 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + add ax, 380h + mov word_23E40, ax + call sub_17730 + mov ax, word_1F340 + add ax, 0FC80h + mov word_23E40, ax + call sub_17730 + +loc_12423: ; CODE XREF: sub_12355+14j + ; sub_12355+76j + pop bp + retn +sub_12355 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12425 proc near ; CODE XREF: sub_126A8:loc_12842p + push bp + mov bp, sp + test byte ptr word_1F3B0, 7 + jnz short loc_12447 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE5B + +loc_12447: ; CODE XREF: sub_12425+8j + cmp word_1F3B0, 30h ; '0' + jnz short loc_12496 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte_23E4E, 2 + mov byte ptr word_23E44+1, 26h ; '&' + mov byte_23E47, 30h ; '0' + mov al, byte_1F3A3 + mov byte ptr word_23E42, al + mov byte_23E51, 1 + call sub_17730 + mov byte_23E51, 0 + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F353, 20h ; ' ' + +loc_12496: ; CODE XREF: sub_12425+27j + pop bp + retn +sub_12425 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12498 proc near ; CODE XREF: sub_126A8:loc_12847p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp word_1F3B0, 20h ; ' ' + jnz loc_125B0 + mov ax, word_1F33E + add ax, 0FC80h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + mov ax, word_1F33E + add ax, 380h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + mov ax, word_1F340 + mov word_23E40, ax + mov byte ptr word_23E44+1, 0 + mov byte_23E4E, 1 + mov al, byte_1F3A4 + mov byte ptr word_23E42, al + xor si, si + jmp short loc_12546 +; --------------------------------------------------------------------------- + +loc_124F5: ; CODE XREF: sub_12498+B5j + mov ax, si + imul ax, 70h + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + shl ax, 4 + add ax, word_1F33E + add ax, 0FC80h + mov word_23E3E, ax + mov ax, si + shl ax, 6 + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov dl, 60h ; '`' + sub dl, al + mov byte ptr word_23E42+1, dl + call sub_17730 + mov al, 0 + sub al, byte ptr word_23E42+1 + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte ptr word_23E42 + add al, 2 + mov byte ptr word_23E42, al + inc si + +loc_12546: ; CODE XREF: sub_12498+5Bj + mov al, byte_1F3A5 + mov ah, 0 + cmp ax, si + jg short loc_124F5 + xor si, si + jmp short loc_125A4 +; --------------------------------------------------------------------------- + +loc_12553: ; CODE XREF: sub_12498+113j + mov ax, si + imul ax, 70h + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + shl ax, 4 + add ax, word_1F33E + add ax, 0FC80h + mov word_23E3E, ax + mov ax, si + shl ax, 6 + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov dl, 60h ; '`' + sub dl, al + mov byte ptr word_23E42+1, dl + call sub_17730 + mov al, 0 + sub al, byte ptr word_23E42+1 + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte ptr word_23E42 + add al, 0FEh ; 'þ' + mov byte ptr word_23E42, al + inc si + +loc_125A4: ; CODE XREF: sub_12498+B9j + mov al, byte_1F3A5 + mov ah, 0 + cmp ax, si + jg short loc_12553 + jmp loc_126A5 +; --------------------------------------------------------------------------- + +loc_125B0: ; CODE XREF: sub_12498+13j + cmp word_1F3B0, 40h ; '@' + jnz loc_126A5 + push word_1F33E + mov ax, word_1F340 + add ax, 0FC80h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + push word_1F33E + mov ax, word_1F340 + add ax, 380h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + mov ax, word_1F33E + mov word_23E3E, ax + mov byte_23E4E, 1 + mov byte ptr word_23E44+1, 22h ; '"' + mov al, byte_1F3A4 + mov byte ptr word_23E42, al + xor si, si + jmp short loc_1263F +; --------------------------------------------------------------------------- + +loc_125FF: ; CODE XREF: sub_12498+1AEj + mov ax, si + imul ax, 70h + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + shl ax, 4 + add ax, word_1F340 + add ax, 0FC80h + mov word_23E40, ax + mov ax, si + shl ax, 6 + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, 0E0h ; 'à' + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte ptr word_23E42 + add al, 2 + mov byte ptr word_23E42, al + inc si + +loc_1263F: ; CODE XREF: sub_12498+165j + mov al, byte_1F3A5 + mov ah, 0 + cmp ax, si + jg short loc_125FF + xor si, si + jmp short loc_1268C +; --------------------------------------------------------------------------- + +loc_1264C: ; CODE XREF: sub_12498+1FBj + mov ax, si + imul ax, 70h + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + shl ax, 4 + add ax, word_1F340 + add ax, 0FC80h + mov word_23E40, ax + mov ax, si + shl ax, 6 + mov dl, byte_1F3A5 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + add al, 0E0h ; 'à' + mov byte ptr word_23E42+1, al + call sub_17730 + mov al, byte ptr word_23E42 + add al, 0FEh ; 'þ' + mov byte ptr word_23E42, al + inc si + +loc_1268C: ; CODE XREF: sub_12498+1B2j + mov al, byte_1F3A5 + mov ah, 0 + cmp ax, si + jg short loc_1264C + mov byte_1F34F, 1 + mov word_1F3B0, 0 + mov byte_1F353, 20h ; ' ' + +loc_126A5: ; CODE XREF: sub_12498+115j + ; sub_12498+11Dj + pop si + leave + retn +sub_12498 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_126A8 proc far ; DATA XREF: sub_B04C+85o + ; sub_B04C+130o + +var_4 = word ptr -4 +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_12700 + mov al, byte_1F39E + add al, 30h ; '0' + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov dl, 6 + sub dl, al + mov byte_1F3A0, dl + mov al, byte_1F39E + add al, 34h ; '4' + mov byte_1F3A1, al + mov al, 20h ; ' ' + sub al, byte_1F39E + mov byte_1F3A2, al + mov al, byte_1F39E + add al, al + add al, 38h ; '8' + mov byte_1F3A3, al + mov al, byte_1F39E + add al, 10h + mov byte_1F3A4, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 0Ch + mov byte_1F3A5, al + +loc_12700: ; CODE XREF: sub_126A8+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_1290B + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + call sub_F512 + mov byte_23E50, 0 + mov al, [bp+var_1] + mov byte ptr word_23E44, al + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_1290E + +loc_12734: ; CODE XREF: sub_126A8+97j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_12744 + add bx, 2 + loop loc_12734 + jmp loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12744: ; CODE XREF: sub_126A8+92j + jmp word ptr cs:[bx+28h] ; switch jump + +loc_12748: ; DATA XREF: seg003:3746o + cmp word_1F3B0, 60h ; '`' ; jumptable 00012744 case 0 + jnz short loc_12772 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + push 0FFh + push word ptr [bp+var_1] + call sub_A3D2 + mov byte_1F355, 10h + mov byte_1F353, 10h + jmp loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12772: ; CODE XREF: sub_126A8+A5j + cmp word_1F3B0, 50h ; 'P' + jnz loc_12859 ; jumptable 00012744 case 255 + mov ax, word_1F33E + add ax, 0FC80h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + mov ax, word_1F33E + add ax, 380h + push ax + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + push word_1F33E + mov ax, word_1F340 + add ax, 0FC80h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + push word_1F33E + mov ax, word_1F340 + add ax, 380h + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_127D6: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + cmp byte_1F353, 10h ; jumptable 00012744 case 1 + jnz short loc_1280B + push 5 + call sub_13A50 + add al, al + mov [bp+var_2], al + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+8D6h] + mov word_1F33E, ax + mov al, [bp+var_2] + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+8D8h] + mov word_1F340, ax + mov byte_1F355, 10h + +loc_1280B: ; CODE XREF: sub_126A8+133j + cmp word_1F3B0, 30h ; '0' + jb short loc_12860 ; default + mov word_1F3B0, 0 + push 0Fh + call sub_13A36 + add al, 2 + mov byte_1F34F, al + inc byte_1F351 + mov al, byte_1F351 + cmp al, byte_1F352 + jbe short loc_12860 ; default + mov byte_1F34F, 80h ; '€' + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12838: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + call sub_121F5 ; jumptable 00012744 cases 2-5 + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_1283D: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + call sub_12355 ; jumptable 00012744 cases 6-9 + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12842: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + call sub_12425 ; jumptable 00012744 cases 10-13 + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12847: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + call sub_12498 ; jumptable 00012744 cases 14-17 + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_1284C: ; CODE XREF: sub_126A8:loc_12744j + ; DATA XREF: seg003:3746o + call sub_F3A9 ; jumptable 00012744 case 128 + push word ptr [bp+var_1] + call sub_A3A8 + jmp short loc_12860 ; default +; --------------------------------------------------------------------------- + +loc_12859: ; CODE XREF: sub_126A8:loc_12744j + ; sub_126A8+CFj + ; DATA XREF: ... + mov byte_23E50, 1 ; jumptable 00012744 case 255 + leave + retf +; --------------------------------------------------------------------------- + +loc_12860: ; CODE XREF: sub_126A8+99j + ; sub_126A8+C7j ... + mov byte_23E50, 1 ; default + test byte ptr word_23AF6, 3 + jnz short loc_12871 + mov ax, 1 + jmp short loc_12873 +; --------------------------------------------------------------------------- + +loc_12871: ; CODE XREF: sub_126A8+1C2j + xor ax, ax + +loc_12873: ; CODE XREF: sub_126A8+1C7j + add al, byte_1F354 + mov byte_1F354, al + and byte_1F354, 3 + cmp byte_1F355, 0 + jz short loc_128A2 + dec byte_1F355 + cmp byte_1F355, 0 + jz short loc_128A2 + mov al, byte_1F355 + mov ah, 0 + shl ax, 4 + push ax + push word ptr [bp+var_1] + call sub_A3D2 + +loc_128A2: ; CODE XREF: sub_126A8+1DCj + ; sub_126A8+1E7j + cmp byte_1F353, 0 + jz short loc_128AD + dec byte_1F353 + +loc_128AD: ; CODE XREF: sub_126A8+1FFj + mov ax, word_1F33E + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 20h ; ' ' + mov word_220F4, 18h + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_1290B: ; CODE XREF: sub_126A8+5Fj + leave + retf +sub_126A8 endp + +; --------------------------------------------------------------------------- + db 0 +word_1290E dw 0, 1, 2, 3 ; DATA XREF: sub_126A8+89o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_12748 ; jump table for switch statement + dw offset loc_127D6 + dw offset loc_12838 + dw offset loc_12838 + dw offset loc_12838 + dw offset loc_12838 + dw offset loc_1283D + dw offset loc_1283D + dw offset loc_1283D + dw offset loc_1283D + dw offset loc_12842 + dw offset loc_12842 + dw offset loc_12842 + dw offset loc_12842 + dw offset loc_12847 + dw offset loc_12847 + dw offset loc_12847 + dw offset loc_12847 + dw offset loc_1284C + dw offset loc_12859 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1295E proc near ; CODE XREF: sub_12ADD+55p + +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + mov [bp+var_6], dx + mov ax, word_1F356 + shl ax, 4 + mov [bp+var_8], ax + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov ax, word_1F34C + add ax, 790h + mov [bp+var_4], ax + mov al, byte_1F354 + mov ah, 0 + shl ax, 2 + add [bp+var_4], ax + xor si, si + mov al, byte_1F355 + jmp short loc_12A04 +; --------------------------------------------------------------------------- + +loc_129A0: ; CODE XREF: sub_1295E+ACj + mov al, [bp+var_9] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+var_8] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+var_9] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+var_8] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + push [bp+var_6] + call sub_A2D0 + add ax, 0FFF0h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + mov [bp+var_2], ax + push di + push ax + push [bp+var_4] + call sub_F100 + inc si + mov al, [bp+var_9] + add al, 10h + +loc_12A04: ; CODE XREF: sub_1295E+40j + mov [bp+var_9], al + cmp si, 10h + jl short loc_129A0 + pop di + pop si + leave + retn +sub_1295E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12A10 proc near ; CODE XREF: sub_12B99+45p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + cmp byte_1F353, 0 + jnz loc_12AA5 + mov byte_1F2EA, 8 + mov word_1F2E8, 40h ; '@' + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFC0h + mov di, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD0h + mov [bp+var_2], ax + mov si, word_1F34C + push di + push ax + push si + call sub_F100 + add di, 30h ; '0' + add [bp+var_2], 20h ; ' ' + cmp byte_1F34E, 0 + jz short loc_12A7A + mov byte_1F2EA, 3 + mov word_1F2E8, 28h ; '(' + add si, 778h + jmp short loc_12A99 +; --------------------------------------------------------------------------- + +loc_12A7A: ; CODE XREF: sub_12A10+57j + cmp byte_1F354, 0 + jz short loc_12AD9 + mov byte_1F2EA, 2 + mov word_1F2E8, 18h + mov al, byte_1F354 + mov ah, 0 + shl ax, 2 + add ax, 0Ch + add si, ax + +loc_12A99: ; CODE XREF: sub_12A10+68j + push di + push [bp+var_2] + push si + call sub_F100 + jmp short loc_12AD9 +; --------------------------------------------------------------------------- + +loc_12AA5: ; CODE XREF: sub_12A10+Bj + cmp byte_1F353, 18h + jnb short loc_12AD0 + cmp byte_1F353, 14h + jnb short loc_12AC5 + cmp byte_1F353, 0Ch + jb short loc_12ABE + push 2 + jmp short loc_12AD6 +; --------------------------------------------------------------------------- + +loc_12ABE: ; CODE XREF: sub_12A10+A8j + cmp byte_1F353, 8 + jb short loc_12AC9 + +loc_12AC5: ; CODE XREF: sub_12A10+A1j + push 5 + jmp short loc_12AD6 +; --------------------------------------------------------------------------- + +loc_12AC9: ; CODE XREF: sub_12A10+B3j + cmp byte_1F353, 4 + jb short loc_12AD4 + +loc_12AD0: ; CODE XREF: sub_12A10+9Aj + push 6 + jmp short loc_12AD6 +; --------------------------------------------------------------------------- + +loc_12AD4: ; CODE XREF: sub_12A10+BEj + push 0Fh + +loc_12AD6: ; CODE XREF: sub_12A10+ACj + ; sub_12A10+B7j ... + call sub_12B38 + +loc_12AD9: ; CODE XREF: sub_12A10+6Fj + ; sub_12A10+93j + pop di + pop si + leave + retn +sub_12A10 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12ADD proc near ; CODE XREF: sub_12B99+39p + push bp + mov bp, sp + push si + cmp byte_23B02, 0 + jz short loc_12AEF + cmp word_1F3B0, 40h ; '@' + jb short loc_12B35 + +loc_12AEF: ; CODE XREF: sub_12ADD+9j + mov si, word_1F3B0 + cmp si, 20h ; ' ' + jge short loc_12B02 + mov ax, si + shl ax, 3 + mov dx, 100h + jmp short loc_12B24 +; --------------------------------------------------------------------------- + +loc_12B02: ; CODE XREF: sub_12ADD+19j + cmp si, 40h ; '@' + jge short loc_12B1C + mov ax, si + shl ax, 3 + mov dx, 200h + sub dx, ax + mov word_1F356, dx + mov al, byte_1F355 + add al, 0FCh ; 'ü' + jmp short loc_12B2F +; --------------------------------------------------------------------------- + +loc_12B1C: ; CODE XREF: sub_12ADD+28j + mov ax, si + shl ax, 3 + mov dx, 300h + +loc_12B24: ; CODE XREF: sub_12ADD+23j + sub dx, ax + mov word_1F356, dx + mov al, byte_1F355 + add al, 4 + +loc_12B2F: ; CODE XREF: sub_12ADD+3Dj + mov byte_1F355, al + call sub_1295E + +loc_12B35: ; CODE XREF: sub_12ADD+10j + pop si + pop bp + retn +sub_12ADD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12B38 proc near ; CODE XREF: sub_12A10:loc_12AD6p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 6, 0 + mov byte_1F2EA, 8 + mov word_1F2E8, 40h ; '@' + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFC0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFD0h + mov [bp+var_4], ax + mov ax, word_1F34C + mov [bp+var_6], ax + mov ah, 3 + mov dx, 1 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov ah, 4 + mov dx, [bp+arg_0] + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + push [bp+var_2] + push [bp+var_4] + push [bp+var_6] + call sub_F100 + mov ah, 3 + xor dx, dx + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + leave + retn 2 +sub_12B38 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12B99 proc far ; DATA XREF: sub_B04C+91o + ; sub_B04C+13Co + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short loc_12BF9 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + jnz short loc_12BBF + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_12BCB +; --------------------------------------------------------------------------- + +loc_12BBF: ; CODE XREF: sub_12B99+16j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_12BCB: ; CODE XREF: sub_12B99+24j + cmp byte_1F34F, 0 + jnz short loc_12BD7 + call sub_12ADD + pop bp + retf +; --------------------------------------------------------------------------- + +loc_12BD7: ; CODE XREF: sub_12B99+37j + cmp byte_1F34F, 0FFh + jz short loc_12BE3 + call sub_12A10 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_12BE3: ; CODE XREF: sub_12B99+43j + call sub_F58C + cmp byte_1DB9E, 0FFh + jnz short loc_12BF9 + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + +loc_12BF9: ; CODE XREF: sub_12B99+Aj + ; sub_12B99+52j + pop bp + retf +sub_12B99 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12BFB proc far ; CODE XREF: sub_AD1C+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 64h ; 'd' + mov byte ptr [si+13h], 0 + mov word ptr [si+18h], 0 + mov word ptr [si+0Eh], 288h + or dx, dx + jz short loc_12C46 + add word ptr [si+0Eh], 28h ; '(' + +loc_12C46: ; CODE XREF: sub_12BFB+45j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_12BFB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12C4F proc near ; CODE XREF: sub_12FE8:loc_130A9p + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_12C60 + mov byte_1F353, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12C60: ; CODE XREF: sub_12C4F+8j + cmp word_1F3B0, 10h + jnz short loc_12C8B + mov byte_1F354, 0 + mov byte_1F353, 2 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE0C + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12C8B: ; CODE XREF: sub_12C4F+16j + cmp word_1F3B0, 28h ; '(' + jnz loc_12D1E + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CDBD + push word_1F33E + push word_1F340 + push 0E0h ; 'à' + call sub_19896 + push word_1F33E + push word_1F340 + push 8 + call sub_19896 + push word_1F33E + push word_1F340 + push 78h ; 'x' + call sub_19896 + push word_1F33E + push word_1F340 + push 0A0h ; ' ' + call sub_19896 + mov byte_23E4E, 7 + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte_1F39F + mov byte_23E47, al + mov byte_23E46, 80h ; '€' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov byte ptr word_23E42, 30h ; '0' + call sub_17730 + push 0Ah + call sub_EC3A + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12D1E: ; CODE XREF: sub_12C4F+41j + cmp word_1F3B0, 50h ; 'P' + jbe short loc_12D35 + mov byte_1F353, 0 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_12D35: ; CODE XREF: sub_12C4F+D4j + pop bp + retn +sub_12C4F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12D37 proc near ; CODE XREF: sub_12FE8:loc_130AEp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + cmp word_1F3B0, 1 + jnz short loc_12D54 + mov byte_1F353, 1 + jmp loc_12E75 +; --------------------------------------------------------------------------- + +loc_12D54: ; CODE XREF: sub_12D37+13j + cmp word_1F3B0, 10h + jnz short loc_12D7B + mov byte_1F354, 0 + mov byte_1F353, 2 + push word_1F33E + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_12E75 +; --------------------------------------------------------------------------- + +loc_12D7B: ; CODE XREF: sub_12D37+22j + cmp word_1F3B0, 28h ; '(' + jb loc_12E5E + cmp word_1F3B0, 50h ; 'P' + jnb loc_12E5E + mov byte_23E4E, 2 + mov byte ptr word_23E44+1, 26h ; '&' + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + cmp word_1F3B0, 28h ; '(' + jnz short loc_12DC5 + push word_1F33E + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CDBD + mov byte ptr word_23E42, 10h + mov al, byte_1F3A0 + jmp loc_12E4D +; --------------------------------------------------------------------------- + +loc_12DC5: ; CODE XREF: sub_12D37+71j + cmp word_1F3B0, 40h ; '@' + jnz short loc_12E2B + push word_1F33E + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CDBD + mov byte ptr word_23E42, 28h ; '(' + mov al, byte_1F3A1 + mov byte_23E47, al + call sub_17730 + push 0Ah + call sub_EC3A + mov byte_23E4E, 1 + mov byte ptr word_23E42+1, 20h ; ' ' + mov byte ptr word_23E42, 10h + mov byte ptr word_23E44+1, 22h ; '"' + xor si, si + jmp short loc_12E24 +; --------------------------------------------------------------------------- + +loc_12E0E: ; CODE XREF: sub_12D37+F0j + call sub_17730 + mov al, byte ptr word_23E42+1 + add al, 6 + mov byte ptr word_23E42+1, al + mov al, byte ptr word_23E42 + add al, 3 + mov byte ptr word_23E42, al + inc si + +loc_12E24: ; CODE XREF: sub_12D37+D5j + cmp si, 10h + jl short loc_12E0E + jmp short loc_12E75 +; --------------------------------------------------------------------------- + +loc_12E2B: ; CODE XREF: sub_12D37+93j + cmp word_1F3B0, 48h ; 'H' + jnz short loc_12E75 + push word_1F33E + push word_1F340 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CDBD + mov byte ptr word_23E42, 38h ; '8' + mov al, byte_1F3A2 + +loc_12E4D: ; CODE XREF: sub_12D37+8Bj + mov byte_23E47, al + call sub_17730 + push 0Ah + call sub_EC3A + jmp short loc_12E75 +; --------------------------------------------------------------------------- + +loc_12E5E: ; CODE XREF: sub_12D37+49j + ; sub_12D37+52j + cmp word_1F3B0, 60h ; '`' + jbe short loc_12E75 + mov byte_1F353, 0 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_12E75: ; CODE XREF: sub_12D37+1Aj + ; sub_12D37+41j ... + pop si + leave + retn +sub_12D37 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12E78 proc near ; CODE XREF: sub_12FE8:loc_130B3p + +var_1 = byte ptr -1 + + enter 2, 0 + call sub_F356 + mov al, byte_1F3A3 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + or dx, dx + jnz short loc_12EED + push 1Fh + call sub_13A36 + sub al, 10h + mov [bp+var_1], al + push 1 + call sub_13A36 + or ax, ax + jz short loc_12EB0 + mov al, 80h ; '€' + sub al, [bp+var_1] + mov [bp+var_1], al + +loc_12EB0: ; CODE XREF: sub_12E78+2Ej + push word_1F33E + push word_1F340 + push word ptr [bp+var_1] + call sub_19896 + mov byte_23E4E, 4 + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte_1F3A4 + mov byte_23E47, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov byte ptr word_23E42, 30h ; '0' + call sub_17730 + push 0Ah + call sub_EC3A + +loc_12EED: ; CODE XREF: sub_12E78+17j + cmp word_1F3B0, 64h ; 'd' + jbe short locret_12F04 + mov byte_1F353, 0 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +locret_12F04: ; CODE XREF: sub_12E78+7Aj + leave + retn +sub_12E78 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12F06 proc near ; CODE XREF: sub_12FE8:loc_130B8p + push bp + mov bp, sp + cmp word_1F3B0, 1 + jnz short loc_12F17 + mov byte_1F353, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12F17: ; CODE XREF: sub_12F06+8j + cmp word_1F3B0, 10h + jnz short loc_12F77 + mov byte_1F354, 0 + mov byte_1F353, 2 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE0C + mov byte_23DE6, 0C0h ; 'À' + push 3 + call sub_13A36 + mov byte_23DE7, al + cmp byte_23DE7, 0 + jnz short loc_12F5A + mov al, 0FDh ; 'ý' + jmp short loc_12F72 +; --------------------------------------------------------------------------- + +loc_12F5A: ; CODE XREF: sub_12F06+4Ej + cmp byte_23DE7, 1 + jnz short loc_12F65 + mov al, 0FFh + jmp short loc_12F72 +; --------------------------------------------------------------------------- + +loc_12F65: ; CODE XREF: sub_12F06+59j + cmp byte_23DE7, 2 + jnz short loc_12F70 + mov al, 1 + jmp short loc_12F72 +; --------------------------------------------------------------------------- + +loc_12F70: ; CODE XREF: sub_12F06+64j + mov al, 3 + +loc_12F72: ; CODE XREF: sub_12F06+52j + ; sub_12F06+5Dj ... + mov byte_23DE7, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12F77: ; CODE XREF: sub_12F06+16j + cmp word_1F3B0, 20h ; ' ' + jb short loc_12FCF + cmp word_1F3B0, 6Ch ; 'l' + jnb short loc_12FCF + test byte ptr word_1F3B0, 3 + jnz short loc_12FBF + mov byte_23E4E, 2 + mov byte ptr word_23E44+1, 26h ; '&' + mov byte_23E47, 5 + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_1F3A5 + mov byte ptr word_23E42, al + mov al, byte_23DE6 + mov byte ptr word_23E42+1, al + call sub_17730 + push 0Ah + call sub_EC3A + +loc_12FBF: ; CODE XREF: sub_12F06+84j + cmp word_1F3B0, 40h ; '@' + jbe short loc_12FE6 + mov al, byte_23DE7 + add byte_23DE6, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_12FCF: ; CODE XREF: sub_12F06+76j + ; sub_12F06+7Dj + cmp word_1F3B0, 70h ; 'p' + jbe short loc_12FE6 + mov byte_1F353, 0 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_12FE6: ; CODE XREF: sub_12F06+BEj + ; sub_12F06+CEj + pop bp + retn +sub_12F06 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12FE8 proc far ; DATA XREF: sub_AD1C+85o + ; sub_AD1C+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_1304F + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 18h + mov byte_1F3A0, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F3A1, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 14h + mov byte_1F3A2, al + mov al, 20h ; ' ' + sub al, byte_1F39E + mov byte_1F3A3, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 18h + mov byte_1F3A4, al + mov al, byte_1F39E + add al, 40h ; '@' + mov byte_1F3A5, al + +loc_1304F: ; CODE XREF: sub_12FE8+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_13122 ; jumptable 0001308A case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + call sub_F512 + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_13124 + +loc_1307B: ; CODE XREF: sub_12FE8+9Ej + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_1308A + add bx, 2 + loop loc_1307B + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_1308A: ; CODE XREF: sub_12FE8+99j + jmp word ptr cs:[bx+28h] ; switch jump + +loc_1308E: ; DATA XREF: seg003:3F5Co + cmp word_1F3B0, 64h ; 'd' ; jumptable 0001308A case 0 + jnz locret_13122 ; jumptable 0001308A case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130A4: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_F52D ; jumptable 0001308A case 1 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130A9: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_12C4F ; jumptable 0001308A cases 2-4 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130AE: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_12D37 ; jumptable 0001308A cases 7-12 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130B3: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_12E78 ; jumptable 0001308A cases 13-15 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130B8: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_12F06 ; jumptable 0001308A cases 5,6,16,17 + jmp short loc_130C0 ; default +; --------------------------------------------------------------------------- + +loc_130BD: ; CODE XREF: sub_12FE8:loc_1308Aj + ; DATA XREF: seg003:3F5Co + call sub_F3A9 ; jumptable 0001308A case 128 + +loc_130C0: ; CODE XREF: sub_12FE8+A0j + ; sub_12FE8+BAj ... + inc byte_1F354 ; default + mov ax, word_1F33E + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 20h ; ' ' + mov word_220F4, 18h + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_13122: ; CODE XREF: sub_12FE8+6Ej + ; sub_12FE8:loc_1308Aj ... + leave ; jumptable 0001308A case 255 + retf +sub_12FE8 endp + +; --------------------------------------------------------------------------- +word_13124 dw 0, 1, 2, 3 ; DATA XREF: sub_12FE8+90o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_1308E ; jump table for switch statement + dw offset loc_130A4 + dw offset loc_130A9 + dw offset loc_130A9 + dw offset loc_130A9 + dw offset loc_130B8 + dw offset loc_130B8 + dw offset loc_130AE + dw offset loc_130AE + dw offset loc_130AE + dw offset loc_130AE + dw offset loc_130AE + dw offset loc_130AE + dw offset loc_130B3 + dw offset loc_130B3 + dw offset loc_130B3 + dw offset loc_130B8 + dw offset loc_130B8 + dw offset loc_130BD + dw offset locret_13122 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13174 proc near ; CODE XREF: seg003:4153p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov byte_1F2EA, 8 + mov word_1F2E8, 28h ; '(' + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFC0h + mov di, ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE8h + mov [bp+var_2], ax + mov si, word_1F34C + cmp byte_1F34E, 0 + jz short loc_131B8 + add si, 10h + +loc_131B8: ; CODE XREF: sub_13174+3Fj + push di + push [bp+var_2] + push si + call sub_F100 + mov byte_1F2EA, 4 + mov word_1F2E8, 20h ; ' ' + add di, 20h ; ' ' + cmp byte_1F353, 1 + jnz short loc_131E4 + push di + push [bp+var_2] + mov ax, word_1F34C + add ax, 0C80h + push ax + jmp short loc_1321A +; --------------------------------------------------------------------------- + +loc_131E4: ; CODE XREF: sub_13174+61j + cmp byte_1F353, 2 + jnz short loc_1321F + mov ax, word_1F34C + add ax, 0C80h + mov si, ax + cmp byte_1F354, 8 + jb short loc_13215 + cmp byte_1F354, 10h + jnb short loc_13206 + add si, 8 + jmp short loc_13215 +; --------------------------------------------------------------------------- + +loc_13206: ; CODE XREF: sub_13174+8Bj + cmp byte_1F354, 18h + jnb short loc_13212 + add si, 10h + jmp short loc_13215 +; --------------------------------------------------------------------------- + +loc_13212: ; CODE XREF: sub_13174+97j + add si, 18h + +loc_13215: ; CODE XREF: sub_13174+84j + ; sub_13174+90j ... + push di + push [bp+var_2] + push si + +loc_1321A: ; CODE XREF: sub_13174+6Ej + call sub_F100 + +loc_1321F: ; CODE XREF: sub_13174+75j + pop di + pop si + leave + retn +sub_13174 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13223 proc near ; CODE XREF: seg003:4147p + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov ax, word_1F3B0 + add ax, ax + shl ax, 4 + mov dx, 0C80h + sub dx, ax + mov [bp+var_6], dx + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + cmp word_1F3B0, 20h ; ' ' + jnb short loc_13254 + cmp byte_23B02, 0 + jnz loc_132FA + +loc_13254: ; CODE XREF: sub_13223+26j + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 284h + mov [bp+var_4], ax + mov ax, word_1F3B0 + shr ax, 2 + and ax, 3 + shl ax, 5 + imul ax, 28h + add ax, [bp+var_4] + mov [bp+var_4], ax + mov al, byte_1F355 + mov [bp+var_7], al + mov al, 0 + sub al, [bp+var_7] + mov [bp+var_7], al + xor si, si + jmp short loc_132F5 +; --------------------------------------------------------------------------- + +loc_13286: ; CODE XREF: sub_13223+D5j + mov al, [bp+var_7] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+var_6] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+var_7] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+var_6] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFF0h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + mov [bp+var_2], ax + push di + push ax + push [bp+var_4] + call sub_F100 + inc si + mov al, [bp+var_7] + add al, 10h + mov [bp+var_7], al + +loc_132F5: ; CODE XREF: sub_13223+61j + cmp si, 10h + jl short loc_13286 + +loc_132FA: ; CODE XREF: sub_13223+2Dj + pop di + pop si + leave + retn +sub_13223 endp + +; --------------------------------------------------------------------------- + +loc_132FE: ; DATA XREF: sub_AD1C+91o + ; sub_AD1C+13Co + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short loc_1334B + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + jnz short loc_13324 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_13330 +; --------------------------------------------------------------------------- + +loc_13324: ; CODE XREF: seg003:4124j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_13330: ; CODE XREF: seg003:4132j + cmp byte_1F34F, 0 + jnz short loc_1333C + call sub_13223 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1333C: ; CODE XREF: seg003:4145j + cmp byte_1F34F, 0FFh + jz short loc_13348 + call sub_13174 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_13348: ; CODE XREF: seg003:4151j + call sub_F58C + +loc_1334B: ; CODE XREF: seg003:4118j + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1334D proc far ; CODE XREF: sub_AEB4+18EP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + mov dx, [bp+arg_0] + mov ax, dx + shl ax, 5 + add ax, 1DFEh + mov si, ax + mov word ptr [si], 900h + mov word ptr [si+2], 500h + mov word ptr [si+8], 0FFE0h + mov word ptr [si+0Ah], 0 + mov byte ptr [si+12h], 0 + mov byte ptr [si+10h], 0 + mov byte ptr [si+11h], 0 + mov word ptr [si+0Ch], 6Eh ; 'n' + mov byte ptr [si+13h], 0 + mov byte ptr [si+1Ah], 4 + mov word ptr [si+18h], 0 + mov word ptr [si+0Eh], 286h + or dx, dx + jz short loc_1339C + add word ptr [si+0Eh], 28h ; '(' + +loc_1339C: ; CODE XREF: sub_1334D+49j + mov byte ptr [si+15h], 0 + pop si + pop bp + retf 2 +sub_1334D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_133A5 proc near ; CODE XREF: sub_13661:loc_13705p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + cmp byte_1F358, 8 + jg short loc_133BC + test byte ptr word_1F3B0, 7 + jnz short loc_133BC + inc byte_1F358 + +loc_133BC: ; CODE XREF: sub_133A5+Aj + ; sub_133A5+11j + cmp word_1F3B0, 10h + jnz short loc_133DE + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE0C + jmp loc_134A7 +; --------------------------------------------------------------------------- + +loc_133DE: ; CODE XREF: sub_133A5+1Cj + cmp word_1F3B0, 28h ; '(' + jnz loc_13495 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CDBD + mov byte_23E4E, 2 + mov byte ptr word_23E44+1, 16h + mov byte ptr word_23E42, 1Ch + push 1 + call sub_13A36 + or ax, ax + jz short loc_1341D + mov al, 30h ; '0' + jmp short loc_1341F +; --------------------------------------------------------------------------- + +loc_1341D: ; CODE XREF: sub_133A5+72j + mov al, 0D0h ; 'Ð' + +loc_1341F: ; CODE XREF: sub_133A5+76j + mov [bp+var_2], al + xor si, si + jmp short loc_13483 +; --------------------------------------------------------------------------- + +loc_13426: ; CODE XREF: sub_133A5+E5j + mov ax, si + shl ax, 8 + mov dl, byte_1F39F + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 300h + push word_1F33E + call sub_EA5D + add sp, 6 + mov word_23E3E, ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 300h + push word_1F340 + call sub_EA5D + add sp, 6 + mov word_23E40, ax + mov al, [bp+var_1] + add al, [bp+var_2] + mov byte ptr word_23E42+1, al + call sub_17730 + inc si + +loc_13483: ; CODE XREF: sub_133A5+7Fj + mov al, byte_1F39F + mov ah, 0 + cmp ax, si + jg short loc_13426 + push 5 + call sub_EC3A + jmp short loc_134A7 +; --------------------------------------------------------------------------- + +loc_13495: ; CODE XREF: sub_133A5+3Ej + cmp word_1F3B0, 50h ; 'P' + jbe short loc_134A7 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_134A7: ; CODE XREF: sub_133A5+36j + ; sub_133A5+EEj ... + pop si + leave + retn +sub_133A5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_134AA proc near ; CODE XREF: sub_13661:loc_1370Ap + +var_1 = byte ptr -1 + + enter 2, 0 + push si + cmp byte_1F358, 0F8h ; 'ø' + jl short loc_134C1 + test byte ptr word_1F3B0, 7 + jnz short loc_134C1 + dec byte_1F358 + +loc_134C1: ; CODE XREF: sub_134AA+Aj + ; sub_134AA+11j + cmp word_1F3B0, 10h + jnz short loc_134E3 + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CE5B + jmp loc_135A1 +; --------------------------------------------------------------------------- + +loc_134E3: ; CODE XREF: sub_134AA+1Cj + cmp word_1F3B0, 28h ; '(' + jnz short loc_1353F + push word_1F33E + push word_1F340 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CDBD + call sub_13A24 + mov [bp+var_1], al + xor si, si + jmp short loc_13532 +; --------------------------------------------------------------------------- + +loc_1350E: ; CODE XREF: sub_134AA+8Fj + mov ax, si + shl ax, 8 + mov dl, byte_1F3A0 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov [bp+var_1], al + push word_1F33E + push word_1F340 + push word ptr [bp+var_1] + call sub_1B006 + inc si + +loc_13532: ; CODE XREF: sub_134AA+62j + mov al, byte_1F3A0 + mov ah, 0 + cmp ax, si + jg short loc_1350E + push 5 + jmp short loc_13588 +; --------------------------------------------------------------------------- + +loc_1353F: ; CODE XREF: sub_134AA+3Ej + cmp word_1F3B0, 40h ; '@' + jnz short loc_1358F + mov byte_23E4E, 1 + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte_1F3A1 + mov byte_23E47, al + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov byte ptr word_23E42, 20h ; ' ' + xor si, si + jmp short loc_13581 +; --------------------------------------------------------------------------- + +loc_1356B: ; CODE XREF: sub_134AA+DAj + call sub_13A24 + mov byte ptr word_23E42+1, al + mov al, byte ptr word_23E42 + add al, 8 + mov byte ptr word_23E42, al + call sub_17730 + inc si + +loc_13581: ; CODE XREF: sub_134AA+BFj + cmp si, 4 + jl short loc_1356B + push 0Ah + +loc_13588: ; CODE XREF: sub_134AA+93j + call sub_EC3A + jmp short loc_135A1 +; --------------------------------------------------------------------------- + +loc_1358F: ; CODE XREF: sub_134AA+9Aj + cmp word_1F3B0, 50h ; 'P' + jbe short loc_135A1 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + +loc_135A1: ; CODE XREF: sub_134AA+36j + ; sub_134AA+E3j ... + pop si + leave + retn +sub_134AA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_135A4 proc near ; CODE XREF: sub_13661:loc_1370Fp + +var_1 = byte ptr -1 + + enter 2, 0 + call sub_F356 + cmp byte_1F358, 2 + jz short loc_135CD + test byte ptr word_1F3B0, 7 + jnz short loc_135CD + cmp byte_1F358, 2 + jle short loc_135C4 + mov al, 0FFh + jmp short loc_135C6 +; --------------------------------------------------------------------------- + +loc_135C4: ; CODE XREF: sub_135A4+1Aj + mov al, 1 + +loc_135C6: ; CODE XREF: sub_135A4+1Ej + add al, byte_1F358 + mov byte_1F358, al + +loc_135CD: ; CODE XREF: sub_135A4+Cj + ; sub_135A4+13j + mov al, byte_1F3A2 + mov ah, 0 + push ax + mov ax, word_1F3B0 + xor dx, dx + pop bx + div bx + mov [bp+var_1], dl + cmp [bp+var_1], 1 + jnz short loc_135F8 + call sub_13A24 + mov byte_23DE8, al + push 1 + call sub_13A36 + inc al + mov byte_23DE9, al + +loc_135F8: ; CODE XREF: sub_135A4+3Ej + mov al, byte_23DE9 + mov byte_23E4E, al + mov byte ptr word_23E44+1, 0Eh + mov ax, word_1F33E + mov word_23E3E, ax + mov ax, word_1F340 + mov word_23E40, ax + mov al, byte_23DE8 + mov byte ptr word_23E42+1, al + mov al, byte_1F3A3 + mov byte ptr word_23E42, al + cmp [bp+var_1], 1 + jz short loc_13633 + cmp [bp+var_1], 5 + jz short loc_13633 + cmp [bp+var_1], 9 + jz short loc_13633 + cmp [bp+var_1], 0Dh + jnz short loc_1364C + +loc_13633: ; CODE XREF: sub_135A4+7Bj + ; sub_135A4+81j ... + push 0Ah + call sub_EC3A + call sub_17730 + mov al, byte_23DE8 + add al, 80h ; '€' + mov byte ptr word_23E42+1, al + call sub_17730 + +loc_1364C: ; CODE XREF: sub_135A4+8Dj + cmp word_1F3B0, 80h ; '€' + jb short locret_1365F + mov byte_1F34F, 1 + mov word_1F3B0, 0 + +locret_1365F: ; CODE XREF: sub_135A4+AEj + leave + retn +sub_135A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13661 proc far ; DATA XREF: sub_AEB4+85o + ; sub_AEB4+130o + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + call sub_F402 + or al, al + jz short loc_136AB + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 10h + mov byte_1F39F, al + mov al, byte_1F39E + mov ah, 0 + mov bx, 4 + cwd + idiv bx + add al, 8 + mov byte_1F3A0, al + mov al, byte_1F39E + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 1Ch + mov byte_1F3A1, al + mov al, 20h ; ' ' + sub al, byte_1F39E + mov byte_1F3A2, al + mov al, byte_1F39E + add al, 40h ; '@' + mov byte_1F3A3, al + +loc_136AB: ; CODE XREF: sub_13661+9j + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz locret_1377C ; jumptable 000136E6 case 255 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + call sub_F512 + inc word_1F3B0 + mov al, byte_1F34F + mov ah, 0 + mov [bp+var_4], ax + mov cx, 14h ; switch 20 cases + mov bx, offset word_1377F + +loc_136D7: ; CODE XREF: sub_13661+81j + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_136E6 + add bx, 2 + loop loc_136D7 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_136E6: ; CODE XREF: sub_13661+7Cj + jmp word ptr cs:[bx+28h] ; switch jump + +loc_136EA: ; DATA XREF: seg003:45B7o + cmp word_1F3B0, 64h ; 'd' ; jumptable 000136E6 case 0 + jnz locret_1377C ; jumptable 000136E6 case 255 + mov word_1F3B0, 0 + mov byte_1F34F, 1 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_13700: ; CODE XREF: sub_13661:loc_136E6j + ; DATA XREF: seg003:45B7o + call sub_F52D ; jumptable 000136E6 case 1 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_13705: ; CODE XREF: sub_13661:loc_136E6j + ; DATA XREF: seg003:45B7o + call sub_133A5 ; jumptable 000136E6 cases 2-5 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_1370A: ; CODE XREF: sub_13661:loc_136E6j + ; DATA XREF: seg003:45B7o + call sub_134AA ; jumptable 000136E6 cases 7-12 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_1370F: ; CODE XREF: sub_13661:loc_136E6j + ; DATA XREF: seg003:45B7o + call sub_135A4 ; jumptable 000136E6 cases 6,13-17 + jmp short loc_13717 ; default +; --------------------------------------------------------------------------- + +loc_13714: ; CODE XREF: sub_13661:loc_136E6j + ; DATA XREF: seg003:45B7o + call sub_F3A9 ; jumptable 000136E6 case 128 + +loc_13717: ; CODE XREF: sub_13661+83j + ; sub_13661+9Dj ... + mov al, byte_1F358 ; default + add byte_1F354, al + mov ax, word_1F33E + mov word_220EE, ax + mov ax, word_1F340 + mov word_220F0, ax + mov word_220F2, 20h ; ' ' + mov word_220F4, 18h + mov al, [bp+var_1] + mov byte_220FA, al + call sub_13A6E + mov byte_20E2C, 1 + mov word_20E32, 200h + mov word_20E34, 200h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, word_1F33E + mov word_20E2E, ax + mov ax, word_1F340 + mov word_20E30, ax + call sub_158F5 + mov byte_1F34E, al + mov ah, 0 + sub word_1F34A, ax + mov byte_20E2C, 0 + nop + push cs + call near ptr sub_F4B4 + +locret_1377C: ; CODE XREF: sub_13661+51j + ; sub_13661:loc_136E6j ... + leave ; jumptable 000136E6 case 255 + retf +sub_13661 endp + +; --------------------------------------------------------------------------- + db 0 +word_1377F dw 0, 1, 2, 3 ; DATA XREF: sub_13661+73o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 0Bh + dw 0Ch, 0Dh, 0Eh, 0Fh + dw 10h, 11h, 80h, 0FFh + dw offset loc_136EA ; jump table for switch statement + dw offset loc_13700 + dw offset loc_13705 + dw offset loc_13705 + dw offset loc_13705 + dw offset loc_13705 + dw offset loc_1370F + dw offset loc_1370A + dw offset loc_1370A + dw offset loc_1370A + dw offset loc_1370A + dw offset loc_1370A + dw offset loc_1370A + dw offset loc_1370F + dw offset loc_1370F + dw offset loc_1370F + dw offset loc_1370F + dw offset loc_1370F + dw offset loc_13714 + dw offset locret_1377C + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_137CF proc near ; CODE XREF: sub_1398B+45p + +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + push di + mov byte_1F2EA, 6 + mov word_1F2E8, 30h ; '0' + push word_1F33E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFD0h + mov [bp+var_2], ax + mov ax, word_1F340 + sar ax, 4 + add ax, 0FFE0h + mov [bp+var_4], ax + mov si, word_1F34C + cmp byte_1F34E, 0 + jz short loc_13814 + add si, 0Ch + +loc_13814: ; CODE XREF: sub_137CF+40j + push [bp+var_2] + push [bp+var_4] + push si + call sub_F100 + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov al, byte_1F354 + mov [bp+var_9], al + add [bp+var_2], 28h ; '(' + add [bp+var_4], 28h ; '(' + xor di, di + jmp short loc_138AA +; --------------------------------------------------------------------------- + +loc_1383D: ; CODE XREF: sub_137CF+DEj + mov al, [bp+var_9] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push 30h ; '0' + push [bp+var_2] + call sub_EA5D + add sp, 6 + mov [bp+var_6], ax + mov al, [bp+var_9] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push 30h ; '0' + push [bp+var_4] + call sub_EA5D + add sp, 6 + mov [bp+var_8], ax + test di, 3 + jz short loc_1388B + mov ax, di + and ax, 3 + add ax, ax + add ax, 167Eh + mov si, ax + jmp short loc_1388E +; --------------------------------------------------------------------------- + +loc_1388B: ; CODE XREF: sub_137CF+ACj + mov si, 284h + +loc_1388E: ; CODE XREF: sub_137CF+BAj + push [bp+var_6] + push [bp+var_8] + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, si + push ax + call sub_F100 + inc di + mov al, [bp+var_9] + add al, 20h ; ' ' + mov [bp+var_9], al + +loc_138AA: ; CODE XREF: sub_137CF+6Cj + cmp di, 8 + jl short loc_1383D + pop di + pop si + leave + retn +sub_137CF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_138B3 proc near ; CODE XREF: sub_1398B+39p + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov ax, word_1F3B0 + add ax, ax + shl ax, 4 + mov dx, 0C80h + sub dx, ax + mov [bp+var_6], dx + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + cmp word_1F3B0, 40h ; '@' + jnb short loc_138E4 + test byte ptr word_23AF6, 1 + jnz loc_13987 + +loc_138E4: ; CODE XREF: sub_138B3+26j + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 780h + mov [bp+var_4], ax + test byte ptr word_1F3B0, 1 + jz short loc_138FB + add [bp+var_4], 780h + +loc_138FB: ; CODE XREF: sub_138B3+41j + mov al, byte ptr word_1F3B0 + shl al, 2 + mov [bp+var_7], al + mov al, 0 + sub al, [bp+var_7] + mov [bp+var_7], al + xor si, si + jmp short loc_13982 +; --------------------------------------------------------------------------- + +loc_13910: ; CODE XREF: sub_138B3+D2j + mov al, [bp+var_7] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+var_6] + push word_1F33E + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+var_7] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+var_6] + push word_1F340 + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + add ax, 0FFE8h + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + add ax, 0FFF8h + mov [bp+var_2], ax + push di + push ax + push [bp+var_4] + call sub_F100 + inc si + mov al, [bp+var_7] + add al, 10h + mov [bp+var_7], al + +loc_13982: ; CODE XREF: sub_138B3+5Bj + cmp si, 10h + jl short loc_13910 + +loc_13987: ; CODE XREF: sub_138B3+2Dj + pop di + pop si + leave + retn +sub_138B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1398B proc far ; DATA XREF: sub_AEB4+91o + ; sub_AEB4+13Co + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + cmp al, byte_1DB9E + jnz short loc_139D8 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + jnz short loc_139B1 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_139BD +; --------------------------------------------------------------------------- + +loc_139B1: ; CODE XREF: sub_1398B+16j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_139BD: ; CODE XREF: sub_1398B+24j + cmp byte_1F34F, 0 + jnz short loc_139C9 + call sub_138B3 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_139C9: ; CODE XREF: sub_1398B+37j + cmp byte_1F34F, 0FFh + jz short loc_139D5 + call sub_137CF + pop bp + retf +; --------------------------------------------------------------------------- + +loc_139D5: ; CODE XREF: sub_1398B+43j + call sub_F58C + +loc_139D8: ; CODE XREF: sub_1398B+Aj + pop bp + retf +sub_1398B endp + +seg003 ends + +; =========================================================================== + +; Segment type: Pure code +seg004 segment byte public 'CODE' use16 + assume cs:seg004 + ;org 0Ah + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + + +sub_139DA proc near ; CODE XREF: sub_173A2:loc_1762Dp + ; sub_173A2:loc_17638p ... + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + retn +sub_139DA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_139EC proc near ; CODE XREF: sub_146AF+29p + ; sub_151E1+7Bp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + and ax, [bp+arg_0] + pop bp + retn 2 +sub_139EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13A06 proc near ; CODE XREF: sub_148B5+DDp + ; sub_148B5+E6p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + xor dx, dx + div [bp+arg_0] + mov ax, dx + pop bp + retn 2 +sub_13A06 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_13A24 proc far ; CODE XREF: sub_CE5B+4AP sub_F72D+DP ... + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + retf +sub_13A24 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13A36 proc far ; CODE XREF: sub_F402+37P sub_F52D+10P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + and ax, [bp+arg_0] + pop bp + retf 2 +sub_13A36 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13A50 proc far ; CODE XREF: sub_B73A+3BP sub_B73A+4CP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + xor bh, bh + mov bl, byte_1F4B2 + add bx, 1E52h + inc byte_1F4B2 + mov ax, [bx] + xor dx, dx + div [bp+arg_0] + mov ax, dx + pop bp + retf 2 +sub_13A50 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_13A6E proc far ; CODE XREF: sub_F848+CBP sub_FED8+E8P ... + mov dx, word_220F0 + or dx, dx + js locret_13B41 + cmp dx, 1700h + jge locret_13B41 + xor ax, ax + cmp byte_220FA, 0 + jz short loc_13A8C + mov ax, 0CF0h + +loc_13A8C: ; CODE XREF: sub_13A6E+19j + add ax, 4BA0h + mov word ptr cs:loc_13AFC+2, ax + sar dx, 5 + mov cx, word_220F4 + mov ax, cx + shr ax, 1 + sub dx, ax + add cx, dx + or dx, dx + jns short loc_13AA8 + xor dx, dx + +loc_13AA8: ; CODE XREF: sub_13A6E+36j + cmp cx, 0B8h ; '¸' + jb short loc_13AB1 + mov cx, 0B7h ; '·' + +loc_13AB1: ; CODE XREF: sub_13A6E+3Ej + add word ptr cs:loc_13AFC+2, dx + sub cx, dx + mov word ptr cs:loc_13B18+1, cx + mov ax, 0B8h ; '¸' + sub ax, cx + mov word ptr cs:loc_13B2C+2, ax + mov ax, word_220EE + sar ax, 5 + mov dx, word_220F2 + mov bx, dx + shr bx, 1 + sub ax, bx + or ax, ax + jns short loc_13AE3 + add dx, ax + cmp dx, 0 + jle short locret_13B41 + xor ax, ax + +loc_13AE3: ; CODE XREF: sub_13A6E+6Aj + mov cx, ax + shr ax, 3 + and cx, 7 + mov byte ptr cs:loc_13B04+2, cl + add dx, cx + jmp short $+2 + mov cx, ax + mov ah, 0B8h ; '¸' + mul ah + mov bx, ax + +loc_13AFC: ; DATA XREF: sub_13A6E+21w + ; sub_13A6E:loc_13AB1w + add bx, 1234h + mov ax, cx + mov ah, 0FFh + +loc_13B04: ; DATA XREF: sub_13A6E+7Dw + shr ah, 4 + cmp dl, 8 + jge short loc_13B14 + mov ch, 0FFh + mov cl, dl + shr ch, cl + xor ah, ch + +loc_13B14: ; CODE XREF: sub_13A6E+9Cj + ; sub_13A6E+C9j ... + cmp al, 12h + jnb short locret_13B41 + +loc_13B18: ; DATA XREF: sub_13A6E+4Aw + mov cx, 1234h + +loc_13B1B: ; CODE XREF: sub_13A6E+B5j + or [bx], ah + add bx, 4 + sub cx, 4 + jg short loc_13B1B + sub dl, 8 + jle short locret_13B41 + inc al + +loc_13B2C: ; DATA XREF: sub_13A6E+54w + add cx, 1234h + add bx, cx + mov ah, 0FFh + cmp dl, 8 + jge short loc_13B14 + mov cl, dl + shr ah, cl + not ah + jmp short loc_13B14 +; --------------------------------------------------------------------------- + +locret_13B41: ; CODE XREF: sub_13A6E+6j sub_13A6E+Ej ... + retf +sub_13A6E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_13B42 proc far ; CODE XREF: sub_17A1B+1ACp + mov ax, word_220EE + mov dx, word_220F0 + or ax, ax + js short locret_13B98 + cmp ax, 1200h + jge short locret_13B98 + or dx, dx + js short locret_13B98 + cmp dx, 1700h + jge short locret_13B98 + xor bx, bx + cmp byte_220FA, 0 + jz short loc_13B68 + mov bx, 0CF0h + +loc_13B68: ; CODE XREF: sub_13B42+21j + add bx, 4BA0h + sar ax, 5 + sar dx, 5 + mov cx, ax + sar ax, 3 + and cx, 7 + add bx, dx + mov ah, 0B8h ; '¸' + mul ah + add bx, ax + mov ax, 0B8h ; '¸' + sub ax, dx + mov dx, ax + mov ah, 80h ; '€' + shr ah, cl + mov cx, word_220F4 + nop + +loc_13B92: ; CODE XREF: sub_13B42+54j + or [bx], ah + inc bx + dec dx + loopne loc_13B92 + +locret_13B98: ; CODE XREF: sub_13B42+9j sub_13B42+Ej ... + retf +sub_13B42 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_13B9A proc far ; CODE XREF: sub_19260+96P + push si + push di + mov bx, 0B7h ; '·' + cmp byte_220FA, 0 + jz short loc_13BAA + add bx, 0CF0h + +loc_13BAA: ; CODE XREF: sub_13B9A+Aj + add bx, 4BA0h + mov word ptr cs:loc_13BE9+1, bx + mov al, 0FFh + mov cx, word_220F2 + shr al, cl + not al + xor ah, ah + mov word ptr cs:loc_13BEE+1, ax + mov ax, word_220F6 + sub ax, word_220EE + mov word ptr cs:loc_13C02+1, ax + jmp short $+2 + mov si, word_220F6 + mov di, 5Bh ; '[' + nop + +loc_13BD8: ; CODE XREF: sub_13B9A+7Ej + mov ax, si + shr ax, 5 + mov cx, ax + and cx, 7 + shr ax, 3 + mov ah, 0B8h ; '¸' + mul ah + +loc_13BE9: ; DATA XREF: sub_13B9A+14w + ; sub_13B9A+78w + mov bx, 1234h + add bx, ax + +loc_13BEE: ; DATA XREF: sub_13B9A+25w + mov ax, 1234h + ror ax, cl + or [bx], al + or ah, ah + jz short loc_13BFF + add bx, 0B8h ; '¸' + or [bx], ah + +loc_13BFF: ; CODE XREF: sub_13B9A+5Dj + dec di + jz short loc_13C1A + +loc_13C02: ; DATA XREF: sub_13B9A+30w + mov ax, 1234h + imul di + mov cx, 5Ch ; '\' + idiv cx + mov si, word_220EE + add si, ax + sub word ptr cs:loc_13BE9+1, 2 + jmp short loc_13BD8 +; --------------------------------------------------------------------------- + +loc_13C1A: ; CODE XREF: sub_13B9A+66j + pop di + pop si + retf +sub_13B9A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13C1E proc near ; CODE XREF: sub_13C64+51p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov ax, [bp+arg_4] + shl ax, 4 + mov si, ax + mov al, byte ptr [bp+arg_4] + mov byte_1F51C, al + mov byte_1F51D, 0 + jmp short loc_13C52 +; --------------------------------------------------------------------------- + +loc_13C37: ; CODE XREF: sub_13C1E+3Fj + mov bx, si + add bx, bx + mov es, word_1F554 + push word ptr es:[bx] + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_15EDB + inc byte_1F51D + inc si + +loc_13C52: ; CODE XREF: sub_13C1E+17j + mov bx, [bp+arg_4] + mov al, [bx+1FC4h] + cmp al, byte_1F51D + ja short loc_13C37 + pop si + pop bp + retn 6 +sub_13C1E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13C64 proc near ; CODE XREF: sub_13CC7+Cp + ; sub_13CC7+11p + +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + enter 2, 0 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4AD6h], 0 + jnz short locret_13CC3 + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + mov al, [bx+1FFAh] + mov [bp+var_1], al + mov al, byte_23AF8 + mov ah, 0 + mov bx, 20h ; ' ' + cwd + idiv bx + mov byte_1F520, al + mov al, [bp+var_1] + mov ah, 0 + mov es, word_1F556 + mov bx, ax + mov al, es:[bx] + mov ah, 0 + push ax + push [bp+arg_0] + mov al, [bp+var_1] + mov ah, 0 + mov es, word_1F558 + mov bx, ax + mov al, es:[bx] + push ax + call sub_13C1E + mov al, byte ptr [bp+arg_0] + mov ah, 0 + mov bx, ax + inc byte ptr [bx+1FFAh] + +locret_13CC3: ; CODE XREF: sub_13C64+10j + leave + retn 2 +sub_13C64 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13CC7 proc far ; CODE XREF: sub_9778+5FP + push bp + mov bp, sp + cmp byte_207E2, 0 + jnz short loc_13CDB + push 0 + call sub_13C64 + push 1 + call sub_13C64 + +loc_13CDB: ; CODE XREF: sub_13CC7+8j + pop bp + retf +sub_13CC7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13CDD proc far ; CODE XREF: sub_9B14+25P + +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 + + enter 0Ah, 0 + push si + push di + push ds + push offset aEnedat_dat ; "ENEDAT.DAT" + call sub_896 + push ss + lea ax, [bp+var_4] + push ax + push 4 + call sub_7E2 + push [bp+var_4] + call sub_22BC + mov word_1F51E, ax + push 300h + call sub_22BC + mov word_1F554, ax + push 100h + call sub_22BC + mov word_1F556, ax + push 100h + call sub_22BC + mov word_1F558, ax + mov ax, word_1F51E + mov word_1F522, ax + push ax + push 0 + push [bp+var_4] + call sub_7E2 + call sub_7D2 + xor si, si + mov [bp+var_A], 0 + +loc_13D41: ; CODE XREF: sub_13CDD+B3j + mov es, word_1F522 + mov ax, es:[si] + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_13D92 + mov bx, [bp+var_A] + mov al, byte ptr [bp+var_6] + mov [bx+1FC4h], al + add si, 2 + xor di, di + jmp short loc_13D88 +; --------------------------------------------------------------------------- + +loc_13D62: ; CODE XREF: sub_13CDD+AEj + mov es, word_1F522 + mov al, es:[si] + mov ah, 0 + mov [bp+var_8], ax + inc si + mov bx, [bp+var_A] + shl bx, 4 + add bx, bx + mov es, word_1F554 + mov ax, di + add ax, ax + add bx, ax + mov es:[bx], si + add si, [bp+var_8] + inc di + +loc_13D88: ; CODE XREF: sub_13CDD+83j + cmp di, [bp+var_6] + jl short loc_13D62 + inc [bp+var_A] + jmp short loc_13D41 +; --------------------------------------------------------------------------- + +loc_13D92: ; CODE XREF: sub_13CDD+72j + mov al, byte ptr [bp+var_A] + mov byte_1F55C, al + pop di + pop si + leave + retf +sub_13CDD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13D9C proc far ; CODE XREF: sub_9EBF+34EP + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + xor si, si + jmp short loc_13DDC +; --------------------------------------------------------------------------- + +loc_13DA5: ; CODE XREF: sub_13D9C+22j + ; sub_13D9C+44j + call sub_1EEC + mov dl, byte_1F55C + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov [bp+var_1], dl + mov al, [bp+var_1] + cmp al, [bp+var_2] + jz short loc_13DA5 + mov es, word_1F556 + mov es:[si], al + mov [bp+var_2], al + call sub_1EEC + and al, 1 + shl al, 7 + mov es, word_1F558 + mov es:[si], al + inc si + +loc_13DDC: ; CODE XREF: sub_13D9C+7j + cmp si, 100h + jl short loc_13DA5 + mov byte_1F55A, 0 + mov byte_1F55B, 0 + mov byte_22036, 0 + mov byte_22037, 0 + pop si + leave + retf +sub_13D9C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13DF9 proc far ; CODE XREF: _main:loc_974DP + push bp + mov bp, sp + push word_1F522 + call sub_23C0 + push word_1F554 + call sub_23C0 + push word_1F556 + call sub_23C0 + push word_1F558 + call sub_23C0 + pop bp + retf +sub_13DF9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13E22 proc near ; CODE XREF: sub_13F2C:loc_13F9Ap + ; sub_13F2C:loc_14004p ... + push bp + mov bp, sp + push si + mov si, word_2203C + mov cx, [si+10h] + mov al, byte_1F520 + mov ah, 0 + imul cx + mov bx, 9 + cwd + idiv bx + push ax + mov ax, cx + add ax, ax + mov bx, 3 + cwd + idiv bx + pop dx + add dx, ax + mov cx, dx + test byte ptr [si+21h], 80h + jz short loc_13E55 + add [si+2], cx + jmp short loc_13E58 +; --------------------------------------------------------------------------- + +loc_13E55: ; CODE XREF: sub_13E22+2Cj + sub [si+2], cx + +loc_13E58: ; CODE XREF: sub_13E22+31j + test byte ptr [si+21h], 1 + jz short loc_13E6C + cmp word ptr [si+2], 0FE00h + jle short loc_13EA0 + cmp word ptr [si+2], 1400h + jge short loc_13EA0 + +loc_13E6C: ; CODE XREF: sub_13E22+3Aj + mov cx, [si+12h] + mov al, byte_1F520 + mov ah, 0 + imul cx + mov bx, 9 + cwd + idiv bx + push ax + mov ax, cx + add ax, ax + mov bx, 3 + cwd + idiv bx + pop dx + add dx, ax + mov cx, dx + add [si+4], cx + test byte ptr [si+21h], 2 + jz short loc_13E9C + cmp word ptr [si+4], 1900h + jge short loc_13EA0 + +loc_13E9C: ; CODE XREF: sub_13E22+71j + mov al, 0 + jmp short loc_13EA5 +; --------------------------------------------------------------------------- + +loc_13EA0: ; CODE XREF: sub_13E22+41j + ; sub_13E22+48j ... + mov byte ptr [si], 0 + mov al, 1 + +loc_13EA5: ; CODE XREF: sub_13E22+7Cj + pop si + pop bp + retn +sub_13E22 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13EA8 proc near ; CODE XREF: sub_13F2C+6Bp + ; sub_13F2C+F4p ... + push bp + mov bp, sp + push es + push ds + mov ax, word_2203C + add ax, 10h + push ax + push ds + mov ax, word_2203C + add ax, 12h + push ax + mov bx, word_2203C + push word ptr [bx+19h] + mov al, [bx+1Fh] + mov ah, 0 + push ax + call sub_E97A + pop es + pop bp + retn +sub_13EA8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13ED1 proc near ; CODE XREF: sub_13F2C+176p + ; sub_13F2C+1F6p + push bp + mov bp, sp + mov bx, word_2203C + mov al, [bx+1Ah] + cbw + shl ax, 9 + mov bx, 3 + cwd + idiv bx + mov cx, ax + mov al, byte_1F520 + mov ah, 0 + imul cx + mov bx, 9 + cwd + idiv bx + add cx, ax + mov bx, word_2203C + add [bx+18h], cx + pop bp + retn +sub_13ED1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13EFF proc near ; CODE XREF: sub_1615D+1F4p + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + mov cl, [bp+arg_0] + mov al, cl + mov ah, 0 + mov bx, ax + mov al, byte_23AF8 + mov ah, 0 + imul bx + mov bx, ax + sar bx, 7 + mov al, cl + mov ah, 0 + add bx, ax + cmp bx, 80h ; '€' + jl short loc_13F26 + mov bx, 7Fh ; '' + +loc_13F26: ; CODE XREF: sub_13EFF+22j + mov al, bl + pop bp + retn 2 +sub_13EFF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13F2C proc near ; CODE XREF: sub_1609E:loc_160D1p + +var_E = word ptr -0Eh +var_B = byte ptr -0Bh +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Eh, 0 + push si + push di + mov di, word_2203C + mov al, [di+8] + mov [bp+var_B], al + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov [bp+var_4], ax + mov es, word_1F51E + mov ax, [di+0Eh] + mov [bp+var_6], ax + mov ax, [di+0Ah] + +loc_13F54: ; CODE XREF: sub_13F2C+30Fj + add [bp+var_6], ax + mov bx, [bp+var_6] + mov al, es:[bx] + mov ah, 0 + mov [bp+var_E], ax + mov cx, 10h ; switch 16 cases + mov bx, offset word_14290 + +loc_13F68: ; CODE XREF: sub_13F2C+47j + mov ax, cs:[bx] + cmp ax, [bp+var_E] + jz short loc_13F78 + add bx, 2 + loop loc_13F68 + jmp loc_1423E ; default +; --------------------------------------------------------------------------- + +loc_13F78: ; CODE XREF: sub_13F2C+42j + jmp word ptr cs:[bx+20h] ; switch jump + +loc_13F7C: ; DATA XREF: seg004:08E0o + cmp word ptr [di+0Ch], 0 ; jumptable 00013F78 cases 1,8,9 + jnz short loc_13F9A + mov bx, [bp+var_6] + mov al, es:[bx+2] + mov [di+1Fh], al + mov al, es:[bx+1] + mov [di+19h], al + mov byte ptr [di+18h], 0 + call sub_13EA8 + +loc_13F9A: ; CODE XREF: sub_13F2C+54j + call sub_13E22 + or al, al + jnz loc_14136 ; jumptable 00013F78 case 0 + mov bx, [bp+var_6] + mov al, es:[bx+3] + mov [bp+var_8], al + mov [bp+var_7], 4 + cmp byte ptr es:[bx], 8 + jnz short loc_13FD6 + mov bx, [bp+var_4] + mov ax, [bx+2] + add ax, 0FE00h + cmp [di+4], ax + jl loc_1423E ; default + mov ax, [bx+2] + add ax, 200h + cmp [di+4], ax + jg loc_1423E ; default + jmp short loc_13FFC +; --------------------------------------------------------------------------- + +loc_13FD6: ; CODE XREF: sub_13F2C+89j + mov bx, [bp+var_6] + cmp byte ptr es:[bx], 9 + jnz loc_1423E ; default + mov bx, [bp+var_4] + mov ax, [bx] + add ax, 0FF00h + cmp [di+2], ax + jl loc_1423E ; default + mov ax, [bx] + add ax, 100h + cmp [di+2], ax + jg loc_1423E ; default + +loc_13FFC: ; CODE XREF: sub_13F2C+A8j + mov word ptr [di+0Ch], 0 + jmp loc_14284 +; --------------------------------------------------------------------------- + +loc_14004: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + call sub_13E22 ; jumptable 00013F78 case 6 + or al, al + jnz loc_14136 ; jumptable 00013F78 case 0 + jmp loc_140A8 ; jumptable 00013F78 case 3 +; --------------------------------------------------------------------------- + +loc_14010: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + cmp word ptr [di+0Ch], 0 ; jumptable 00013F78 case 7 + jnz short loc_14023 + mov bx, [bp+var_6] + mov al, es:[bx+1] + mov [di+1Fh], al + call sub_13EA8 + +loc_14023: ; CODE XREF: sub_13F2C+E8j + call sub_13E22 + or al, al + jnz loc_14136 ; jumptable 00013F78 case 0 + mov bx, [bp+var_6] + mov al, es:[bx+2] + mov [bp+var_8], al + mov [bp+var_7], 3 + jmp loc_1423E ; default +; --------------------------------------------------------------------------- + +loc_1403D: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + cmp word ptr [di+0Ch], 0 ; jumptable 00013F78 cases 2,10 + jnz short loc_14058 + mov bx, [bp+var_6] + mov al, es:[bx+1] + mov [di+19h], al + mov byte ptr [di+18h], 0 + mov al, es:[bx+3] + mov [di+1Ah], al + +loc_14058: ; CODE XREF: sub_13F2C+115j + mov bx, [bp+var_6] + mov al, es:[bx+2] + mov [di+1Fh], al + call sub_13EA8 + mov bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_1408B + mov al, es:[bx+4] + cbw + add [di+10h], ax + mov al, es:[bx+5] + cbw + add [di+12h], ax + mov al, es:[bx+6] + mov [bp+var_8], al + mov [bp+var_7], 7 + jmp short loc_14099 +; --------------------------------------------------------------------------- + +loc_1408B: ; CODE XREF: sub_13F2C+140j + mov bx, [bp+var_6] + mov al, es:[bx+4] + mov [bp+var_8], al + mov [bp+var_7], 5 + +loc_14099: ; CODE XREF: sub_13F2C+15Dj + call sub_13E22 + or al, al + jnz loc_14136 ; jumptable 00013F78 case 0 + call sub_13ED1 + jmp loc_1423E ; default +; --------------------------------------------------------------------------- + +loc_140A8: ; CODE XREF: sub_13F2C:loc_13F78j + ; sub_13F2C+E1j + ; DATA XREF: ... + mov bx, [bp+var_6] ; jumptable 00013F78 case 3 + mov al, es:[bx+1] + mov [bp+var_8], al + mov [bp+var_7], 2 + jmp loc_1423E ; default +; --------------------------------------------------------------------------- + +loc_140B9: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + cmp word ptr [di+0Ch], 0 ; jumptable 00013F78 cases 4,5 + jnz short loc_140CE + mov word ptr [di+18h], 0 + mov bx, [bp+var_6] + mov al, es:[bx+2] + mov [di+1Ah], al + +loc_140CE: ; CODE XREF: sub_13F2C+191j + mov bx, [bp+var_6] + mov al, es:[bx+1] + mov [bp+var_9], al + movzx eax, [bp+var_9] + mov dl, [di+19h] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+396h] + imul eax, edx + sar eax, 8 + mov [di+10h], ax + mov bx, [bp+var_6] + mov al, es:[bx+3] + cbw + mov [di+12h], ax + cmp byte ptr es:[bx], 5 + jnz short loc_1411B + mov al, [di+10h] + mov [bp+var_A], al + mov ax, [di+12h] + mov [di+10h], ax + mov al, [bp+var_A] + cbw + mov [di+12h], ax + +loc_1411B: ; CODE XREF: sub_13F2C+1DAj + call sub_13E22 + or al, al + jnz short loc_14136 ; jumptable 00013F78 case 0 + call sub_13ED1 + mov bx, [bp+var_6] + mov al, es:[bx+4] + mov [bp+var_8], al + mov [bp+var_7], 5 + jmp loc_1423E ; default +; --------------------------------------------------------------------------- + +loc_14136: ; CODE XREF: sub_13F2C:loc_13F78j + ; sub_13F2C+73j ... + mov byte ptr [di], 0 ; jumptable 00013F78 case 0 + mov al, 1 + jmp loc_1428B +; --------------------------------------------------------------------------- + +loc_1413E: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + mov byte ptr [di], 1 ; jumptable 00013F78 case 16 + mov bx, [bp+var_6] + mov al, es:[bx+1] + cbw + mov [bp+var_2], ax + test byte ptr [di+21h], 80h + jz short loc_1415A + shl ax, 7 + mov [di+2], ax + jmp short loc_14168 +; --------------------------------------------------------------------------- + +loc_1415A: ; CODE XREF: sub_13F2C+224j + mov ax, [bp+var_2] + shl ax, 7 + mov dx, 1200h + sub dx, ax + mov [di+2], dx + +loc_14168: ; CODE XREF: sub_13F2C+22Cj + mov bx, [bp+var_6] + mov al, es:[bx+2] + cbw + mov [bp+var_2], ax + shl ax, 7 + mov [di+4], ax + mov al, byte_1F520 + mov ah, 0 + add ax, [bp+var_6] + mov bx, ax + mov al, es:[bx+3] + +loc_14187: + mov [di+6], al + mov al, [di+6] + shl al, 4 + mov [di+9], al + mov al, byte_1F520 + mov ah, 0 + add ax, [bp+var_6] + mov bx, ax + mov al, es:[bx+7] + mov [di+7], al + mov bx, [bp+var_6] + cmp byte ptr es:[bx+0Bh], 0 + jz short loc_141B3 + mov ax, 1 + jmp short loc_141B5 +; --------------------------------------------------------------------------- + +loc_141B3: ; CODE XREF: sub_13F2C+280j + xor ax, ax + +loc_141B5: ; CODE XREF: sub_13F2C+285j + or [di+21h], al + mov bx, [bp+var_6] + cmp byte ptr es:[bx+0Ch], 0 + jz short loc_141C7 + mov ax, 1 + jmp short loc_141C9 +; --------------------------------------------------------------------------- + +loc_141C7: ; CODE XREF: sub_13F2C+294j + xor ax, ax + +loc_141C9: ; CODE XREF: sub_13F2C+299j + add al, al + or [di+21h], al + mov [bp+var_7], 0Eh + jmp loc_14284 +; --------------------------------------------------------------------------- + +loc_141D5: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + or byte ptr [di+21h], 1 ; jumptable 00013F78 case 130 + jmp short loc_141DF +; --------------------------------------------------------------------------- + +loc_141DB: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + or byte ptr [di+21h], 2 ; jumptable 00013F78 case 131 + +loc_141DF: ; CODE XREF: sub_13F2C+2ADj + mov [bp+var_7], 1 + jmp loc_14284 +; --------------------------------------------------------------------------- + +loc_141E6: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + mov al, [di+20h] ; jumptable 00013F78 case 128 + mov ah, 0 + mov bx, [bp+var_6] + push ax + mov al, es:[bx+2] + cbw + pop dx + cmp dx, ax + jl short loc_141FB + jmp short loc_1421E +; --------------------------------------------------------------------------- + +loc_141FB: ; CODE XREF: sub_13F2C+2CBj + inc byte ptr [di+20h] + mov bx, [bp+var_6] + mov al, es:[bx+1] + cbw + mov [di+0Ah], ax + jmp short loc_14236 +; --------------------------------------------------------------------------- + +loc_1420B: ; CODE XREF: sub_13F2C:loc_13F78j + ; DATA XREF: seg004:08E0o + mov al, [di+20h] ; jumptable 00013F78 case 129 + mov ah, 0 + mov bx, [bp+var_6] + push ax + mov al, es:[bx+2] + cbw + pop dx + cmp dx, ax + jl short loc_14228 + +loc_1421E: ; CODE XREF: sub_13F2C+2CDj + mov byte ptr [di+20h], 0 + mov [bp+var_7], 3 + jmp short loc_14284 +; --------------------------------------------------------------------------- + +loc_14228: ; CODE XREF: sub_13F2C+2F0j + inc byte ptr [di+20h] + mov bx, [bp+var_6] + mov al, es:[bx+1] + cbw + +loc_14233: ; CODE XREF: sub_13F2C+35Dj + add [di+0Ah], ax + +loc_14236: ; CODE XREF: sub_13F2C+2DDj + mov al, [bp+var_7] + mov ah, 0 + jmp loc_13F54 +; --------------------------------------------------------------------------- + +loc_1423E: ; CODE XREF: sub_13F2C+49j + ; sub_13F2C+97j ... + mov al, [bp+var_8] ; default + mov ah, 0 + mov [bp+var_2], ax + cwd + sub ax, dx + sar ax, 1 + imul ax, 3 + mov dl, byte_1F520 + mov dh, 0 + push ax + mov ax, dx + imul [bp+var_2] + mov bx, 6 + cwd + idiv bx + pop dx + sub dx, ax + mov [bp+var_2], dx + mov ax, [di+0Ch] + cmp ax, [bp+var_2] + jb short loc_1427D + mov word ptr [di+0Ch], 0 + mov al, [bp+var_7] + mov ah, 0 + add [di+0Ah], ax + jmp short loc_14280 +; --------------------------------------------------------------------------- + +loc_1427D: ; CODE XREF: sub_13F2C+340j + inc word ptr [di+0Ch] + +loc_14280: ; CODE XREF: sub_13F2C+34Fj + mov al, 0 + jmp short loc_1428B +; --------------------------------------------------------------------------- + +loc_14284: ; CODE XREF: sub_13F2C+D5j + ; sub_13F2C+2A6j ... + mov al, [bp+var_7] + mov ah, 0 + jmp short loc_14233 +; --------------------------------------------------------------------------- + +loc_1428B: ; CODE XREF: sub_13F2C+20Fj + ; sub_13F2C+356j + pop di + pop si + leave + retn +sub_13F2C endp + +; --------------------------------------------------------------------------- + db 0 +word_14290 dw 0, 1, 2, 3 ; DATA XREF: sub_13F2C+39o + dw 4, 5, 6, 7 ; value table for switch statement + dw 8, 9, 0Ah, 10h + dw 80h, 81h, 82h, 83h + dw offset loc_14136 ; jump table for switch statement + dw offset loc_13F7C + dw offset loc_1403D + dw offset loc_140A8 + dw offset loc_140B9 + dw offset loc_140B9 + dw offset loc_14004 + dw offset loc_14010 + dw offset loc_13F7C + dw offset loc_13F7C + dw offset loc_1403D + dw offset loc_1413E + dw offset loc_141E6 + dw offset loc_1420B + dw offset loc_141D5 + dw offset loc_141DB + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_142D0 proc far ; CODE XREF: sub_9EBF+81P + push bp + mov bp, sp + mov byte_1FDEA, 0 + mov byte_1FE1C, 0 + pop bp + retf +sub_142D0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_142DF proc far ; DATA XREF: sub_A854+3Do sub_A854+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 32h + add ax, 288Ah + mov word_1FE4E, ax + mov bx, word_1FE4E + mov byte ptr [bx], 1 + mov byte ptr [bx+1], 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov byte ptr [bx+65C8h], 0 + xor si, si + jmp short loc_1432F +; --------------------------------------------------------------------------- + +loc_1430F: ; CODE XREF: sub_142DF+53j + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bp+arg_2] + mov [bx+2], ax + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bp+arg_0] + add ax, 0FF00h + mov [bx+1Ah], ax + inc si + +loc_1432F: ; CODE XREF: sub_142DF+2Ej + cmp si, 0Ch + jl short loc_1430F + push 6 + call sub_EC3A + pop si + pop bp + retf 4 +sub_142DF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14340 proc far ; CODE XREF: sub_D889+1CP + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 32h + add ax, 288Ah + mov word_1FE4E, ax + mov bx, word_1FE4E + cmp byte ptr [bx], 0 + jnz short loc_143A4 + mov byte ptr [bx], 1 + xor si, si + jmp short loc_14398 +; --------------------------------------------------------------------------- + +loc_14362: ; CODE XREF: sub_14340+5Bj + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov bx, si + add bx, bx + add bx, word_1FE4E + mov [bx+2], ax + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + add ax, 0FF00h + mov bx, si + add bx, bx + add bx, word_1FE4E + mov [bx+1Ah], ax + inc si + +loc_14398: ; CODE XREF: sub_14340+20j + cmp si, 0Ch + jl short loc_14362 + push 6 + call sub_EC3A + +loc_143A4: ; CODE XREF: sub_14340+19j + mov bx, word_1FE4E + mov byte ptr [bx+1], 10h + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov byte ptr [bx+65C8h], 0 + pop si + pop bp + retf +sub_14340 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_143BE proc far ; DATA XREF: sub_A854+49o sub_A854+F4o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 32h + add ax, 288Ah + mov word_1FE4E, ax + mov bx, word_1FE4E + cmp byte ptr [bx], 0 + jz loc_14485 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + mov bx, word_1FE4E + inc byte ptr [bx+1] + mov dx, 0Bh + jmp short loc_14428 +; --------------------------------------------------------------------------- + +loc_143F6: ; CODE XREF: sub_143BE+6Cj + mov bx, dx + dec bx + add bx, bx + add bx, word_1FE4E + mov ax, [bx+2] + mov bx, dx + add bx, bx + add bx, word_1FE4E + mov [bx+2], ax + mov bx, dx + dec bx + add bx, bx + add bx, word_1FE4E + mov ax, [bx+1Ah] + add ax, 18h + mov bx, dx + add bx, bx + add bx, word_1FE4E + mov [bx+1Ah], ax + dec dx + +loc_14428: ; CODE XREF: sub_143BE+36j + or dx, dx + jg short loc_143F6 + mov bx, word_1FE4E + cmp byte ptr [bx+1], 18h + jnb short loc_14465 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov bx, word_1FE4E + mov [bx+2], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + add ax, 0FF00h + mov bx, word_1FE4E + mov [bx+1Ah], ax + pop bp + retf +; --------------------------------------------------------------------------- + +loc_14465: ; CODE XREF: sub_143BE+76j + mov bx, word_1FE4E + cmp byte ptr [bx+1], 24h ; '$' + jbe short loc_14485 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov byte ptr [bx+65C8h], 1 + mov bx, word_1FE4E + mov byte ptr [bx], 0 + +loc_14485: ; CODE XREF: sub_143BE+18j + ; sub_143BE+AFj + pop bp + retf +sub_143BE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14487 proc far ; DATA XREF: sub_A854+61o + ; sub_A854+10Co + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 32h + add ax, 288Ah + mov word_1FE4E, ax + mov bx, word_1FE4E + cmp byte ptr [bx], 0 + jnz short loc_144A7 + mov al, 0 + jmp short loc_1450E +; --------------------------------------------------------------------------- + +loc_144A7: ; CODE XREF: sub_14487+1Aj + mov [bp+var_1], 0 + xor si, si + jmp short loc_14506 +; --------------------------------------------------------------------------- + +loc_144AF: ; CODE XREF: sub_14487+82j + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bx+2] + cmp ax, word_20E2E + jl short loc_14503 + mov bx, si + add bx, bx + add bx, word_1FE4E + cmp ax, word_20E36 + jg short loc_14503 + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bx+1Ah] + cmp ax, word_20E30 + jl short loc_14503 + mov bx, si + add bx, bx + add bx, word_1FE4E + push word ptr [bx+2] + mov ax, word_20E30 + add ax, word_20E34 + push ax + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov [bp+var_1], 1 + jmp short loc_1450B +; --------------------------------------------------------------------------- + +loc_14503: ; CODE XREF: sub_14487+37j + ; sub_14487+45j ... + add si, 4 + +loc_14506: ; CODE XREF: sub_14487+26j + cmp si, 0Ch + jl short loc_144AF + +loc_1450B: ; CODE XREF: sub_14487+7Aj + mov al, [bp+var_1] + +loc_1450E: ; CODE XREF: sub_14487+1Ej + pop si + leave + retf +sub_14487 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14511 proc far ; DATA XREF: sub_A854+55o + ; sub_A854+100o + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 32h + add ax, 288Ah + mov word_1FE4E, ax + mov bx, word_1FE4E + cmp byte ptr [bx], 0 + jz loc_146AB + call sub_71A + push 0C0h ; 'À' + push large 0AA0055AAh + call sub_F8C + mov [bp+var_4], 0 + mov si, 0Bh + jmp short loc_14594 +; --------------------------------------------------------------------------- + +loc_1454D: ; CODE XREF: sub_14511+86j + mov bx, si + add bx, bx + add bx, word_1FE4E + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bx+1Ah] + sar ax, 5 + add ax, 8 + mov [bp+var_2], ax + cmp [bp+var_4], di + jz short loc_14590 + lea ax, [di-2] + push ax + push 8 + lea ax, [di+1] + push ax + push [bp+var_2] + call sub_908 + +loc_14590: ; CODE XREF: sub_14511+6Bj + mov [bp+var_4], di + dec si + +loc_14594: ; CODE XREF: sub_14511+3Aj + cmp si, 6 + jg short loc_1454D + push 0C0h ; 'À' + push large 0FF00AA55h + call sub_F8C + mov [bp+var_4], 0 + mov si, 6 + jmp short loc_145F8 +; --------------------------------------------------------------------------- + +loc_145B1: ; CODE XREF: sub_14511+EAj + mov bx, si + add bx, bx + add bx, word_1FE4E + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bx+1Ah] + sar ax, 5 + add ax, 8 + mov [bp+var_2], ax + cmp [bp+var_4], di + jz short loc_145F4 + lea ax, [di-2] + push ax + push 8 + lea ax, [di+1] + push ax + push [bp+var_2] + call sub_908 + +loc_145F4: ; CODE XREF: sub_14511+CFj + mov [bp+var_4], di + dec si + +loc_145F8: ; CODE XREF: sub_14511+9Ej + cmp si, 3 + jg short loc_145B1 + push 0C0h ; 'À' + push large 0FF55FF55h + call sub_F8C + mov [bp+var_4], 0 + mov si, 3 + jmp short loc_1465C +; --------------------------------------------------------------------------- + +loc_14615: ; CODE XREF: sub_14511+14Dj + mov bx, si + add bx, bx + add bx, word_1FE4E + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov bx, si + add bx, bx + add bx, word_1FE4E + mov ax, [bx+1Ah] + sar ax, 5 + add ax, 8 + mov [bp+var_2], ax + cmp [bp+var_4], di + jz short loc_14658 + lea ax, [di-2] + push ax + push 8 + lea ax, [di+1] + push ax + push [bp+var_2] + call sub_908 + +loc_14658: ; CODE XREF: sub_14511+133j + mov [bp+var_4], di + dec si + +loc_1465C: ; CODE XREF: sub_14511+102j + or si, si + jg short loc_14615 + push large 0C0000Fh + call sub_F5C + mov bx, word_1FE4E + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov bx, word_1FE4E + mov ax, [bx+1Ah] + sar ax, 5 + add ax, 8 + mov [bp+var_2], ax + lea ax, [di-2] + push ax + push 8 + lea ax, [di+1] + push ax + push [bp+var_2] + call sub_908 + call sub_F86 + call sub_704 + +loc_146AB: ; CODE XREF: sub_14511+1Bj + pop di + pop si + leave + retf +sub_14511 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_146AF proc near ; CODE XREF: sub_14885+13p + ; sub_1489D+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + push si + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_146C6 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_146C6: ; CODE XREF: sub_146AF+Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_14723 + push 1Fh + call sub_139EC + neg ax + shl ax, 4 + mov dl, byte ptr word_1FE88 + mov dh, 0 + add dx, dx + mov bx, dx + mov [bx+2884h], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2888h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dl, 30h ; '0' + mov bx, ax + sub dl, [bx+2D56h] + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov [bx+2D58h], dl + jmp loc_14880 +; --------------------------------------------------------------------------- + +loc_14723: ; CODE XREF: sub_146AF+25j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz loc_14880 + mov al, [bp+arg_0] + mov byte_23E4E, al + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2884h] + mov word_23E40, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + mov byte ptr word_23E42, 38h ; '8' + mov byte ptr word_23E44+1, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2888h] + mov ah, 0 + mov bx, 18h + cwd + idiv bx + cmp dx, 8 + jnz short loc_14784 + push 0 + jmp short loc_1479F +; --------------------------------------------------------------------------- + +loc_14784: ; CODE XREF: sub_146AF+CFj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2888h] + mov ah, 0 + mov bx, 18h + cwd + idiv bx + cmp dx, 14h + jnz short loc_147BA + push 1200h + +loc_1479F: ; CODE XREF: sub_146AF+D3j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2884h] + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + jmp loc_14850 +; --------------------------------------------------------------------------- + +loc_147BA: ; CODE XREF: sub_146AF+EBj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2888h] + mov ah, 0 + mov bx, 18h + cwd + idiv bx + or dx, dx + jnz short loc_147F5 + mov byte ptr word_23E42+1, 20h ; ' ' + mov word_23E3E, 0 + xor si, si + jmp short loc_147EE +; --------------------------------------------------------------------------- + +loc_147E0: ; CODE XREF: sub_146AF+142j + nop + push cs + call near ptr sub_17730 + mov al, byte ptr word_23E42 + add al, 0FAh ; 'ú' + mov byte ptr word_23E42, al + inc si + +loc_147EE: ; CODE XREF: sub_146AF+12Fj + cmp si, 5 + jl short loc_147E0 + jmp short loc_1482F +; --------------------------------------------------------------------------- + +loc_147F5: ; CODE XREF: sub_146AF+120j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2888h] + mov ah, 0 + mov bx, 18h + cwd + idiv bx + cmp dx, 0Ch + jnz short loc_14850 + mov byte ptr word_23E42+1, 60h ; '`' + mov word_23E3E, 1200h + xor si, si + jmp short loc_1482A +; --------------------------------------------------------------------------- + +loc_1481C: ; CODE XREF: sub_146AF+17Ej + nop + push cs + call near ptr sub_17730 + mov al, byte ptr word_23E42 + add al, 0FAh ; 'ú' + mov byte ptr word_23E42, al + inc si + +loc_1482A: ; CODE XREF: sub_146AF+16Bj + cmp si, 5 + jl short loc_1481C + +loc_1482F: ; CODE XREF: sub_146AF+144j + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_1FE88 + mov dh, 0 + add dx, dx + mov bx, dx + add [bx+2884h], ax + +loc_14850: ; CODE XREF: sub_146AF+108j + ; sub_146AF+15Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + cmp word ptr [bx+2884h], 1700h + jl short loc_14875 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_14875: ; CODE XREF: sub_146AF+1B0j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2888h] + +loc_14880: ; CODE XREF: sub_146AF+71j + ; sub_146AF+89j + pop si + leave + retn 2 +sub_146AF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14885 proc far ; DATA XREF: sub_A854+6Do + ; sub_A854+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1489B + push 1 + call sub_146AF + +loc_1489B: ; CODE XREF: sub_14885+Fj + pop bp + retf +sub_14885 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1489D proc far ; DATA XREF: sub_A854+79o + ; sub_A854+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_148B3 + push 2 + call sub_146AF + +loc_148B3: ; CODE XREF: sub_1489D+Fj + pop bp + retf +sub_1489D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_148B5 proc far ; DATA XREF: sub_A854+A9o + ; sub_A854+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_14A72 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 40h ; '@' + jnb short loc_14914 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_148FF + add bx, 28h ; '(' + +loc_148FF: ; CODE XREF: sub_148B5+45j + call sub_B39E + call sub_F86 + mov al, [bp+var_1] + shl al, 2 + mov dl, 0 + jmp loc_149E8 +; --------------------------------------------------------------------------- + +loc_14914: ; CODE XREF: sub_148B5+2Dj + cmp [bp+var_1], 80h ; '€' + jnb loc_149D1 + test [bp+var_1], 1 + jz short loc_14929 + push 10h + call sub_EC3A + +loc_14929: ; CODE XREF: sub_148B5+6Bj + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_1494A + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + mov si, 10h + jmp short loc_1495C +; --------------------------------------------------------------------------- + +loc_1494A: ; CODE XREF: sub_148B5+7Fj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + mov si, 8 + +loc_1495C: ; CODE XREF: sub_148B5+93j + cmp byte ptr word_1FE88, 0 + jz short loc_14967 + add si, 140h + +loc_14967: ; CODE XREF: sub_148B5+ACj + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_14A1C + push 1200h + call sub_13A06 + mov word_1FE52, ax + push 1700h + call sub_13A06 + mov word_1FE54, ax + push word_1FE52 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + push word_1FE52 + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov word_1FE52, ax + mov ax, word_1FE54 + sar ax, 4 + add ax, 10h + mov word_1FE54, ax + jmp short loc_14A1C +; --------------------------------------------------------------------------- + +loc_149D1: ; CODE XREF: sub_148B5+63j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + +loc_149E8: ; CODE XREF: sub_148B5+5Cj + sub dl, al + mov [bp+var_2], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_14A1C: ; CODE XREF: sub_148B5+D6j + ; sub_148B5+11Aj + call sub_704 + cmp [bp+var_1], 40h ; '@' + jb short loc_14A72 + cmp [bp+var_1], 80h ; '€' + jnb short loc_14A72 + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 0F16h + mov di, ax + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_14A5E + add di, 6 + +loc_14A5E: ; CODE XREF: sub_148B5+1A4j + mov ax, word_1FE52 + add ax, 0FFE8h + push ax + mov ax, word_1FE54 + add ax, 0FFE8h + push ax + push di + call sub_F100 + +loc_14A72: ; CODE XREF: sub_148B5+12j + ; sub_148B5+170j ... + pop di + pop si + leave + retf +sub_148B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14A76 proc far ; CODE XREF: sub_9EBF+77P + push bp + mov bp, sp + mov word_205CA, 2D6Ah + xor ax, ax + jmp short loc_14A90 +; --------------------------------------------------------------------------- + +loc_14A83: ; CODE XREF: sub_14A76+1Dj + mov bx, word_205CA + mov byte ptr [bx], 0 + inc ax + add word_205CA, 20h ; ' ' + +loc_14A90: ; CODE XREF: sub_14A76+Bj + cmp ax, 18h + jl short loc_14A83 + pop bp + retf +sub_14A76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14A97 proc far ; DATA XREF: sub_A524+3Do sub_A524+E8o + +var_1 = byte ptr -1 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + enter 2, 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 180h + add ax, 2D6Ah + mov word_205CA, ax + mov [bp+var_1], 90h ; '' + xor cx, cx + jmp short loc_14AFC +; --------------------------------------------------------------------------- + +loc_14AB2: ; CODE XREF: sub_14A97+68j + mov bx, word_205CA + mov byte ptr [bx], 1 + mov byte ptr [bx+1], 0 + xor dx, dx + jmp short loc_14ADE +; --------------------------------------------------------------------------- + +loc_14AC1: ; CODE XREF: sub_14A97+4Aj + mov bx, dx + add bx, bx + add bx, word_205CA + mov ax, [bp+arg_2] + mov [bx+2], ax + mov bx, dx + add bx, bx + add bx, word_205CA + mov ax, [bp+arg_0] + mov [bx+10h], ax + inc dx + +loc_14ADE: ; CODE XREF: sub_14A97+28j + cmp dx, 7 + jl short loc_14AC1 + mov bx, word_205CA + mov al, [bp+var_1] + mov [bx+1Eh], al + add al, 20h ; ' ' + mov [bp+var_1], al + mov byte ptr [bx+1Fh], 60h ; '`' + inc cx + add word_205CA, 20h ; ' ' + +loc_14AFC: ; CODE XREF: sub_14A97+19j + cmp cx, 4 + jl short loc_14AB2 + mov byte_205CC, 1 + leave + retf 4 +sub_14A97 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14B0A proc far ; CODE XREF: sub_E737+67P sub_E737+77P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 180h + add ax, 2D6Ah + mov word_205CA, ax + xor cx, cx + jmp short loc_14B6E +; --------------------------------------------------------------------------- + +loc_14B20: ; CODE XREF: sub_14B0A+67j + mov bx, word_205CA + cmp byte ptr [bx], 0 + jnz short loc_14B68 + mov bx, word_205CA + mov byte ptr [bx], 2 + mov byte ptr [bx+1], 0 + xor dx, dx + jmp short loc_14B55 +; --------------------------------------------------------------------------- + +loc_14B38: ; CODE XREF: sub_14B0A+4Ej + mov bx, dx + add bx, bx + add bx, word_205CA + mov ax, [bp+arg_2] + mov [bx+2], ax + mov bx, dx + add bx, bx + add bx, word_205CA + mov ax, [bp+arg_0] + mov [bx+10h], ax + inc dx + +loc_14B55: ; CODE XREF: sub_14B0A+2Cj + cmp dx, 7 + jl short loc_14B38 + mov bx, word_205CA + mov byte ptr [bx+1Eh], 0C0h ; 'À' + mov byte ptr [bx+1Fh], 0C0h ; 'À' + jmp short loc_14B73 +; --------------------------------------------------------------------------- + +loc_14B68: ; CODE XREF: sub_14B0A+1Dj + inc cx + add word_205CA, 20h ; ' ' + +loc_14B6E: ; CODE XREF: sub_14B0A+14j + cmp cx, 0Ch + jl short loc_14B20 + +loc_14B73: ; CODE XREF: sub_14B0A+5Cj + mov byte_205CC, 0 + pop bp + retf 4 +sub_14B0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14B7C proc far ; DATA XREF: sub_A524+49o sub_A524+F4o + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 180h + add ax, 2D6Ah + mov word_205CA, ax + mov word_1F2EC, 0FE80h + mov word_1F2EE, 0FE80h + xor di, di + jmp loc_14C81 +; --------------------------------------------------------------------------- + +loc_14BA2: ; CODE XREF: sub_14B7C+108j + mov bx, word_205CA + cmp byte ptr [bx], 0 + jz loc_14C7B + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + mov si, 6 + jmp short loc_14BF1 +; --------------------------------------------------------------------------- + +loc_14BC2: ; CODE XREF: sub_14B7C+77j + lea bx, [si-1] + add bx, bx + add bx, word_205CA + mov ax, [bx+2] + mov bx, si + add bx, bx + add bx, word_205CA + mov [bx+2], ax + lea bx, [si-1] + add bx, bx + add bx, word_205CA + mov ax, [bx+10h] + mov bx, si + add bx, bx + add bx, word_205CA + mov [bx+10h], ax + dec si + +loc_14BF1: ; CODE XREF: sub_14B7C+44j + or si, si + jg short loc_14BC2 + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_4] + push ax + mov bx, word_205CA + push word ptr [bx+1Eh] + mov al, [bx+1Fh] + mov ah, 0 + push ax + call sub_E97A + mov bx, word_205CA + mov ax, [bp+var_2] + add [bx+2], ax + mov ax, [bp+var_4] + add [bx+10h], ax + cmp byte ptr [bx], 1 + jnz short loc_14C5E + cmp byte ptr [bx+1Fh], 0 + jbe short loc_14C36 + mov al, [bx+1Fh] + add al, 0FCh ; 'ü' + mov [bx+1Fh], al + jmp short loc_14C5E +; --------------------------------------------------------------------------- + +loc_14C36: ; CODE XREF: sub_14B7C+AEj + mov bx, word_205CA + cmp byte ptr [bx+1], 40h ; '@' + jb short loc_14C5E + mov byte ptr [bx], 2 + cmp di, 2 + jge short loc_14C4E + mov byte ptr [bx+1Eh], 0B0h ; '°' + jmp short loc_14C56 +; --------------------------------------------------------------------------- + +loc_14C4E: ; CODE XREF: sub_14B7C+CAj + mov bx, word_205CA + mov byte ptr [bx+1Eh], 0D0h ; 'Ð' + +loc_14C56: ; CODE XREF: sub_14B7C+D0j + mov bx, word_205CA + mov byte ptr [bx+1Fh], 0E0h ; 'à' + +loc_14C5E: ; CODE XREF: sub_14B7C+A8j + ; sub_14B7C+B8j ... + mov bx, word_205CA + inc byte ptr [bx+1] + push word ptr [bx+0Eh] + push word ptr [bx+1Ch] + call sub_A310 + or al, al + jz short loc_14C7B + mov bx, word_205CA + mov byte ptr [bx], 0 + +loc_14C7B: ; CODE XREF: sub_14B7C+2Dj + ; sub_14B7C+F6j + inc di + add word_205CA, 20h ; ' ' + +loc_14C81: ; CODE XREF: sub_14B7C+23j + cmp di, 0Ch + jl loc_14BA2 + pop di + pop si + leave + retf +sub_14B7C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14C8C proc near ; CODE XREF: sub_14D83+66p + ; sub_14D83+7Cp ... + +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 di, [bp+arg_4] + mov si, [bp+arg_0] + mov ax, si + add ax, word_23AF6 + mov si, ax + and si, 3 + mov ax, si + imul ax, 6 + mov dl, byte ptr word_23AF0 + mov dh, 0 + add ax, dx + add ax, 1180h + mov [bp+var_2], ax + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE8h + mov di, ax + mov ax, [bp+arg_2] + sar ax, 4 + add ax, 0FFF8h + mov [bp+arg_2], ax + push di + push ax + push [bp+var_2] + call sub_F100 + pop di + pop si + leave + retn 6 +sub_14C8C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14CE3 proc far ; DATA XREF: sub_A524+61o + ; sub_A524+10Co + push bp + mov bp, sp + push si + cmp byte_205CC, 0 + jz short loc_14CF7 + test byte ptr word_23AF6, 1 + jnz loc_14D7E + +loc_14CF7: ; CODE XREF: sub_14CE3+9j + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 180h + add ax, 2D6Ah + mov word_205CA, ax + xor si, si + jmp short loc_14D79 +; --------------------------------------------------------------------------- + +loc_14D0A: ; CODE XREF: sub_14CE3+99j + mov bx, word_205CA + cmp byte ptr [bx], 0 + jz short loc_14D73 + mov bx, word_205CA + cmp word ptr [bx+2], 0FF00h + jle short loc_14D73 + cmp word ptr [bx+2], 1200h + jge short loc_14D73 + cmp word ptr [bx+10h], 0FF00h + jle short loc_14D73 + mov bx, word_205CA + mov ax, [bx+2] + sub ax, word_20E36 + cmp ax, 140h + jg short loc_14D73 + mov ax, word_20E2E + sub ax, [bx+2] + cmp ax, 140h + jg short loc_14D73 + mov ax, [bx+10h] + sub ax, word_20E38 + cmp ax, 140h + jg short loc_14D73 + mov ax, word_20E30 + sub ax, [bx+10h] + cmp ax, 140h + jg short loc_14D73 + push word ptr [bx+2] + push word ptr [bx+10h] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov al, 1 + jmp short loc_14D80 +; --------------------------------------------------------------------------- + +loc_14D73: ; CODE XREF: sub_14CE3+2Ej + ; sub_14CE3+39j ... + inc si + add word_205CA, 20h ; ' ' + +loc_14D79: ; CODE XREF: sub_14CE3+25j + cmp si, 6 + jl short loc_14D0A + +loc_14D7E: ; CODE XREF: sub_14CE3+10j + mov al, 0 + +loc_14D80: ; CODE XREF: sub_14CE3+8Ej + pop si + pop bp + retf +sub_14CE3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14D83 proc far ; DATA XREF: sub_A524+55o + ; sub_A524+100o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 180h + add ax, 2D6Ah + mov word_205CA, ax + cmp byte ptr word_1FE88, 0 + jnz short loc_14DAB + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_14DB7 +; --------------------------------------------------------------------------- + +loc_14DAB: ; CODE XREF: sub_14D83+18j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_14DB7: ; CODE XREF: sub_14D83+26j + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + xor si, si + jmp short loc_14E33 +; --------------------------------------------------------------------------- + +loc_14DC6: ; CODE XREF: sub_14D83+B3j + mov bx, word_205CA + cmp byte ptr [bx], 0 + jz short loc_14E2D + mov dx, 1 + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov dx, 2 + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov bx, word_205CA + push word ptr [bx+0Eh] + push word ptr [bx+1Ch] + push 3 + call sub_14C8C + mov dx, 5 + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov bx, word_205CA + push word ptr [bx+0Ah] + push word ptr [bx+18h] + push 2 + call sub_14C8C + mov dx, 6 + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov bx, word_205CA + push word ptr [bx+6] + push word ptr [bx+14h] + push 1 + call sub_14C8C + xor dx, dx + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov bx, word_205CA + push word ptr [bx+2] + push word ptr [bx+10h] + push 0 + call sub_14C8C + +loc_14E2D: ; CODE XREF: sub_14D83+4Aj + inc si + add word_205CA, 20h ; ' ' + +loc_14E33: ; CODE XREF: sub_14D83+41j + cmp si, 0Ch + jl short loc_14DC6 + pop si + pop bp + retf +sub_14D83 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14E3B proc near ; CODE XREF: sub_14FEE+13p + ; sub_15006+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_14E51 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_14E51: ; CODE XREF: sub_14E3B+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_14EB3 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D68h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 20h ; ' ' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dl, 20h ; ' ' + mov bx, ax + sub dl, [bx+2D56h] + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov [bx+2D59h], dl + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_14EB3: ; CODE XREF: sub_14E3B+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz locret_14FEA + mov al, [bp+arg_0] + mov byte_23E4E, al + mov word_23E40, 80h ; '€' + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + mov byte ptr word_23E42, 20h ; ' ' + mov byte ptr word_23E42+1, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D68h] + mov ah, 0 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov dl, [bx+2D59h] + mov dh, 0 + push dx + cwd + pop bx + idiv bx + or dx, dx + jnz short loc_14F52 + mov byte ptr word_23E44+1, 18h + mov word_23E3E, 200h + push large 2000080h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + mov word_23E3E, 1000h + push large 10000080h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + +loc_14F52: ; CODE XREF: sub_14E3B+D8j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D68h] + mov ah, 0 + mov bx, 20h ; ' ' + cwd + idiv bx + cmp dx, 10h + jnz short loc_14FBD + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov byte ptr word_23E42, 32h ; '2' + mov word_23E3E, 400h + push large 4000080h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + mov word_23E3E, 0E00h + push large 0E000080h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + +loc_14FBD: ; CODE XREF: sub_14E3B+12Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D68h], 40h ; '@' + jbe short loc_14FDF + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_14FDF: ; CODE XREF: sub_14E3B+18Ej + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D68h] + +locret_14FEA: ; CODE XREF: sub_14E3B+8Dj + leave + retn 2 +sub_14E3B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14FEE proc far ; DATA XREF: sub_A524+6Do + ; sub_A524+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_15004 + push 1 + call sub_14E3B + +loc_15004: ; CODE XREF: sub_14FEE+Fj + pop bp + retf +sub_14FEE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15006 proc far ; DATA XREF: sub_A524+79o + ; sub_A524+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1501C + push 2 + call sub_14E3B + +loc_1501C: ; CODE XREF: sub_15006+Fj + pop bp + retf +sub_15006 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1501E proc far ; DATA XREF: sub_A854+9Do + ; sub_A854+148o ... + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz short loc_1508A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 1 + jnz short loc_1505C + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 2 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+307Eh], 0 + push 12h + call sub_EC3A + +loc_1505C: ; CODE XREF: sub_1501E+1Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+307Eh] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+307Eh], 0B4h ; '´' + jb short loc_1508A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 0 + push word_1FE88 + call sub_A3A8 + +loc_1508A: ; CODE XREF: sub_1501E+Fj + ; sub_1501E+55j + pop bp + retf +sub_1501E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1508C proc far ; DATA XREF: sub_A524+9Do + ; sub_A524+148o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_1515A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 1 + jnz short loc_150ED + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 2 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+307Eh], 0 + xor si, si + jmp short loc_150E1 +; --------------------------------------------------------------------------- + +loc_150CA: ; CODE XREF: sub_1508C+58j + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 8 + mov dx, si + shl dx, 3 + add ax, dx + mov bx, ax + mov byte ptr [bx+3080h], 0 + inc si + +loc_150E1: ; CODE XREF: sub_1508C+3Cj + cmp si, 20h ; ' ' + jl short loc_150CA + push 12h + call sub_EC3A + +loc_150ED: ; CODE XREF: sub_1508C+20j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+307Eh] + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 8 + add ax, 3080h + mov word_207E0, ax + xor si, si + jmp short loc_15132 +; --------------------------------------------------------------------------- + +loc_1510A: ; CODE XREF: sub_1508C+A9j + mov bx, word_207E0 + cmp byte ptr [bx], 0 + jz short loc_1512C + mov bx, word_207E0 + mov ax, [bx+6] + add [bx+4], ax + cmp word ptr [bx+4], 0FF80h + jg short loc_1512C + mov word ptr [bx+4], 1800h + add word ptr [bx+6], 8 + +loc_1512C: ; CODE XREF: sub_1508C+85j + ; sub_1508C+95j + inc si + add word_207E0, 8 + +loc_15132: ; CODE XREF: sub_1508C+7Cj + cmp si, 20h ; ' ' + jl short loc_1510A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+307Eh], 0B4h ; '´' + jb short loc_1515A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 0 + push word_1FE88 + call sub_A3A8 + +loc_1515A: ; CODE XREF: sub_1508C+10j + ; sub_1508C+B7j + pop si + pop bp + retf +sub_1508C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1515D proc near ; CODE XREF: sub_151E1+1D5p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 8 + add ax, 3080h + mov word_207E0, ax + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 18h + mov [bp+var_6], ax + xor si, si + jmp short loc_151D9 +; --------------------------------------------------------------------------- + +loc_15196: ; CODE XREF: sub_1515D+7Fj + mov bx, word_207E0 + cmp byte ptr [bx], 0 + jz short loc_151D3 + mov bx, word_207E0 + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF8h + mov [bp+var_2], ax + mov bx, word_207E0 + mov ax, [bx+4] + sar ax, 4 + add ax, 8 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push [bp+var_6] + call sub_F100 + +loc_151D3: ; CODE XREF: sub_1515D+40j + inc si + add word_207E0, 8 + +loc_151D9: ; CODE XREF: sub_1515D+37j + cmp si, 20h ; ' ' + jl short loc_15196 + pop si + leave + retn +sub_1515D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_151E1 proc far ; DATA XREF: sub_A524+A9o + ; sub_A524+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz locret_153B9 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 40h ; '@' + jnb loc_152C2 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_1522B + add bx, 28h ; '(' + +loc_1522B: ; CODE XREF: sub_151E1+45j + call sub_B39E + call sub_F86 + cmp [bp+var_1], 20h ; ' ' + jnb short loc_1527D + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 8 + mov dl, [bp+var_1] + mov dh, 0 + shl dx, 3 + add ax, dx + add ax, 3080h + mov word_207E0, ax + mov bx, word_207E0 + mov byte ptr [bx], 1 + push 7Fh ; '' + call sub_139EC + mov dx, 0FFA0h + sub dx, ax + mov bx, word_207E0 + mov [bx+6], dx + push 1200h + call sub_13A06 + mov bx, word_207E0 + mov [bx+2], ax + mov word ptr [bx+4], 1800h + +loc_1527D: ; CODE XREF: sub_151E1+58j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_1] + shl dl, 2 + mov bx, ax + mov [bx+11BAh], dl + mov al, [bp+var_1] + mov ah, 0 + imul ax, 3 + mov dl, byte ptr word_1FE88 + mov dh, 0 + imul dx, 3 + mov bx, dx + mov [bx+11BBh], al + mov al, [bp+var_1] + mov ah, 0 + imul ax, 3 + mov dl, byte ptr word_1FE88 + mov dh, 0 + imul dx, 3 + mov bx, dx + mov [bx+11BCh], al + jmp loc_153A6 +; --------------------------------------------------------------------------- + +loc_152C2: ; CODE XREF: sub_151E1+2Bj + cmp [bp+var_1], 70h ; 'p' + jnb loc_15360 + test [bp+var_1], 1 + jz short loc_152D7 + push 10h + call sub_EC3A + +loc_152D7: ; CODE XREF: sub_151E1+EDj + cmp [bp+var_1], 60h ; '`' + ja short loc_15318 + mov al, [bp+var_1] + mov ah, 0 + and ax, 1 + imul ax, 50h + add ax, 64h ; 'd' + mov word_1D834, ax + mov byte_23B01, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 140h + add ax, 10h + push ax + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + jmp short loc_15323 +; --------------------------------------------------------------------------- + +loc_15318: ; CODE XREF: sub_151E1+FAj + mov word_1D834, 64h ; 'd' + mov byte_23B01, 1 + +loc_15323: ; CODE XREF: sub_151E1+135j + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + mov [bp+var_2], dl + mov al, [bp+var_2] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_1534F + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_153AB +; --------------------------------------------------------------------------- + +loc_1534F: ; CODE XREF: sub_151E1+15Bj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + jmp short loc_153AB +; --------------------------------------------------------------------------- + +loc_15360: ; CODE XREF: sub_151E1+E5j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_2], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + +loc_153A6: ; CODE XREF: sub_151E1+DEj + mov byte_23B01, 1 + +loc_153AB: ; CODE XREF: sub_151E1+16Cj + ; sub_151E1+17Dj + call sub_704 + cmp [bp+var_1], 60h ; '`' + jnb short locret_153B9 + call sub_1515D + +locret_153B9: ; CODE XREF: sub_151E1+10j + ; sub_151E1+1D3j + leave + retf +sub_151E1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_153BB proc far ; CODE XREF: sub_9EBF+7CP + push bp + mov bp, sp + mov word_20E22, 3796h + xor ax, ax + jmp short loc_153D5 +; --------------------------------------------------------------------------- + +loc_153C8: ; CODE XREF: sub_153BB+1Dj + mov bx, word_20E22 + mov byte ptr [bx], 0 + inc ax + add word_20E22, 0Ah + +loc_153D5: ; CODE XREF: sub_153BB+Bj + cmp ax, 1Eh + jl short loc_153C8 + pop bp + retf +sub_153BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_153DC proc far ; DATA XREF: sub_A6BC+3Do sub_A6BC+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 96h + add ax, 3796h + mov word_20E22, ax + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+38C4h], 1 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+38C6h], 0 + mov bx, word_20E22 + mov byte ptr [bx], 1 + xor si, si + jmp short loc_15462 +; --------------------------------------------------------------------------- + +loc_15412: ; CODE XREF: sub_153DC+89j + or si, si + jz short loc_1541D + mov bx, word_20E22 + mov byte ptr [bx], 0 + +loc_1541D: ; CODE XREF: sub_153DC+38j + mov bx, word_20E22 + mov ax, [bp+arg_2] + mov [bx+2], ax + mov ax, [bp+arg_0] + mov [bx+4], ax + push ds + mov ax, word_20E22 + add ax, 6 + push ax + push ds + mov ax, word_20E22 + add ax, 8 + push ax + mov ax, si + mov bx, 6 + cwd + idiv bx + mov bx, dx + mov al, [bx+678h] + push ax + push 0B0h ; '°' + call sub_E97A + mov bx, word_20E22 + mov byte ptr [bx+1], 0 + inc si + add word_20E22, 0Ah + +loc_15462: ; CODE XREF: sub_153DC+34j + cmp si, 0Fh + jl short loc_15412 + pop si + pop bp + retf 4 +sub_153DC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1546C proc near ; CODE XREF: sub_154C4+BDp + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + mov al, [bp+arg_2] + mov ah, 0 + imul ax, 96h + mov dl, [bp+arg_0] + mov dh, 0 + imul dx, 0Ah + add ax, dx + add ax, 3796h + mov word_20E22, ax + mov bx, word_20E22 + mov byte ptr [bx], 1 + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov bx, word_20E22 + mov [bx+2], ax + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov bx, word_20E22 + mov [bx+4], ax + push 0Dh + call sub_EC3A + pop bp + retn 4 +sub_1546C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_154C4 proc far ; DATA XREF: sub_A6BC+49o sub_A6BC+F4o + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+38C4h], 0 + jz loc_15594 + mov word_1F2EC, 0FF00h + mov word_1F2EE, 0FF00h + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 96h + add ax, 3796h + mov word_20E22, ax + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+38C6h] + inc al + mov dl, byte ptr word_1FE88 + mov dh, 0 + mov bx, dx + mov [bx+38C6h], al + mov [bp+var_1], al + xor si, si + jmp short loc_1555A +; --------------------------------------------------------------------------- + +loc_15514: ; CODE XREF: sub_154C4+99j + mov bx, word_20E22 + cmp byte ptr [bx], 0 + jz short loc_15554 + mov bx, word_20E22 + mov ax, [bx+6] + add [bx+2], ax + mov ax, [bx+8] + add [bx+4], ax + push word ptr [bx+2] + push word ptr [bx+4] + call sub_A310 + or al, al + jz short loc_15554 + mov bx, word_20E22 + mov byte ptr [bx], 0 + cmp si, 0Eh + jnz short loc_15554 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+38C4h], 0 + +loc_15554: ; CODE XREF: sub_154C4+57j + ; sub_154C4+76j ... + inc si + add word_20E22, 0Ah + +loc_1555A: ; CODE XREF: sub_154C4+4Ej + cmp si, 0Fh + jl short loc_15514 + cmp [bp+var_1], 3Ch ; '<' + jnb short loc_15584 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_15584 + push word_1FE88 + mov al, [bp+var_1] + mov ah, 0 + cwd + idiv bx + push ax + call sub_1546C + +loc_15584: ; CODE XREF: sub_154C4+9Fj + ; sub_154C4+AEj + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + +loc_15594: ; CODE XREF: sub_154C4+11j + pop si + leave + retf +sub_154C4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15597 proc far ; DATA XREF: sub_A6BC+61o + ; sub_A6BC+10Co + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_20E3A + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+38C4h], 0 + jnz short loc_155AE + mov al, 0 + jmp short loc_15619 +; --------------------------------------------------------------------------- + +loc_155AE: ; CODE XREF: sub_15597+11j + mov [bp+var_1], 0 + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 96h + add ax, 3796h + mov word_20E22, ax + xor si, si + jmp short loc_15611 +; --------------------------------------------------------------------------- + +loc_155C5: ; CODE XREF: sub_15597+7Dj + mov bx, word_20E22 + cmp byte ptr [bx], 0 + jz short loc_1560B + mov bx, word_20E22 + mov ax, [bx+2] + add ax, 0FF00h + cmp ax, word_20E36 + jg short loc_1560B + mov ax, [bx+2] + add ax, 100h + cmp ax, word_20E2E + jl short loc_1560B + mov ax, [bx+4] + cmp ax, word_20E30 + jl short loc_1560B + cmp ax, word_20E38 + jg short loc_1560B + push word ptr [bx+2] + push ax + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + inc [bp+var_1] + +loc_1560B: ; CODE XREF: sub_15597+35j + ; sub_15597+45j ... + inc si + add word_20E22, 0Ah + +loc_15611: ; CODE XREF: sub_15597+2Cj + cmp si, 0Fh + jl short loc_155C5 + mov al, [bp+var_1] + +loc_15619: ; CODE XREF: sub_15597+15j + pop si + leave + retf +sub_15597 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1561C proc near ; CODE XREF: sub_15652+7Fp + +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] + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov si, ax + mov ax, di + sar ax, 4 + add ax, 8 + mov di, ax + push si + push ax + push [bp+arg_0] + call sub_F100 + pop di + pop si + pop bp + retn 6 +sub_1561C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15652 proc far ; DATA XREF: sub_A6BC+55o + ; sub_A6BC+100o + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+38C4h], 0 + jz short loc_156DF + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 96h + add ax, 3796h + mov word_20E22, ax + cmp byte ptr word_1FE88, 0 + jnz short loc_15689 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_15695 +; --------------------------------------------------------------------------- + +loc_15689: ; CODE XREF: sub_15652+27j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_15695: ; CODE XREF: sub_15652+35j + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 10h + mov [bp+var_2], ax + mov byte_1F2EA, 2 + mov word_1F2E8, 8 + xor si, si + jmp short loc_156DA +; --------------------------------------------------------------------------- + +loc_156AF: ; CODE XREF: sub_15652+8Bj + mov bx, word_20E22 + cmp byte ptr [bx], 0 + jz short loc_156D4 + mov bx, word_20E22 + push word ptr [bx+2] + push word ptr [bx+4] + mov ax, si + mov bx, 3 + cwd + idiv bx + shl dx, 2 + add dx, [bp+var_2] + push dx + call sub_1561C + +loc_156D4: ; CODE XREF: sub_15652+64j + inc si + add word_20E22, 0Ah + +loc_156DA: ; CODE XREF: sub_15652+5Bj + cmp si, 0Fh + jl short loc_156AF + +loc_156DF: ; CODE XREF: sub_15652+11j + pop si + leave + retf +sub_15652 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_156E2 proc near ; CODE XREF: sub_158C5+13p + ; sub_158DD+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + enter 2, 0 + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_156F8 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_156F8: ; CODE XREF: sub_156E2+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_15786 + push 1 + nop + push cs + call near ptr sub_13A36 + or ax, ax + jnz short loc_15717 + mov al, 0F9h ; 'ù' + jmp short loc_15719 +; --------------------------------------------------------------------------- + +loc_15717: ; CODE XREF: sub_156E2+2Fj + mov al, 7 + +loc_15719: ; CODE XREF: sub_156E2+33j + mov dl, byte ptr word_1FE88 + mov dh, 0 + mov bx, dx + mov [bx+3792h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3790h], 40h ; '@' + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3794h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 26h ; '&' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, al + add al, 18h + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_15786: ; CODE XREF: sub_156E2+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz locret_158C1 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+3794h] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_15894 + mov al, byte ptr [bp+arg_0] + mov byte_23E4E, al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3792h], 7 + jbe short loc_157DD + mov word_23E3E, 200h + jmp short loc_157E3 +; --------------------------------------------------------------------------- + +loc_157DD: ; CODE XREF: sub_156E2+F1j + mov word_23E3E, 1000h + +loc_157E3: ; CODE XREF: sub_156E2+F9j + mov word_23E40, 100h + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D59h] + mov byte ptr word_23E42, al + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+3790h] + mov byte ptr word_23E42+1, al + mov byte_23E50, 0 + mov byte ptr word_23E44+1, 14h + push word_23E3E + push 100h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+3794h] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + or dx, dx + jz short loc_15878 + mov byte ptr word_23E44+1, 26h ; '&' + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov byte ptr word_23E42, 36h ; '6' + push word_23E3E + push 100h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + nop + push cs + call near ptr sub_17730 + +loc_15878: ; CODE XREF: sub_156E2+162j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+3792h] + mov dl, byte ptr word_1FE88 + mov dh, 0 + mov bx, dx + add [bx+3790h], al + mov byte_23E50, 1 + +loc_15894: ; CODE XREF: sub_156E2+DBj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3794h], 40h ; '@' + jbe short loc_158B6 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_158B6: ; CODE XREF: sub_156E2+1BEj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+3794h] + +locret_158C1: ; CODE XREF: sub_156E2+B9j + leave + retn 2 +sub_156E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_158C5 proc far ; DATA XREF: sub_A6BC+6Do + ; sub_A6BC+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_158DB + push 1 + call sub_156E2 + +loc_158DB: ; CODE XREF: sub_158C5+Fj + pop bp + retf +sub_158C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_158DD proc far ; DATA XREF: sub_A6BC+79o + ; sub_A6BC+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_158F3 + push 2 + call sub_156E2 + +loc_158F3: ; CODE XREF: sub_158DD+Fj + pop bp + retf +sub_158DD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_158F5 proc far ; CODE XREF: sub_F848+F3P + ; sub_FED8+110P ... + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_5], 0 + cmp word_20E30, 0 + jl short loc_1590F + cmp byte_20E3C, 2 + jnz short loc_15914 + +loc_1590F: ; CODE XREF: sub_158F5+11j + mov al, 0 + jmp loc_159FB +; --------------------------------------------------------------------------- + +loc_15914: ; CODE XREF: sub_158F5+18j + mov byte_26356, 0 + mov si, 66A6h + mov ax, word_20E2E + add ax, word_20E32 + mov word_20E36, ax + mov ax, word_20E30 + add ax, word_20E34 + mov word_20E38, ax + mov ax, word_20E2E + sub ax, word_20E32 + mov word_20E2E, ax + mov ax, word_20E30 + sub ax, word_20E34 + mov word_20E30, ax + mov byte_1FDE1, 1 + mov [bp+var_2], 0 + jmp short loc_159B2 +; --------------------------------------------------------------------------- + +loc_15950: ; CODE XREF: sub_158F5+C1j + cmp byte ptr [si], 1 + jnz short loc_159AC + mov al, [si+0Ch] + cmp al, byte ptr word_20E3A + jnz short loc_159AC + mov ax, [si+2] + add ax, 100h + mov di, ax + mov ax, [si+4] + add ax, 80h ; '€' + mov [bp+var_4], ax + lea ax, [di-100h] + cmp ax, word_20E36 + jg short loc_159AC + lea ax, [di+100h] + cmp ax, word_20E2E + jl short loc_159AC + mov ax, [bp+var_4] + cmp ax, word_20E30 + jl short loc_159AC + cmp ax, word_20E38 + jg short loc_159AC + mov byte ptr [si], 0 + mov al, [bp+var_5] + add al, 2 + mov [bp+var_5], al + push di + push [bp+var_4] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + +loc_159AC: ; CODE XREF: sub_158F5+5Ej + ; sub_158F5+67j ... + inc [bp+var_2] + add si, 0Eh + +loc_159B2: ; CODE XREF: sub_158F5+59j + cmp [bp+var_2], 20h ; ' ' + jl short loc_15950 + mov byte_1FDE1, 0 + cmp byte_20E2C, 0 + jnz short loc_159CC + nop + push cs + call near ptr sub_1670D + add [bp+var_5], al + +loc_159CC: ; CODE XREF: sub_158F5+CDj + cmp byte ptr word_20E3A, 0 + jnz short loc_159D9 + call dword_2029C + jmp short loc_159DD +; --------------------------------------------------------------------------- + +loc_159D9: ; CODE XREF: sub_158F5+DCj + call dword_202A0 + +loc_159DD: ; CODE XREF: sub_158F5+E2j + add [bp+var_5], al + mov al, byte ptr word_20E3A + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz short loc_159F8 + test byte ptr word_23AF6, 1 + jnz short loc_159F8 + inc [bp+var_5] + +loc_159F8: ; CODE XREF: sub_158F5+F7j + ; sub_158F5+FEj + mov al, [bp+var_5] + +loc_159FB: ; CODE XREF: sub_158F5+1Cj + pop di + pop si + leave + retf +sub_158F5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_159FF proc far ; DATA XREF: sub_B1E4+A9o + ; sub_B1E4+154o + +var_14 = byte ptr -14h +var_10 = byte ptr -10h +var_F = byte ptr -0Fh +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 + + enter 10h, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_15CB5 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_F], al + cmp [bp+var_F], 40h ; '@' + ja loc_15BB9 + cmp [bp+var_F], 20h ; ' ' + jnb short loc_15A4A + mov ah, 0 + imul ax, 3 + mov dx, 0E0h ; 'à' + sub dx, ax + mov di, dx + push large 0C00008h + jmp short loc_15A53 +; --------------------------------------------------------------------------- + +loc_15A4A: ; CODE XREF: sub_159FF+35j + mov di, 80h ; '€' + push large 0C00007h + +loc_15A53: ; CODE XREF: sub_159FF+49j + call sub_F5C + cmp byte ptr word_1FE88, 0 + jnz short loc_15A77 + push large 100008h + push large 12F00BFh + call sub_C40 + mov [bp+var_2], 10h + jmp short loc_15A8D +; --------------------------------------------------------------------------- + +loc_15A77: ; CODE XREF: sub_159FF+5Ej + push large 1500008h + push large 26F00BFh + call sub_C40 + mov [bp+var_2], 150h + +loc_15A8D: ; CODE XREF: sub_159FF+76j + xor si, si + jmp short loc_15AE6 +; --------------------------------------------------------------------------- + +loc_15A91: ; CODE XREF: sub_159FF+EAj + mov al, [si+78Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push di + push 90h ; '' + call sub_EA5D + add sp, 6 + add ax, [bp+var_2] + mov bx, si + add bx, bx + lea dx, [bp+var_8] + add bx, dx + mov ss:[bx], ax + mov al, [si+78Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push di + push 0C8h ; 'È' + call sub_EA5D + add sp, 6 + cwd + sub ax, dx + sar ax, 1 + mov bx, si + add bx, bx + lea dx, [bp+var_E] + add bx, dx + mov ss:[bx], ax + inc si + +loc_15AE6: ; CODE XREF: sub_159FF+90j + cmp si, 3 + jl short loc_15A91 + push [bp+var_8] + push [bp+var_E] + push [bp+var_6] + push [bp+var_C] + push [bp+var_4] + push [bp+var_A] + call sub_FAC + cmp [bp+var_F], 20h ; ' ' + jbe loc_15B9A + mov al, [bp+var_F] + mov ah, 0 + imul ax, 3 + mov dx, 140h + sub dx, ax + mov di, dx + push large 0C00008h + call sub_F5C + mov si, 3 + jmp short loc_15B7E +; --------------------------------------------------------------------------- + +loc_15B29: ; CODE XREF: sub_159FF+182j + mov al, [si+78Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push di + push 90h ; '' + call sub_EA5D + add sp, 6 + add ax, [bp+var_2] + mov bx, si + add bx, bx + lea dx, [bp+var_E] + add bx, dx + mov ss:[bx], ax + mov al, [si+78Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push di + push 0C8h ; 'È' + call sub_EA5D + add sp, 6 + cwd + sub ax, dx + sar ax, 1 + mov bx, si + add bx, bx + lea dx, [bp+var_14] + add bx, dx + mov ss:[bx], ax + inc si + +loc_15B7E: ; CODE XREF: sub_159FF+128j + cmp si, 6 + jl short loc_15B29 + push [bp+var_8] + push [bp+var_E] + push [bp+var_6] + push [bp+var_C] + push [bp+var_4] + push [bp+var_A] + call sub_FAC + +loc_15B9A: ; CODE XREF: sub_159FF+107j + push large 0 + push large 27F00C7h + call sub_C40 + call sub_F86 + mov al, [bp+var_F] + shl al, 2 + mov [bp+var_10], al + jmp loc_15C7E +; --------------------------------------------------------------------------- + +loc_15BB9: ; CODE XREF: sub_159FF+2Dj + cmp [bp+var_F], 90h ; '' + jnb loc_15C57 + test [bp+var_F], 7 + jnz short loc_15BEC + push 5 + call sub_EC3A + mov word_1D834, 8Ch ; 'Œ' + call far ptr loc_1C7E + push large 9000B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE5B + jmp short loc_15BF7 +; --------------------------------------------------------------------------- + +loc_15BEC: ; CODE XREF: sub_159FF+1C6j + mov word_1D834, 3Ch ; '<' + call far ptr loc_1C7E + +loc_15BF7: ; CODE XREF: sub_159FF+1EBj + mov al, [bp+var_F] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + mov [bp+var_10], dl + mov al, [bp+var_10] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_15C23 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_15C32 +; --------------------------------------------------------------------------- + +loc_15C23: ; CODE XREF: sub_159FF+211j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + +loc_15C32: ; CODE XREF: sub_159FF+222j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 140h + add ax, 10h + push ax + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + jmp short loc_15CB0 +; --------------------------------------------------------------------------- + +loc_15C57: ; CODE XREF: sub_159FF+1BEj + mov word_1D834, 64h ; 'd' + call far ptr loc_1C7E + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_F] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_10], dl + +loc_15C7E: ; CODE XREF: sub_159FF+1B7j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_10] + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_15CB0: ; CODE XREF: sub_159FF+256j + call sub_704 + +loc_15CB5: ; CODE XREF: sub_159FF+12j + pop di + pop si + leave + retf +sub_159FF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15CB9 proc far ; CODE XREF: sub_16135+21p + +var_8 = word ptr -8 +var_5 = byte ptr -5 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = byte ptr 8 +arg_4 = byte ptr 0Ah + + enter 8, 0 + push si + push di + mov cl, [bp+arg_4] + mov dx, [bp+arg_0] + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + add ax, 393Eh + mov si, ax + cmp cl, 2 + jb short loc_15D4A + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov di, ax + movzx eax, dx + mov [bp+var_4], eax + movzx eax, word ptr [si+2] + add [bp+var_4], eax + cmp [bp+var_4], 0FFFFh + jbe short loc_15D04 + mov dx, 0FFFFh + jmp short loc_15D07 +; --------------------------------------------------------------------------- + +loc_15D04: ; CODE XREF: sub_15CB9+44j + mov dx, word ptr [bp+var_4] + +loc_15D07: ; CODE XREF: sub_15CB9+49j + mov [si+2], dx + mov al, [di+72h] + mov [bp+var_5], al + cmp [bp+var_5], cl + jnb short loc_15D18 + mov [di+72h], cl + +loc_15D18: ; CODE XREF: sub_15CB9+5Aj + mov ax, [di+70h] + mov [bp+var_8], ax + cmp [bp+var_8], dx + jnb short loc_15D26 + mov [di+70h], dx + +loc_15D26: ; CODE XREF: sub_15CB9+68j + cmp cl, 63h ; 'c' + jbe short loc_15D35 + mov cl, 63h ; 'c' + cmp dx, 0FFFFh + jz short loc_15D35 + mov byte ptr [si], 50h ; 'P' + +loc_15D35: ; CODE XREF: sub_15CB9+70j + ; sub_15CB9+77j + cmp [si+1], cl + jb short loc_15D3F + cmp byte ptr [si], 20h ; ' ' + jnb short loc_15D4A + +loc_15D3F: ; CODE XREF: sub_15CB9+7Fj + mov [si+1], cl + cmp dx, 0FFFFh + jz short loc_15D4A + mov byte ptr [si], 50h ; 'P' + +loc_15D4A: ; CODE XREF: sub_15CB9+1Cj + ; sub_15CB9+84j ... + mov ax, [si+2] + pop di + pop si + leave + retf 6 +sub_15CB9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15D53 proc far ; CODE XREF: sub_9778+253P + +var_4 = byte ptr -4 +var_3 = word ptr -3 + + enter 4, 0 + push si + push di + mov si, 393Eh + mov [bp+var_3+1], 0 + jmp loc_15E98 +; --------------------------------------------------------------------------- + +loc_15D64: ; CODE XREF: sub_15D53+149j + cmp byte ptr [si], 0 + jz loc_15E92 + cmp byte ptr [si], 50h ; 'P' + jnz loc_15E09 + mov ax, [bp+var_3+1] + imul ax, 28h + mov di, ax + add ax, 8 + push ax + push 2 + push ds + push offset unk_1DD7C + push 0E1h ; 'á' + call sub_12D0 + lea ax, [di+4] + push ax + push 3 + push ds + push offset unk_1DD7F + push 0E1h ; 'á' + call sub_12D0 + mov al, [si+1] + mov [bp+var_4], al + cmp [bp+var_4], 0Ah + jb short loc_15DDB + mov ah, 0 + mov bx, 0Ah + cwd + idiv bx + add al, 0A0h ; ' ' + mov byte ptr [bp+var_3], al + lea ax, [di+4] + push ax + push 2 + mov al, byte ptr [bp+var_3] + mov ah, 0 + push ax + push 0E1h ; 'á' + call sub_128C + mov al, [bp+var_4] + mov ah, 0 + mov bx, 0Ah + cwd + idiv bx + mov [bp+var_4], dl + jmp short loc_15DED +; --------------------------------------------------------------------------- + +loc_15DDB: ; CODE XREF: sub_15D53+55j + lea ax, [di+4] + push ax + push large 200CFh + push 0E1h ; 'á' + call sub_128C + +loc_15DED: ; CODE XREF: sub_15D53+86j + mov al, [bp+var_4] + add al, 0A0h ; ' ' + mov byte ptr [bp+var_3], al + lea ax, [di+6] + push ax + push 2 + mov al, byte ptr [bp+var_3] + mov ah, 0 + push ax + push 0E1h ; 'á' + call sub_128C + +loc_15E09: ; CODE XREF: sub_15D53+1Bj + dec byte ptr [si] + cmp [bp+var_3+1], 0 + jnz short loc_15E16 + mov di, 28h ; '(' + jmp short loc_15E19 +; --------------------------------------------------------------------------- + +loc_15E16: ; CODE XREF: sub_15D53+BCj + mov di, 168h + +loc_15E19: ; CODE XREF: sub_15D53+C1j + mov byte ptr [bp+var_3], 0Ch + cmp byte ptr [si], 20h ; ' ' + jnb short loc_15E27 + mov ax, 1 + jmp short loc_15E29 +; --------------------------------------------------------------------------- + +loc_15E27: ; CODE XREF: sub_15D53+CDj + xor ax, ax + +loc_15E29: ; CODE XREF: sub_15D53+D2j + push ax + mov ax, word_23AF6 + and ax, 3 + cmp ax, 2 + jnb short loc_15E3A + mov ax, 1 + jmp short loc_15E3C +; --------------------------------------------------------------------------- + +loc_15E3A: ; CODE XREF: sub_15D53+E0j + xor ax, ax + +loc_15E3C: ; CODE XREF: sub_15D53+E5j + pop dx + test dx, ax + jz short loc_15E45 + mov byte ptr [bp+var_3], 8 + +loc_15E45: ; CODE XREF: sub_15D53+ECj + push di + push 18h + push word ptr [si+2] + push [bp+var_3] + call sub_D608 + cmp byte ptr [si], 0 + jnz short loc_15E92 + mov ax, [bp+var_3+1] + imul ax, 28h + mov di, ax + add ax, 4 + push ax + push 2 + push ds + push offset asc_1DD84 ; " " + call sub_2024 + lea ax, [di+4] + push ax + push 3 + push ds + push offset asc_1DD84 ; " " + call sub_2024 + mov byte ptr [si+1], 0 + push word ptr [si+2] + push [bp+var_3+1] + call sub_D5B0 + mov word ptr [si+2], 0 + +loc_15E92: ; CODE XREF: sub_15D53+14j + ; sub_15D53+103j + inc [bp+var_3+1] + add si, 4 + +loc_15E98: ; CODE XREF: sub_15D53+Ej + cmp [bp+var_3+1], 2 + jl loc_15D64 + pop di + pop si + leave + retf +sub_15D53 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15EA4 proc near ; CODE XREF: sub_1615D+17Dp + ; sub_1670D:loc_168D5p ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + push si + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov si, ax + cmp byte ptr [si+1Eh], 0 + jnz short loc_15ED6 + cmp word ptr [si+1Ah], 0FF0h + jnb short loc_15ED6 + mov al, [bp+arg_0] + mov ah, 0 + add [si+1Ah], ax + cmp word ptr [si+1Ah], 0FF0h + jbe short loc_15ED6 + mov word ptr [si+1Ah], 0FF0h + +loc_15ED6: ; CODE XREF: sub_15EA4+15j + ; sub_15EA4+1Cj ... + pop si + pop bp + retn 4 +sub_15EA4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15EDB proc far ; CODE XREF: sub_13C1E+2Cp + +arg_0 = byte ptr 6 +arg_2 = byte ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov si, 3ED6h + xor dx, dx + jmp short loc_15F20 +; --------------------------------------------------------------------------- + +loc_15EE6: ; CODE XREF: sub_15EDB+48j + cmp byte ptr [si], 0 + jnz short loc_15F1C + mov byte ptr [si], 3 + mov word ptr [si+0Ah], 0 + mov word ptr [si+0Ch], 0 + mov byte ptr [si+20h], 0 + mov ax, [bp+arg_4] + mov [si+0Eh], ax + mov al, [bp+arg_2] + mov [si+8], al + mov al, byte_1F51C + mov [si+1Dh], al + mov al, byte_1F51D + mov [si+1Eh], al + mov al, [bp+arg_0] + mov [si+21h], al + jmp short loc_15F25 +; --------------------------------------------------------------------------- + +loc_15F1C: ; CODE XREF: sub_15EDB+Ej + inc dx + add si, 30h ; '0' + +loc_15F20: ; CODE XREF: sub_15EDB+9j + cmp dx, 28h ; '(' + jl short loc_15EE6 + +loc_15F25: ; CODE XREF: sub_15EDB+3Fj + pop si + pop bp + retf 6 +sub_15EDB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15F2A proc near ; CODE XREF: sub_164DA+5Dp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + mov bx, word_2203C + mov al, [bx+6] + mov ah, 0 + add ax, ax + mov bx, ax + mov si, [bx+82Ch] + mov bx, word_2203C + mov al, [bx+7] + mov ah, 0 + mov dl, [bx+6] + mov dh, 0 + imul dx + add ax, ax + sub si, ax + mov al, [bx+9] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_5], al + push word ptr [bx+2] + mov al, [bx+8] + mov ah, 0 + push ax + call sub_A2D0 + mov dl, [bp+var_5] + mov dh, 0 + sub ax, dx + mov [bp+var_2], ax + mov bx, word_2203C + mov ax, [bx+4] + sar ax, 4 + add ax, 10h + mov dl, [bp+var_5] + mov dh, 0 + sub ax, dx + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + call sub_F100 + pop si + leave + retn +sub_15F2A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15F9D proc near ; CODE XREF: sub_1609E+2Ep + push bp + mov bp, sp + mov bx, word_2203C + cmp byte ptr [bx+1], 0Ah + jnz short loc_15FB6 + mov byte ptr [bx], 0Ah + push 3 + call sub_EC3A + pop bp + retn +; --------------------------------------------------------------------------- + +loc_15FB6: ; CODE XREF: sub_15F9D+Bj + mov bx, word_2203C + cmp byte ptr [bx+1], 20h ; ' ' + jnz short loc_15FC5 + mov byte ptr [bx], 9 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_15FC5: ; CODE XREF: sub_15F9D+21j + mov bx, word_2203C + cmp byte ptr [bx+1], 24h ; '$' + jb short loc_15FD2 + mov byte ptr [bx], 0 + +loc_15FD2: ; CODE XREF: sub_15F9D+30j + pop bp + retn +sub_15F9D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15FD4 proc near ; CODE XREF: sub_164DA:loc_1653Cp + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 6, 0 + push si + push di + mov bx, word_2203C + cmp byte ptr [bx+1], 0Ah + jnb short loc_15FF4 + mov al, [bx+6] + mov ah, 0 + shl ax, 3 + mov bx, ax + mov di, [bx+82Eh] + jmp short loc_16044 +; --------------------------------------------------------------------------- + +loc_15FF4: ; CODE XREF: sub_15FD4+Ej + mov bx, word_2203C + cmp byte ptr [bx+1], 20h ; ' ' + jnb short loc_1602C + mov al, [bx+1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov [bp+var_1], al + mov bx, word_2203C + mov al, [bx+6] + mov ah, 0 + shl ax, 3 + mov dl, [bp+var_1] + mov dh, 0 + and dx, 1 + add dx, dx + add ax, dx + mov bx, ax + mov di, [bx+830h] + jmp short loc_16044 +; --------------------------------------------------------------------------- + +loc_1602C: ; CODE XREF: sub_15FD4+28j + mov bx, word_2203C + cmp byte ptr [bx+1], 24h ; '$' + jnb short loc_16044 + mov al, [bx+6] + mov ah, 0 + shl ax, 3 + mov bx, ax + mov di, [bx+834h] + +loc_16044: ; CODE XREF: sub_15FD4+1Ej + ; sub_15FD4+56j ... + mov bx, word_2203C + mov al, [bx+9] + mov ah, 0 + add ax, 10h + mov si, ax + mov bx, 10h + cwd + idiv bx + mov byte_1F2EA, al + mov ax, si + cwd + sub ax, dx + sar ax, 1 + mov word_1F2E8, ax + sar si, 1 + mov bx, word_2203C + push word ptr [bx+2] + mov al, [bx+8] + mov ah, 0 + push ax + call sub_A2D0 + sub ax, si + mov [bp+var_4], ax + mov bx, word_2203C + mov ax, [bx+4] + sar ax, 4 + add ax, 10h + sub ax, si + mov [bp+var_6], ax + push [bp+var_4] + push ax + push di + call sub_F100 + pop di + pop si + leave + retn +sub_15FD4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1609E proc far ; CODE XREF: sub_9778+69P + push bp + mov bp, sp + push si + push di + mov word_2203C, 3ED6h + mov byte_22036, 0 + mov byte_22037, 0 + xor si, si + jmp short loc_16129 +; --------------------------------------------------------------------------- + +loc_160B7: ; CODE XREF: sub_1609E+8Ej + mov bx, word_2203C + cmp byte ptr [bx], 0 + jz short loc_16123 + mov bx, word_2203C + inc byte ptr [bx+1] + cmp byte ptr [bx], 9 + jb short loc_160D1 + call sub_15F9D + jmp short loc_16123 +; --------------------------------------------------------------------------- + +loc_160D1: ; CODE XREF: sub_1609E+2Cj + call sub_13F2C + or al, al + jnz short loc_16123 + mov bx, word_2203C + mov al, [bx+8] + mov ah, 0 + mov bx, ax + inc byte ptr [bx+4AD6h] + mov bx, word_2203C + cmp byte ptr [bx], 1 + jnz short loc_16123 + mov al, [bx+9] + mov ah, 0 + imul ax, 3 + mov bx, 10h + cwd + idiv bx + mov di, ax + mov bx, word_2203C + mov ax, [bx+2] + mov word_220EE, ax + mov ax, [bx+4] + mov word_220F0, ax + mov word_220F2, di + mov word_220F4, di + mov al, [bx+8] + mov byte_220FA, al + nop + push cs + call near ptr sub_13A6E + +loc_16123: ; CODE XREF: sub_1609E+20j + ; sub_1609E+31j ... + inc si + add word_2203C, 30h ; '0' + +loc_16129: ; CODE XREF: sub_1609E+17j + cmp si, 28h ; '(' + jl short loc_160B7 + call sub_164AD + pop di + pop si + pop bp + retf +sub_1609E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16135 proc near ; CODE XREF: sub_1615D+1D5p + ; sub_1670D+243p + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + mov al, byte ptr [bp+arg_4] + mov ah, 0 + shl ax, 4 + mov dl, [bp+arg_2] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4ADEh] + push ax + push [bp+arg_4] + push [bp+arg_0] + nop + push cs + call near ptr sub_15CB9 + pop bp + retn 6 +sub_16135 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1615D proc near ; CODE XREF: sub_164AD+1Dp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + mov bx, word_2203C + cmp word ptr [bx+4], 0 + jle loc_164AA + mov bx, word_2203C + cmp byte ptr [bx+9], 10h + jz short loc_16184 + mov al, [bx+9] + mov ah, 0 + imul ax, 7 + mov si, ax + jmp short loc_16187 +; --------------------------------------------------------------------------- + +loc_16184: ; CODE XREF: sub_1615D+19j + mov si, 0A0h ; ' ' + +loc_16187: ; CODE XREF: sub_1615D+25j + mov bx, word_2203C + mov al, [bx+8] + mov byte ptr [bp+var_4+1], al + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+658Bh], 0 + jz short loc_16212 + mov bx, word_2203C + mov byte ptr [bx+7], 0 + mov byte ptr [bx], 9 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + mov al, [bx+856h] + mov byte ptr [bp+var_4], al + mov bx, word_2203C + mov [bx+1Ch], al + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4ADEh], 1 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4AFEh], 0 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + inc byte ptr [bx+856h] + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+856h], 10h + jb loc_164A2 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+856h], 0 + jmp loc_164A2 +; --------------------------------------------------------------------------- + +loc_16212: ; CODE XREF: sub_1615D+3Dj + mov bx, word_2203C + mov ax, [bx+2] + mov word_20E2E, ax + mov ax, [bx+4] + mov word_20E30, ax + mov word_20E32, si + mov word_20E34, si + mov al, [bx+8] + mov byte ptr word_20E3A, al + cmp word_20E30, 0 + jl loc_164AA + nop + push cs + call near ptr sub_158F5 + or al, al + jz loc_164AA + mov bx, word_2203C + cmp byte ptr [bx+7], 0 + jz short loc_16257 + cmp byte_26356, 0 + jz loc_1649B + +loc_16257: ; CODE XREF: sub_1615D+EFj + mov bx, word_2203C + mov byte ptr [bx], 9 + mov byte ptr word_220C2+1, 1 + cmp byte_2203B, 0 + jnz short loc_162D5 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + mov al, [bx+856h] + mov byte ptr [bp+var_4], al + mov bx, word_2203C + mov [bx+1Ch], al + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4ADEh], 1 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4AFEh], 0 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + inc byte ptr [bx+856h] + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+856h], 10h + jb loc_16484 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + mov bx, ax + mov byte ptr [bx+856h], 0 + jmp loc_16484 +; --------------------------------------------------------------------------- + +loc_162D5: ; CODE XREF: sub_1615D+10Bj + push [bp+var_4+1] + push 20h ; ' ' + call sub_15EA4 + mov al, byte ptr word_220C2 + mov byte ptr [bp+var_4], al + mov bx, word_2203C + mov [bx+1Ch], al + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4ADEh] + mov [bp+var_5], al + cmp [bp+var_5], 0FFh + jnb short loc_1630B + inc [bp+var_5] + +loc_1630B: ; CODE XREF: sub_1615D+1A9j + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov dl, [bp+var_5] + mov bx, ax + mov [bx+4ADEh], dl + push [bp+var_4+1] + push [bp+var_4] + mov al, [bp+var_5] + mov ah, 0 + shl ax, 4 + push ax + call sub_16135 + mov [bp+var_2], ax + push ax + push [bp+var_4+1] + call sub_165B5 + mov bx, word_2203C + mov ax, [bx+2] + mov word_23E3E, ax + mov ax, [bx+4] + mov word_23E40, ax + push 18h + call sub_13EFF + mov byte ptr word_23E42, al + mov byte ptr word_23E42+1, 0 + mov al, byte ptr [bp+var_4+1] + mov byte ptr word_23E44, al + mov al, byte_23AF8 + mov ah, 0 + mov bx, 20h ; ' ' + cwd + idiv bx + mov byte ptr [bp+var_4], al + cmp [bp+var_5], 2 + ja short loc_1638E + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + inc byte ptr [bx+4B1Eh] + jmp loc_1646E +; --------------------------------------------------------------------------- + +loc_1638E: ; CODE XREF: sub_1615D+217j + mov al, [bp+var_5] + mov ah, 0 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + mov bx, 9 + sub bx, dx + cmp ax, bx + jg short loc_163DA + mov byte ptr word_23E44+1, 1Dh + nop + push cs + call near ptr sub_17971 + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B1Eh] + add al, 2 + mov dl, byte ptr [bp+var_4+1] + mov dh, 0 + shl dx, 4 + mov bl, byte ptr [bp+var_4] + mov bh, 0 + add dx, bx + mov bx, dx + mov [bx+4B1Eh], al + jmp loc_1646E +; --------------------------------------------------------------------------- + +loc_163DA: ; CODE XREF: sub_1615D+242j + mov al, [bp+var_5] + mov ah, 0 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add dx, dx + mov bx, 0Eh + sub bx, dx + cmp ax, bx + jg short loc_1642D + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B1Eh] + add al, 3 + mov dl, byte ptr [bp+var_4+1] + mov dh, 0 + shl dx, 4 + mov bl, byte ptr [bp+var_4] + mov bh, 0 + add dx, bx + mov bx, dx + mov [bx+4B1Eh], al + test [bp+var_5], 1 + jnz short loc_1646E + mov byte ptr word_23E44+1, 1Dh + nop + push cs + call near ptr sub_17971 + jmp short loc_16459 +; --------------------------------------------------------------------------- + +loc_1642D: ; CODE XREF: sub_1615D+290j + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B1Eh] + add al, 4 + mov dl, byte ptr [bp+var_4+1] + mov dh, 0 + shl dx, 4 + mov bl, byte ptr [bp+var_4] + mov bh, 0 + add dx, bx + mov bx, dx + mov [bx+4B1Eh], al + +loc_16459: ; CODE XREF: sub_1615D+2CEj + mov al, byte ptr [bp+var_4+1] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_4] + mov dh, 0 + add ax, dx + mov bx, ax + inc byte ptr [bx+4B3Eh] + +loc_1646E: ; CODE XREF: sub_1615D+22Ej + ; sub_1615D+27Aj ... + push [bp+var_4+1] + mov al, byte ptr [bp+var_4] + mov ah, 0 + push ax + call sub_1816D + push [bp+var_4+1] + push word_2203C + call sub_1654E + +loc_16484: ; CODE XREF: sub_1615D+165j + ; sub_1615D+175j + mov bx, word_2203C + mov al, [bx+6] + mov ah, 0 + imul ax, 0Ah + push ax + push [bp+var_4+1] + call sub_D5B0 + jmp short loc_164A2 +; --------------------------------------------------------------------------- + +loc_1649B: ; CODE XREF: sub_1615D+F6j + mov bx, word_2203C + dec byte ptr [bx+7] + +loc_164A2: ; CODE XREF: sub_1615D+A2j + ; sub_1615D+B2j ... + mov bx, word_2203C + mov byte ptr [bx+1], 0 + +loc_164AA: ; CODE XREF: sub_1615D+Dj + ; sub_1615D+D8j ... + pop si + leave + retn +sub_1615D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_164AD proc near ; CODE XREF: sub_1609E+90p + push bp + mov bp, sp + push si + mov byte_2203A, 0 + mov word_2203C, 4626h + mov si, 27h ; ''' + jmp short loc_164D3 +; --------------------------------------------------------------------------- + +loc_164C1: ; CODE XREF: sub_164AD+28j + mov bx, word_2203C + cmp byte ptr [bx], 1 + jnz short loc_164CD + call sub_1615D + +loc_164CD: ; CODE XREF: sub_164AD+1Bj + dec si + sub word_2203C, 30h ; '0' + +loc_164D3: ; CODE XREF: sub_164AD+12j + or si, si + jge short loc_164C1 + pop si + pop bp + retn +sub_164AD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_164DA proc far ; CODE XREF: sub_9778+134P + push bp + mov bp, sp + push si + push di + mov word_2203C, 3ED6h + xor di, di + jmp short loc_16545 +; --------------------------------------------------------------------------- + +loc_164E9: ; CODE XREF: sub_164DA+6Ej + mov si, word_2203C + cmp byte ptr [si], 0 + jz short loc_1653F + cmp byte ptr [si], 3 + jz short loc_1653F + mov al, [si+9] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + mov byte_1F2EA, al + mov al, [si+9] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov word_1F2E8, ax + cmp byte ptr [si+8], 0 + jnz short loc_16526 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_16532 +; --------------------------------------------------------------------------- + +loc_16526: ; CODE XREF: sub_164DA+3Cj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_16532: ; CODE XREF: sub_164DA+4Aj + cmp byte ptr [si], 1 + jnz short loc_1653C + call sub_15F2A + jmp short loc_1653F +; --------------------------------------------------------------------------- + +loc_1653C: ; CODE XREF: sub_164DA+5Bj + call sub_15FD4 + +loc_1653F: ; CODE XREF: sub_164DA+16j + ; sub_164DA+1Bj ... + inc di + add word_2203C, 30h ; '0' + +loc_16545: ; CODE XREF: sub_164DA+Dj + cmp di, 28h ; '(' + jl short loc_164E9 + pop di + pop si + pop bp + retf +sub_164DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1654E proc near ; CODE XREF: sub_1615D+324p + ; sub_1670D+256p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = byte ptr 6 + + enter 2, 0 + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B1Eh] + mov ah, 0 + mov dl, byte_23AF8 + mov dh, 0 + mov bx, 10h + push ax + mov ax, dx + cwd + idiv bx + mov dx, 0Ch + sub dx, ax + pop ax + cmp ax, dx + jl short locret_165B1 + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4B1Eh], 0 + mov ax, word_2203C + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_2203C, ax + nop + push cs + call near ptr sub_17DAE + mov ax, [bp+var_2] + mov word_2203C, ax + +locret_165B1: ; CODE XREF: sub_1654E+33j + leave + retn 4 +sub_1654E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_165B5 proc near ; CODE XREF: sub_1615D+1DFp + ; sub_1670D+24Ep + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + mov si, [bp+arg_2] + mov cl, [bp+arg_0] + cmp si, word_21434 + jb loc_166FD + mov al, cl + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+798h], 0 + jnz loc_16708 + cmp byte_1DB9E, cl + jz loc_1667D + mov al, cl + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 5 + jz loc_16708 + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ch], 5 + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+798h], 1 + mov al, cl + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4AFEh], 0 + mov al, cl + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4B1Eh], 0 + mov al, cl + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4B3Eh], 0 + add word_21434, 1400h + cmp byte_1F39E, 10h + jnb short loc_16656 + inc byte_1F39E + +loc_16656: ; CODE XREF: sub_165B5+9Bj + cmp byte_1DB9E, 0FFh + jnz short loc_1666D + mov al, cl + mov ah, 0 + shl ax, 7 + mov bx, ax + inc byte ptr [bx+661Dh] + jmp loc_16708 +; --------------------------------------------------------------------------- + +loc_1666D: ; CODE XREF: sub_165B5+A6j + mov al, cl + mov ah, 0 + shl ax, 7 + mov bx, ax + inc byte ptr [bx+661Eh] + jmp loc_16708 +; --------------------------------------------------------------------------- + +loc_1667D: ; CODE XREF: sub_165B5+25j + cmp si, 7530h + jb loc_16708 + mov al, cl + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4AD8h], 0 + jnz short loc_16708 + mov al, cl + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jnz short loc_16708 + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+393Ch], 3 + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+798h], 1 + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4AD8h], 1 + mov al, cl + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 3 + mov dl, cl + mov dh, 0 + mov bx, dx + mov [bx+2D56h], al + mov al, cl + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D56h], 10h + jbe short loc_166EE + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D56h], 10h + +loc_166EE: ; CODE XREF: sub_165B5+12Cj + mov al, cl + mov ah, 0 + shl ax, 7 + mov bx, ax + inc byte ptr [bx+661Fh] + jmp short loc_16708 +; --------------------------------------------------------------------------- + +loc_166FD: ; CODE XREF: sub_165B5+Ej + mov al, cl + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4AD8h], 0 + +loc_16708: ; CODE XREF: sub_165B5+1Dj + ; sub_165B5+34j ... + pop si + pop bp + retn 4 +sub_165B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1670D proc far ; CODE XREF: sub_158F5+D1p + ; sub_17A1B+162p + +var_E = byte ptr -0Eh +var_D = byte ptr -0Dh +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 + + enter 0Eh, 0 + push si + push di + mov [bp+var_C], 0 + cmp byte_2203A, 1 + jnz short loc_16725 + mov [bp+var_E], 1 + jmp short loc_16730 +; --------------------------------------------------------------------------- + +loc_16725: ; CODE XREF: sub_1670D+10j + mov al, byte_2203A + mov ah, 0 + imul ax, 3 + mov [bp+var_E], al + +loc_16730: ; CODE XREF: sub_1670D+16j + mov si, 3ED6h + mov byte_2203B, 0 + mov [bp+var_2], 0 + jmp loc_16974 +; --------------------------------------------------------------------------- + +loc_16740: ; CODE XREF: sub_1670D+26Bj + cmp byte ptr [si], 9 + jb loc_1696E + cmp byte_2203A, 0 + jnz short loc_16769 + cmp byte ptr [si], 9 + jz loc_1696E + mov al, [si] + mov ah, 0 + mov dl, [si+6] + mov dh, 0 + add dx, dx + add dx, 0Ah + cmp ax, dx + jge loc_1696E + +loc_16769: ; CODE XREF: sub_1670D+3Fj + mov al, [si+8] + cmp al, byte ptr word_20E3A + jnz loc_1696E + test byte ptr [si+1], 3 + jnz loc_1696E + mov al, [si+9] + mov ah, 0 + imul ax, 6 + mov [bp+var_8], ax + mov ax, [si+2] + sub ax, [bp+var_8] + mov [bp+var_4], ax + mov ax, [si+4] + sub ax, [bp+var_8] + mov [bp+var_6], ax + mov ax, word_20E36 + cmp ax, [bp+var_4] + jl loc_1696E + mov ax, word_20E38 + cmp ax, [bp+var_6] + jl loc_1696E + shl [bp+var_8], 1 + mov ax, [bp+var_8] + add [bp+var_4], ax + add [bp+var_6], ax + mov ax, word_20E2E + cmp ax, [bp+var_4] + jg loc_1696E + mov ax, word_20E30 + cmp ax, [bp+var_6] + jg loc_1696E + mov al, [si+1Ch] + mov byte ptr word_220C2, al + cmp byte_2203A, 0 + jnz short loc_167DF + inc byte ptr [si] + jmp loc_16966 +; --------------------------------------------------------------------------- + +loc_167DF: ; CODE XREF: sub_1670D+CBj + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4ADEh] + mov [bp+var_D], al + cmp [bp+var_D], 0FFh + jnb short loc_16801 + inc [bp+var_D] + +loc_16801: ; CODE XREF: sub_1670D+EFj + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov dl, [bp+var_D] + mov bx, ax + mov [bx+4ADEh], dl + cmp [bp+var_E], 1 + jnz short loc_1682E + mov al, [bp+var_D] + mov ah, 0 + add ax, ax + mov [bp+var_A], ax + push 1 + jmp short loc_1685C +; --------------------------------------------------------------------------- + +loc_1682E: ; CODE XREF: sub_1670D+111j + cmp [bp+var_E], 6 + jnz short loc_16846 + mov al, [bp+var_D] + mov ah, 0 + shl ax, 4 + add ax, 64h ; 'd' + mov [bp+var_A], ax + push 28h ; '(' + jmp short loc_1685C +; --------------------------------------------------------------------------- + +loc_16846: ; CODE XREF: sub_1670D+125j + cmp [bp+var_E], 9 + jnz short loc_16865 + mov al, [bp+var_D] + mov ah, 0 + shl ax, 4 + add ax, 1BCh + mov [bp+var_A], ax + push 50h ; 'P' + +loc_1685C: ; CODE XREF: sub_1670D+11Fj + ; sub_1670D+137j + push word_20E3A + call sub_D5B0 + +loc_16865: ; CODE XREF: sub_1670D+13Dj + mov al, byte_23AF8 + mov ah, 0 + add [bp+var_A], ax + cmp byte_23AF8, 30h ; '0' + ja short loc_16879 + sar [bp+var_A], 1 + jmp short loc_16886 +; --------------------------------------------------------------------------- + +loc_16879: ; CODE XREF: sub_1670D+165j + cmp byte_23AF8, 60h ; '`' + jb short loc_16886 + mov ax, [bp+var_A] + add [bp+var_A], ax + +loc_16886: ; CODE XREF: sub_1670D+16Aj + ; sub_1670D+171j + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + add ax, 4AFEh + mov di, ax + mov al, [bp+var_E] + add [di], al + mov al, [di] + mov [bp+var_D], al + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + add ax, 4B1Eh + mov di, ax + cmp [bp+var_E], 1 + jnz short loc_168C8 + push word_20E3A + push 4 + jmp short loc_168D5 +; --------------------------------------------------------------------------- + +loc_168C8: ; CODE XREF: sub_1670D+1B1j + push word_20E3A + mov al, [bp+var_E] + mov ah, 0 + imul ax, 3 + push ax + +loc_168D5: ; CODE XREF: sub_1670D+1B9j + call sub_15EA4 + cmp [bp+var_D], 4 + jnb short loc_168E4 + mov al, [di] + add al, 2 + jmp short loc_168EE +; --------------------------------------------------------------------------- + +loc_168E4: ; CODE XREF: sub_1670D+1CFj + cmp [bp+var_D], 0Ah + jnb short loc_168F2 + mov al, [di] + add al, 5 + +loc_168EE: ; CODE XREF: sub_1670D+1D5j + mov [di], al + jmp short loc_16945 +; --------------------------------------------------------------------------- + +loc_168F2: ; CODE XREF: sub_1670D+1DBj + cmp [bp+var_D], 14h + jnb short loc_16916 + mov al, [di] + add al, 2 + mov [di], al + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + inc byte ptr [bx+4B3Eh] + jmp short loc_16945 +; --------------------------------------------------------------------------- + +loc_16916: ; CODE XREF: sub_1670D+1E9j + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 4 + mov dl, byte ptr word_220C2 + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B3Eh] + add al, 2 + mov dl, byte ptr word_20E3A + mov dh, 0 + shl dx, 4 + mov bl, byte ptr word_220C2 + mov bh, 0 + add dx, bx + mov bx, dx + mov [bx+4B3Eh], al + +loc_16945: ; CODE XREF: sub_1670D+1E3j + ; sub_1670D+207j + push word_20E3A + push word_220C2 + push [bp+var_A] + call sub_16135 + mov [bp+var_A], ax + push ax + push word_20E3A + call sub_165B5 + push word_20E3A + push si + call sub_1654E + +loc_16966: ; CODE XREF: sub_1670D+CFj + inc [bp+var_C] + mov byte_2203B, 1 + +loc_1696E: ; CODE XREF: sub_1670D+36j + ; sub_1670D+44j ... + inc [bp+var_2] + add si, 30h ; '0' + +loc_16974: ; CODE XREF: sub_1670D+30j + cmp [bp+var_2], 40h ; '@' + jl loc_16740 + mov al, byte ptr [bp+var_C] + pop di + pop si + leave + retf +sub_1670D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16983 proc far ; CODE XREF: sub_C433+1CP sub_C568+50P ... + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + mov dl, 0FFh + mov al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + cmp word ptr [bx+1DCAh], 0 + jz short loc_169AD + mov byte_20E48, 0FEh ; 'þ' + mov ax, word_1F326 + mov word_2142E, ax + mov ax, word_1F328 + mov word_21430, ax + jmp loc_16A50 +; --------------------------------------------------------------------------- + +loc_169AD: ; CODE XREF: sub_16983+14j + mov si, 3ED6h + xor cx, cx + jmp short loc_169EF +; --------------------------------------------------------------------------- + +loc_169B4: ; CODE XREF: sub_16983+6Fj + cmp byte ptr [si], 1 + jnz short loc_169EB + mov al, [si+8] + cmp al, [bp+arg_0] + jnz short loc_169EB + cmp word ptr [si+2], 0 + jl short loc_169EB + cmp word ptr [si+2], 1200h + jg short loc_169EB + cmp word ptr [si+4], 0 + jl short loc_169EB + cmp word ptr [si+4], 1800h + jg short loc_169EB + cmp [si+1Eh], dl + jnb short loc_169EB + mov dl, [si+1Eh] + mov word_2203C, si + or dl, dl + jz short loc_169F4 + +loc_169EB: ; CODE XREF: sub_16983+34j + ; sub_16983+3Cj ... + inc cx + add si, 30h ; '0' + +loc_169EF: ; CODE XREF: sub_16983+2Fj + cmp cx, 28h ; '(' + jl short loc_169B4 + +loc_169F4: ; CODE XREF: sub_16983+66j + cmp dl, 0FFh + jnz short loc_16A0C + mov word_2142E, 900h + mov word_21430, 12C0h + mov byte_20E48, 0FFh + jmp short loc_16A50 +; --------------------------------------------------------------------------- + +loc_16A0C: ; CODE XREF: sub_16983+74j + mov bx, word_2203C + mov ax, [bx+2] + add ax, 0FF00h + mov word_2142E, ax + mov ax, [bx+4] + add ax, 6E0h + mov word_21430, ax + mov byte_20E48, dl + cmp word_2142E, 0 + jle short loc_16A44 + cmp word_2142E, 1200h + jge short loc_16A44 + cmp word_21430, 0 + jle short loc_16A44 + cmp word_21430, 1800h + jl short loc_16A50 + +loc_16A44: ; CODE XREF: sub_16983+A8j + ; sub_16983+B0j ... + mov word_2142E, 900h + mov word_21430, 12C0h + +loc_16A50: ; CODE XREF: sub_16983+27j + ; sub_16983+87j ... + pop si + pop bp + retf 2 +sub_16983 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A55 proc far + push bp + mov bp, sp + mov byte_220E0, 0 + mov byte_220E6, 0 + pop bp + retf +sub_16A55 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A64 proc far ; DATA XREF: sub_B1E4+3Do sub_B1E4+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 6 + add ax, 4B80h + mov si, ax + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_2] + mov [si+2], ax + mov ax, [bp+arg_0] + mov [si+4], ax + pop si + pop bp + retf 4 +sub_16A64 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A8D proc far ; DATA XREF: sub_B1E4+49o sub_B1E4+F4o + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 6 + add ax, 4B80h + mov si, ax + cmp byte ptr [si], 0 + jz short loc_16B09 + mov al, [si+1] + inc al + mov [si+1], al + mov [bp+var_1], al + cmp byte ptr [si], 1 + jnz short loc_16AD4 + sub word ptr [si+4], 40h ; '@' + cmp [bp+var_1], 40h ; '@' + jnb short loc_16AC4 + cmp word ptr [si+4], 0 + jg short loc_16AF9 + +loc_16AC4: ; CODE XREF: sub_16A8D+2Fj + mov byte ptr [si], 2 + mov byte ptr [si+1], 0 + push 7 + call sub_EC3A + jmp short loc_16AF9 +; --------------------------------------------------------------------------- + +loc_16AD4: ; CODE XREF: sub_16A8D+25j + cmp [bp+var_1], 18h + jb short loc_16AF0 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 2 + cwd + idiv bx + or dx, dx + jnz short loc_16AF0 + push 0Fh + call sub_EC3A + +loc_16AF0: ; CODE XREF: sub_16A8D+4Bj + ; sub_16A8D+5Aj + cmp [bp+var_1], 40h ; '@' + jb short loc_16AF9 + mov byte ptr [si], 0 + +loc_16AF9: ; CODE XREF: sub_16A8D+35j + ; sub_16A8D+45j ... + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + +loc_16B09: ; CODE XREF: sub_16A8D+15j + pop si + leave + retf +sub_16A8D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16B0C proc far ; DATA XREF: sub_B1E4+61o + ; sub_B1E4+10Co + push bp + mov bp, sp + push si + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 6 + add ax, 4B80h + mov si, ax + cmp byte ptr [si], 0 + jz loc_16BB0 + cmp byte ptr [si], 1 + jnz short loc_16B69 + mov ax, [si+2] + add ax, 0FF80h + cmp ax, word_20E36 + jg short loc_16BB0 + mov ax, [si+2] + add ax, 80h ; '€' + cmp ax, word_20E2E + jl short loc_16BB0 + mov ax, [si+4] + add ax, 0FF80h + cmp ax, word_20E38 + jg short loc_16BB0 + mov ax, [si+4] + add ax, 80h ; '€' + cmp ax, word_20E30 + jl short loc_16BB0 + mov byte ptr [si], 2 + mov byte ptr [si+1], 0 + push 7 + call sub_EC3A + jmp short loc_16BB0 +; --------------------------------------------------------------------------- + +loc_16B69: ; CODE XREF: sub_16B0C+1Bj + mov ax, [si+2] + add ax, 0FC80h + cmp ax, word_20E36 + jg short loc_16BB0 + mov ax, [si+2] + add ax, 380h + cmp ax, word_20E2E + jl short loc_16BB0 + mov ax, [si+4] + add ax, 0FC80h + cmp ax, word_20E38 + jg short loc_16BB0 + mov ax, [si+4] + add ax, 380h + cmp ax, word_20E30 + jl short loc_16BB0 + push word_20E2E + push word_20E30 + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov al, 1 + jmp short loc_16BB2 +; --------------------------------------------------------------------------- + +loc_16BB0: ; CODE XREF: sub_16B0C+14j + ; sub_16B0C+27j ... + mov al, 0 + +loc_16BB2: ; CODE XREF: sub_16B0C+A2j + pop si + pop bp + retf +sub_16B0C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16BB5 proc near ; CODE XREF: sub_16C65+131p + ; sub_16C65+147p ... + +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 0Ah, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 6 + add ax, 4B80h + mov si, ax + mov al, [si+1] + mov [bp+var_9], al + mov ax, [si+2] + add ax, 0FF00h + mov [bp+var_6], ax + mov ax, [si+4] + add ax, 0FF00h + mov [bp+var_8], ax + mov [bp+var_4], 0 + mov al, [bp+var_9] + add al, al + jmp short loc_16C56 +; --------------------------------------------------------------------------- + +loc_16BEC: ; CODE XREF: sub_16BB5+A8j + mov al, [bp+var_A] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+arg_2] + push [bp+var_6] + call sub_EA5D + add sp, 6 + mov di, ax + mov al, [bp+var_A] + add al, [bp+arg_0] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+arg_2] + push [bp+var_8] + call sub_EA5D + add sp, 6 + mov [bp+var_2], ax + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov ax, [bp+var_2] + sar ax, 4 + add ax, 10h + mov [bp+var_2], ax + push di + push ax + push [bp+arg_4] + call sub_F100 + inc [bp+var_4] + mov al, [bp+var_A] + add al, 10h + +loc_16C56: ; CODE XREF: sub_16BB5+35j + mov [bp+var_A], al + cmp [bp+var_4], 10h + jl short loc_16BEC + pop di + pop si + leave + retn 6 +sub_16BB5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16C65 proc far ; DATA XREF: sub_B1E4+55o + ; sub_B1E4+100o + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 6 + add ax, 4B80h + mov di, ax + cmp byte ptr [di], 0 + jz loc_16DC4 + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + cmp byte ptr word_1FE88, 0 + jnz short loc_16C9F + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_16CAB +; --------------------------------------------------------------------------- + +loc_16C9F: ; CODE XREF: sub_16C65+2Aj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_16CAB: ; CODE XREF: sub_16C65+38j + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 0C80h + mov si, ax + mov al, [di+1] + mov [bp+var_5], al + test [bp+var_5], 1 + jz short loc_16CC4 + add si, 4 + +loc_16CC4: ; CODE XREF: sub_16C65+5Aj + cmp byte ptr [di], 1 + jnz short loc_16CF3 + push word ptr [di+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov ax, [di+4] + sar ax, 4 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + call sub_F100 + jmp loc_16DC4 +; --------------------------------------------------------------------------- + +loc_16CF3: ; CODE XREF: sub_16C65+62j + add si, 500h + cmp [bp+var_5], 8 + jnb short loc_16D06 + push si + mov al, [bp+var_5] + mov ah, 0 + jmp loc_16DB8 +; --------------------------------------------------------------------------- + +loc_16D06: ; CODE XREF: sub_16C65+96j + cmp [bp+var_5], 10h + jnb short loc_16D21 + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFF9h + shl ax, 3 + shl ax, 4 + push ax + push 20h ; ' ' + jmp loc_16DC1 +; --------------------------------------------------------------------------- + +loc_16D21: ; CODE XREF: sub_16C65+A5j + cmp [bp+var_5], 18h + jnb short loc_16D32 + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFF1h + jmp short loc_16D6C +; --------------------------------------------------------------------------- + +loc_16D32: ; CODE XREF: sub_16C65+C0j + cmp [bp+var_5], 20h ; ' ' + jnb short loc_16D43 + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFE8h + jmp short loc_16DB8 +; --------------------------------------------------------------------------- + +loc_16D43: ; CODE XREF: sub_16C65+D1j + cmp [bp+var_5], 28h ; '(' + jnb short loc_16D5D + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFE1h + shl ax, 3 + shl ax, 4 + push ax + push 20h ; ' ' + jmp short loc_16DC1 +; --------------------------------------------------------------------------- + +loc_16D5D: ; CODE XREF: sub_16C65+E2j + cmp [bp+var_5], 30h ; '0' + jnb short loc_16D78 + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFD9h + +loc_16D6C: ; CODE XREF: sub_16C65+CBj + shl ax, 3 + shl ax, 4 + push ax + push 0E0h ; 'à' + jmp short loc_16DC1 +; --------------------------------------------------------------------------- + +loc_16D78: ; CODE XREF: sub_16C65+FCj + cmp [bp+var_5], 40h ; '@' + jnb short loc_16DC4 + cmp [bp+var_5], 38h ; '8' + jnb short loc_16DAF + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFD1h + shl ax, 3 + shl ax, 4 + push ax + push 20h ; ' ' + call sub_16BB5 + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFD1h + shl ax, 3 + shl ax, 4 + push ax + push 0E0h ; 'à' + call sub_16BB5 + +loc_16DAF: ; CODE XREF: sub_16C65+11Dj + push si + mov al, [bp+var_5] + mov ah, 0 + add ax, 0FFD0h + +loc_16DB8: ; CODE XREF: sub_16C65+9Ej + ; sub_16C65+DCj + shl ax, 3 + shl ax, 4 + push ax + push 0 + +loc_16DC1: ; CODE XREF: sub_16C65+B9j + ; sub_16C65+F6j ... + call sub_16BB5 + +loc_16DC4: ; CODE XREF: sub_16C65+16j + ; sub_16C65+8Bj ... + pop di + pop si + leave + retf +sub_16C65 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16DC8 proc near ; CODE XREF: sub_16FC0+13p + ; sub_16FD8+13p + +var_4 = word ptr -4 +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_16DE0 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_16DE0: ; CODE XREF: sub_16DC8+Ej + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_16E42 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+4B7Eh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 18h + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 20h ; ' ' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + jmp loc_16F9A +; --------------------------------------------------------------------------- + +loc_16E42: ; CODE XREF: sub_16DC8+26j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz loc_16F9A + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+4B7Eh] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_16F8F + mov al, byte ptr [bp+arg_0] + mov byte_23E4E, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D59h] + mov byte ptr word_23E42, al + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov byte ptr word_23E42+1, 0 + mov byte ptr word_23E44+1, 2Ch ; ',' + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+4B7Eh] + mov ah, 0 + mov [bp+var_4], ax + mov cx, 8 ; switch 8 cases + mov bx, offset word_16FA0 + +loc_16ECB: ; CODE XREF: sub_16DC8+10Ej + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_16EDB + add bx, 2 + loop loc_16ECB + jmp loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16EDB: ; CODE XREF: sub_16DC8+109j + jmp word ptr cs:[bx+10h] ; switch jump + +loc_16EDF: ; DATA XREF: seg004:35E0o + mov si, 900h ; jumptable 00016EDB case 0 + mov di, 200h + jmp short loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16EE7: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov si, 600h ; jumptable 00016EDB case 8 + mov di, 500h + jmp short loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16EEF: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov si, 0C00h ; jumptable 00016EDB case 16 + mov di, 500h + mov word_23E3E, 900h + mov word_23E40, 200h + jmp short loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16F03: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov si, 600h ; jumptable 00016EDB case 24 + mov di, 380h + mov word_23E3E, 600h + jmp short loc_16F1D +; --------------------------------------------------------------------------- + +loc_16F11: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov si, 0C00h ; jumptable 00016EDB case 32 + mov di, 380h + mov word_23E3E, 0C00h + +loc_16F1D: ; CODE XREF: sub_16DC8+147j + mov word_23E40, 500h + jmp short loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16F25: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov si, 900h ; jumptable 00016EDB case 40 + mov di, 680h + mov word_23E3E, 600h + +loc_16F31: ; CODE XREF: sub_16DC8+177j + mov word_23E40, 380h + jmp short loc_16F61 ; default +; --------------------------------------------------------------------------- + +loc_16F39: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov word_23E3E, 0C00h ; jumptable 00016EDB case 48 + jmp short loc_16F31 +; --------------------------------------------------------------------------- + +loc_16F41: ; CODE XREF: sub_16DC8:loc_16EDBj + ; DATA XREF: seg004:35E0o + mov word_23E3E, 900h ; jumptable 00016EDB case 56 + mov word_23E40, 680h + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_16F61: ; CODE XREF: sub_16DC8+110j + ; sub_16DC8+11Dj ... + mov al, byte ptr word_1FE88 ; default + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B7Eh], 28h ; '(' + ja short loc_16F7C + push si + push di + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE5B + +loc_16F7C: ; CODE XREF: sub_16DC8+1A5j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+4B7Eh], 10h + jb short loc_16F8F + nop + push cs + call near ptr sub_17730 + +loc_16F8F: ; CODE XREF: sub_16DC8+B1j + ; sub_16DC8+1C0j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+4B7Eh] + +loc_16F9A: ; CODE XREF: sub_16DC8+77j + ; sub_16DC8+8Fj + pop di + pop si + leave + retn 2 +sub_16DC8 endp + +; --------------------------------------------------------------------------- +word_16FA0 dw 0, 8, 10h, 18h ; DATA XREF: sub_16DC8+100o + dw 20h, 28h, 30h, 38h ; value table for switch statement + dw offset loc_16EDF ; jump table for switch statement + dw offset loc_16EE7 + dw offset loc_16EEF + dw offset loc_16F03 + dw offset loc_16F11 + dw offset loc_16F25 + dw offset loc_16F39 + dw offset loc_16F41 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16FC0 proc far ; DATA XREF: sub_B1E4+6Do + ; sub_B1E4+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_16FD6 + push 1 + call sub_16DC8 + +loc_16FD6: ; CODE XREF: sub_16FC0+Fj + pop bp + retf +sub_16FC0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16FD8 proc far ; DATA XREF: sub_B1E4+79o + ; sub_B1E4+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_16FEE + push 2 + call sub_16DC8 + +loc_16FEE: ; CODE XREF: sub_16FD8+Fj + pop bp + retf +sub_16FD8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_16FF0 proc near ; CODE XREF: sub_17BD1:loc_17D99p + push si + push di + mov si, ax + sar ax, 4 + shl ax, 1 + shl bx, 6 + add ax, bx + shr bx, 2 + add ax, bx + mov di, ax + and si, 0Fh + shl si, 4 + add si, 9EAh + add si, dx + cmp ax, 8 + jl short loc_1702A + movsd + add di, 4Ch ; 'L' + movsd + add di, 4Ch ; 'L' + movsd + add di, 4Ch ; 'L' + movsd + jmp short loc_17040 +; --------------------------------------------------------------------------- + nop + +loc_1702A: ; CODE XREF: sub_16FF0+24j + movsw + add si, 2 + add di, 4Eh ; 'N' + movsw + add si, 2 + add di, 4Eh ; 'N' + movsw + add si, 2 + add di, 4Eh ; 'N' + movsw + +loc_17040: ; CODE XREF: sub_16FF0+37j + pop di + pop si + retn +sub_16FF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17043 proc far ; DATA XREF: sub_A6BC+9Do + ; sub_A6BC+148o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_1714C + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 1 + jnz short loc_170A5 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 2 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+307Eh], 0 + xor si, si + jmp short loc_17099 +; --------------------------------------------------------------------------- + +loc_17081: ; CODE XREF: sub_17043+59j + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 5 + mov dx, si + shl dx, 2 + add ax, dx + mov bx, ax + mov word ptr [bx+689Ch], 0 + inc si + +loc_17099: ; CODE XREF: sub_17043+3Cj + cmp si, 8 + jl short loc_17081 + push 12h + call sub_EC3A + +loc_170A5: ; CODE XREF: sub_17043+20j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+307Eh] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + dec ax + mov si, ax + cmp si, 8 + jge short loc_17129 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_17129 + push 1200h + call sub_13A06 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 5 + mov bx, si + shl bx, 2 + add dx, bx + mov bx, dx + mov [bx+689Ah], ax + mov ax, si + mov bx, 3 + cwd + idiv bx + add ax, ax + mov dl, byte ptr word_23AF0 + mov dh, 0 + add ax, dx + add ax, 1Ch + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 5 + mov bx, si + shl bx, 2 + add dx, bx + mov bx, dx + mov [bx+689Ch], ax + +loc_17129: ; CODE XREF: sub_17043+86j + ; sub_17043+9Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+307Eh], 0B4h ; '´' + jb short loc_1714C + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 0 + push word_1FE88 + call sub_A3A8 + +loc_1714C: ; CODE XREF: sub_17043+10j + ; sub_17043+F2j + pop si + pop bp + retf +sub_17043 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1714F proc near ; CODE XREF: sub_171BA+95p + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 5 + add ax, 689Ah + mov word_23E3A, ax + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + xor si, si + jmp short loc_171B2 +; --------------------------------------------------------------------------- + +loc_1717D: ; CODE XREF: sub_1714F+66j + mov bx, word_23E3A + cmp word ptr [bx+2], 0 + jz short loc_171B7 + mov bx, word_23E3A + push word ptr [bx] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + push ax + push 10h + mov bx, word_23E3A + push word ptr [bx+2] + push 18h + call sub_F162 + inc si + add word_23E3A, 4 + +loc_171B2: ; CODE XREF: sub_1714F+2Cj + cmp si, 8 + jl short loc_1717D + +loc_171B7: ; CODE XREF: sub_1714F+36j + pop si + leave + retn +sub_1714F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_171BA proc far ; DATA XREF: sub_A6BC+A9o + ; sub_A6BC+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz locret_17382 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 50h ; 'P' + ja short loc_17255 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_17202 + add bx, 28h ; '(' + +loc_17202: ; CODE XREF: sub_171BA+43j + call sub_B39E + call sub_F86 + mov al, [bp+var_1] + mov ah, 0 + imul ax, 3 + mov dl, 0 + sub dl, al + mov [bp+var_2], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + call sub_704 + call sub_1714F + jmp loc_1737D +; --------------------------------------------------------------------------- + +loc_17255: ; CODE XREF: sub_171BA+2Bj + cmp [bp+var_1], 90h ; '' + jnb loc_17332 + test [bp+var_1], 1 + jnz short loc_1727B + push 10h + call sub_EC3A + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 64h ; 'd' + jmp short loc_1728A +; --------------------------------------------------------------------------- + +loc_1727B: ; CODE XREF: sub_171BA+A7j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 0 + +loc_1728A: ; CODE XREF: sub_171BA+BFj + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BBh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BCh], 0 + mov byte_23B01, 1 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + mov [bp+var_2], dl + cmp [bp+var_2], 0 + jnz short loc_172D2 + push large 9000B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + +loc_172D2: ; CODE XREF: sub_171BA+105j + mov al, [bp+var_2] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_172F0 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_172FF +; --------------------------------------------------------------------------- + +loc_172F0: ; CODE XREF: sub_171BA+123j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + +loc_172FF: ; CODE XREF: sub_171BA+134j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 140h + mov dl, byte ptr word_1FE88 + mov dh, 0 + add dx, dx + mov bx, dx + add ax, [bx+659Ch] + add ax, 10h + push ax + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + jmp short loc_1737D +; --------------------------------------------------------------------------- + +loc_17332: ; CODE XREF: sub_171BA+9Fj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_2], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_1737D: ; CODE XREF: sub_171BA+98j + ; sub_171BA+176j + call sub_704 + +locret_17382: ; CODE XREF: sub_171BA+10j + leave + retf +sub_171BA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17384 proc far ; CODE XREF: sub_9EBF+2CP + push bp + mov bp, sp + xor ax, ax + jmp short loc_17396 +; --------------------------------------------------------------------------- + +loc_1738B: ; CODE XREF: sub_17384+15j + mov bx, ax + imul bx, 1Ah + mov byte ptr [bx+68F2h], 0 + inc ax + +loc_17396: ; CODE XREF: sub_17384+5j + cmp ax, 140h + jl short loc_1738B + mov byte_26353, 0 + pop bp + retf +sub_17384 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_173A2 proc near ; CODE XREF: sub_17730+1E7p + +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov si, [bp+arg_0] + mov [bp+var_2], 0 + xor di, di + mov [bp+var_7], 0 + mov [bp+var_8], 8 + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov [bp+var_4], ax + mov al, byte ptr word_23E44 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov [bp+var_6], ax + mov al, byte ptr word_23E42 + mov [bp+var_9], al + mov al, byte ptr word_23E44+1 + mov ah, 0 + mov bx, ax + cmp bx, 2Ch ; ',' + ja loc_1767D + add bx, bx + jmp cs:off_176D6[bx] + +loc_173F9: ; DATA XREF: seg004:3D0Eo seg004:3D14o + add [bp+var_2], 3 + +loc_173FD: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D0Co ... + add [bp+var_2], 3 + +loc_17401: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D0Ao ... + or si, si + jnz short loc_17410 + mov ax, [bp+var_2] + add ax, 3 + mov [bp+var_2], ax + jmp short loc_17421 +; --------------------------------------------------------------------------- + +loc_17410: ; CODE XREF: sub_173A2+61j + cmp si, 1 + jnz short loc_17421 + mov ax, 0FFFDh + sub ax, [bp+var_2] + mov [bp+var_2], ax + mov di, 1 + +loc_17421: ; CODE XREF: sub_173A2+6Cj + ; sub_173A2+71j + cmp byte ptr word_23E44+1, 4 + ja loc_1767D + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_1742D: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D1Ao ... + add [bp+var_2], 8 + +loc_17431: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D18o ... + add [bp+var_2], 8 + +loc_17435: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D16o ... + or si, si + jnz short loc_17440 + mov [bp+var_2], 0 + jmp short loc_17461 +; --------------------------------------------------------------------------- + +loc_17440: ; CODE XREF: sub_173A2+95j + cmp si, 1 + jnz short loc_17450 + mov ax, [bp+var_2] + add ax, 8 + mov [bp+var_2], ax + jmp short loc_17461 +; --------------------------------------------------------------------------- + +loc_17450: ; CODE XREF: sub_173A2+A1j + cmp si, 2 + jnz short loc_17461 + mov ax, 0FFF8h + sub ax, [bp+var_2] + mov [bp+var_2], ax + mov di, 1 + +loc_17461: ; CODE XREF: sub_173A2+9Cj + ; sub_173A2+ACj ... + cmp byte ptr word_23E44+1, 0Ah + ja loc_1767D + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_1746D: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D26o ... + add [bp+var_2], 6 + +loc_17471: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D24o ... + add [bp+var_2], 6 + +loc_17475: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D22o ... + or si, si + jnz short loc_17484 + mov ax, [bp+var_2] + add ax, 3 + mov [bp+var_2], ax + jmp short loc_174C1 +; --------------------------------------------------------------------------- + +loc_17484: ; CODE XREF: sub_173A2+D5j + cmp si, 1 + jnz short loc_17494 + mov ax, 0FFFDh + sub ax, [bp+var_2] + mov [bp+var_2], ax + jmp short loc_174C1 +; --------------------------------------------------------------------------- + +loc_17494: ; CODE XREF: sub_173A2+E5j + cmp si, 2 + jnz short loc_174A9 + mov ax, [bp+var_2] + add ax, ax + add ax, [bp+var_2] + add ax, 9 + mov [bp+var_2], ax + jmp short loc_174C1 +; --------------------------------------------------------------------------- + +loc_174A9: ; CODE XREF: sub_173A2+F5j + cmp si, 3 + jnz short loc_174C1 + mov ax, [bp+var_2] + add ax, ax + add ax, [bp+var_2] + mov dx, 0FFF7h + sub dx, ax + mov [bp+var_2], dx + mov di, 1 + +loc_174C1: ; CODE XREF: sub_173A2+E0j + ; sub_173A2+F0j ... + cmp byte ptr word_23E44+1, 10h + ja loc_1767D + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_174CD: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D32o ... + add [bp+var_2], 6 + +loc_174D1: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D30o ... + add [bp+var_2], 6 + +loc_174D5: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D2Eo ... + or si, si + jnz short loc_174E0 + mov [bp+var_2], 0 + jmp short loc_17527 +; --------------------------------------------------------------------------- + +loc_174E0: ; CODE XREF: sub_173A2+135j + cmp si, 1 + jnz short loc_174F0 + mov ax, [bp+var_2] + add ax, 6 + mov [bp+var_2], ax + jmp short loc_17527 +; --------------------------------------------------------------------------- + +loc_174F0: ; CODE XREF: sub_173A2+141j + cmp si, 2 + jnz short loc_17500 + mov ax, 0FFFAh + sub ax, [bp+var_2] + mov [bp+var_2], ax + jmp short loc_17527 +; --------------------------------------------------------------------------- + +loc_17500: ; CODE XREF: sub_173A2+151j + cmp si, 3 + jnz short loc_17512 + mov ax, [bp+var_2] + add ax, ax + add ax, 0Ch + mov [bp+var_2], ax + jmp short loc_17527 +; --------------------------------------------------------------------------- + +loc_17512: ; CODE XREF: sub_173A2+161j + cmp si, 4 + jnz short loc_17527 + mov ax, [bp+var_2] + add ax, ax + mov dx, 0FFF4h + sub dx, ax + mov [bp+var_2], dx + mov di, 1 + +loc_17527: ; CODE XREF: sub_173A2+13Cj + ; sub_173A2+14Cj ... + cmp byte ptr word_23E44+1, 16h + ja loc_1767D + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_17533: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D50o + mov [bp+var_7], 10h + dec [bp+var_8] + +loc_1753A: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D4Eo + mov al, [bp+var_7] + add al, 8 + mov [bp+var_7], al + dec [bp+var_8] + +loc_17545: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D4Co + mov al, [bp+var_7] + add al, 4 + mov [bp+var_7], al + dec [bp+var_8] + +loc_17550: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D46o + mov al, [bp+var_7] + add al, 2 + mov [bp+var_7], al + dec [bp+var_8] + +loc_1755B: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D48o + mov al, [bp+var_7] + inc al + mov [bp+var_7], al + dec [bp+var_8] + mov ax, si + mov cl, [bp+var_8] + shl ax, cl + mov [bp+var_2], ax + mov al, [bp+var_7] + mov ah, 0 + cmp ax, si + jg loc_176A8 + mov di, 1 + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_17581: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D52o + mov ax, si + shl ax, 8 + mov dl, byte_23E47 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov [bp+var_2], ax + mov al, byte_23E47 + mov ah, 0 + dec ax + cmp ax, si + jg loc_176A8 + jmp loc_17628 +; --------------------------------------------------------------------------- + +loc_175A3: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D5Co + mov [bp+var_7], 10h + dec [bp+var_8] + +loc_175AA: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D5Ao + mov al, [bp+var_7] + add al, 8 + mov [bp+var_7], al + dec [bp+var_8] + +loc_175B5: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D58o + mov al, [bp+var_7] + add al, 4 + mov [bp+var_7], al + dec [bp+var_8] + +loc_175C0: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D56o + mov al, [bp+var_7] + add al, 2 + mov [bp+var_7], al + dec [bp+var_8] + +loc_175CB: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D54o + mov al, [bp+var_7] + inc al + mov [bp+var_7], al + dec [bp+var_8] + mov ax, si + mov cl, [bp+var_8] + shl ax, cl + mov [bp+var_2], ax + mov al, [bp+var_7] + mov ah, 0 + cmp ax, si + jg loc_1767D + jmp loc_1767A +; --------------------------------------------------------------------------- + +loc_175EE: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D5Eo + mov ax, si + shl ax, 8 + mov dl, byte_23E47 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + mov [bp+var_2], ax + mov al, byte_23E47 + mov ah, 0 + dec ax + cmp ax, si + jg short loc_1767D + jmp short loc_1767A +; --------------------------------------------------------------------------- + +loc_1760D: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D4Ao + or si, si + jnz short loc_17619 + mov [bp+var_2], 0 + jmp loc_176A8 +; --------------------------------------------------------------------------- + +loc_17619: ; CODE XREF: sub_173A2+26Dj + mov al, byte ptr word_23E42+1 + mov ah, 0 + add ax, ax + mov dx, 80h ; '€' + sub dx, ax + mov [bp+var_2], dx + +loc_17628: ; CODE XREF: sub_173A2+52j + ; sub_173A2+1FEj ... + mov di, 1 + jmp short loc_176A8 +; --------------------------------------------------------------------------- + +loc_1762D: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D3Ao + call sub_139DA + mov [bp+var_2], ax + mov di, 1 + jmp short loc_176A8 +; --------------------------------------------------------------------------- + +loc_17638: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D3Co + call sub_139DA + mov [bp+var_2], ax + mov al, byte_23E47 + mov ah, 0 + cmp ax, si + jg short loc_176A8 + jmp short loc_17628 +; --------------------------------------------------------------------------- + +loc_17649: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D3Eo + call sub_139DA + mov [bp+var_2], ax + push 1Fh + call sub_139EC + add al, [bp+var_9] + mov [bp+var_9], al + mov al, byte_23E47 + mov ah, 0 + cmp ax, si + jg short loc_176A8 + jmp short loc_17628 +; --------------------------------------------------------------------------- + +loc_17665: ; CODE XREF: sub_173A2+52j + ; DATA XREF: seg004:3D40o + push 1Fh + call sub_139EC + mov [bp+var_2], ax + sub [bp+var_2], 10h + mov al, byte_23E47 + mov ah, 0 + cmp ax, si + jg short loc_1767D + +loc_1767A: ; CODE XREF: sub_173A2+52j + ; sub_173A2+249j ... + mov di, 1 + +loc_1767D: ; CODE XREF: sub_173A2+4Cj + ; sub_173A2+52j ... + push word_23E3E + push word_23E40 + push [bp+var_4] + push [bp+var_6] + mov al, byte ptr [bp+var_2] + add al, byte ptr word_23E42+1 + push ax + push ds + push offset word_23E48 + push ds + push offset word_23E4A + mov al, [bp+var_9] + mov ah, 0 + push ax + call sub_E9C0 + jmp short loc_176C3 +; --------------------------------------------------------------------------- + +loc_176A8: ; CODE XREF: sub_173A2+88j + ; sub_173A2+C8j ... + push ds + push offset word_23E48 + push ds + push offset word_23E4A + mov al, byte ptr [bp+var_2] + add al, byte ptr word_23E42+1 + push ax + mov al, [bp+var_9] + mov ah, 0 + push ax + call sub_E97A + +loc_176C3: ; CODE XREF: sub_173A2+304j + mov al, byte ptr [bp+var_2] + add al, byte ptr word_23E42+1 + mov byte_26352, al + mov ax, di + pop di + pop si + leave + retn 2 +sub_173A2 endp + +; --------------------------------------------------------------------------- + db 0 +off_176D6 dw offset loc_17628 ; DATA XREF: sub_173A2+52r + dw offset loc_1767A + dw offset loc_17401 + dw offset loc_173FD + dw offset loc_173F9 + dw offset loc_17401 + dw offset loc_173FD + dw offset loc_173F9 + dw offset loc_17435 + dw offset loc_17431 + dw offset loc_1742D + dw offset loc_17435 + dw offset loc_17431 + dw offset loc_1742D + dw offset loc_17475 + dw offset loc_17471 + dw offset loc_1746D + dw offset loc_17475 + dw offset loc_17471 + dw offset loc_1746D + dw offset loc_174D5 + dw offset loc_174D1 + dw offset loc_174CD + dw offset loc_174D5 + dw offset loc_174D1 + dw offset loc_174CD + dw offset loc_1762D + dw offset loc_17638 + dw offset loc_17649 + dw offset loc_17665 + dw offset loc_1767D + dw offset loc_1767D + dw offset loc_17550 + dw offset loc_1755B + dw offset loc_1760D + dw offset loc_17545 + dw offset loc_1753A + dw offset loc_17533 + dw offset loc_17581 + dw offset loc_175CB + dw offset loc_175C0 + dw offset loc_175B5 + dw offset loc_175AA + dw offset loc_175A3 + dw offset loc_175EE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17730 proc far ; CODE XREF: sub_F5FE+54P sub_F5FE+66P ... + +var_E = byte ptr -0Eh +var_D = byte ptr -0Dh +var_C = byte ptr -0Ch +var_B = byte ptr -0Bh +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov [bp+var_4], 0 + mov [bp+var_C], 0 + cmp word_23E40, 0FF80h + jle loc_1795E + cmp word_23E40, 1780h + jge loc_1795E + cmp word_23E3E, 0FF80h + jle loc_1795E + cmp word_23E3E, 1280h + jge loc_1795E + mov si, 68F2h + mov al, byte_23E4E + mov ah, 0 + sub ax, 2 + mov bx, ax + cmp bx, 6 + ja short loc_177A9 + add bx, bx + jmp cs:off_17963[bx] + +loc_17780: ; DATA XREF: seg004:3F9Bo + mov [bp+var_C], 1 + mov [bp+var_D], 1 + jmp short loc_177AF +; --------------------------------------------------------------------------- + +loc_1778A: ; CODE XREF: sub_17730+4Bj + ; DATA XREF: seg004:3F9Do + mov [bp+var_C], 1 + +loc_1778E: ; CODE XREF: sub_17730+4Bj + ; DATA XREF: seg004:off_17963o + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 8 + mov word_23E4C, ax + +loc_17799: ; CODE XREF: sub_17730+4Bj + ; DATA XREF: seg004:3F99o + mov [bp+var_D], 2 + jmp short loc_177AF +; --------------------------------------------------------------------------- + +loc_1779F: ; CODE XREF: sub_17730+4Bj + ; DATA XREF: seg004:3F9Fo + mov [bp+var_C], 1 + mov [bp+var_D], 2 + jmp short loc_177AF +; --------------------------------------------------------------------------- + +loc_177A9: ; CODE XREF: sub_17730+47j + ; sub_17730+4Bj + ; DATA XREF: ... + mov al, byte_23E4E + mov [bp+var_D], al + +loc_177AF: ; CODE XREF: sub_17730+58j + ; sub_17730+6Dj ... + mov al, byte ptr word_23E42 + mov [bp+var_E], al + mov al, byte_23E3C + add byte ptr word_23E42, al + cmp byte ptr word_23E42, 80h ; '€' + jbe short loc_177CA + mov byte ptr word_23E42, 80h ; '€' + jmp short loc_177D6 +; --------------------------------------------------------------------------- + +loc_177CA: ; CODE XREF: sub_17730+91j + cmp byte ptr word_23E42, 10h + jnb short loc_177D6 + mov byte ptr word_23E42, 10h + +loc_177D6: ; CODE XREF: sub_17730+98j + ; sub_17730+9Fj + mov [bp+var_2], 0 + jmp loc_1794F +; --------------------------------------------------------------------------- + +loc_177DE: ; CODE XREF: sub_17730+224j + cmp byte ptr [si], 0 + jnz loc_17949 + mov al, [bp+var_D] + mov [si], al + mov byte ptr [si+1], 0 + mov ax, word_23E3E + mov [si+2], ax + mov ax, word_23E40 + mov [si+4], ax + mov al, byte ptr word_23E44+1 + mov [si+11h], al + mov al, byte ptr word_23E44 + mov [si+10h], al + mov ax, word_23E4C + mov [si+12h], ax + mov al, byte_23E50 + mov [si+16h], al + mov al, byte_23E4F + mov [si+15h], al + mov al, byte_23E51 + mov [si+17h], al + cmp byte_23E51, 0 + jz short loc_1786C + mov al, byte_26353 + mov ah, 0 + imul ax, 18h + add ax, 8972h + mov [si+18h], ax + inc byte_26353 + cmp byte_26353, 30h ; '0' + jb short loc_17843 + mov byte_26353, 0 + +loc_17843: ; CODE XREF: sub_17730+10Cj + xor di, di + jmp short loc_17867 +; --------------------------------------------------------------------------- + +loc_17847: ; CODE XREF: sub_17730+13Aj + mov ax, di + add ax, ax + add ax, [si+18h] + mov dx, word_23E3E + mov bx, ax + mov [bx], dx + mov ax, di + add ax, ax + add ax, [si+18h] + mov dx, word_23E40 + mov bx, ax + mov [bx+0Ch], dx + inc di + +loc_17867: ; CODE XREF: sub_17730+115j + cmp di, 6 + jl short loc_17847 + +loc_1786C: ; CODE XREF: sub_17730+F3j + cmp [bp+var_C], 0 + jz short loc_1787A + mov al, byte_23E46 + mov [si+14h], al + jmp short loc_1787E +; --------------------------------------------------------------------------- + +loc_1787A: ; CODE XREF: sub_17730+140j + mov byte ptr [si+14h], 0 + +loc_1787E: ; CODE XREF: sub_17730+148j + cmp [bp+var_D], 3 + jnz loc_17914 + push word_23E3E + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_8], ax + push 1200h + call sub_13A06 + mov [bp+var_6], ax + mov [si+6], ax + push ax + mov al, byte ptr word_23E44 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + mov [bp+var_6], ax + mov al, byte_23AF8 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + add ax, 46h ; 'F' + mov [bp+var_A], ax + mov ax, [bp+var_8] + shl ax, 4 + push ax + push word ptr [si+4] + mov ax, [bp+var_6] + shl ax, 4 + push ax + push 0FFh + call sub_139EC + push ax + push 0 + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push [bp+var_A] + call sub_E9C0 + push [bp+var_6] + mov al, byte ptr word_23E44 + mov ah, 0 + push ax + call sub_A2F2 + mov [si+8], ax + mov al, byte ptr word_23E42+1 + mov [si+0Fh], al + mov al, byte ptr word_23E42 + mov [si+0Eh], al + jmp short loc_17958 +; --------------------------------------------------------------------------- + +loc_17914: ; CODE XREF: sub_17730+152j + push [bp+var_4] + call sub_173A2 + mov [bp+var_B], al + mov ax, word_23E48 + mov [si+0Ah], ax + mov ax, word_23E4A + mov [si+0Ch], ax + mov al, byte_26352 + mov [si+0Fh], al + mov al, byte ptr word_23E42 + mov [si+0Eh], al + cmp [bp+var_D], 4 + jnz short loc_17940 + mov word ptr [si+12h], 1942h + +loc_17940: ; CODE XREF: sub_17730+209j + cmp [bp+var_B], 0 + jnz short loc_17958 + inc [bp+var_4] + +loc_17949: ; CODE XREF: sub_17730+B1j + inc [bp+var_2] + add si, 1Ah + +loc_1794F: ; CODE XREF: sub_17730+ABj + cmp [bp+var_2], 140h + jl loc_177DE + +loc_17958: ; CODE XREF: sub_17730+1E2j + ; sub_17730+214j + mov al, [bp+var_E] + mov byte ptr word_23E42, al + +loc_1795E: ; CODE XREF: sub_17730+16j + ; sub_17730+20j ... + pop di + pop si + leave + retf +sub_17730 endp + +; --------------------------------------------------------------------------- + db 0 +off_17963 dw offset loc_1778E ; DATA XREF: sub_17730+4Br + dw offset loc_177A9 + dw offset loc_177A9 + dw offset loc_17799 + dw offset loc_17780 + dw offset loc_1778A + dw offset loc_1779F + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17971 proc far ; CODE XREF: sub_1615D+24Bp + ; sub_1615D+2CBp + push bp + mov bp, sp + mov byte_23E4E, 3 + push cs + call near ptr sub_17730 + pop bp + retf +sub_17971 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1797F proc far ; CODE XREF: sub_9778+9P + push bp + mov bp, sp + mov byte ptr word_23E42+1, 0 + mov byte_23E47, 0 + mov byte_23E50, 1 + mov byte_23E4F, 1 + mov byte_23E51, 0 + pop bp + retf +sub_1797F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1799D proc near ; CODE XREF: sub_17A1B+AAp + ; sub_17A1B+114p + push bp + mov bp, sp + push si + add bx, [si+18h] + mov dx, [bx+8] + mov [bx+0Ah], dx + cmp dx, 0FF80h + jle short loc_179D1 + cmp dx, word_26354 + jge short loc_179D1 + mov dx, [bx+6] + mov [bx+8], dx + mov dx, [bx+4] + mov [bx+6], dx + mov dx, [bx+2] + mov [bx+4], dx + mov dx, [bx] + mov [bx+2], dx + mov [bx], cx + clc + jmp short loc_179D2 +; --------------------------------------------------------------------------- + +loc_179D1: ; CODE XREF: sub_1799D+10j + ; sub_1799D+16j + stc + +loc_179D2: ; CODE XREF: sub_1799D+32j + pop si + pop bp + retn +sub_1799D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_179D5 proc near ; CODE XREF: sub_17A1B+F1p + ; sub_17A1B+185p + push bp + mov bp, sp + push si + mov al, [si] + mov byte_23E4E, al + mov ax, [si+2] + mov word_23E3E, ax + mov ax, [si+4] + mov word_23E40, ax + mov ax, [si+0Eh] + mov word_23E42, ax + mov ax, [si+10h] + mov word_23E44, ax + push cs + call near ptr sub_17730 + pop si + pop bp + retn +sub_179D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_179FD proc near ; CODE XREF: sub_17A1B+134p + push bp + mov bp, sp + push si + push di + mov di, si + mov al, [di+14h] + mov ah, 0 + cmp ax, 80h ; '€' + jnz short loc_17A17 + cmp word ptr [di+0Ch], 50h ; 'P' + jge short loc_17A17 + inc word ptr [di+0Ch] + +loc_17A17: ; CODE XREF: sub_179FD+Fj + ; sub_179FD+15j + pop di + pop si + pop bp + retn +sub_179FD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17A1B proc far ; CODE XREF: sub_9778+64P + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov [bp+var_1], 0 + mov word_220F4, 1 + mov byte_2203A, 1 + mov di, 141h + mov ax, 68F2h + add ax, 0FFE6h + mov si, ax + +loc_17A3D: ; CODE XREF: sub_17A1B+31j + ; sub_17A1B+36j ... + add si, 1Ah + dec di + mov ax, di + or ax, ax + jz loc_17BCD + cmp byte ptr [si], 0 + jz short loc_17A3D + cmp byte ptr [si], 5 + jnb short loc_17A3D + inc [bp+var_1] + inc byte ptr [si+1] + cmp byte ptr [si], 4 + jnz short loc_17A7A + mov al, [si+1] + and al, 3 + jnz short loc_17A3D + mov ax, [si+12h] + add ax, 4 + cmp ax, 194Eh + jl short loc_17A75 + mov byte ptr [si], 1 + jmp short loc_17A3D +; --------------------------------------------------------------------------- + +loc_17A75: ; CODE XREF: sub_17A1B+53j + mov [si+12h], ax + jmp short loc_17A3D +; --------------------------------------------------------------------------- + +loc_17A7A: ; CODE XREF: sub_17A1B+41j + mov ax, [si+2] + mov cx, ax + add ax, [si+0Ah] + cmp byte ptr [si], 3 + jz short loc_17ADC + mov bh, 0 + mov bl, [si+10h] + add bx, 6580h + cmp byte ptr [bx], 0 + jnz short loc_17AD6 + mov bh, 0 + mov bl, [si+10h] + add bx, 658Bh + cmp byte ptr [bx], 0 + jnz short loc_17AD6 + cmp byte ptr [si+17h], 0 + jz short loc_17ACC + cmp ax, 0FF80h + jle short loc_17AB5 + cmp ax, 1280h + jge short loc_17ABA + jmp short loc_17ABD +; --------------------------------------------------------------------------- + +loc_17AB5: ; CODE XREF: sub_17A1B+91j + mov ax, 0FF80h + jmp short loc_17ABD +; --------------------------------------------------------------------------- + +loc_17ABA: ; CODE XREF: sub_17A1B+96j + mov ax, 1280h + +loc_17ABD: ; CODE XREF: sub_17A1B+98j + ; sub_17A1B+9Dj + mov word_26354, 1280h + xor bx, bx + call sub_1799D + jb short loc_17AD6 + jmp short loc_17AEF +; --------------------------------------------------------------------------- + +loc_17ACC: ; CODE XREF: sub_17A1B+8Cj + cmp ax, 0FF80h + jle short loc_17AD6 + cmp ax, 1280h + jl short loc_17AEF + +loc_17AD6: ; CODE XREF: sub_17A1B+78j + ; sub_17A1B+86j ... + mov byte ptr [si], 0 + jmp loc_17A3D +; --------------------------------------------------------------------------- + +loc_17ADC: ; CODE XREF: sub_17A1B+6Aj + mov bl, [si+10h] + or bl, bl + jnz short loc_17AEA + cmp ax, [si+8] + jl short loc_17B15 + jmp short loc_17AF1 +; --------------------------------------------------------------------------- + +loc_17AEA: ; CODE XREF: sub_17A1B+C6j + cmp ax, [si+8] + jle short loc_17AF1 + +loc_17AEF: ; CODE XREF: sub_17A1B+AFj + ; sub_17A1B+B9j + jmp short loc_17B15 +; --------------------------------------------------------------------------- + +loc_17AF1: ; CODE XREF: sub_17A1B+CDj + ; sub_17A1B+D2j + mov byte ptr [si], 4 + xor byte ptr [si+10h], 1 + mov dx, [si+6] + mov [si+2], dx + mov word ptr [si+4], 20h ; ' ' + add byte ptr [si+0Eh], 8 + mov byte_23E47, 0 + call sub_179D5 + mov byte ptr [si], 0 + jmp loc_17BCA +; --------------------------------------------------------------------------- + +loc_17B15: ; CODE XREF: sub_17A1B+CBj + ; sub_17A1B:loc_17AEFj + mov [si+2], ax + mov ax, [si+4] + mov cx, ax + add ax, [si+0Ch] + cmp byte ptr [si+17h], 0 + jz short loc_17B36 + mov word_26354, 1780h + mov bx, 0Ch + call sub_1799D + jb short loc_17B40 + jmp short loc_17B46 +; --------------------------------------------------------------------------- + +loc_17B36: ; CODE XREF: sub_17A1B+109j + cmp ax, 0FF80h + jle short loc_17B40 + cmp ax, 1780h + jl short loc_17B46 + +loc_17B40: ; CODE XREF: sub_17A1B+117j + ; sub_17A1B+11Ej + mov byte ptr [si], 0 + jmp loc_17A3D +; --------------------------------------------------------------------------- + +loc_17B46: ; CODE XREF: sub_17A1B+119j + ; sub_17A1B+123j + mov [si+4], ax + cmp byte ptr [si+14h], 0 + jz short loc_17B52 + call sub_179FD + +loc_17B52: ; CODE XREF: sub_17A1B+132j + cmp byte ptr [si], 1 + jnz short loc_17BA9 + mov dx, [si+2] + sub dx, 60h ; '`' + sub ax, 60h ; '`' + mov word_20E2E, dx + mov word_20E30, ax + add dx, 0C0h ; 'À' + add ax, 0C0h ; 'À' + mov word_20E36, dx + mov word_20E38, ax + mov bl, [si+10h] + mov byte ptr word_20E3A, bl + push cs + call near ptr sub_1670D + or al, al + jz short loc_17BA9 + mov bh, 0 + mov bl, [si+10h] + xor bl, 1 + add bx, 2D54h + cmp byte ptr [bx], 0 + jnz short loc_17BA3 + mov byte ptr [si], 3 + mov byte ptr [si+11h], 1Dh + mov byte ptr [si+0Fh], 0 + call sub_179D5 + +loc_17BA3: ; CODE XREF: sub_17A1B+178j + mov byte ptr [si], 0 + jmp loc_17A3D +; --------------------------------------------------------------------------- + +loc_17BA9: ; CODE XREF: sub_17A1B+13Aj + ; sub_17A1B+167j + cmp byte ptr [si], 3 + jz short loc_17BCA + cmp byte ptr [si+15h], 0 + jz short loc_17BCA + mov ax, [si+2] + mov word_220EE, ax + mov ax, [si+4] + mov word_220F0, ax + mov al, [si+10h] + mov byte_220FA, al + push cs + call near ptr sub_13B42 + +loc_17BCA: ; CODE XREF: sub_17A1B+F7j + ; sub_17A1B+191j ... + jmp loc_17A3D +; --------------------------------------------------------------------------- + +loc_17BCD: ; CODE XREF: sub_17A1B+2Aj + pop di + pop si + leave + retf +sub_17A1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17BD1 proc far ; CODE XREF: sub_9778+19BP + +var_D = byte ptr -0Dh +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 + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + call sub_704 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov [bp+var_C], 68F2h + mov [bp+var_D], 0 + mov [bp+var_2], 0 + jmp loc_17CD9 +; --------------------------------------------------------------------------- + +loc_17C06: ; CODE XREF: sub_17BD1+10Dj + mov bx, [bp+var_C] + cmp byte ptr [bx], 2 + jnz loc_17CC6 + mov ax, [bx+12h] + mov [bp+var_8], ax + cmp byte ptr [bx+17h], 0 + jz short loc_17C7D + add [bp+var_8], 6 + mov [bp+var_A], 5 + jmp short loc_17C77 +; --------------------------------------------------------------------------- + +loc_17C27: ; CODE XREF: sub_17BD1+AAj + mov ax, [bp+var_A] + add ax, ax + mov bx, [bp+var_C] + add ax, [bx+18h] + mov bx, ax + push word ptr [bx] + mov bx, [bp+var_C] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF8h + mov [bp+var_4], ax + mov ax, [bp+var_A] + add ax, ax + mov bx, [bp+var_C] + add ax, [bx+18h] + mov bx, ax + mov ax, [bx+0Ch] + sar ax, 4 + add ax, 8 + mov [bp+var_6], ax + push [bp+var_4] + push ax + push [bp+var_8] + call sub_F1D2 + sub [bp+var_A], 2 + sub [bp+var_8], 2 + +loc_17C77: ; CODE XREF: sub_17BD1+54j + cmp [bp+var_A], 0 + jg short loc_17C27 + +loc_17C7D: ; CODE XREF: sub_17BD1+49j + mov bx, [bp+var_C] + push word ptr [bx+2] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF8h + mov [bp+var_4], ax + mov bx, [bp+var_C] + mov ax, [bx+4] + sar ax, 4 + add ax, 8 + mov [bp+var_6], ax + cmp byte ptr [bx+16h], 0 + jz short loc_17CB6 + mov al, [bx+1] + mov ah, 0 + and ax, 3 + add ax, ax + add [bp+var_8], ax + +loc_17CB6: ; CODE XREF: sub_17BD1+D6j + push [bp+var_4] + push [bp+var_6] + push [bp+var_8] + call sub_F1D2 + jmp short loc_17CD2 +; --------------------------------------------------------------------------- + +loc_17CC6: ; CODE XREF: sub_17BD1+3Bj + mov bx, [bp+var_C] + cmp byte ptr [bx], 4 + jnz short loc_17CD2 + mov [bp+var_D], 1 + +loc_17CD2: ; CODE XREF: sub_17BD1+F3j + ; sub_17BD1+FBj + inc [bp+var_2] + add [bp+var_C], 1Ah + +loc_17CD9: ; CODE XREF: sub_17BD1+32j + cmp [bp+var_2], 140h + jl loc_17C06 + cmp [bp+var_D], 0 + jz short loc_17D56 + mov dx, 1 + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov dx, 0Fh + mov ah, 4 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov [bp+var_C], 68F2h + mov [bp+var_2], 0 + jmp short loc_17D48 +; --------------------------------------------------------------------------- + +loc_17D0D: ; CODE XREF: sub_17BD1+17Cj + mov bx, [bp+var_C] + cmp byte ptr [bx], 4 + jnz short loc_17D41 + push word ptr [bx+2] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov [bp+var_4], ax + mov bx, [bp+var_C] + mov ax, [bx+4] + sar ax, 4 + mov [bp+var_6], ax + push [bp+var_4] + push ax + push word ptr [bx+12h] + call sub_F100 + +loc_17D41: ; CODE XREF: sub_17BD1+142j + inc [bp+var_2] + add [bp+var_C], 1Ah + +loc_17D48: ; CODE XREF: sub_17BD1+13Aj + cmp [bp+var_2], 140h + jl short loc_17D0D + mov dx, 0 + mov ah, 3 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + +loc_17D56: ; CODE XREF: sub_17BD1+115j + call sub_71A + push large 0C0000Fh + call sub_F5C + mov ax, 0A800h + mov es, ax + assume es:nothing + mov si, 68F2h + mov di, 0 + +loc_17D71: ; CODE XREF: sub_17BD1+1D3j + test byte ptr [si], 1 + jz short loc_17D9C + push word ptr [si+2] + mov al, [si+10h] + xor ah, ah + push ax + call sub_A2D0 + add ax, 0FFFCh + mov bx, [si+4] + sar bx, 5 + add bx, 6 + xor dx, dx + cmp byte ptr [si], 1 + jz short loc_17D99 + mov dh, 1 + +loc_17D99: ; CODE XREF: sub_17BD1+1C4j + call sub_16FF0 + +loc_17D9C: ; CODE XREF: sub_17BD1+1A3j + add si, 1Ah + inc di + cmp di, 140h + jb short loc_17D71 + xor ax, ax + out 7Ch, ax + pop di + pop si + leave + retf +sub_17BD1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17DAE proc far ; CODE XREF: sub_1654E+5Ap + ; sub_181C3+17Fp + +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov bx, word_2203C + mov di, [bx+2] + mov ax, [bx+4] + mov [bp+var_6], ax + mov si, 4656h + mov al, 1 + sub al, [bx+8] + mov [bp+var_7], al + mov [bp+var_4], 0 + jmp loc_17EEB +; --------------------------------------------------------------------------- + +loc_17DD4: ; CODE XREF: sub_17DAE+141j + cmp byte ptr [si], 0 + jnz loc_17EE5 + mov byte ptr [si], 2 + mov [si+2], di + mov ax, [bp+var_6] + mov [si+4], ax + mov bx, word_2203C + mov al, [bx+8] + mov [si+8], al + push 1Fh + call sub_139EC + mov dl, byte_23AF8 + mov dh, 0 + push ax + mov ax, dx + cwd + sub ax, dx + sar ax, 1 + pop dx + add dl, al + add dl, 14h + mov [bp+var_8], dl + cmp [bp+var_8], 80h ; '€' + jbe short loc_17E17 + mov [bp+var_8], 80h ; '€' + +loc_17E17: ; CODE XREF: sub_17DAE+63j + mov al, [bp+var_8] + mov [si+1Bh], al + mov al, byte_1E14C + add al, 2 + mov [si+7], al + mov al, byte_1E14C + add al, 2 + mov [si+6], al + mov byte ptr [si+9], 30h ; '0' + mov byte ptr [si+1Eh], 0 + cmp byte_1E14C, 0 + jnz short loc_17E40 + mov al, 0 + jmp short loc_17E45 +; --------------------------------------------------------------------------- + +loc_17E40: ; CODE XREF: sub_17DAE+8Cj + mov al, byte_26358 + inc al + +loc_17E45: ; CODE XREF: sub_17DAE+90j + mov [si+20h], al + push di + mov al, [bp+var_7] + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + mov [bp+var_2], ax + mov ax, word_23AF6 + and ax, 1FFh + cmp ax, 100h + jnb short loc_17E6F + push 1200h + call sub_13A06 + jmp short loc_17E83 +; --------------------------------------------------------------------------- + +loc_17E6F: ; CODE XREF: sub_17DAE+B7j + push 1FFh + call sub_139EC + mov dl, [bp+var_7] + mov dh, 0 + shl dx, 7 + mov bx, dx + add ax, [bx+65A6h] + +loc_17E83: ; CODE XREF: sub_17DAE+BFj + mov di, ax + mov [si+14h], di + push di + mov al, [bp+var_7] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov al, byte_23AF8 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + add al, 46h ; 'F' + mov [bp+var_8], al + mov ax, [bp+var_2] + shl ax, 4 + push ax + push [bp+var_6] + mov ax, di + shl ax, 4 + push ax + push 0 + push 0 + push ds + lea ax, [si+10h] + push ax + push ds + lea ax, [si+12h] + push ax + mov al, [bp+var_8] + mov ah, 0 + push ax + call sub_E9C0 + push di + mov al, [bp+var_7] + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2F2 + mov [si+16h], ax + jmp short loc_17EF3 +; --------------------------------------------------------------------------- + +loc_17EE5: ; CODE XREF: sub_17DAE+29j + inc [bp+var_4] + add si, 30h ; '0' + +loc_17EEB: ; CODE XREF: sub_17DAE+23j + cmp [bp+var_4], 18h + jl loc_17DD4 + +loc_17EF3: ; CODE XREF: sub_17DAE+135j + pop di + pop si + leave + retf +sub_17DAE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17EF7 proc near ; CODE XREF: sub_1837C+2Fp + +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2203C + mov al, [si+1] + and al, 7 + mov [bp+var_6], al + cmp byte ptr [si], 1 + jnz short loc_17F35 + mov al, [si+6] + mov ah, 0 + shl ax, 3 + add ax, 18F0h + mov di, ax + cmp [bp+var_6], 3 + ja short loc_17F24 + add di, 4 + +loc_17F24: ; CODE XREF: sub_17EF7+28j + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov [bp+var_5], 10h + jmp short loc_17F5A +; --------------------------------------------------------------------------- + +loc_17F35: ; CODE XREF: sub_17EF7+15j + mov al, [si+6] + mov ah, 0 + shl ax, 2 + add ax, 1DF8h + mov di, ax + cmp [bp+var_6], 3 + ja short loc_17F4B + add di, 2 + +loc_17F4B: ; CODE XREF: sub_17EF7+4Fj + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov [bp+var_5], 8 + +loc_17F5A: ; CODE XREF: sub_17EF7+3Cj + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + push word ptr [si+2] + mov al, [si+8] + mov ah, 0 + push ax + call sub_A2D0 + mov dl, [bp+var_5] + mov dh, 0 + sub ax, dx + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov dl, [bp+var_5] + mov dh, 0 + sub ax, dx + mov [bp+var_4], ax + push [bp+var_2] + push ax + push di + call sub_F100 + pop di + pop si + leave + retn +sub_17EF7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17F9F proc near ; CODE XREF: sub_18059+33p + push bp + mov bp, sp + mov bx, word_2203C + cmp byte ptr [bx+1], 0Eh + jnz short loc_17FB1 + mov byte ptr [bx], 0Ah + pop bp + retn +; --------------------------------------------------------------------------- + +loc_17FB1: ; CODE XREF: sub_17F9F+Bj + mov bx, word_2203C + cmp byte ptr [bx+1], 20h ; ' ' + jnz short loc_17FC0 + mov byte ptr [bx], 9 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_17FC0: ; CODE XREF: sub_17F9F+1Aj + mov bx, word_2203C + cmp byte ptr [bx+1], 24h ; '$' + jb short loc_17FCD + mov byte ptr [bx], 0 + +loc_17FCD: ; CODE XREF: sub_17F9F+29j + pop bp + retn +sub_17F9F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17FCF proc near ; CODE XREF: sub_1837C:loc_183B0p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 6, 0 + push si + mov bx, word_2203C + cmp byte ptr [bx+1], 0Ch + jnb short loc_17FE4 + mov si, word_1DDA6 + jmp short loc_18019 +; --------------------------------------------------------------------------- + +loc_17FE4: ; CODE XREF: sub_17FCF+Dj + mov bx, word_2203C + cmp byte ptr [bx+1], 20h ; ' ' + jnb short loc_1800B + mov al, [bx+1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov [bp+var_1], al + mov ah, 0 + and ax, 1 + add ax, ax + mov bx, ax + mov si, [bx+848h] + jmp short loc_18019 +; --------------------------------------------------------------------------- + +loc_1800B: ; CODE XREF: sub_17FCF+1Dj + mov bx, word_2203C + cmp byte ptr [bx+1], 24h ; '$' + jnb short loc_18019 + mov si, word_1DDAC + +loc_18019: ; CODE XREF: sub_17FCF+13j + ; sub_17FCF+3Aj ... + mov byte_1F2EA, 4 + mov word_1F2E8, 20h ; ' ' + mov bx, word_2203C + push word ptr [bx+2] + mov al, [bx+8] + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE0h + mov [bp+var_4], ax + mov bx, word_2203C + mov ax, [bx+4] + sar ax, 4 + add ax, 0FFF8h + mov [bp+var_6], ax + push [bp+var_4] + push ax + push si + call sub_F100 + pop si + leave + retn +sub_17FCF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18059 proc far ; CODE XREF: sub_9778+6EP + push bp + mov bp, sp + push si + push di + mov word_220F2, 8 + mov word_220F4, 8 + mov word_2203C, 4656h + xor di, di + jmp loc_18162 +; --------------------------------------------------------------------------- + +loc_18075: ; CODE XREF: sub_18059+10Cj + mov bx, word_2203C + cmp byte ptr [bx], 0 + jz loc_1815C + mov bx, word_2203C + inc byte ptr [bx+1] + cmp byte ptr [bx], 9 + jb short loc_18092 + call sub_17F9F + jmp loc_1815C +; --------------------------------------------------------------------------- + +loc_18092: ; CODE XREF: sub_18059+31j + mov bx, word_2203C + cmp byte ptr [bx], 1 + jnz short loc_18100 + mov si, [bx+2] + add si, [bx+10h] + mov al, [bx+8] + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jnz short loc_180BB + cmp si, 0FF00h + jle short loc_180BB + cmp si, 1300h + jl short loc_180C5 + +loc_180BB: ; CODE XREF: sub_18059+54j + ; sub_18059+5Aj ... + mov bx, word_2203C + mov byte ptr [bx], 0 + jmp loc_1815C +; --------------------------------------------------------------------------- + +loc_180C5: ; CODE XREF: sub_18059+60j + mov bx, word_2203C + mov [bx+2], si + mov si, [bx+4] + add si, [bx+12h] + cmp si, 1800h + jge short loc_180BB + mov bx, word_2203C + mov [bx+4], si + cmp byte ptr [bx], 1 + jnz short loc_1815C + mov ax, [bx+2] + mov word_220EE, ax + mov ax, [bx+4] + add ax, 80h ; '€' + mov word_220F0, ax + mov al, [bx+8] + mov byte_220FA, al + nop + push cs + call near ptr sub_13A6E + jmp short loc_1815C +; --------------------------------------------------------------------------- + +loc_18100: ; CODE XREF: sub_18059+40j + mov bx, word_2203C + cmp byte ptr [bx], 2 + jnz short loc_1815C + mov si, [bx+2] + add si, [bx+10h] + cmp byte ptr [bx+8], 0 + jnz short loc_18143 + cmp [bx+16h], si + jg short loc_1814C + +loc_1811A: ; CODE XREF: sub_18059+F1j + mov bx, word_2203C + mov ax, [bx+14h] + mov [bx+2], ax + mov word ptr [bx+4], 0 + mov word ptr [bx+10h], 0 + mov al, [bx+1Bh] + mov ah, 0 + mov [bx+12h], ax + mov byte ptr [bx], 1 + mov al, 1 + sub al, [bx+8] + mov [bx+8], al + jmp short loc_1815C +; --------------------------------------------------------------------------- + +loc_18143: ; CODE XREF: sub_18059+BAj + mov bx, word_2203C + cmp [bx+16h], si + jge short loc_1811A + +loc_1814C: ; CODE XREF: sub_18059+BFj + mov bx, word_2203C + mov [bx+2], si + mov si, [bx+4] + add si, [bx+12h] + mov [bx+4], si + +loc_1815C: ; CODE XREF: sub_18059+23j + ; sub_18059+36j ... + inc di + add word_2203C, 30h ; '0' + +loc_18162: ; CODE XREF: sub_18059+19j + cmp di, 18h + jl loc_18075 + pop di + pop si + pop bp + retf +sub_18059 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1816D proc near ; CODE XREF: sub_1615D+31Ap + ; sub_181C3+169p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov al, byte ptr [bp+arg_2] + mov ah, 0 + shl ax, 4 + mov bx, ax + mov al, [bx+si+4B3Eh] + mov ah, 0 + mov dl, byte_23AF8 + mov dh, 0 + mov bx, 20h ; ' ' + push ax + mov ax, dx + cwd + idiv bx + mov dx, 6 + sub dx, ax + pop ax + cmp ax, dx + jl short loc_181BE + mov al, byte ptr [bp+arg_2] + mov ah, 0 + shl ax, 4 + mov bx, ax + mov byte ptr [bx+si+4B3Eh], 0 + mov bx, word_2203C + push word ptr [bx+2] + push word ptr [bx+4] + push [bp+arg_2] + call sub_1A17E + +loc_181BE: ; CODE XREF: sub_1816D+2Ej + pop si + pop bp + retn 4 +sub_1816D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_181C3 proc near ; CODE XREF: sub_1837C+4p + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov word_20E32, 0C0h ; 'À' + mov word_20E34, 0A0h ; ' ' + mov word_2203C, 4AA6h + mov byte_1E14C, 1 + mov si, 3Fh ; '?' + jmp loc_1836D +; --------------------------------------------------------------------------- + +loc_181E5: ; CODE XREF: sub_181C3+1ADj + mov bx, word_2203C + cmp byte ptr [bx], 1 + jnz loc_18367 + mov bx, word_2203C + mov al, [bx+6] + mov byte_2203A, al + mov al, [bx+8] + mov byte ptr [bp+var_2], al + mov ax, [bx+2] + mov word_20E2E, ax + mov ax, [bx+4] + add ax, 30h ; '0' + mov word_20E30, ax + mov al, byte ptr [bp+var_2] + mov byte ptr word_20E3A, al + nop + push cs + call near ptr sub_158F5 + or al, al + jz loc_18367 + mov bx, word_2203C + cmp byte ptr [bx+7], 0 + jz short loc_1823A + cmp byte_2203B, 0 + jnz short loc_1823A + cmp byte_26356, 0 + jz loc_18353 + +loc_1823A: ; CODE XREF: sub_181C3+65j + ; sub_181C3+6Cj + mov bx, word_2203C + mov al, [bx+20h] + mov byte_26358, al + cmp byte_2203B, 0 + jz loc_182D6 + mov byte ptr [bx], 9 + mov al, byte ptr word_220C2 + mov byte ptr [bp+var_2+1], al + mov [bx+1Ch], al + cmp byte_2203A, 3 + jnz short loc_18275 + mov al, byte ptr [bp+var_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_2+1] + mov dh, 0 + add ax, dx + mov bx, ax + inc byte ptr [bx+4B3Eh] + +loc_18275: ; CODE XREF: sub_181C3+9Bj + mov al, byte ptr [bp+var_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_2+1] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B3Eh] + mov ah, 0 + mov dl, byte_23AF8 + mov dh, 0 + mov bx, 20h ; ' ' + push ax + mov ax, dx + cwd + idiv bx + mov dx, 7 + sub dx, ax + pop ax + cmp ax, dx + jl short loc_182CD + mov al, byte ptr [bp+var_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_2+1] + mov dh, 0 + add ax, dx + mov bx, ax + mov byte ptr [bx+4B3Eh], 0 + mov bx, word_2203C + push word ptr [bx+2] + push word ptr [bx+4] + push [bp+var_2] + call sub_1A17E + +loc_182CD: ; CODE XREF: sub_181C3+E0j + cmp byte_26358, 4 + jnb short loc_18345 + jmp short loc_18341 +; --------------------------------------------------------------------------- + +loc_182D6: ; CODE XREF: sub_181C3+86j + mov al, byte ptr [bp+var_2] + mov ah, 0 + shl ax, 4 + mov dl, byte ptr [bp+var_2] + mov dh, 0 + mov bx, dx + mov dl, [bx+856h] + mov dh, 0 + add ax, dx + mov bx, ax + mov al, [bx+4B3Eh] + add al, byte_2203A + add al, 0FFh + mov dl, byte ptr [bp+var_2] + mov dh, 0 + shl dx, 4 + mov bl, byte ptr [bp+var_2] + mov bh, 0 + mov bl, [bx+856h] + mov bh, 0 + add dx, bx + mov bx, dx + mov [bx+4B3Eh], al + mov bx, word_2203C + mov byte ptr [bx], 0 + push [bp+var_2] + mov al, byte ptr [bp+var_2] + mov ah, 0 + mov bx, ax + mov al, [bx+856h] + mov ah, 0 + push ax + call sub_1816D + push [bp+var_2] + push 10h + call sub_15EA4 + push 32h ; '2' + push [bp+var_2] + call sub_D5B0 + +loc_18341: ; CODE XREF: sub_181C3+111j + push cs + call near ptr sub_17DAE + +loc_18345: ; CODE XREF: sub_181C3+10Fj + push [bp+var_2] + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + push ax + call sub_1816D + jmp short loc_1835A +; --------------------------------------------------------------------------- + +loc_18353: ; CODE XREF: sub_181C3+73j + mov bx, word_2203C + dec byte ptr [bx+7] + +loc_1835A: ; CODE XREF: sub_181C3+18Ej + mov byte_26357, 1 + mov bx, word_2203C + mov byte ptr [bx+1], 0 + +loc_18367: ; CODE XREF: sub_181C3+29j + ; sub_181C3+59j + dec si + sub word_2203C, 30h ; '0' + +loc_1836D: ; CODE XREF: sub_181C3+1Fj + cmp si, 28h ; '(' + jge loc_181E5 + mov byte_1E14C, 0 + pop si + leave + retn +sub_181C3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1837C proc far ; CODE XREF: sub_9778+139P + push bp + mov bp, sp + push si + call sub_181C3 + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov word_2203C, 4656h + xor si, si + jmp short loc_183B9 +; --------------------------------------------------------------------------- + +loc_18399: ; CODE XREF: sub_1837C+40j + mov bx, word_2203C + cmp byte ptr [bx], 0 + jz short loc_183B3 + mov bx, word_2203C + cmp byte ptr [bx], 9 + jnb short loc_183B0 + call sub_17EF7 + jmp short loc_183B3 +; --------------------------------------------------------------------------- + +loc_183B0: ; CODE XREF: sub_1837C+2Dj + call sub_17FCF + +loc_183B3: ; CODE XREF: sub_1837C+24j + ; sub_1837C+32j + inc si + add word_2203C, 30h ; '0' + +loc_183B9: ; CODE XREF: sub_1837C+1Bj + cmp si, 18h + jl short loc_18399 + pop si + pop bp + retf +sub_1837C endp + +seg004 ends + +; =========================================================================== + +; Segment type: Pure code +seg005 segment byte public 'CODE' use16 + assume cs:seg005 + ;org 1 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_183C1 proc far ; DATA XREF: sub_B04C+A9o + ; sub_B04C+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_185A8 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 40h ; '@' + jnb short loc_18455 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_1840A + add bx, 28h ; '(' + +loc_1840A: ; CODE XREF: sub_183C1+44j + call sub_B39E + call sub_F86 + mov al, [bp+var_1] + shl al, 2 + mov dl, 0FFh + sub dl, al + mov [bp+var_2], dl + mov al, [bp+var_2] + mov ah, 0 + push ax + push word_1FE88 + call sub_A3D2 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_185A3 + push large 9000B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE0C + jmp loc_185A3 +; --------------------------------------------------------------------------- + +loc_18455: ; CODE XREF: sub_183C1+2Cj + cmp [bp+var_1], 90h ; '' + jnb loc_1853F + mov byte_23B01, 1 + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_1848B + mov word_1D834, 3Ch ; '<' + mov byte_23B01, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_184A5 +; --------------------------------------------------------------------------- + +loc_1848B: ; CODE XREF: sub_183C1+ACj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + mov word_1D834, 78h ; 'x' + mov byte_23B01, 1 + +loc_184A5: ; CODE XREF: sub_183C1+C8j + mov al, [bp+var_1] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_18518 + push 0Ah + call sub_EC3A + mov al, [bp+var_1] + mov ah, 0 + add ax, 0FFC0h + add ax, ax + shl ax, 4 + mov si, ax + mov ax, 900h + sub ax, si + push ax + push 0B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE5B + lea ax, [si+900h] + push ax + push 0B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE5B + push 900h + mov ax, 0B80h + sub ax, si + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE5B + push 900h + lea ax, [si+0B80h] + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE5B + +loc_18518: ; CODE XREF: sub_183C1+F1j + mov si, 10h + cmp byte ptr word_1FE88, 0 + jz short loc_18526 + add si, 140h + +loc_18526: ; CODE XREF: sub_183C1+15Fj + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + jmp short loc_185A3 +; --------------------------------------------------------------------------- + +loc_1853F: ; CODE XREF: sub_183C1+98j + mov word_1D834, 64h ; 'd' + mov byte_23B01, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_1], dl + mov al, [bp+var_1] + add al, al + mov [bp+var_2], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_1] + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_185A3: ; CODE XREF: sub_183C1+7Cj + ; sub_183C1+91j ... + call sub_704 + +loc_185A8: ; CODE XREF: sub_183C1+11j + pop si + leave + retf +sub_183C1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_185AB proc far ; DATA XREF: sub_A9EC+9Do + ; sub_A9EC+148o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_186C0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 1 + jnz short loc_1860D + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 2 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+307Eh], 0 + xor si, si + jmp short loc_18601 +; --------------------------------------------------------------------------- + +loc_185E9: ; CODE XREF: sub_185AB+59j + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 6 + mov dx, si + shl dx, 3 + add ax, dx + mov bx, ax + mov word ptr [bx+25DEh], 4E1Fh + inc si + +loc_18601: ; CODE XREF: sub_185AB+3Cj + cmp si, 8 + jl short loc_185E9 + push 11h + call sub_EC3A + +loc_1860D: ; CODE XREF: sub_185AB+20j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+307Eh] + mov word_1F2EC, 0FE00h + mov word_1F2EE, 0FE00h + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 6 + add ax, 25DEh + mov word_1FBBE, ax + xor si, si + jmp short loc_18698 +; --------------------------------------------------------------------------- + +loc_18636: ; CODE XREF: sub_185AB+F0j + mov bx, word_1FBBE + cmp word ptr [bx], 270Fh + jz short loc_18667 + mov bx, word_1FBBE + cmp word ptr [bx], 4E1Fh + jz short loc_18692 + mov bx, word_1FBBE + mov ax, [bx+4] + add [bx], ax + mov ax, [bx+6] + add [bx+2], ax + push word ptr [bx] + push word ptr [bx+2] + call sub_A310 + or al, al + jz short loc_18692 + +loc_18667: ; CODE XREF: sub_185AB+93j + mov bx, word_1FBBE + mov word ptr [bx], 900h + mov word ptr [bx+2], 0B80h + push ds + mov ax, word_1FBBE + add ax, 4 + push ax + push ds + mov ax, word_1FBBE + add ax, 6 + push ax + call sub_13A24 + push ax + push 0E0h ; 'à' + call sub_E97A + +loc_18692: ; CODE XREF: sub_185AB+9Dj + ; sub_185AB+BAj + inc si + add word_1FBBE, 8 + +loc_18698: ; CODE XREF: sub_185AB+89j + cmp si, 8 + jl short loc_18636 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+307Eh], 0B4h ; '´' + jb short loc_186C0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+6580h], 0 + push word_1FE88 + call sub_A3A8 + +loc_186C0: ; CODE XREF: sub_185AB+10j + ; sub_185AB+FEj + pop si + pop bp + retf +sub_185AB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_186C3 proc near ; CODE XREF: sub_18766+22Ep + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 6 + add ax, 25DEh + mov word_1FBBE, ax + mov byte_1F2EA, 4 + mov word_1F2E8, 20h ; ' ' + cmp byte ptr word_1FE88, 0 + jnz short loc_186F6 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_18702 +; --------------------------------------------------------------------------- + +loc_186F6: ; CODE XREF: sub_186C3+23j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_18702: ; CODE XREF: sub_186C3+31j + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 29Ch + mov [bp+var_6], ax + xor si, si + jmp short loc_1875E +; --------------------------------------------------------------------------- + +loc_18711: ; CODE XREF: sub_186C3+9Ej + mov bx, word_1FBBE + cmp word ptr [bx], 4E1Fh + jz short loc_18758 + mov bx, word_1FBBE + cmp word ptr [bx], 270Fh + jz short loc_18758 + mov bx, word_1FBBE + push word ptr [bx] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFE0h + mov [bp+var_2], ax + mov bx, word_1FBBE + mov ax, [bx+2] + sar ax, 4 + add ax, 0FFF0h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push [bp+var_6] + call sub_F100 + +loc_18758: ; CODE XREF: sub_186C3+56j + ; sub_186C3+60j + inc si + add word_1FBBE, 8 + +loc_1875E: ; CODE XREF: sub_186C3+4Cj + cmp si, 8 + jl short loc_18711 + pop si + leave + retn +sub_186C3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18766 proc far ; DATA XREF: sub_A9EC+A9o + ; sub_A9EC+154o + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_189A7 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_3], al + cmp [bp+var_3], 40h ; '@' + jnb short loc_18801 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_187AF + add bx, 28h ; '(' + +loc_187AF: ; CODE XREF: sub_18766+44j + call sub_B39E + call sub_F86 + mov al, [bp+var_3] + add al, al + mov [bp+var_4], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_4] + add dl, dl + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_4] + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + mov word_1FB3C, 0 + jmp loc_18964 +; --------------------------------------------------------------------------- + +loc_18801: ; CODE XREF: sub_18766+2Cj + cmp [bp+var_3], 80h ; '€' + jnb loc_18911 + test [bp+var_3], 1 + jz short loc_18845 + push 0Ah + call sub_EC3A + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 0FFh + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BBh], 80h ; '€' + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BCh], 80h ; '€' + jmp short loc_18872 +; --------------------------------------------------------------------------- + +loc_18845: ; CODE XREF: sub_18766+A7j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BAh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BBh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov byte ptr [bx+11BCh], 20h ; ' ' + +loc_18872: ; CODE XREF: sub_18766+DDj + mov byte_23B01, 1 + mov al, [bp+var_3] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_18895 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_188A4 +; --------------------------------------------------------------------------- + +loc_18895: ; CODE XREF: sub_18766+11Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + +loc_188A4: ; CODE XREF: sub_18766+12Dj + mov si, 10h + cmp byte ptr word_1FE88, 0 + jz short loc_188B2 + add si, 140h + +loc_188B2: ; CODE XREF: sub_18766+146j + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + mov al, [bp+var_3] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz loc_18964 + push large 9000B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + cmp word_1FB3C, 8 + jge short loc_18964 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 6 + mov dx, word_1FB3C + shl dx, 3 + add ax, dx + mov bx, ax + mov word ptr [bx+25DEh], 270Fh + inc word_1FB3C + jmp short loc_18964 +; --------------------------------------------------------------------------- + +loc_18911: ; CODE XREF: sub_18766+9Fj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_3] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_4], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + add dl, dl + and dl, 0FFh + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_4] + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_18964: ; CODE XREF: sub_18766+98j + ; sub_18766+170j ... + call sub_704 + cmp [bp+var_3], 40h ; '@' + jb short loc_189A7 + cmp [bp+var_3], 80h ; '€' + jnb short loc_189A7 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+659Ch] + mov [bp+var_2], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + call sub_186C3 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov dx, [bp+var_2] + mov bx, ax + mov [bx+659Ch], dx + +loc_189A7: ; CODE XREF: sub_18766+11j + ; sub_18766+207j ... + pop si + leave + retf +sub_18766 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_189AA proc far ; DATA XREF: sub_AD1C+A9o + ; sub_AD1C+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_18BB4 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 40h ; '@' + jnb short loc_18A10 + mov al, 40h ; '@' + sub al, [bp+var_1] + mov [bp+var_2], al + mov ah, 0 + push ax + push word_1FE88 + call sub_A3D2 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_18A08 + push large 9000B80h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CE0C + +loc_18A08: ; CODE XREF: sub_189AA+4Bj + mov byte_1FBD4, 0 + jmp loc_18BB4 +; --------------------------------------------------------------------------- + +loc_18A10: ; CODE XREF: sub_189AA+28j + cmp [bp+var_1], 80h ; '€' + jnb loc_18B5B + call sub_71A + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_18A4E + push 0Ah + call sub_EC3A + push 0A0h ; ' ' + push word_1FE88 + call sub_A3D2 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_18A68 +; --------------------------------------------------------------------------- + +loc_18A4E: ; CODE XREF: sub_189AA+7Ej + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + push 0 + push word_1FE88 + call sub_A3D2 + +loc_18A68: ; CODE XREF: sub_189AA+A2j + mov al, [bp+var_1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz loc_18B2F + mov al, byte_1FBD4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push large 900090h + call sub_EA5D + add sp, 6 + mov si, ax + mov al, byte_1FBD4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push large 9000B8h + call sub_EA5D + add sp, 6 + mov di, ax + mov ax, si + shl ax, 4 + push ax + mov ax, di + shl ax, 4 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + mov al, 80h ; '€' + sub al, byte_1FBD4 + mov byte_1FBD4, al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push large 900090h + call sub_EA5D + add sp, 6 + mov si, ax + mov al, byte_1FBD4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push large 9000B8h + call sub_EA5D + add sp, 6 + mov di, ax + mov ax, si + shl ax, 4 + push ax + mov ax, di + shl ax, 4 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + mov al, 80h ; '€' + sub al, byte_1FBD4 + mov byte_1FBD4, al + add al, 10h + mov byte_1FBD4, al + +loc_18B2F: ; CODE XREF: sub_189AA+CBj + mov si, 10h + cmp byte ptr word_1FE88, 0 + jz short loc_18B3D + add si, 140h + +loc_18B3D: ; CODE XREF: sub_189AA+18Dj + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + call sub_704 + jmp short loc_18BB4 +; --------------------------------------------------------------------------- + +loc_18B5B: ; CODE XREF: sub_189AA+6Aj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_1], dl + +loc_18B77: + mov al, [bp+var_1] + add al, al + mov [bp+var_2], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_1] + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_18BB4: ; CODE XREF: sub_189AA+12j + ; sub_189AA+63j ... + pop di + pop si + leave + retf +sub_189AA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18BB8 proc far ; DATA XREF: sub_AB84+A9o + ; sub_AB84+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_18DC4 + call sub_71A + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + cmp [bp+var_1], 40h ; '@' + jnb loc_18C95 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_18C04 + add bx, 28h ; '(' + +loc_18C04: ; CODE XREF: sub_18BB8+47j + call sub_B39E + call sub_F86 + mov al, [bp+var_1] + mov ah, 0 + imul ax, 3 + mov [bp+var_2], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + add dl, 40h ; '@' + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + add dl, 20h ; ' ' + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_18DBF + mov al, [bp+var_1] + mov ah, 0 + imul ax, 48h + mov dx, 11B8h + sub dx, ax + mov si, dx + mov al, [bp+var_1] + mov ah, 0 + imul ax, 5Ch + add ax, 5Ch ; '\' + mov word_1FE56, ax + push dx + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + jmp loc_18DBF +; --------------------------------------------------------------------------- + +loc_18C95: ; CODE XREF: sub_18BB8+2Dj + cmp [bp+var_1], 80h ; '€' + jnb loc_18D5B + mov byte_23B01, 1 + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_18CD2 + push 0Ah + call sub_EC3A + mov word_1D834, 0AAh ; 'ª' + mov byte_23B01, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_18CEC +; --------------------------------------------------------------------------- + +loc_18CD2: ; CODE XREF: sub_18BB8+F5j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + mov word_1D834, 64h ; 'd' + mov byte_23B01, 1 + +loc_18CEC: ; CODE XREF: sub_18BB8+118j + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_18D34 + xor si, si + mov al, [bp+var_1] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + mov ax, dx + cwd + sub ax, dx + sar ax, 1 + mov di, ax + jmp short loc_18D28 +; --------------------------------------------------------------------------- + +loc_18D13: ; CODE XREF: sub_18BB8+174j + push si + push word_1FE56 + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + add si, 600h + inc di + +loc_18D28: ; CODE XREF: sub_18BB8+159j + cmp si, 1200h + jle short loc_18D13 + sub word_1FE56, 2E0h + +loc_18D34: ; CODE XREF: sub_18BB8+141j + mov si, 10h + cmp byte ptr word_1FE88, 0 + jz short loc_18D42 + add si, 140h + +loc_18D42: ; CODE XREF: sub_18BB8+184j + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + jmp short loc_18DBF +; --------------------------------------------------------------------------- + +loc_18D5B: ; CODE XREF: sub_18BB8+E1j + mov word_1D834, 64h ; 'd' + mov byte_23B01, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_1], dl + mov al, [bp+var_2] + add al, al + mov [bp+var_2], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_1] + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_18DBF: ; CODE XREF: sub_18BB8+ACj + ; sub_18BB8+DAj ... + call sub_704 + +loc_18DC4: ; CODE XREF: sub_18BB8+12j + pop di + pop si + leave + retf +sub_18BB8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18DC8 proc far ; DATA XREF: sub_AEB4+A9o + ; sub_AEB4+154o + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+6580h], 0 + jz loc_18FE7 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+307Eh] + mov [bp+var_1], al + call sub_71A + cmp [bp+var_1], 40h ; '@' + jnb short loc_18E39 + push 0C0h ; 'À' + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_F5C + mov bx, 3932h + cmp byte ptr word_1FE88, 0 + jz short loc_18E11 + add bx, 28h ; '(' + +loc_18E11: ; CODE XREF: sub_18DC8+44j + call sub_B39E + call sub_F86 + mov al, [bp+var_1] + shl al, 2 + mov [bp+var_2], al + mov ah, 0 + push ax + push word_1FE88 + call sub_A3D2 + mov word_220EC, 0 + jmp loc_18FE2 +; --------------------------------------------------------------------------- + +loc_18E39: ; CODE XREF: sub_18DC8+2Cj + cmp [bp+var_1], 80h ; '€' + jnb loc_18F89 + mov al, [bp+var_1] + mov ah, 0 + and ax, 3 + cmp ax, 2 + jge short loc_18E5F + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 4 + jmp short loc_18E6E +; --------------------------------------------------------------------------- + +loc_18E5F: ; CODE XREF: sub_18DC8+84j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0FFFCh + +loc_18E6E: ; CODE XREF: sub_18DC8+95j + mov si, 10h + cmp byte ptr word_1FE88, 0 + jz short loc_18E7C + add si, 140h + +loc_18E7C: ; CODE XREF: sub_18DC8+AEj + push si + push 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, 2 + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_EFF4 + push large 0C0000Fh + call sub_F5C + mov ax, 900h + sub ax, word_220EC + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push ax + push large 800C0h + call sub_109A + mov ax, word_220EC + add ax, 900h + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push ax + push large 800C0h + call sub_109A + mov ax, word_220EC + add ax, ax + mov dx, 900h + sub dx, ax + push dx + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push ax + push large 800C0h + call sub_109A + mov ax, word_220EC + add ax, ax + add ax, 900h + push ax + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + mov si, ax + push ax + push large 800C0h + call sub_109A + add word_220EC, 41h ; 'A' + cmp word_220EC, 480h + jl short loc_18F38 + mov word_220EC, 0 + +loc_18F38: ; CODE XREF: sub_18DC8+168j + call sub_F86 + mov al, [bp+var_1] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_18F71 + push 3FFh + call sub_13A36 + mov si, ax + jmp short loc_18F6B +; --------------------------------------------------------------------------- + +loc_18F58: ; CODE XREF: sub_18DC8+1A7j + push si + push 1700h + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_CDBD + add si, 600h + +loc_18F6B: ; CODE XREF: sub_18DC8+18Ej + cmp si, 1200h + jle short loc_18F58 + +loc_18F71: ; CODE XREF: sub_18DC8+182j + mov al, [bp+var_1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_18FE2 + push 5 + call sub_EC3A + jmp short loc_18FE2 +; --------------------------------------------------------------------------- + +loc_18F89: ; CODE XREF: sub_18DC8+75j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+659Ch], 0 + mov al, [bp+var_1] + shl al, 3 + mov dl, 0FFh + sub dl, al + mov [bp+var_1], dl + mov al, [bp+var_1] + add al, al + mov [bp+var_2], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_2] + mov bx, ax + mov [bx+11BAh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov bx, ax + mov [bx+11BBh], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 3 + mov dl, [bp+var_1] + mov bx, ax + mov [bx+11BCh], dl + mov byte_23B01, 1 + +loc_18FE2: ; CODE XREF: sub_18DC8+6Ej + ; sub_18DC8+1B6j ... + call sub_704 + +loc_18FE7: ; CODE XREF: sub_18DC8+11j + pop si + leave + retf +sub_18DC8 endp + +seg005 ends + +; =========================================================================== + +; Segment type: Pure code +seg006 segment byte public 'CODE' use16 + assume cs:seg006 + ;org 0Ah + 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_18FEA proc far ; DATA XREF: sub_B04C+19o sub_B04C+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1904F +; --------------------------------------------------------------------------- + +loc_19000: ; CODE XREF: sub_18FEA+68j + cmp byte ptr [si], 0 + jnz short loc_19049 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1140h + call sub_13A50 + add ax, 60h ; '`' + push ax + push 0 + push [bp+arg_0] + push 50h ; 'P' + call sub_1A1ED + add word_2028A, 20h ; ' ' + push [bp+arg_4] + push [bp+arg_2] + push 1140h + call sub_13A50 + add ax, 60h ; '`' + push ax + push 1780h + push [bp+arg_0] + push 50h ; 'P' + call sub_1A1ED + jmp short loc_19054 +; --------------------------------------------------------------------------- + +loc_19049: ; CODE XREF: sub_18FEA+19j + add di, 2 + add si, 40h ; '@' + +loc_1904F: ; CODE XREF: sub_18FEA+14j + cmp di, 10h + jl short loc_19000 + +loc_19054: ; CODE XREF: sub_18FEA+5Dj + pop di + pop si + pop bp + retf 6 +sub_18FEA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1905A proc near ; CODE XREF: sub_1938A+1Fp + +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 0Ah, 0 + push si + push di + mov si, word_2028A + mov al, [si+1] + mov [bp+var_1], al + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_4], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_6], ax + add si, 20h ; ' ' + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_8], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_A], ax + sub si, 20h ; ' ' + cmp byte ptr [si], 1 + jnz loc_1920B + call sub_71A + cmp [bp+var_1], 10h + jb loc_191E4 + cmp [bp+var_1], 28h ; '(' + jnb short loc_190CF + mov al, [bp+var_1] + mov ah, 0 + add ax, 0FFF0h + jmp loc_19179 +; --------------------------------------------------------------------------- + +loc_190CF: ; CODE XREF: sub_1905A+68j + cmp [bp+var_1], 70h ; 'p' + jnb loc_19165 + push large 0C00009h + call sub_F5C + push 8 + mov ax, [bp+var_4] + add ax, 0FFFAh + push ax + mov ax, [bp+var_4] + add ax, 6 + push ax + push 0C0h ; 'À' + mov ax, [bp+var_8] + add ax, 0FFFAh + push ax + mov ax, [bp+var_8] + add ax, 6 + push ax + call sub_1120 + push large 0C0000Ah + call sub_F5C + push 8 + mov ax, [bp+var_4] + add ax, 0FFFDh + push ax + mov ax, [bp+var_4] + add ax, 3 + push ax + push 0C0h ; 'À' + mov ax, [bp+var_8] + add ax, 0FFFDh + push ax + mov ax, [bp+var_8] + add ax, 3 + push ax + call sub_1120 + push large 0C0000Fh + call sub_F5C + push 8 + mov ax, [bp+var_4] + dec ax + push ax + mov ax, [bp+var_4] + inc ax + push ax + push 0C0h ; 'À' + mov ax, [bp+var_8] + dec ax + push ax + mov ax, [bp+var_8] + inc ax + push ax + call sub_1120 + jmp loc_191FF +; --------------------------------------------------------------------------- + +loc_19165: ; CODE XREF: sub_1905A+79j + cmp [bp+var_1], 88h ; 'ˆ' + jnb loc_191FF + mov al, [bp+var_1] + mov ah, 0 + push ax + mov ax, 88h ; 'ˆ' + pop dx + sub ax, dx + +loc_19179: ; CODE XREF: sub_1905A+72j + mov bx, 4 + cwd + idiv bx + mov di, ax + push large 0C00009h + call sub_F5C + push 8 + mov ax, [bp+var_4] + sub ax, di + push ax + mov ax, [bp+var_4] + add ax, di + push ax + push 0C0h ; 'À' + mov ax, [bp+var_8] + sub ax, di + push ax + mov ax, [bp+var_8] + add ax, di + push ax + call sub_1120 + mov ax, di + cwd + sub ax, dx + sar ax, 1 + mov di, ax + push large 0C0000Ah + call sub_F5C + push 8 + mov ax, [bp+var_4] + sub ax, di + push ax + mov ax, [bp+var_4] + add ax, di + push ax + push 0C0h ; 'À' + mov ax, [bp+var_8] + sub ax, di + push ax + mov ax, [bp+var_8] + add ax, di + push ax + call sub_1120 + +loc_191E4: ; CODE XREF: sub_1905A+60j + push large 0C0000Fh + call sub_F5C + push [bp+var_4] + push 8 + push [bp+var_8] + push 0C0h ; 'À' + call sub_DBE + +loc_191FF: ; CODE XREF: sub_1905A+108j + ; sub_1905A+10Fj + call sub_F86 + call sub_704 + jmp short loc_1925C +; --------------------------------------------------------------------------- + +loc_1920B: ; CODE XREF: sub_1905A+53j + cmp byte ptr [si], 2 + jnz short loc_1921E + push [bp+var_4] + push [bp+var_6] + push word ptr [bp+var_1] + call sub_1A32A + jmp short loc_1922A +; --------------------------------------------------------------------------- + +loc_1921E: ; CODE XREF: sub_1905A+1B4j + push [bp+var_4] + push [bp+var_6] + push word ptr [bp+var_1] + call sub_1A377 + +loc_1922A: ; CODE XREF: sub_1905A+1C2j + add word_2028A, 20h ; ' ' + add si, 20h ; ' ' + mov al, [si+1] + mov [bp+var_1], al + cmp byte ptr [si], 2 + jnz short loc_1924B + push [bp+var_8] + push [bp+var_A] + push word ptr [bp+var_1] + call sub_1A32A + jmp short loc_19257 +; --------------------------------------------------------------------------- + +loc_1924B: ; CODE XREF: sub_1905A+1E1j + push [bp+var_8] + push [bp+var_A] + push word ptr [bp+var_1] + call sub_1A377 + +loc_19257: ; CODE XREF: sub_1905A+1EFj + sub word_2028A, 20h ; ' ' + +loc_1925C: ; CODE XREF: sub_1905A+1AFj + pop di + pop si + leave + retn +sub_1905A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19260 proc far ; DATA XREF: sub_B04C+25o sub_B04C+D0o + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov word_2028A, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_3], al + mov word_220F2, 2 + mov byte_220FA, al + xor di, di + jmp loc_1937F +; --------------------------------------------------------------------------- + +loc_1928B: ; CODE XREF: sub_19260+122j + mov bx, word_2028A + cmp byte ptr [bx], 0 + jz short loc_1930C + mov si, word_2028A + cmp byte ptr [si], 1 + jnz short loc_19313 + inc byte ptr [si+1] + cmp byte ptr [si+1], 4 + jnz short loc_192CC + push word ptr [si+2] + push 0 + mov al, [si+10h] + mov ah, 0 + push ax + call sub_CE0C + add si, 20h ; ' ' + push word ptr [si+2] + push 1700h + mov al, [si+10h] + mov ah, 0 + push ax + call sub_CE0C + jmp short loc_1930C +; --------------------------------------------------------------------------- + +loc_192CC: ; CODE XREF: sub_19260+44j + cmp byte ptr [si+1], 10h + jnz short loc_192DB + push 14h + call sub_EC3A + jmp short loc_1930C +; --------------------------------------------------------------------------- + +loc_192DB: ; CODE XREF: sub_19260+70j + cmp byte ptr [si+1], 28h ; '(' + jbe short loc_192FD + cmp byte ptr [si+1], 70h ; 'p' + jnb short loc_192FD + mov ax, [si+2] + mov word_220EE, ax + add si, 20h ; ' ' + mov ax, [si+2] + mov word_220F6, ax + call sub_13B9A + jmp short loc_1930C +; --------------------------------------------------------------------------- + +loc_192FD: ; CODE XREF: sub_19260+7Fj + ; sub_19260+85j + cmp byte ptr [si+1], 88h ; 'ˆ' + jbe short loc_1930C + mov byte ptr [si], 0 + add si, 20h ; ' ' + mov byte ptr [si], 0 + +loc_1930C: ; CODE XREF: sub_19260+32j + ; sub_19260+6Aj ... + add word_2028A, 20h ; ' ' + jmp short loc_19377 +; --------------------------------------------------------------------------- + +loc_19313: ; CODE XREF: sub_19260+3Bj + mov [bp+var_2], 0 + cmp byte ptr [si], 2 + jnz short loc_1932B + call sub_1A1A7 + or al, al + jz short loc_1933D + mov word ptr [si+4], 0 + jmp short loc_1933D +; --------------------------------------------------------------------------- + +loc_1932B: ; CODE XREF: sub_19260+BBj + cmp byte ptr [si], 1Ch + ja short loc_19334 + inc byte ptr [si] + jmp short loc_1933D +; --------------------------------------------------------------------------- + +loc_19334: ; CODE XREF: sub_19260+CEj + mov byte ptr [si+1], 0 + mov [bp+var_2], 1 + +loc_1933D: ; CODE XREF: sub_19260+C2j + ; sub_19260+C9j ... + inc byte ptr [si+1] + add si, 20h ; ' ' + add word_2028A, 20h ; ' ' + cmp byte ptr [si], 2 + jnz short loc_1935B + call sub_1A1A7 + or al, al + jz short loc_19374 + mov word ptr [si+4], 1700h + jmp short loc_19374 +; --------------------------------------------------------------------------- + +loc_1935B: ; CODE XREF: sub_19260+EBj + cmp byte ptr [si], 1Ch + ja short loc_19364 + inc byte ptr [si] + jmp short loc_19374 +; --------------------------------------------------------------------------- + +loc_19364: ; CODE XREF: sub_19260+FEj + mov byte ptr [si+1], 0 + cmp [bp+var_2], 0 + jz short loc_19374 + sub si, 20h ; ' ' + mov byte ptr [si], 1 + +loc_19374: ; CODE XREF: sub_19260+F2j + ; sub_19260+F9j ... + inc byte ptr [si+1] + +loc_19377: ; CODE XREF: sub_19260+B1j + add di, 2 + add word_2028A, 20h ; ' ' + +loc_1937F: ; CODE XREF: sub_19260+28j + cmp di, 10h + jl loc_1928B + pop di + pop si + leave + retf +sub_19260 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1938A proc far ; DATA XREF: sub_B04C+31o sub_B04C+DCo + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov word_2028A, ax + xor si, si + jmp short loc_193B4 +; --------------------------------------------------------------------------- + +loc_193A0: ; CODE XREF: sub_1938A+2Dj + mov bx, word_2028A + cmp byte ptr [bx], 0 + jz short loc_193AC + call sub_1905A + +loc_193AC: ; CODE XREF: sub_1938A+1Dj + add si, 2 + add word_2028A, 40h ; '@' + +loc_193B4: ; CODE XREF: sub_1938A+14j + cmp si, 10h + jl short loc_193A0 + pop si + pop bp + retf +sub_1938A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_193BC proc far ; CODE XREF: sub_9EBF+8BP + push bp + mov bp, sp + push si + push di + mov si, 230Ah + mov di, 2472h + xor dx, dx + jmp short loc_193E6 +; --------------------------------------------------------------------------- + +loc_193CB: ; CODE XREF: sub_193BC+2Dj + mov ax, dx + shl ax, 5 + add ax, 292Ah + mov [si], ax + mov ax, dx + shl ax, 5 + add ax, 2B2Ah + mov [di], ax + inc dx + add si, 1Eh + add di, 1Eh + +loc_193E6: ; CODE XREF: sub_193BC+Dj + cmp dx, 0Ch + jl short loc_193CB + pop di + pop si + pop bp + retf +sub_193BC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_193EF proc far ; DATA XREF: sub_A9EC+19o sub_A9EC+C4o + +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +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 + + enter 8, 0 + push si + mov [bp+var_5], 0 + push 0C80h + call sub_13A50 + add ax, 2C0h + mov [bp+var_2], ax + push 0C80h + call sub_13A50 + add ax, 500h + mov [bp+var_4], ax + push 1 + call sub_13A36 + or ax, ax + jnz short loc_19423 + mov al, 0FFh + jmp short loc_19425 +; --------------------------------------------------------------------------- + +loc_19423: ; CODE XREF: sub_193EF+2Ej + mov al, 1 + +loc_19425: ; CODE XREF: sub_193EF+32j + mov [bp+var_6], al + call sub_13A24 + mov [bp+var_7], al + mov al, byte ptr [bp+arg_0] + mov ah, 0 + imul ax, 168h + add ax, 230Ah + mov word_1FB3A, ax + xor si, si + jmp short loc_1949F +; --------------------------------------------------------------------------- + +loc_19443: ; CODE XREF: sub_193EF+B3j + mov bx, word_1FB3A + mov bx, [bx] + cmp byte ptr [bx], 0 + jnz short loc_19499 + mov bx, word_1FB3A + mov ax, [bx] + mov word_2028A, ax + push [bp+arg_4] + push [bp+arg_2] + push [bp+var_2] + push [bp+var_4] + push [bp+arg_0] + push 46h ; 'F' + call sub_1A1ED + mov bx, word_2028A + mov word ptr [bx+14h], 0 + mov al, [bp+var_6] + mov [bx+11h], al + cmp [bp+var_5], 0 + jnz short loc_1948B + mov al, [bp+var_7] + mov [bx+12h], al + inc [bp+var_5] + jmp short loc_19499 +; --------------------------------------------------------------------------- + +loc_1948B: ; CODE XREF: sub_193EF+8Fj + mov al, [bp+var_7] + add al, 80h ; '€' + mov bx, word_2028A + mov [bx+12h], al + jmp short loc_194A4 +; --------------------------------------------------------------------------- + +loc_19499: ; CODE XREF: sub_193EF+5Dj + ; sub_193EF+9Aj + inc si + add word_1FB3A, 1Eh + +loc_1949F: ; CODE XREF: sub_193EF+52j + cmp si, 0Ch + jl short loc_19443 + +loc_194A4: ; CODE XREF: sub_193EF+A8j + pop si + leave + retf 6 +sub_193EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_194A9 proc far ; CODE XREF: sub_11547+67P + ; sub_11547+A9P + +arg_0 = byte ptr 6 +arg_2 = byte ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 168h + add ax, 230Ah + mov word_1FB3A, ax + xor dx, dx + jmp short loc_19506 +; --------------------------------------------------------------------------- + +loc_194C0: ; CODE XREF: sub_194A9+60j + mov bx, word_1FB3A + mov bx, [bx] + cmp byte ptr [bx], 0 + jnz short loc_19500 + mov bx, word_1FB3A + mov si, [bx] + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_6] + mov [si+2], ax + mov ax, [bp+arg_4] + mov [si+4], ax + mov word ptr [si+14h], 0 + mov al, [bp+arg_0] + mov [si+11h], al + mov al, [bp+arg_2] + mov [si+12h], al + mov al, 1 + sub al, byte ptr word_1FE88 + mov [si+10h], al + jmp short loc_1950B +; --------------------------------------------------------------------------- + +loc_19500: ; CODE XREF: sub_194A9+20j + inc dx + add word_1FB3A, 1Eh + +loc_19506: ; CODE XREF: sub_194A9+15j + cmp dx, 0Ch + jl short loc_194C0 + +loc_1950B: ; CODE XREF: sub_194A9+55j + pop si + pop bp + retf 8 +sub_194A9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19510 proc near ; CODE XREF: sub_197F3+22p + +var_9 = word ptr -9 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + push di + mov bx, word_1FB3A + mov bx, [bx] + push word ptr [bx+2] + mov bx, word_1FB3A + mov bx, [bx] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov bx, word_1FB3A + mov bx, [bx] + mov ax, [bx+4] + sar ax, 4 + add ax, 10h + mov [bp+var_4], ax + mov bx, word_1FB3A + mov bx, [bx] + cmp byte ptr [bx+10h], 0 + jnz short loc_1955F + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1956B +; --------------------------------------------------------------------------- + +loc_1955F: ; CODE XREF: sub_19510+3Fj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1956B: ; CODE XREF: sub_19510+4Dj + mov bx, word_1FB3A + mov bx, [bx] + mov al, [bx+1] + mov byte ptr [bp+var_9], al + mov bx, word_1FB3A + mov bx, [bx] + cmp byte ptr [bx], 1 + jnz short loc_195EF + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 28Ch + mov di, ax + mov si, 6 + jmp short loc_195E9 +; --------------------------------------------------------------------------- + +loc_1959C: ; CODE XREF: sub_19510+DBj + mov bx, si + add bx, bx + add bx, word_1FB3A + push word ptr [bx+2] + mov bx, word_1FB3A + mov bx, [bx] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_9+1], ax + mov bx, si + add bx, bx + add bx, word_1FB3A + mov ax, [bx+10h] + sar ax, 4 + add ax, 10h + mov [bp+var_6], ax + mov ax, [bp+var_9+1] + add ax, 0FFF0h + push ax + mov ax, [bp+var_6] + add ax, 0FFF0h + push ax + push di + call sub_F100 + sub di, 4 + sub si, 2 + +loc_195E9: ; CODE XREF: sub_19510+8Aj + or si, si + jge short loc_1959C + jmp short loc_19619 +; --------------------------------------------------------------------------- + +loc_195EF: ; CODE XREF: sub_19510+70j + mov bx, word_1FB3A + mov bx, [bx] + cmp byte ptr [bx], 2 + jnz short loc_19608 + push [bp+var_2] + push [bp+var_4] + push [bp+var_9] + call sub_1A32A + jmp short loc_19619 +; --------------------------------------------------------------------------- + +loc_19608: ; CODE XREF: sub_19510+E8j + push [bp+var_2] + push [bp+var_4] + mov bx, word_1FB3A + mov bx, [bx] + push word ptr [bx] + call sub_1A377 + +loc_19619: ; CODE XREF: sub_19510+DDj + ; sub_19510+F6j + pop di + pop si + leave + retn +sub_19510 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1961D proc far ; DATA XREF: sub_A9EC+25o sub_A9EC+D0o + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 168h + add ax, 230Ah + mov di, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_5], al + mov word_1F2EC, 0FE80h + mov word_1F2EE, 0FE80h + mov word_220F2, 6 + mov word_220F4, 6 + mov byte_220FA, al + mov [bp+var_2], 0 + jmp loc_197E7 +; --------------------------------------------------------------------------- + +loc_1965D: ; CODE XREF: sub_1961D+1CEj + mov bx, [di] + cmp byte ptr [bx], 0 + jz loc_197E1 + mov bx, [di] + cmp byte ptr [bx], 1 + jnz loc_19780 + mov [bp+var_4], 6 + jmp short loc_1969B +; --------------------------------------------------------------------------- + +loc_19676: ; CODE XREF: sub_1961D+82j + mov bx, [bp+var_4] + dec bx + add bx, bx + mov ax, [bx+di+2] + mov bx, [bp+var_4] + add bx, bx + mov [bx+di+2], ax + mov bx, [bp+var_4] + dec bx + add bx, bx + mov ax, [bx+di+10h] + mov bx, [bp+var_4] + add bx, bx + mov [bx+di+10h], ax + dec [bp+var_4] + +loc_1969B: ; CODE XREF: sub_1961D+57j + cmp [bp+var_4], 0 + jg short loc_19676 + mov bx, [di] + cmp word ptr [bx+14h], 0D00h + jg short loc_1970C + mov al, [bx+12h] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + mov bx, [di] + push word ptr [bx+14h] + push word ptr [bx+2] + call sub_EA5D + add sp, 6 + mov [di+2], ax + mov bx, [di] + mov al, [bx+12h] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + mov bx, [di] + push word ptr [bx+14h] + push word ptr [bx+4] + call sub_EA5D + add sp, 6 + mov [di+10h], ax + mov ax, [di+2] + sub ax, [di+4] + mov bx, [di] + mov [bx+6], ax + mov ax, [di+10h] + sub ax, [di+12h] + mov [bx+8], ax + add word ptr [bx+14h], 18h + mov al, [bx+11h] + add [bx+12h], al + jmp short loc_19740 +; --------------------------------------------------------------------------- + +loc_1970C: ; CODE XREF: sub_1961D+8Bj + push word ptr [di+2] + push word ptr [di+10h] + call sub_A310 + or al, al + jz short loc_19732 + push word ptr [di+0Eh] + push word ptr [di+1Ch] + call sub_A310 + or al, al + jz short loc_19732 + mov bx, [di] + mov byte ptr [bx], 0 + jmp loc_197E1 +; --------------------------------------------------------------------------- + +loc_19732: ; CODE XREF: sub_1961D+FCj + ; sub_1961D+10Bj + mov bx, [di] + mov ax, [bx+6] + add [di+2], ax + mov ax, [bx+8] + add [di+10h], ax + +loc_19740: ; CODE XREF: sub_1961D+EDj + mov byte_20E2C, 1 + mov word_20E32, 100h + mov word_20E34, 100h + mov al, [bp+var_5] + mov byte ptr word_20E3A, al + mov ax, [di+2] + mov word_20E2E, ax + mov ax, [di+10h] + mov word_20E30, ax + call sub_158F5 + mov byte_20E2C, 0 + mov ax, [di+2] + mov word_220EE, ax + mov ax, [di+10h] + mov word_220F0, ax + call sub_13A6E + jmp short loc_197DC +; --------------------------------------------------------------------------- + +loc_19780: ; CODE XREF: sub_1961D+4Ej + mov bx, [di] + cmp byte ptr [bx], 2 + jnz short loc_197BF + mov ax, [di] + mov word_2028A, ax + call sub_1A1A7 + or al, al + jz short loc_197DC + mov [bp+var_4], 0 + +loc_19798: + jmp short loc_197B7 +; --------------------------------------------------------------------------- + +loc_1979A: ; CODE XREF: sub_1961D+19Ej + mov bx, [bp+var_4] + add bx, bx + mov si, word_2028A + mov ax, [si+2] + mov [bx+di+2], ax + mov bx, [bp+var_4] + add bx, bx + mov ax, [si+4] + mov [bx+di+10h], ax + inc [bp+var_4] + +loc_197B7: ; CODE XREF: sub_1961D:loc_19798j + cmp [bp+var_4], 7 + jl short loc_1979A + jmp short loc_197DC +; --------------------------------------------------------------------------- + +loc_197BF: ; CODE XREF: sub_1961D+168j + mov bx, [di] + cmp byte ptr [bx], 1Ch + ja short loc_197CA + inc byte ptr [bx] + jmp short loc_197DC +; --------------------------------------------------------------------------- + +loc_197CA: ; CODE XREF: sub_1961D+1A7j + mov bx, [di] + mov byte ptr [bx+1], 0 + mov bx, [di] + mov byte ptr [bx], 1 + push 0Ah + call sub_EC3A + +loc_197DC: ; CODE XREF: sub_1961D+161j + ; sub_1961D+174j ... + mov bx, [di] + inc byte ptr [bx+1] + +loc_197E1: ; CODE XREF: sub_1961D+45j + ; sub_1961D+112j + inc [bp+var_2] + add di, 1Eh + +loc_197E7: ; CODE XREF: sub_1961D+3Dj + cmp [bp+var_2], 0Ch + jl loc_1965D + pop di + pop si + leave + retf +sub_1961D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_197F3 proc far ; DATA XREF: sub_A9EC+31o sub_A9EC+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 168h + add ax, 230Ah + mov si, ax + xor di, di + jmp short loc_1981C +; --------------------------------------------------------------------------- + +loc_1980A: ; CODE XREF: sub_197F3+2Cj + mov bx, [si] + cmp byte ptr [bx], 0 + jz short loc_19818 + mov word_1FB3A, si + call sub_19510 + +loc_19818: ; CODE XREF: sub_197F3+1Cj + inc di + add si, 1Eh + +loc_1981C: ; CODE XREF: sub_197F3+15j + cmp di, 0Ch + jl short loc_1980A + pop di + pop si + pop bp + retf +sub_197F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19825 proc far ; DATA XREF: sub_AD1C+19o sub_AD1C+C4o + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + push di + push 1200h + call sub_13A50 + mov [bp+var_2], ax + mov al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1988B +; --------------------------------------------------------------------------- + +loc_19847: ; CODE XREF: sub_19825+69j + cmp byte ptr [si], 0 + jnz short loc_19887 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push [bp+var_2] + push 800h + call sub_13A50 + push ax + push [bp+arg_0] + push 5Ah ; 'Z' + call sub_1A1ED + push 1Fh + call sub_13A36 + sub al, 0Fh + mov [si+12h], al + cmp [bp+var_2], 900h + jl short loc_19890 + mov al, [si+12h] + add al, 80h ; '€' + mov [si+12h], al + jmp short loc_19890 +; --------------------------------------------------------------------------- + +loc_19887: ; CODE XREF: sub_19825+25j + inc di + add si, 20h ; ' ' + +loc_1988B: ; CODE XREF: sub_19825+20j + cmp di, 8 + jl short loc_19847 + +loc_19890: ; CODE XREF: sub_19825+56j + ; sub_19825+60j + pop di + pop si + leave + retf 6 +sub_19825 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19896 proc far ; CODE XREF: sub_12C4F+68P + ; sub_12C4F+77P ... + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor dx, dx + jmp short loc_198D3 +; --------------------------------------------------------------------------- + +loc_198AB: ; CODE XREF: sub_19896+40j + cmp byte ptr [si], 0 + jnz short loc_198CF + mov byte ptr [si], 1 + mov ax, [bp+arg_4] + mov [si+2], ax + mov ax, [bp+arg_2] + mov [si+4], ax + mov al, [bp+arg_0] + mov [si+12h], al + mov byte ptr [si+13h], 8 + mov byte ptr [si+1], 0 + jmp short loc_198D8 +; --------------------------------------------------------------------------- + +loc_198CF: ; CODE XREF: sub_19896+18j + inc dx + add si, 20h ; ' ' + +loc_198D3: ; CODE XREF: sub_19896+13j + cmp dx, 8 + jl short loc_198AB + +loc_198D8: ; CODE XREF: sub_19896+37j + pop si + pop bp + retf 6 +sub_19896 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_198DD proc near ; CODE XREF: sub_19A8D+1Fp + +var_5 = word ptr -5 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_5+1], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + jnz short loc_1991E + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1992A +; --------------------------------------------------------------------------- + +loc_1991E: ; CODE XREF: sub_198DD+31j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1992A: ; CODE XREF: sub_198DD+3Fj + mov al, [si+1] + mov byte ptr [bp+var_5], al + cmp byte ptr [si], 1 + jnz short loc_19976 + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 284h + mov di, ax + mov al, byte ptr [bp+var_5] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + cwd + idiv bx + shl dx, 5 + imul dx, 28h + add di, dx + mov ax, [bp+var_2] + add ax, 0FFF0h + push ax + mov ax, [bp+var_5+1] + add ax, 0FFF0h + push ax + push di + call sub_F100 + jmp short loc_19995 +; --------------------------------------------------------------------------- + +loc_19976: ; CODE XREF: sub_198DD+56j + cmp byte ptr [si], 2 + jnz short loc_19989 + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A32A + jmp short loc_19995 +; --------------------------------------------------------------------------- + +loc_19989: ; CODE XREF: sub_198DD+9Cj + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A377 + +loc_19995: ; CODE XREF: sub_198DD+97j + ; sub_198DD+AAj + pop di + pop si + leave + retn +sub_198DD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19999 proc far ; DATA XREF: sub_AD1C+25o sub_AD1C+D0o + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_5], al + mov word_1F2EC, 0FE80h + mov word_1F2EE, 0FE80h + xor di, di + jmp loc_19A82 +; --------------------------------------------------------------------------- + +loc_199C6: ; CODE XREF: sub_19999+ECj + cmp byte ptr [si], 0 + jz loc_19A7E + mov word_2028A, si + cmp byte ptr [si], 1 + jnz loc_19A5D + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_4] + push ax + push word ptr [si+12h] + mov al, [si+13h] + mov ah, 0 + push ax + call sub_E97A + inc byte ptr [si+13h] + mov ax, [bp+var_2] + add [si+2], ax + mov ax, [bp+var_4] + add [si+4], ax + mov al, [si+1] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_19A49 + mov byte_23E4E, 8 + mov byte ptr word_23E42+1, 40h ; '@' + mov byte ptr word_23E44+1, 0 + mov byte_23E46, 80h ; '€' + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 1680h + mov word_23E4C, ax + mov byte ptr word_23E42, 10h + mov ax, [si+2] + mov word_23E3E, ax + mov ax, [si+4] + mov word_23E40, ax + mov al, [bp+var_5] + mov byte ptr word_23E44, al + call sub_17730 + +loc_19A49: ; CODE XREF: sub_19999+73j + push word ptr [si+2] + push word ptr [si+4] + call sub_A310 + or al, al + jz short loc_19A7B + mov byte ptr [si], 0 + jmp short loc_19A7E +; --------------------------------------------------------------------------- + +loc_19A5D: ; CODE XREF: sub_19999+3Bj + cmp byte ptr [si], 2 + jnz short loc_19A67 + call sub_1A1A7 + jmp short loc_19A7B +; --------------------------------------------------------------------------- + +loc_19A67: ; CODE XREF: sub_19999+C7j + cmp byte ptr [si], 1Ch + ja short loc_19A70 + inc byte ptr [si] + jmp short loc_19A7B +; --------------------------------------------------------------------------- + +loc_19A70: ; CODE XREF: sub_19999+D1j + mov byte ptr [si+1], 0 + mov byte ptr [si], 1 + mov byte ptr [si+13h], 8 + +loc_19A7B: ; CODE XREF: sub_19999+BDj + ; sub_19999+CCj ... + inc byte ptr [si+1] + +loc_19A7E: ; CODE XREF: sub_19999+30j + ; sub_19999+C2j + inc di + add si, 20h ; ' ' + +loc_19A82: ; CODE XREF: sub_19999+2Aj + cmp di, 8 + jl loc_199C6 + pop di + pop si + leave + retf +sub_19999 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19A8D proc far ; DATA XREF: sub_AD1C+31o sub_AD1C+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_19AB3 +; --------------------------------------------------------------------------- + +loc_19AA3: ; CODE XREF: sub_19A8D+29j + cmp byte ptr [si], 0 + jz short loc_19AAF + mov word_2028A, si + call sub_198DD + +loc_19AAF: ; CODE XREF: sub_19A8D+19j + inc di + add si, 20h ; ' ' + +loc_19AB3: ; CODE XREF: sub_19A8D+14j + cmp di, 8 + jl short loc_19AA3 + pop di + pop si + pop bp + retf +sub_19A8D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19ABC proc far ; DATA XREF: sub_A854+19o sub_A854+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_19AFB +; --------------------------------------------------------------------------- + +loc_19AD2: ; CODE XREF: sub_19ABC+42j + cmp byte ptr [si], 0 + jnz short loc_19AF7 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1200h + call sub_13A50 + push ax + push 1700h + push [bp+arg_0] + push 6Eh ; 'n' + call sub_1A1ED + jmp short loc_19B00 +; --------------------------------------------------------------------------- + +loc_19AF7: ; CODE XREF: sub_19ABC+19j + inc di + add si, 20h ; ' ' + +loc_19AFB: ; CODE XREF: sub_19ABC+14j + cmp di, 0Eh + jl short loc_19AD2 + +loc_19B00: ; CODE XREF: sub_19ABC+39j + pop di + pop si + pop bp + retf 6 +sub_19ABC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19B06 proc far ; CODE XREF: sub_F685+2BP sub_F685+45P ... + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov al, [bp+arg_0] + mov ah, 0 + mov dx, 1 + sub dx, ax + shl dx, 9 + add dx, 292Ah + mov si, dx + xor cx, cx + jmp short loc_19B45 +; --------------------------------------------------------------------------- + +loc_19B21: ; CODE XREF: sub_19B06+42j + cmp byte ptr [si], 0 + jnz short loc_19B41 + mov byte ptr [si], 3 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_4] + mov [si+2], ax + mov ax, [bp+arg_2] + mov [si+4], ax + mov al, [bp+arg_0] + mov [si+10h], al + jmp short loc_19B4A +; --------------------------------------------------------------------------- + +loc_19B41: ; CODE XREF: sub_19B06+1Ej + inc cx + add si, 20h ; ' ' + +loc_19B45: ; CODE XREF: sub_19B06+19j + cmp cx, 0Eh + jl short loc_19B21 + +loc_19B4A: ; CODE XREF: sub_19B06+39j + pop si + pop bp + retf 6 +sub_19B06 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19B4F proc near ; CODE XREF: sub_19D31+1Fp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_4], ax + cmp byte ptr word_1FE88, 1 + jnz short loc_19B8B + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_19B97 +; --------------------------------------------------------------------------- + +loc_19B8B: ; CODE XREF: sub_19B4F+2Cj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_19B97: ; CODE XREF: sub_19B4F+3Aj + cmp byte ptr [si], 1 + jnz short loc_19C14 + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 1Ah + mov di, ax + sub [bp+var_2], 8 + sub [bp+var_4], 8 + mov al, [si+1] + mov [bp+var_5], al + cmp [bp+var_5], 30h ; '0' + jnb short loc_19BD6 + push [bp+var_2] + push [bp+var_4] + push di + call sub_F100 + +loc_19BD1: ; CODE XREF: sub_19B4F+8Bj + add di, 2 + jmp short loc_19C00 +; --------------------------------------------------------------------------- + +loc_19BD6: ; CODE XREF: sub_19B4F+74j + cmp [bp+var_5], 60h ; '`' + jb short loc_19BD1 + cmp [bp+var_5], 66h ; 'f' + jnb short loc_19BE7 + add di, 4 + jmp short loc_19C00 +; --------------------------------------------------------------------------- + +loc_19BE7: ; CODE XREF: sub_19B4F+91j + cmp [bp+var_5], 6Ch ; 'l' + jnb short loc_19BF2 + add di, 6 + jmp short loc_19C00 +; --------------------------------------------------------------------------- + +loc_19BF2: ; CODE XREF: sub_19B4F+9Cj + cmp [bp+var_5], 72h ; 'r' + jnb short loc_19BFD + add di, 8 + jmp short loc_19C00 +; --------------------------------------------------------------------------- + +loc_19BFD: ; CODE XREF: sub_19B4F+A7j + add di, 0Ah + +loc_19C00: ; CODE XREF: sub_19B4F+85j + ; sub_19B4F+96j ... + push [bp+var_2] + mov ax, [bp+var_4] + add ax, 10h + push ax + push di + push 18h + call sub_F162 + jmp short loc_19C32 +; --------------------------------------------------------------------------- + +loc_19C14: ; CODE XREF: sub_19B4F+4Bj + cmp byte ptr [si], 2 + jnz short loc_19C27 + push [bp+var_2] + push [bp+var_4] + push word ptr [si+1] + call sub_1A32A + jmp short loc_19C32 +; --------------------------------------------------------------------------- + +loc_19C27: ; CODE XREF: sub_19B4F+C8j + push [bp+var_2] + push [bp+var_4] + push word ptr [si] + call sub_1A377 + +loc_19C32: ; CODE XREF: sub_19B4F+C3j + ; sub_19B4F+D6j + pop di + pop si + leave + retn +sub_19B4F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19C36 proc far ; DATA XREF: sub_A854+25o sub_A854+D0o + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov word_220F2, 2 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + mov [bp+var_2], 0 + jmp loc_19D25 +; --------------------------------------------------------------------------- + +loc_19C57: ; CODE XREF: sub_19C36+F3j + cmp byte ptr [si], 0 + jz loc_19D1F + cmp byte ptr [si], 1 + jnz short loc_19CD8 + cmp byte ptr [si+1], 30h ; '0' + jnb short loc_19C80 + sub word ptr [si+4], 100h + cmp word ptr [si+4], 0FF00h + jge short loc_19C8C + mov byte ptr [si+1], 30h ; '0' + mov word ptr [si+4], 0FF00h + jmp short loc_19C8C +; --------------------------------------------------------------------------- + +loc_19C80: ; CODE XREF: sub_19C36+31j + cmp byte ptr [si+1], 78h ; 'x' + jb short loc_19C8C + mov byte ptr [si], 0 + jmp loc_19D1F +; --------------------------------------------------------------------------- + +loc_19C8C: ; CODE XREF: sub_19C36+3Dj + ; sub_19C36+48j ... + mov ax, [si+2] + mov [bp+var_6], ax + mov di, [si+4] + or di, di + jge short loc_19C9B + xor di, di + +loc_19C9B: ; CODE XREF: sub_19C36+61j + mov ax, 1700h + sub ax, di + mov [bp+var_4], ax + cmp byte ptr [si+1], 64h ; 'd' + jnb short loc_19D1C + mov ax, [bp+var_6] + mov word_220EE, ax + mov ax, [bp+var_4] + cwd + sub ax, dx + sar ax, 1 + add ax, di + mov word_220F0, ax + mov ax, [bp+var_4] + mov bx, 20h ; ' ' + cwd + idiv bx + mov word_220F4, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte_220FA, al + call sub_13A6E + jmp short loc_19D1C +; --------------------------------------------------------------------------- + +loc_19CD8: ; CODE XREF: sub_19C36+2Bj + cmp byte ptr [si], 2 + jnz short loc_19CEF + mov word_2028A, si + call sub_1A1A7 + or al, al + jz short loc_19D1C + mov word ptr [si+4], 1700h + jmp short loc_19D1F +; --------------------------------------------------------------------------- + +loc_19CEF: ; CODE XREF: sub_19C36+A5j + cmp byte ptr [si], 1Ch + ja short loc_19D0E + inc byte ptr [si] + cmp byte ptr [si], 0Ch + jnz short loc_19D1C + push word ptr [si+2] + push 1820h + mov al, [si+10h] + mov ah, 0 + push ax + call sub_CE0C + jmp short loc_19D1C +; --------------------------------------------------------------------------- + +loc_19D0E: ; CODE XREF: sub_19C36+BCj + mov byte ptr [si+1], 0 + mov byte ptr [si], 1 + push 14h + call sub_EC3A + +loc_19D1C: ; CODE XREF: sub_19C36+71j + ; sub_19C36+A0j ... + inc byte ptr [si+1] + +loc_19D1F: ; CODE XREF: sub_19C36+24j + ; sub_19C36+53j ... + inc [bp+var_2] + add si, 20h ; ' ' + +loc_19D25: ; CODE XREF: sub_19C36+1Ej + cmp [bp+var_2], 0Eh + jl loc_19C57 + pop di + pop si + leave + retf +sub_19C36 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19D31 proc far ; DATA XREF: sub_A854+31o sub_A854+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_19D57 +; --------------------------------------------------------------------------- + +loc_19D47: ; CODE XREF: sub_19D31+29j + cmp byte ptr [si], 0 + jz short loc_19D53 + mov word_2028A, si + call sub_19B4F + +loc_19D53: ; CODE XREF: sub_19D31+19j + inc di + add si, 20h ; ' ' + +loc_19D57: ; CODE XREF: sub_19D31+14j + cmp di, 0Eh + jl short loc_19D47 + pop di + pop si + pop bp + retf +sub_19D31 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19D60 proc far ; DATA XREF: sub_AB84+19o sub_AB84+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_19DC8 +; --------------------------------------------------------------------------- + +loc_19D76: ; CODE XREF: sub_19D60+6Bj + cmp byte ptr [si], 0 + jnz short loc_19DC4 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1200h + call sub_13A50 + push ax + push 400h + call sub_13A50 + push ax + push [bp+arg_0] + push 5Ah ; 'Z' + call sub_1A1ED + push 0FFFh + call sub_13A36 + add ax, 600h + mov [si+0Eh], ax + push 1Fh + call sub_13A36 + add ax, 10h + mov [si+14h], ax + mov byte ptr [si+12h], 0 + mov byte ptr [si+11h], 0 + jmp short loc_19DCD +; --------------------------------------------------------------------------- + +loc_19DC4: ; CODE XREF: sub_19D60+19j + inc di + add si, 20h ; ' ' + +loc_19DC8: ; CODE XREF: sub_19D60+14j + cmp di, 8 + jl short loc_19D76 + +loc_19DCD: ; CODE XREF: sub_19D60+62j + pop di + pop si + pop bp + retf 6 +sub_19D60 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19DD3 proc far ; CODE XREF: sub_1C2E0+BEP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov di, ax + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 2A2Ah + mov si, ax + cmp byte ptr [si], 0 + jz short loc_19DFA + add si, 20h ; ' ' + +loc_19DFA: ; CODE XREF: sub_19DD3+22j + mov word_2028A, si + push word ptr [di] + push word ptr [di+2] + push [bp+arg_2] + push [bp+arg_0] + push word_1FE88 + push 78h ; 'x' + call sub_1A1ED + mov word ptr [si+0Eh], 0C00h + mov word ptr [si+14h], 20h ; ' ' + mov byte ptr [si+12h], 0 + mov byte ptr [si+11h], 1 + pop di + pop si + pop bp + retf 4 +sub_19DD3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19E2A proc near ; CODE XREF: sub_1A14E+1Fp + +var_5 = word ptr -5 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_5+1], ax + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov al, [si+1] + mov byte ptr [bp+var_5], al + cmp byte ptr [si], 1 + jnz short loc_19ED6 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov di, ax + mov ax, [si+0Eh] + sub ax, [si+4] + cmp ax, 600h + jg short loc_19E91 + mov al, byte ptr [bp+var_5] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + cmp dx, 2 + jge short loc_19E91 + add di, 0A00h + +loc_19E91: ; CODE XREF: sub_19E2A+51j + ; sub_19E2A+61j + cmp byte ptr [si+11h], 0 + jnz short loc_19EBC + add di, 282h + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov ax, [bp+var_2] + add ax, 0FFF0h + push ax + mov ax, [bp+var_5+1] + add ax, 0FFF0h + +loc_19EB3: ; CODE XREF: sub_19E2A+AAj + push ax + push di + call sub_F100 + jmp short loc_19EF5 +; --------------------------------------------------------------------------- + +loc_19EBC: ; CODE XREF: sub_19E2A+6Bj + mov byte_1F2EA, 4 + mov word_1F2E8, 20h ; ' ' + mov ax, [bp+var_2] + add ax, 0FFE0h + push ax + mov ax, [bp+var_5+1] + add ax, 0FFE0h + jmp short loc_19EB3 +; --------------------------------------------------------------------------- + +loc_19ED6: ; CODE XREF: sub_19E2A+3Cj + cmp byte ptr [si], 2 + jnz short loc_19EE9 + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A32A + jmp short loc_19EF5 +; --------------------------------------------------------------------------- + +loc_19EE9: ; CODE XREF: sub_19E2A+AFj + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A377 + +loc_19EF5: ; CODE XREF: sub_19E2A+90j + ; sub_19E2A+BDj + pop di + pop si + leave + retn +sub_19E2A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19EF9 proc near ; CODE XREF: sub_19FEF+57p + ; sub_19FEF:loc_1A086p ... + push bp + mov bp, sp + push 3 + call sub_EC3A + mov bx, word_2028A + push word ptr [bx+2] + push word ptr [bx+4] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_CDBD + pop bp + retn +sub_19EF9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19F1F proc near ; CODE XREF: sub_19FEF+86p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D5Ah] + mov byte_23E4E, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + cmp byte ptr [bx+2D59h], 0 + jz short loc_19F5D + mov [bp+var_1], 0F4h ; 'ô' + jmp short loc_19F61 +; --------------------------------------------------------------------------- + +loc_19F5D: ; CODE XREF: sub_19F1F+36j + mov [bp+var_1], 0Ch + +loc_19F61: ; CODE XREF: sub_19F1F+3Cj + mov byte ptr word_23E42, 10h + xor si, si + jmp short loc_19F7F +; --------------------------------------------------------------------------- + +loc_19F6A: ; CODE XREF: sub_19F1F+63j + call sub_17730 + mov al, byte ptr word_23E42 + add al, 2 + mov byte ptr word_23E42, al + mov al, [bp+var_1] + add byte ptr word_23E42+1, al + inc si + +loc_19F7F: ; CODE XREF: sub_19F1F+49j + cmp si, 4 + jl short loc_19F6A + pop si + leave + retn +sub_19F1F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19F87 proc near ; CODE XREF: sub_19FEF:loc_1A0CFp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D5Ah] + mov byte_23E4E, al + mov byte ptr word_23E42, 10h + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + cmp byte ptr [bx+2D59h], 0 + jz short loc_19FCA + mov [bp+var_1], 7 + jmp short loc_19FCE +; --------------------------------------------------------------------------- + +loc_19FCA: ; CODE XREF: sub_19F87+3Bj + mov [bp+var_1], 0F9h ; 'ù' + +loc_19FCE: ; CODE XREF: sub_19F87+41j + xor si, si + jmp short loc_19FE7 +; --------------------------------------------------------------------------- + +loc_19FD2: ; CODE XREF: sub_19F87+63j + call sub_17730 + mov al, byte ptr word_23E42 + add al, 2 + mov byte ptr word_23E42, al + mov al, [bp+var_1] + add byte ptr word_23E42+1, al + inc si + +loc_19FE7: ; CODE XREF: sub_19F87+49j + cmp si, 0Ah + jl short loc_19FD2 + pop si + leave + retn +sub_19F87 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19FEF proc far ; DATA XREF: sub_AB84+25o sub_AB84+D0o + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov word_2028A, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov word_220F2, 6 + mov word_220F4, 6 + mov byte_220FA, al + xor di, di + jmp loc_1A143 +; --------------------------------------------------------------------------- + +loc_1A020: ; CODE XREF: sub_19FEF+157j + mov bx, word_2028A + cmp byte ptr [bx], 0 + jz loc_1A13D + mov si, word_2028A + cmp byte ptr [si], 1 + jnz loc_1A120 + mov ax, [si+4] + cmp ax, [si+0Eh] + jl loc_1A0DA + cmp byte ptr [si+12h], 4 + jnz short loc_1A07A + call sub_19EF9 + cmp byte ptr [si+11h], 0 + jz loc_1A0D5 + mov byte ptr word_23E42, 1Ch + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 26h ; '&' + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov ax, [si+2] + mov word_23E3E, ax + mov ax, [si+4] + mov word_23E40, ax + call sub_19F1F + jmp short loc_1A0D5 +; --------------------------------------------------------------------------- + +loc_1A07A: ; CODE XREF: sub_19FEF+55j + cmp byte ptr [si+12h], 8 + jz short loc_1A086 + cmp byte ptr [si+12h], 0Ch + jnz short loc_1A08B + +loc_1A086: ; CODE XREF: sub_19FEF+8Fj + call sub_19EF9 + jmp short loc_1A0D5 +; --------------------------------------------------------------------------- + +loc_1A08B: ; CODE XREF: sub_19FEF+95j + cmp byte ptr [si+12h], 10h + jnz short loc_1A0D5 + call sub_19EF9 + mov byte ptr word_23E42, 18h + call sub_13A24 + mov byte ptr word_23E42+1, al + mov byte ptr word_23E44+1, 26h ; '&' + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov ax, [si+2] + mov word_23E3E, ax + mov ax, [si+4] + mov word_23E40, ax + cmp byte ptr [si+11h], 0 + jnz short loc_1A0CF + mov byte_23E4E, 2 + mov byte_23E47, 0Ah + call sub_17730 + jmp short loc_1A0D2 +; --------------------------------------------------------------------------- + +loc_1A0CF: ; CODE XREF: sub_19FEF+CDj + call sub_19F87 + +loc_1A0D2: ; CODE XREF: sub_19FEF+DEj + mov byte ptr [si], 0 + +loc_1A0D5: ; CODE XREF: sub_19FEF+5Ej + ; sub_19FEF+89j ... + inc byte ptr [si+12h] + jmp short loc_1A13A +; --------------------------------------------------------------------------- + +loc_1A0DA: ; CODE XREF: sub_19FEF+4Dj + mov ax, [si+14h] + add [si+4], ax + mov byte_20E2C, 1 + mov word_20E32, 100h + mov word_20E34, 100h + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, [si+2] + mov word_20E2E, ax + mov ax, [si+4] + mov word_20E30, ax + call sub_158F5 + mov byte_20E2C, 0 + mov ax, [si+2] + mov word_220EE, ax + mov ax, [si+4] + mov word_220F0, ax + call sub_13A6E + jmp short loc_1A13A +; --------------------------------------------------------------------------- + +loc_1A120: ; CODE XREF: sub_19FEF+43j + cmp byte ptr [si], 2 + jnz short loc_1A12A + call sub_1A1A7 + jmp short loc_1A13A +; --------------------------------------------------------------------------- + +loc_1A12A: ; CODE XREF: sub_19FEF+134j + cmp byte ptr [si], 1Ch + ja short loc_1A133 + inc byte ptr [si] + jmp short loc_1A13A +; --------------------------------------------------------------------------- + +loc_1A133: ; CODE XREF: sub_19FEF+13Ej + mov byte ptr [si+1], 0 + mov byte ptr [si], 1 + +loc_1A13A: ; CODE XREF: sub_19FEF+E9j + ; sub_19FEF+12Fj ... + inc byte ptr [si+1] + +loc_1A13D: ; CODE XREF: sub_19FEF+38j + inc di + add word_2028A, 20h ; ' ' + +loc_1A143: ; CODE XREF: sub_19FEF+2Ej + cmp di, 0Ah + jl loc_1A020 + pop di + pop si + leave + retf +sub_19FEF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A14E proc far ; DATA XREF: sub_AB84+31o sub_AB84+DCo + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov word_2028A, ax + xor si, si + jmp short loc_1A176 +; --------------------------------------------------------------------------- + +loc_1A164: ; CODE XREF: sub_1A14E+2Bj + mov bx, word_2028A + cmp byte ptr [bx], 0 + jz short loc_1A170 + call sub_19E2A + +loc_1A170: ; CODE XREF: sub_1A14E+1Dj + inc si + add word_2028A, 20h ; ' ' + +loc_1A176: ; CODE XREF: sub_1A14E+14j + cmp si, 0Ah + jl short loc_1A164 + pop si + pop bp + retf +sub_1A14E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A17E proc far ; CODE XREF: sub_1816D+4CP + ; sub_181C3+105P + +arg_0 = byte 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_4] + mov di, [bp+arg_2] + cmp [bp+arg_0], 0 + jnz short loc_1A199 + push si + push di + push 0 + call dword_1FE6C + jmp short loc_1A1A1 +; --------------------------------------------------------------------------- + +loc_1A199: ; CODE XREF: sub_1A17E+Fj + push si + push di + push 1 + call dword_1FE78 + +loc_1A1A1: ; CODE XREF: sub_1A17E+19j + pop di + pop si + pop bp + retf 6 +sub_1A17E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A1A7 proc near ; CODE XREF: sub_19260+BDp + ; sub_19260+EDp ... + push bp + mov bp, sp + push si + mov si, word_2028A + mov dx, [si+2] + add dx, [si+6] + mov bx, word_2028A + cmp byte ptr [bx+10h], 0 + jnz short loc_1A1DA + cmp [si+0Ch], dx + jg short loc_1A1DF + +loc_1A1C4: ; CODE XREF: sub_1A1A7+36j + mov ax, [si+0Ah] + mov [si+2], ax + mov byte ptr [si], 3 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [si+10h], al + mov al, 1 + jmp short loc_1A1EA +; --------------------------------------------------------------------------- + +loc_1A1DA: ; CODE XREF: sub_1A1A7+16j + cmp [si+0Ch], dx + jge short loc_1A1C4 + +loc_1A1DF: ; CODE XREF: sub_1A1A7+1Bj + mov [si+2], dx + mov ax, [si+8] + add [si+4], ax + mov al, 0 + +loc_1A1EA: ; CODE XREF: sub_1A1A7+31j + pop si + pop bp + retn +sub_1A1A7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A1ED proc near ; CODE XREF: sub_18FEA+38p + ; sub_18FEA+5Ap ... + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +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 + push si + push di + mov di, [bp+arg_6] + mov si, word_2028A + mov byte ptr [si], 2 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_A] + mov [si+2], ax + mov ax, [bp+arg_8] + mov [si+4], ax + mov al, [bp+arg_2] + mov [si+10h], al + push [bp+arg_A] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+arg_A], ax + mov [si+0Ah], di + push di + mov al, [bp+arg_2] + mov ah, 0 + mov dx, 1 + sub dx, ax + push dx + call sub_A2D0 + mov di, ax + mov ax, [bp+arg_A] + shl ax, 4 + push ax + push [bp+arg_8] + mov ax, di + shl ax, 4 + push ax + push [bp+arg_4] + push 0 + push ds + lea ax, [si+6] + push ax + push ds + lea ax, [si+8] + push ax + mov al, byte_23AF8 + mov ah, 0 + mov bx, 4 + cwd + idiv bx + add ax, [bp+arg_0] + push ax + call sub_E9C0 + push di + mov al, [bp+arg_2] + mov ah, 0 + push ax + call sub_A2F2 + mov [si+0Ch], ax + pop di + pop si + pop bp + retn 0Ch +sub_1A1ED endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A27E proc far ; DATA XREF: sub_A524+19o sub_A524+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A2C3 +; --------------------------------------------------------------------------- + +loc_1A294: ; CODE XREF: sub_1A27E+48j + cmp byte ptr [si], 0 + jnz short loc_1A2BF + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1200h + call sub_13A50 + push ax + push 7FFh + call sub_13A36 + push ax + push [bp+arg_0] + push 5Ah ; 'Z' + call sub_1A1ED + jmp short loc_1A2C8 +; --------------------------------------------------------------------------- + +loc_1A2BF: ; CODE XREF: sub_1A27E+19j + inc di + add si, 20h ; ' ' + +loc_1A2C3: ; CODE XREF: sub_1A27E+14j + cmp di, 8 + jl short loc_1A294 + +loc_1A2C8: ; CODE XREF: sub_1A27E+3Fj + pop di + pop si + pop bp + retf 6 +sub_1A27E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A2CE proc far ; CODE XREF: sub_10E16+199P + +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 al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A31F +; --------------------------------------------------------------------------- + +loc_1A2E4: ; CODE XREF: sub_1A2CE+54j + cmp byte ptr [si], 0 + jnz short loc_1A31B + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_4] + mov [si+2], ax + mov ax, [bp+arg_2] + mov [si+4], ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [si+10h], al + push ds + lea ax, [si+6] + push ax + push ds + lea ax, [si+8] + push ax + push [bp+arg_0] + push 50h ; 'P' + call sub_E97A + jmp short loc_1A324 +; --------------------------------------------------------------------------- + +loc_1A31B: ; CODE XREF: sub_1A2CE+19j + inc di + add si, 20h ; ' ' + +loc_1A31F: ; CODE XREF: sub_1A2CE+14j + cmp di, 8 + jl short loc_1A2E4 + +loc_1A324: ; CODE XREF: sub_1A2CE+4Bj + pop di + pop si + pop bp + retf 6 +sub_1A2CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A32A proc near ; CODE XREF: sub_1905A+1BFp + ; sub_1905A+1ECp ... + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + test [bp+arg_0], 1 + jnz short loc_1A372 + mov si, 1928h + mov al, [bp+arg_0] + mov ah, 0 + and ax, 7 + cmp ax, 3 + jg short loc_1A347 + add si, 4 + +loc_1A347: ; CODE XREF: sub_1A32A+18j + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + mov word_1F2E4, 0 + mov word_1F2E6, 27Fh + mov ax, [bp+arg_4] + add ax, 0FFF0h + push ax + mov ax, [bp+arg_2] + add ax, 0FFF0h + push ax + push si + call sub_F100 + +loc_1A372: ; CODE XREF: sub_1A32A+8j + pop si + pop bp + retn 6 +sub_1A32A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A377 proc near ; CODE XREF: sub_1905A+1CDp + ; sub_1905A+1FAp ... + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov word_1F2E4, 0 + +loc_1A381: + mov word_1F2E6, 27Fh + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + mov si, 1930h + mov al, [bp+arg_0] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov bx, 3 + cwd + idiv bx + imul dx, 6 + add si, dx + mov ax, [bp+arg_4] + add ax, 0FFE8h + push ax + mov ax, [bp+arg_2] + add ax, 0FFE8h + push ax + push si + call sub_F100 + pop si + pop bp + retn 6 +sub_1A377 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A3C4 proc near ; CODE XREF: sub_1A5F9+1Fp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_4], ax + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + cmp byte ptr word_1FE88, 1 + jnz short loc_1A40B + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1A417 +; --------------------------------------------------------------------------- + +loc_1A40B: ; CODE XREF: sub_1A3C4+37j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1A417: ; CODE XREF: sub_1A3C4+45j + cmp byte ptr [si], 1 + jnz short loc_1A46F + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov di, ax + mov al, [si+1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov [bp+var_5], al + mov ah, 0 + and ax, 3 + cmp ax, 1 + jnz short loc_1A443 + add di, 6 + jmp short loc_1A459 +; --------------------------------------------------------------------------- + +loc_1A443: ; CODE XREF: sub_1A3C4+78j + test [bp+var_5], 3 + jz short loc_1A459 + mov al, [bp+var_5] + mov ah, 0 + and ax, 1 + imul ax, 6 + add ax, 780h + add di, ax + +loc_1A459: ; CODE XREF: sub_1A3C4+7Dj + ; sub_1A3C4+83j + mov ax, [bp+var_2] + add ax, 0FFE8h + push ax + mov ax, [bp+var_4] + add ax, 0FFE8h + push ax + push di + call sub_F100 + jmp short loc_1A48D +; --------------------------------------------------------------------------- + +loc_1A46F: ; CODE XREF: sub_1A3C4+56j + cmp byte ptr [si], 2 + jnz short loc_1A482 + push [bp+var_2] + push [bp+var_4] + push word ptr [si+1] + call sub_1A32A + jmp short loc_1A48D +; --------------------------------------------------------------------------- + +loc_1A482: ; CODE XREF: sub_1A3C4+AEj + push [bp+var_2] + push [bp+var_4] + push word ptr [si] + call sub_1A377 + +loc_1A48D: ; CODE XREF: sub_1A3C4+A9j + ; sub_1A3C4+BCj + pop di + pop si + leave + retn +sub_1A3C4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A491 proc near ; CODE XREF: sub_1A4E0+A5p + ; sub_1B105+F2p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_220EE, ax + mov ax, [bp+arg_0] + mov word_220F0, ax + mov word_220F2, 8 + mov word_220F4, 10h + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte_220FA, al + call sub_13A6E + sub word_220EE, 0C0h ; 'À' + mov word_220F2, 4 + mov word_220F4, 8 + call sub_13A6E + add word_220EE, 180h + call sub_13A6E + pop bp + retn 4 +sub_1A491 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A4E0 proc far ; DATA XREF: sub_A524+25o sub_A524+D0o + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov byte_20E2C, 1 + mov word_20E32, 100h + mov word_20E34, 100h + mov al, 1 + sub al, byte ptr word_1FE88 + mov byte ptr word_20E3A, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp loc_1A5E9 +; --------------------------------------------------------------------------- + +loc_1A512: ; CODE XREF: sub_1A4E0+10Cj + cmp byte ptr [si], 0 + jz loc_1A5E5 + cmp byte ptr [si], 1 + jnz short loc_1A58A + mov ax, [si+6] + add [si+2], ax + cmp word ptr [si+2], 0 + jle short loc_1A531 + cmp word ptr [si+2], 1200h + jl short loc_1A542 + +loc_1A531: ; CODE XREF: sub_1A4E0+48j + mov dx, 0FFFFh + mov ax, [si+6] + imul dx + mov [si+6], ax + mov ax, [si+6] + add [si+2], ax + +loc_1A542: ; CODE XREF: sub_1A4E0+4Fj + mov ax, [si+8] + add [si+4], ax + cmp word ptr [si+4], 0FE80h + jge short loc_1A55F + mov dx, 0FFFFh + mov ax, [si+8] + imul dx + mov [si+8], ax + mov word ptr [si+4], 0FE80h + +loc_1A55F: ; CODE XREF: sub_1A4E0+6Dj + cmp word ptr [si+4], 1700h + jl short loc_1A56B + mov byte ptr [si], 0 + jmp short loc_1A5E5 +; --------------------------------------------------------------------------- + +loc_1A56B: ; CODE XREF: sub_1A4E0+84j + inc word ptr [si+8] + mov ax, [si+2] + mov word_20E2E, ax + mov ax, [si+4] + mov word_20E30, ax + call sub_158F5 + push word ptr [si+2] + push word ptr [si+4] + call sub_1A491 + jmp short loc_1A5E5 +; --------------------------------------------------------------------------- + +loc_1A58A: ; CODE XREF: sub_1A4E0+3Cj + cmp byte ptr [si], 2 + jnz short loc_1A5D9 + mov word_2028A, si + call sub_1A1A7 + or al, al + jz short loc_1A5E5 + push 1Fh + call sub_13A36 + mov [bp+var_1], al + push 1 + call sub_13A36 + imul ax, 60h + add al, [bp+var_1] + add al, 80h ; '€' + mov [bp+var_1], al + push ds + lea ax, [si+6] + push ax + push ds + lea ax, [si+8] + push ax + push word ptr [bp+var_1] + mov al, byte_23AF8 + mov ah, 0 + mov bx, 8 + cwd + idiv bx + add ax, 32h ; '2' + push ax + call sub_E97A + jmp short loc_1A5E5 +; --------------------------------------------------------------------------- + +loc_1A5D9: ; CODE XREF: sub_1A4E0+ADj + cmp byte ptr [si], 14h + ja short loc_1A5E2 + inc byte ptr [si] + jmp short loc_1A5E5 +; --------------------------------------------------------------------------- + +loc_1A5E2: ; CODE XREF: sub_1A4E0+FCj + mov byte ptr [si], 1 + +loc_1A5E5: ; CODE XREF: sub_1A4E0+35j + ; sub_1A4E0+89j ... + inc di + add si, 20h ; ' ' + +loc_1A5E9: ; CODE XREF: sub_1A4E0+2Fj + cmp di, 8 + jl loc_1A512 + mov byte_20E2C, 0 + pop di + pop si + leave + retf +sub_1A4E0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A5F9 proc far ; DATA XREF: sub_A524+31o sub_A524+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A622 +; --------------------------------------------------------------------------- + +loc_1A60F: ; CODE XREF: sub_1A5F9+2Cj + cmp byte ptr [si], 0 + jz short loc_1A61E + mov word_2028A, si + call sub_1A3C4 + inc byte ptr [si+1] + +loc_1A61E: ; CODE XREF: sub_1A5F9+19j + inc di + add si, 20h ; ' ' + +loc_1A622: ; CODE XREF: sub_1A5F9+14j + cmp di, 8 + jl short loc_1A60F + pop di + pop si + pop bp + retf +sub_1A5F9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A62B proc far ; DATA XREF: sub_A6BC+19o sub_A6BC+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A679 +; --------------------------------------------------------------------------- + +loc_1A641: ; CODE XREF: sub_1A62B+51j + cmp byte ptr [si], 0 + jnz short loc_1A675 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1200h + call sub_13A50 + push ax + push 1200h + call sub_13A50 + push ax + push [bp+arg_0] + push 5Ah ; 'Z' + call sub_1A1ED + mov word ptr [si+0Eh], 0 + mov byte ptr [si+1], 3 + jmp short loc_1A67E +; --------------------------------------------------------------------------- + +loc_1A675: ; CODE XREF: sub_1A62B+19j + inc di + add si, 20h ; ' ' + +loc_1A679: ; CODE XREF: sub_1A62B+14j + cmp di, 6 + jl short loc_1A641 + +loc_1A67E: ; CODE XREF: sub_1A62B+48j + pop di + pop si + pop bp + retf 6 +sub_1A62B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A684 proc near ; CODE XREF: sub_1A8D3+1Fp + +var_5 = word ptr -5 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_5+1], ax + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + cmp byte ptr word_1FE88, 1 + jnz short loc_1A6CB + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1A6D7 +; --------------------------------------------------------------------------- + +loc_1A6CB: ; CODE XREF: sub_1A684+37j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1A6D7: ; CODE XREF: sub_1A684+45j + mov al, [si+0Eh] + mov byte ptr [bp+var_5], al + cmp byte ptr [si], 1 + jnz short loc_1A723 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov di, ax + cmp byte ptr [si+1], 0 + jnz short loc_1A6F8 + add di, 786h + jmp short loc_1A70D +; --------------------------------------------------------------------------- + +loc_1A6F8: ; CODE XREF: sub_1A684+6Cj + cmp byte ptr [si+1], 1 + jnz short loc_1A704 + add di, 780h + jmp short loc_1A70D +; --------------------------------------------------------------------------- + +loc_1A704: ; CODE XREF: sub_1A684+78j + cmp byte ptr [si+1], 2 + jnz short loc_1A70D + add di, 6 + +loc_1A70D: ; CODE XREF: sub_1A684+72j + ; sub_1A684+7Ej ... + mov ax, [bp+var_2] + add ax, 0FFE8h + push ax + mov ax, [bp+var_5+1] + add ax, 0FFE8h + push ax + push di + call sub_F100 + jmp short loc_1A741 +; --------------------------------------------------------------------------- + +loc_1A723: ; CODE XREF: sub_1A684+5Cj + cmp byte ptr [si], 2 + jnz short loc_1A736 + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A32A + jmp short loc_1A741 +; --------------------------------------------------------------------------- + +loc_1A736: ; CODE XREF: sub_1A684+A2j + push [bp+var_2] + push [bp+var_5+1] + push word ptr [si] + call sub_1A377 + +loc_1A741: ; CODE XREF: sub_1A684+9Dj + ; sub_1A684+B0j + pop di + pop si + leave + retn +sub_1A684 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A745 proc far ; DATA XREF: sub_A6BC+25o sub_A6BC+D0o + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_7], al + mov word_220F2, 8 + mov word_220F4, 8 + mov byte_220FA, al + mov [bp+var_2], 0 + jmp loc_1A8C7 +; --------------------------------------------------------------------------- + +loc_1A778: ; CODE XREF: sub_1A745+186j + cmp byte ptr [si], 0 + jz loc_1A8C1 + cmp byte ptr [si], 1 + jnz loc_1A87E + mov ax, [si+2] + add ax, [si+6] + mov di, ax + mov ax, [si+4] + add ax, [si+8] + mov [bp+var_4], ax + or di, di + jle short loc_1A7A1 + cmp di, 1200h + jl short loc_1A7B4 + +loc_1A7A1: ; CODE XREF: sub_1A745+54j + cmp byte ptr [si+1], 0 + jz short loc_1A7E2 + dec byte ptr [si+1] + mov ax, [si+6] + neg ax + mov [si+6], ax + jmp short loc_1A7D2 +; --------------------------------------------------------------------------- + +loc_1A7B4: ; CODE XREF: sub_1A745+5Aj + cmp [bp+var_4], 0 + jle short loc_1A7C1 + cmp [bp+var_4], 1700h + jl short loc_1A7E8 + +loc_1A7C1: ; CODE XREF: sub_1A745+73j + cmp byte ptr [si+1], 0 + jz short loc_1A7E2 + dec byte ptr [si+1] + mov ax, [si+8] + neg ax + mov [si+8], ax + +loc_1A7D2: ; CODE XREF: sub_1A745+6Dj + push word ptr [si+8] + push word ptr [si+6] + call sub_1BD6 + mov [si+12h], al + jmp short loc_1A7F1 +; --------------------------------------------------------------------------- + +loc_1A7E2: ; CODE XREF: sub_1A745+60j + ; sub_1A745+80j + mov byte ptr [si], 0 + jmp loc_1A8C1 +; --------------------------------------------------------------------------- + +loc_1A7E8: ; CODE XREF: sub_1A745+7Aj + mov [si+2], di + mov ax, [bp+var_4] + mov [si+4], ax + +loc_1A7F1: ; CODE XREF: sub_1A745+9Bj + mov ax, [si+0Eh] + mov [bp+var_6], ax + cmp [bp+var_6], 10h + jl short loc_1A81C + cmp [bp+var_6], 20h ; ' ' + jge short loc_1A813 + mov al, [si+13h] + mov dl, byte ptr [bp+var_6] + and dl, 1 + add al, dl + mov [si+13h], al + jmp short loc_1A81C +; --------------------------------------------------------------------------- + +loc_1A813: ; CODE XREF: sub_1A745+BCj + cmp [bp+var_6], 50h ; 'P' + jge short loc_1A81C + inc byte ptr [si+13h] + +loc_1A81C: ; CODE XREF: sub_1A745+B6j + ; sub_1A745+CCj ... + cmp [bp+var_6], 50h ; 'P' + jge short loc_1A83A + push ds + lea ax, [si+6] + push ax + push ds + lea ax, [si+8] + push ax + push word ptr [si+12h] + mov al, [si+13h] + mov ah, 0 + push ax + call sub_E97A + +loc_1A83A: ; CODE XREF: sub_1A745+DBj + mov byte_20E2C, 1 + mov word_20E32, 100h + mov word_20E34, 100h + mov al, [bp+var_7] + mov byte ptr word_20E3A, al + mov word_20E2E, di + mov ax, [bp+var_4] + mov word_20E30, ax + call sub_158F5 + or al, al + jz short loc_1A868 + sub word ptr [si+8], 8 + +loc_1A868: ; CODE XREF: sub_1A745+11Dj + mov byte_20E2C, 0 + mov word_220EE, di + mov ax, [bp+var_4] + mov word_220F0, ax + call sub_13A6E + jmp short loc_1A8BE +; --------------------------------------------------------------------------- + +loc_1A87E: ; CODE XREF: sub_1A745+3Dj + cmp byte ptr [si], 2 + jnz short loc_1A8A6 + mov word_2028A, si + call sub_1A1A7 + or al, al + jz short loc_1A8BE + call sub_13A24 + mov [si+12h], al + mov byte ptr [si+13h], 0 + mov word ptr [si+6], 0 + mov word ptr [si+8], 0 + jmp short loc_1A8C1 +; --------------------------------------------------------------------------- + +loc_1A8A6: ; CODE XREF: sub_1A745+13Cj + cmp byte ptr [si], 1Ch + ja short loc_1A8AF + inc byte ptr [si] + jmp short loc_1A8BE +; --------------------------------------------------------------------------- + +loc_1A8AF: ; CODE XREF: sub_1A745+164j + mov word ptr [si+0Eh], 0 + mov byte ptr [si], 1 + push 0Ah + call sub_EC3A + +loc_1A8BE: ; CODE XREF: sub_1A745+137j + ; sub_1A745+147j ... + inc word ptr [si+0Eh] + +loc_1A8C1: ; CODE XREF: sub_1A745+36j + ; sub_1A745+A0j ... + inc [bp+var_2] + add si, 20h ; ' ' + +loc_1A8C7: ; CODE XREF: sub_1A745+30j + cmp [bp+var_2], 6 + jl loc_1A778 + pop di + pop si + leave + retf +sub_1A745 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A8D3 proc far ; DATA XREF: sub_A6BC+31o sub_A6BC+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A8F9 +; --------------------------------------------------------------------------- + +loc_1A8E9: ; CODE XREF: sub_1A8D3+29j + cmp byte ptr [si], 0 + jz short loc_1A8F5 + mov word_2028A, si + call sub_1A684 + +loc_1A8F5: ; CODE XREF: sub_1A8D3+19j + inc di + add si, 20h ; ' ' + +loc_1A8F9: ; CODE XREF: sub_1A8D3+14j + cmp di, 6 + jl short loc_1A8E9 + pop di + pop si + pop bp + retf +sub_1A8D3 endp + +; --------------------------------------------------------------------------- + +loc_1A902: ; DATA XREF: sub_B1E4+19o sub_B1E4+C4o + push bp + mov bp, sp + push si + push di + mov al, [bp+6] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1A954 +; --------------------------------------------------------------------------- + +loc_1A918: ; CODE XREF: seg006:1977j + cmp byte ptr [si], 0 + jnz short loc_1A950 + mov word_2028A, si + push word ptr [bp+0Ah] + push word ptr [bp+8] + push 1200h + call sub_13A50 + push ax + push 1000h + call sub_13A50 + add ax, 600h + push ax + push word ptr [bp+6] + push 46h ; 'F' + call sub_1A1ED + mov word ptr [si+14h], 0 + mov word ptr [si+0Eh], 60h ; '`' + jmp short loc_1A959 +; --------------------------------------------------------------------------- + +loc_1A950: ; CODE XREF: seg006:193Bj + inc di + add si, 20h ; ' ' + +loc_1A954: ; CODE XREF: seg006:1936j + cmp di, 8 + jl short loc_1A918 + +loc_1A959: ; CODE XREF: seg006:196Ej + pop di + pop si + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A95F proc far ; CODE XREF: sub_105B5+8BP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 2A2Ah + mov si, ax + mov dx, 8 + jmp short loc_1A9A6 +; --------------------------------------------------------------------------- + +loc_1A975: ; CODE XREF: sub_1A95F+4Aj + cmp byte ptr [si], 0 + jnz short loc_1A9A2 + mov byte ptr [si], 3 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_2] + mov [si+2], ax + mov ax, [bp+arg_0] + mov [si+4], ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [si+10h], al + mov word ptr [si+14h], 0 + mov word ptr [si+0Eh], 20h ; ' ' + jmp short loc_1A9AB +; --------------------------------------------------------------------------- + +loc_1A9A2: ; CODE XREF: sub_1A95F+19j + inc dx + add si, 20h ; ' ' + +loc_1A9A6: ; CODE XREF: sub_1A95F+14j + cmp dx, 10h + jl short loc_1A975 + +loc_1A9AB: ; CODE XREF: sub_1A95F+41j + pop si + pop bp + retf 4 +sub_1A95F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A9B0 proc near ; CODE XREF: sub_1AF72+1Fp + +var_A = word ptr -0Ah +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + push di + mov ax, word_2028A + mov [bp+var_A], ax + mov bx, [bp+var_A] + push word ptr [bx+2] + mov al, [bx+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov di, ax + mov bx, [bp+var_A] + mov ax, [bx+4] + sar ax, 4 + add ax, 10h + mov [bp+var_6], ax + cmp byte ptr word_1FE88, 1 + jnz short loc_1A9F3 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1A9FF +; --------------------------------------------------------------------------- + +loc_1A9F3: ; CODE XREF: sub_1A9B0+33j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1A9FF: ; CODE XREF: sub_1A9B0+41j + mov bx, [bp+var_A] + cmp byte ptr [bx], 1 + jnz loc_1AE09 + cmp byte ptr word_1FE88, 1 + jnz short loc_1AA1B + push large 100008h + push 12Fh + jmp short loc_1AA24 +; --------------------------------------------------------------------------- + +loc_1AA1B: ; CODE XREF: sub_1A9B0+5Ej + push large 1500008h + push 26Fh + +loc_1AA24: ; CODE XREF: sub_1A9B0+69j + push 0BFh ; '¿' + call sub_C40 + mov bx, [bp+var_A] + cmp byte ptr [bx+1], 10h + ja loc_1AB7B + call sub_71A + push large 0C00006h + call sub_F5C + mov bx, [bp+var_A] + mov al, [bx+1] + mov [bp+var_7], al + mov ax, [bp+var_6] + cwd + sub ax, dx + sar ax, 1 + mov si, ax + mov al, [bp+var_7] + cbw + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_8], al + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFE0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+20h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFD8h + push ax + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFE0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+20h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + lea dx, [si+34h] + sub dx, ax + push dx + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFE0h + push ax + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFD8h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+34h] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + lea dx, [di+20h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFD8h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+34h] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFB0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+50h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF0h + push ax + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFB0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+50h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + lea dx, [si+10h] + sub dx, ax + push dx + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFB0h + push ax + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF0h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+10h] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + lea dx, [di+50h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF0h + push ax + mov al, [bp+var_8] + cbw + mov dx, si + add dx, 10h + jmp loc_1ACCF +; --------------------------------------------------------------------------- + +loc_1AB7B: ; CODE XREF: sub_1A9B0+83j + call sub_71A + mov bx, [bp+var_A] + mov al, [bx+0Eh] + add al, 0F8h ; 'ø' + sub al, [bx+1] + mov [bp+var_7], al + cmp [bp+var_7], 10h + jle short loc_1AB9C + push large 0C00005h + jmp short loc_1ABA2 +; --------------------------------------------------------------------------- + +loc_1AB9C: ; CODE XREF: sub_1A9B0+1E2j + push large 0C00006h + +loc_1ABA2: ; CODE XREF: sub_1A9B0+1EAj + call sub_F5C + mov ax, [bp+var_6] + cwd + sub ax, dx + sar ax, 1 + mov si, ax + mov al, [bp+var_7] + cbw + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_8], al + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFF0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+10h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFE0h + push ax + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFF0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+10h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + lea dx, [si+2Ch] + sub dx, ax + push dx + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFF0h + push ax + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFE0h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+2Ch] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + lea dx, [di+10h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFE0h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+2Ch] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFC0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+40h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF8h + push ax + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFC0h + push ax + mov al, [bp+var_7] + cbw + lea dx, [di+40h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + lea dx, [si+8] + sub dx, ax + push dx + call sub_D38 + mov al, [bp+var_7] + cbw + add ax, di + add ax, 0FFC0h + push ax + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF8h + push ax + mov al, [bp+var_8] + cbw + lea dx, [si+8] + sub dx, ax + push dx + call sub_109A + mov al, [bp+var_7] + cbw + lea dx, [di+40h] + sub dx, ax + push dx + mov al, [bp+var_8] + cbw + add ax, si + add ax, 0FFF8h + push ax + mov al, [bp+var_8] + cbw + mov dx, si + add dx, 8 + +loc_1ACCF: ; CODE XREF: sub_1A9B0+1C8j + sub dx, ax + push dx + call sub_109A + call sub_F86 + call sub_704 + push large 0 + push large 27F00C7h + call sub_C40 + sub di, 10h + mov byte_1F2EA, 2 + mov word_1F2E8, 8 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov [bp+var_2], ax + mov bx, [bp+var_A] + mov ax, [bp+var_6] + sub ax, [bx+14h] + mov si, ax + push di + push ax + push [bp+var_2] + jmp short loc_1AD23 +; --------------------------------------------------------------------------- + +loc_1AD1A: ; CODE XREF: sub_1A9B0+383j + push di + push si + mov ax, [bp+var_2] + add ax, 502h + push ax + +loc_1AD23: ; CODE XREF: sub_1A9B0+368j + call sub_F100 + add si, 10h + mov ax, [bp+var_6] + add ax, 0FFF0h + cmp ax, si + jg short loc_1AD1A + mov bx, [bp+var_A] + mov ax, [bx+14h] + cwd + sub ax, dx + sar ax, 1 + mov dx, [bx+14h] + add dx, [bp+var_6] + add ax, dx + add ax, 0FFF0h + mov si, ax + push di + push ax + mov ax, [bp+var_2] + add ax, 280h + jmp short loc_1AD5F +; --------------------------------------------------------------------------- + +loc_1AD57: ; CODE XREF: sub_1A9B0+3BBj + push di + push si + mov ax, [bp+var_2] + add ax, 502h + +loc_1AD5F: ; CODE XREF: sub_1A9B0+3A5j + push ax + call sub_F100 + sub si, 10h + cmp si, [bp+var_6] + jg short loc_1AD57 + mov byte_1F2EA, 1 + mov word_1F2E8, 10h + sub [bp+var_6], 10h + mov bx, [bp+var_A] + mov ax, di + sub ax, [bx+14h] + add ax, 10h + mov [bp+var_4], ax + push ax + push [bp+var_6] + push [bp+var_2] + jmp short loc_1ADA0 +; --------------------------------------------------------------------------- + +loc_1AD93: ; CODE XREF: sub_1A9B0+3FCj + push [bp+var_4] + push [bp+var_6] + mov ax, [bp+var_2] + add ax, 500h + push ax + +loc_1ADA0: ; CODE XREF: sub_1A9B0+3E1j + call sub_F100 + add [bp+var_4], 10h + cmp [bp+var_4], di + jl short loc_1AD93 + mov bx, [bp+var_A] + mov ax, [bx+14h] + add ax, di + mov [bp+var_4], ax + push ax + push [bp+var_6] + mov ax, [bp+var_2] + add ax, 2 + jmp short loc_1ADD1 +; --------------------------------------------------------------------------- + +loc_1ADC5: ; CODE XREF: sub_1A9B0+431j + push [bp+var_4] + push [bp+var_6] + mov ax, [bp+var_2] + add ax, 500h + +loc_1ADD1: ; CODE XREF: sub_1A9B0+413j + push ax + call sub_F100 + sub [bp+var_4], 10h + lea ax, [di+10h] + cmp ax, [bp+var_4] + jl short loc_1ADC5 + mov bx, [bp+var_A] + cmp word ptr [bx+14h], 18h + jle short loc_1AE2A + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + push di + push [bp+var_6] + mov ax, [bp+var_2] + add ax, 4 + push ax + call sub_F100 + jmp short loc_1AE2A +; --------------------------------------------------------------------------- + +loc_1AE09: ; CODE XREF: sub_1A9B0+55j + mov bx, [bp+var_A] + cmp byte ptr [bx], 2 + jnz short loc_1AE1D + push di + push [bp+var_6] + push word ptr [bx+1] + call sub_1A32A + jmp short loc_1AE2A +; --------------------------------------------------------------------------- + +loc_1AE1D: ; CODE XREF: sub_1A9B0+45Fj + push di + push [bp+var_6] + mov bx, [bp+var_A] + push word ptr [bx+1] + call sub_1A377 + +loc_1AE2A: ; CODE XREF: sub_1A9B0+43Aj + ; sub_1A9B0+457j ... + pop di + pop si + leave + retn +sub_1A9B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AE2E proc far ; DATA XREF: sub_B1E4+25o sub_B1E4+D0o + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte_220FA, al + xor di, di + jmp loc_1AF67 +; --------------------------------------------------------------------------- + +loc_1AE52: ; CODE XREF: sub_1AE2E+13Cj + cmp byte ptr [si], 0 + jz loc_1AF63 + cmp byte ptr [si], 1 + jnz loc_1AF32 + cmp byte ptr [si+1], 8 + ja short loc_1AE6C + add word ptr [si+14h], 6 + jmp short loc_1AE9D +; --------------------------------------------------------------------------- + +loc_1AE6C: ; CODE XREF: sub_1AE2E+36j + mov al, [si+1] + mov ah, 0 + cmp ax, [si+0Eh] + jl short loc_1AE8B + mov al, [si+1] + mov ah, 0 + mov dx, [si+0Eh] + add dx, 8 + cmp ax, dx + jge short loc_1AE8B + sub word ptr [si+14h], 6 + jmp short loc_1AE9D +; --------------------------------------------------------------------------- + +loc_1AE8B: ; CODE XREF: sub_1AE2E+46j + ; sub_1AE2E+55j + mov al, [si+1] + mov ah, 0 + mov dx, [si+0Eh] + add dx, 8 + cmp ax, dx + jl short loc_1AE9D + mov byte ptr [si], 0 + +loc_1AE9D: ; CODE XREF: sub_1AE2E+3Cj + ; sub_1AE2E+5Bj ... + mov byte_20E2C, 1 + mov al, [bp+var_1] + mov byte ptr word_20E3A, al + mov ax, [si+14h] + shl ax, 3 + mov word_20E32, ax + mov word_20E34, 40h ; '@' + mov ax, [si+2] + mov word_20E2E, ax + mov ax, [si+4] + mov word_20E30, ax + call sub_158F5 + mov word_20E32, 40h ; '@' + mov ax, [si+14h] + shl ax, 3 + mov word_20E34, ax + mov ax, [si+2] + mov word_20E2E, ax + mov ax, [si+4] + mov word_20E30, ax + call sub_158F5 + mov byte_20E2C, 0 + mov ax, [si+14h] + mov word_220F2, ax + mov word_220F4, 8 + mov ax, [si+2] + mov word_220EE, ax + mov ax, [si+4] + mov word_220F0, ax + call sub_13A6E + mov ax, [si+14h] + shl ax, 2 + add ax, [si+4] + mov word_220F0, ax + mov word_220F2, 8 + mov ax, [si+14h] + mov bx, 4 + cwd + idiv bx + add ax, [si+14h] + mov word_220F4, ax + call sub_13A6E + jmp short loc_1AF60 +; --------------------------------------------------------------------------- + +loc_1AF32: ; CODE XREF: sub_1AE2E+2Ej + cmp byte ptr [si], 2 + jnz short loc_1AF44 + mov word_2028A, si + call sub_1A1A7 + or al, al + jz short loc_1AF60 + jmp short loc_1AF63 +; --------------------------------------------------------------------------- + +loc_1AF44: ; CODE XREF: sub_1AE2E+107j + cmp byte ptr [si], 28h ; '(' + ja short loc_1AF4D + inc byte ptr [si] + jmp short loc_1AF60 +; --------------------------------------------------------------------------- + +loc_1AF4D: ; CODE XREF: sub_1AE2E+119j + mov word ptr [si+14h], 10h + mov byte ptr [si+1], 0 + mov byte ptr [si], 1 + push 7 + call sub_EC3A + +loc_1AF60: ; CODE XREF: sub_1AE2E+102j + ; sub_1AE2E+112j ... + inc byte ptr [si+1] + +loc_1AF63: ; CODE XREF: sub_1AE2E+27j + ; sub_1AE2E+114j + inc di + add si, 20h ; ' ' + +loc_1AF67: ; CODE XREF: sub_1AE2E+21j + cmp di, 10h + jl loc_1AE52 + pop di + pop si + leave + retf +sub_1AE2E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AF72 proc far ; DATA XREF: sub_B1E4+31o sub_B1E4+DCo + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov word_2028A, ax + xor si, si + jmp short loc_1AF9A +; --------------------------------------------------------------------------- + +loc_1AF88: ; CODE XREF: sub_1AF72+2Bj + mov bx, word_2028A + cmp byte ptr [bx], 0 + jz short loc_1AF94 + call sub_1A9B0 + +loc_1AF94: ; CODE XREF: sub_1AF72+1Dj + inc si + add word_2028A, 20h ; ' ' + +loc_1AF9A: ; CODE XREF: sub_1AF72+14j + cmp si, 10h + jl short loc_1AF88 + pop si + pop bp + retf +sub_1AF72 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AFA2 proc far ; DATA XREF: sub_AEB4+19o sub_AEB4+C4o + +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 al, byte ptr [bp+arg_0] + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1AFFB +; --------------------------------------------------------------------------- + +loc_1AFB8: ; CODE XREF: sub_1AFA2+5Cj + cmp byte ptr [si], 0 + jnz short loc_1AFF7 + mov word_2028A, si + push [bp+arg_4] + push [bp+arg_2] + push 1200h + call sub_13A50 + push ax + push 100h + push [bp+arg_0] + push 64h ; 'd' + call sub_1A1ED + push 1 + call sub_13A36 + mov [si+17h], al + mov byte ptr [si+12h], 40h ; '@' + push 0Fh + call sub_13A36 + add al, 20h ; ' ' + mov [si+13h], al + jmp short loc_1B000 +; --------------------------------------------------------------------------- + +loc_1AFF7: ; CODE XREF: sub_1AFA2+19j + inc di + add si, 20h ; ' ' + +loc_1AFFB: ; CODE XREF: sub_1AFA2+14j + cmp di, 8 + jl short loc_1AFB8 + +loc_1B000: ; CODE XREF: sub_1AFA2+53j + pop di + pop si + pop bp + retf 6 +sub_1AFA2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B006 proc far ; CODE XREF: sub_134AA+82P + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor dx, dx + jmp short loc_1B050 +; --------------------------------------------------------------------------- + +loc_1B01B: ; CODE XREF: sub_1B006+4Dj + cmp byte ptr [si], 0 + jnz short loc_1B04C + mov byte ptr [si], 1 + mov byte ptr [si+17h], 1 + mov byte ptr [si+1], 40h ; '@' + mov ax, [bp+arg_4] + mov [si+2], ax + mov ax, [bp+arg_2] + mov [si+4], ax + mov al, [bp+arg_0] + mov [si+12h], al + mov byte ptr [si+13h], 20h ; ' ' + mov al, 1 + sub al, byte ptr word_1FE88 + mov [si+10h], al + jmp short loc_1B055 +; --------------------------------------------------------------------------- + +loc_1B04C: ; CODE XREF: sub_1B006+18j + inc dx + add si, 20h ; ' ' + +loc_1B050: ; CODE XREF: sub_1B006+13j + cmp dx, 0Eh + jl short loc_1B01B + +loc_1B055: ; CODE XREF: sub_1B006+44j + pop si + pop bp + retf 6 +sub_1B006 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B05A proc near ; CODE XREF: sub_1B231+1Fp + +var_5 = word ptr -5 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, word_2028A + mov byte_1F2EA, 3 + mov word_1F2E8, 18h + push word ptr [si+2] + mov al, [si+10h] + mov ah, 0 + push ax + call sub_A2D0 + mov [bp+var_2], ax + mov ax, [si+4] + sar ax, 4 + add ax, 10h + mov [bp+var_5+1], ax + cmp byte ptr word_1FE88, 0 + jz short loc_1B0A1 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1B0AD +; --------------------------------------------------------------------------- + +loc_1B0A1: ; CODE XREF: sub_1B05A+37j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1B0AD: ; CODE XREF: sub_1B05A+45j + mov al, [si+1] + mov byte ptr [bp+var_5], al + cmp byte ptr [si], 1 + jnz short loc_1B0E2 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 780h + mov di, ax + test byte ptr [bp+var_5], 1 + jz short loc_1B0CC + add di, 780h + +loc_1B0CC: ; CODE XREF: sub_1B05A+6Cj + mov ax, [bp+var_2] + add ax, 0FFE8h + push ax + mov ax, [bp+var_5+1] + add ax, 0FFE8h + push ax + push di + call sub_F100 + jmp short loc_1B101 +; --------------------------------------------------------------------------- + +loc_1B0E2: ; CODE XREF: sub_1B05A+5Cj + cmp byte ptr [si], 2 + jnz short loc_1B0F5 + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A32A + jmp short loc_1B101 +; --------------------------------------------------------------------------- + +loc_1B0F5: ; CODE XREF: sub_1B05A+8Bj + push [bp+var_2] + push [bp+var_5+1] + push [bp+var_5] + call sub_1A377 + +loc_1B101: ; CODE XREF: sub_1B05A+86j + ; sub_1B05A+99j + pop di + pop si + leave + retn +sub_1B05A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B105 proc far ; DATA XREF: sub_AEB4+25o sub_AEB4+D0o + +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_5], al + mov word_1F2EC, 0FE00h + mov word_1F2EE, 0FE00h + mov byte_20E2C, 1 + mov word_20E32, 100h + mov word_20E34, 100h + mov byte ptr word_20E3A, al + xor di, di + jmp loc_1B221 +; --------------------------------------------------------------------------- + +loc_1B146: ; CODE XREF: sub_1B105+11Fj + cmp byte ptr [si], 0 + jz loc_1B21D + cmp byte ptr [si], 1 + jnz loc_1B1FC + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_4] + push ax + push word ptr [si+12h] + mov al, [si+13h] + mov ah, 0 + push ax + call sub_E97A + mov ax, [bp+var_2] + add [si+2], ax + mov ax, [bp+var_4] + add [si+4], ax + cmp byte ptr [si+17h], 0 + jnz short loc_1B1CC + cmp byte ptr [si+1], 40h ; '@' + jb short loc_1B1CC + cmp byte ptr [si+1], 50h ; 'P' + ja short loc_1B1CC + mov al, [bp+var_5] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + sub ax, [si+4] + push ax + mov al, [bp+var_5] + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + sub ax, [si+2] + push ax + call sub_1BD6 + mov [bp+var_6], al + inc byte ptr [si+13h] + sub al, [si+12h] + mov [bp+var_7], al + cbw + mov bx, 8 + cwd + idiv bx + mov [bp+var_7], al + add [si+12h], al + +loc_1B1CC: ; CODE XREF: sub_1B105+77j + ; sub_1B105+7Dj ... + push word ptr [si+2] + push word ptr [si+4] + call sub_A310 + or al, al + jz short loc_1B1E0 + mov byte ptr [si], 0 + jmp short loc_1B21D +; --------------------------------------------------------------------------- + +loc_1B1E0: ; CODE XREF: sub_1B105+D4j + mov ax, [si+2] + mov word_20E2E, ax + mov ax, [si+4] + mov word_20E30, ax + call sub_158F5 + push word ptr [si+2] + push word ptr [si+4] + call sub_1A491 + jmp short loc_1B21A +; --------------------------------------------------------------------------- + +loc_1B1FC: ; CODE XREF: sub_1B105+4Bj + cmp byte ptr [si], 2 + jnz short loc_1B20A + mov word_2028A, si + call sub_1A1A7 + jmp short loc_1B21A +; --------------------------------------------------------------------------- + +loc_1B20A: ; CODE XREF: sub_1B105+FAj + cmp byte ptr [si], 1Ch + ja short loc_1B213 + inc byte ptr [si] + jmp short loc_1B21A +; --------------------------------------------------------------------------- + +loc_1B213: ; CODE XREF: sub_1B105+108j + mov byte ptr [si+1], 0 + mov byte ptr [si], 1 + +loc_1B21A: ; CODE XREF: sub_1B105+F5j + ; sub_1B105+103j ... + inc byte ptr [si+1] + +loc_1B21D: ; CODE XREF: sub_1B105+44j + ; sub_1B105+D9j + inc di + add si, 20h ; ' ' + +loc_1B221: ; CODE XREF: sub_1B105+3Ej + cmp di, 0Eh + jl loc_1B146 + mov byte_20E2C, 0 + pop di + pop si + leave + retf +sub_1B105 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B231 proc far ; DATA XREF: sub_AEB4+31o sub_AEB4+DCo + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 9 + add ax, 292Ah + mov si, ax + xor di, di + jmp short loc_1B257 +; --------------------------------------------------------------------------- + +loc_1B247: ; CODE XREF: sub_1B231+29j + cmp byte ptr [si], 0 + jz short loc_1B253 + mov word_2028A, si + call sub_1B05A + +loc_1B253: ; CODE XREF: sub_1B231+19j + inc di + add si, 20h ; ' ' + +loc_1B257: ; CODE XREF: sub_1B231+14j + cmp di, 0Eh + jl short loc_1B247 + pop di + pop si + pop bp + retf +sub_1B231 endp + +seg006 ends + +; =========================================================================== + +; Segment type: Pure code +seg007 segment byte public 'CODE' use16 + assume cs:seg007 + 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_1B260 proc far + push bp + mov bp, sp + push si + mov si, 1F5Ah + xor ax, ax + jmp short loc_1B26F +; --------------------------------------------------------------------------- + +loc_1B26B: ; CODE XREF: sub_1B260+12j + mov byte ptr [si], 0 + inc ax + +loc_1B26F: ; CODE XREF: sub_1B260+9j + cmp ax, 10h + jl short loc_1B26B + pop si + pop bp + retf +sub_1B260 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B277 proc far ; DATA XREF: sub_B04C+3Do sub_B04C+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 30h + add ax, 1F5Ah + mov si, ax + mov byte ptr [si+1], 0 + mov ax, [bp+arg_2] + mov [si+2], ax + mov ax, [bp+arg_0] + mov [si+4], ax + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov byte ptr [bx+65C8h], 0 + xor dx, dx + jmp short loc_1B2B8 +; --------------------------------------------------------------------------- + +loc_1B2AB: ; CODE XREF: sub_1B277+44j + mov al, dl + shl al, 2 + add al, 2 + mov [si], al + inc dx + add si, 6 + +loc_1B2B8: ; CODE XREF: sub_1B277+32j + cmp dx, 8 + jl short loc_1B2AB + pop si + pop bp + retf 4 +sub_1B277 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B2C2 proc far ; DATA XREF: sub_B04C+49o sub_B04C+F4o + push bp + mov bp, sp + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 30h + add ax, 1F84h + mov si, ax + cmp byte ptr [si], 0 + jz loc_1B35B + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + xor di, di + jmp short loc_1B356 +; --------------------------------------------------------------------------- + +loc_1B2EF: ; CODE XREF: sub_1B2C2+97j + cmp byte ptr [si], 0 + jz short loc_1B35B + cmp byte ptr [si], 1 + jz short loc_1B32B + dec byte ptr [si] + cmp byte ptr [si], 1 + jnz short loc_1B34F + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov [si+2], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov [si+4], ax + push 0Fh + call sub_EC3A + jmp short loc_1B34F +; --------------------------------------------------------------------------- + +loc_1B32B: ; CODE XREF: sub_1B2C2+35j + sub word ptr [si+4], 0E0h ; 'à' + cmp word ptr [si+4], 0FD00h + jge short loc_1B34F + or di, di + jnz short loc_1B34A + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov byte ptr [bx+65C8h], 1 + +loc_1B34A: ; CODE XREF: sub_1B2C2+77j + mov byte ptr [si], 0 + jmp short loc_1B352 +; --------------------------------------------------------------------------- + +loc_1B34F: ; CODE XREF: sub_1B2C2+3Cj + ; sub_1B2C2+67j ... + inc byte ptr [si+1] + +loc_1B352: ; CODE XREF: sub_1B2C2+8Bj + inc di + sub si, 6 + +loc_1B356: ; CODE XREF: sub_1B2C2+2Bj + cmp di, 8 + jl short loc_1B2EF + +loc_1B35B: ; CODE XREF: sub_1B2C2+15j + ; sub_1B2C2+30j + pop di + pop si + pop bp + retf +sub_1B2C2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B35F proc near ; CODE XREF: sub_1B427+54p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov si, ax + mov bx, word_1F51A + test byte ptr [bx+1], 1 + jz short loc_1B37B + add si, 4 + +loc_1B37B: ; CODE XREF: sub_1B35F+17j + mov bx, word_1F51A + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov bx, word_1F51A + mov ax, [bx+4] + sar ax, 4 + add ax, 0FFF8h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + call sub_F100 + pop si + leave + retn +sub_1B35F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B3B0 proc far ; DATA XREF: sub_B04C+61o + ; sub_B04C+10Co + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 30h + add ax, 1F84h + mov si, ax + xor di, di + mov [bp+var_1], 0 + jmp short loc_1B41B +; --------------------------------------------------------------------------- + +loc_1B3CB: ; CODE XREF: sub_1B3B0+6Ej + cmp byte ptr [si], 0 + jz short loc_1B420 + cmp byte ptr [si], 1 + jnz short loc_1B417 + mov ax, [si+2] + sub ax, word_20E36 + cmp ax, 0E0h ; 'à' + jg short loc_1B417 + mov ax, word_20E2E + sub ax, [si+2] + cmp ax, 0E0h ; 'à' + jg short loc_1B417 + mov ax, [si+4] + sub ax, word_20E38 + cmp ax, 200h + jg short loc_1B417 + mov ax, word_20E30 + sub ax, [si+4] + cmp ax, 0FF00h + jg short loc_1B417 + push word ptr [si+2] + push word ptr [si+4] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + inc [bp+var_1] + +loc_1B417: ; CODE XREF: sub_1B3B0+23j + ; sub_1B3B0+2Fj ... + inc di + sub si, 6 + +loc_1B41B: ; CODE XREF: sub_1B3B0+19j + cmp di, 8 + jl short loc_1B3CB + +loc_1B420: ; CODE XREF: sub_1B3B0+1Ej + mov al, [bp+var_1] + pop di + pop si + leave + retf +sub_1B3B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B427 proc far ; DATA XREF: sub_B04C+55o + ; sub_B04C+100o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 30h + add ax, 1F84h + mov word_1F51A, ax + mov byte_1F2EA, 2 + mov word_1F2E8, 18h + cmp byte ptr word_1FE88, 0 + jnz short loc_1B459 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1B465 +; --------------------------------------------------------------------------- + +loc_1B459: ; CODE XREF: sub_1B427+22j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1B465: ; CODE XREF: sub_1B427+30j + xor si, si + jmp short loc_1B484 +; --------------------------------------------------------------------------- + +loc_1B469: ; CODE XREF: sub_1B427+60j + mov bx, word_1F51A + cmp byte ptr [bx], 0 + jz short loc_1B489 + mov bx, word_1F51A + cmp byte ptr [bx], 1 + jnz short loc_1B47E + call sub_1B35F + +loc_1B47E: ; CODE XREF: sub_1B427+52j + inc si + sub word_1F51A, 6 + +loc_1B484: ; CODE XREF: sub_1B427+40j + cmp si, 8 + jl short loc_1B469 + +loc_1B489: ; CODE XREF: sub_1B427+49j + pop si + pop bp + retf +sub_1B427 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B48C proc near ; CODE XREF: sub_1B623+13p + ; sub_1B63B+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + push si + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_1B4A3 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_1B4A3: ; CODE XREF: sub_1B48C+Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_1B502 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+1F58h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + shl al, 4 + add al, 20h ; ' ' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+1F54h], 0FE80h + jmp loc_1B61E +; --------------------------------------------------------------------------- + +loc_1B502: ; CODE XREF: sub_1B48C+25j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz loc_1B61E + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov si, [bx+1F54h] + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+1F58h] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_1B57C + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + add word ptr [bx+1F54h], 180h + add si, 180h + push si + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + mov ax, 1200h + sub ax, si + push ax + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + +loc_1B57C: ; CODE XREF: sub_1B48C+BAj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + test byte ptr [bx+1F58h], 1 + jz short loc_1B5E3 + mov al, [bp+arg_0] + mov byte_23E4E, al + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+1F58h] + mov ah, 0 + mov bx, 10h + cwd + idiv bx + shl dl, 2 + add dl, 18h + mov byte ptr word_23E42, dl + mov byte ptr word_23E44+1, 1 + mov byte ptr word_23E42+1, 0 + mov word_23E40, 0 + mov word_23E3E, si + mov byte_23E50, 0 + call sub_17730 + mov ax, 1200h + sub ax, si + mov word_23E3E, ax + call sub_17730 + mov byte_23E50, 1 + +loc_1B5E3: ; CODE XREF: sub_1B48C+FCj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+1F58h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+1F58h] + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + cmp al, [bx+2D58h] + jb short loc_1B61E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_1B61E: ; CODE XREF: sub_1B48C+73j + ; sub_1B48C+8Bj ... + pop si + leave + retn 2 +sub_1B48C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B623 proc far ; DATA XREF: sub_B04C+6Do + ; sub_B04C+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1B639 + push 1 + call sub_1B48C + +loc_1B639: ; CODE XREF: sub_1B623+Fj + pop bp + retf +sub_1B623 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B63B proc far ; DATA XREF: sub_B04C+79o + ; sub_B04C+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1B651 + push 2 + call sub_1B48C + +loc_1B651: ; CODE XREF: sub_1B63B+Fj + pop bp + retf +sub_1B63B endp + +seg007 ends + +; =========================================================================== + +; Segment type: Pure code +seg008 segment byte public 'CODE' use16 + assume cs:seg008 + ;org 3 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B653 proc far ; CODE XREF: sub_9EBF+86P + push bp + mov bp, sp + mov word_1F868, 2008h + xor ax, ax + jmp short loc_1B66D +; --------------------------------------------------------------------------- + +loc_1B660: ; CODE XREF: sub_1B653+1Dj + mov bx, word_1F868 + mov byte ptr [bx], 0 + inc ax + add word_1F868, 0Ch + +loc_1B66D: ; CODE XREF: sub_1B653+Bj + cmp ax, 40h ; '@' + jl short loc_1B660 + pop bp + retf +sub_1B653 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B674 proc far ; DATA XREF: sub_A9EC+3Do sub_A9EC+E8o + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + enter 2, 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + mov [bp+var_2], 0 + jmp short loc_1B6C0 +; --------------------------------------------------------------------------- + +loc_1B68E: ; CODE XREF: sub_1B674+50j + mov bx, word_1F868 + mov al, byte ptr [bp+var_2] + mov [bx], al + mov byte ptr [bx+1], 0 + mov ax, [bp+arg_2] + mov [bx+4], ax + mov ax, [bp+arg_0] + mov [bx+6], ax + call sub_13A24 + mov bx, word_1F868 + mov [bx+2], al + mov byte ptr [bx+3], 50h ; 'P' + add [bp+var_2], 2 + add word_1F868, 0Ch + +loc_1B6C0: ; CODE XREF: sub_1B674+18j + cmp [bp+var_2], 40h ; '@' + jl short loc_1B68E + leave + retf 4 +sub_1B674 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B6CA proc far ; CODE XREF: sub_D8CC+28P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + xor si, si + jmp short loc_1B719 +; --------------------------------------------------------------------------- + +loc_1B6E1: ; CODE XREF: sub_1B6CA+52j + mov bx, word_1F868 + cmp byte ptr [bx], 0 + jnz short loc_1B713 + mov bx, word_1F868 + mov byte ptr [bx], 1 + mov byte ptr [bx+1], 0 + mov ax, [bp+arg_2] + mov [bx+4], ax + mov ax, [bp+arg_0] + mov [bx+6], ax + call sub_13A24 + mov bx, word_1F868 + mov [bx+2], al + mov byte ptr [bx+3], 50h ; 'P' + jmp short loc_1B71E +; --------------------------------------------------------------------------- + +loc_1B713: ; CODE XREF: sub_1B6CA+1Ej + inc si + add word_1F868, 0Ch + +loc_1B719: ; CODE XREF: sub_1B6CA+15j + cmp si, 20h ; ' ' + jl short loc_1B6E1 + +loc_1B71E: ; CODE XREF: sub_1B6CA+47j + pop si + pop bp + retf 4 +sub_1B6CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B723 proc far ; DATA XREF: sub_A9EC+49o sub_A9EC+F4o + +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + xor si, si + jmp short loc_1B74A +; --------------------------------------------------------------------------- + +loc_1B73B: ; CODE XREF: sub_1B723+2Aj + mov bx, word_1F868 + cmp byte ptr [bx], 0 + jnz short loc_1B752 + inc si + add word_1F868, 0Ch + +loc_1B74A: ; CODE XREF: sub_1B723+16j + cmp si, 20h ; ' ' + jl short loc_1B73B + jmp loc_1B8A3 +; --------------------------------------------------------------------------- + +loc_1B752: ; CODE XREF: sub_1B723+1Fj + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + push word_1FE88 + call sub_16983 + mov ax, word_2142E + mov [bp+var_2], ax + mov ax, word_21430 + add ax, 0F920h + mov [bp+var_4], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A6h] + mov [bp+var_6], ax + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov ax, [bx+65A8h] + mov [bp+var_8], ax + mov word_1F2EC, 0FF80h + mov word_1F2EE, 0FF80h + xor si, si + jmp loc_1B89C +; --------------------------------------------------------------------------- + +loc_1B7BC: ; CODE XREF: sub_1B723+17Cj + mov bx, word_1F868 + cmp byte ptr [bx], 0 + jz loc_1B896 + mov bx, word_1F868 + cmp byte ptr [bx], 1 + jnz loc_1B871 + mov ax, [bx+8] + add [bx+4], ax + mov ax, [bx+0Ah] + add [bx+6], ax + cmp byte ptr [bx+1], 0 + jnz short loc_1B855 + mov al, [bx+3] + add al, 0FEh ; 'þ' + mov [bp+var_9], al + push ds + mov ax, word_1F868 + add ax, 8 + push ax + push ds + mov ax, word_1F868 + add ax, 0Ah + push ax + push word ptr [bx+2] + mov al, [bp+var_9] + mov ah, 0 + push ax + call sub_E97A + mov bx, word_1F868 + mov al, [bp+var_9] + mov [bx+3], al + cmp [bp+var_9], 0 + jnz short loc_1B896 + mov byte ptr [bx+1], 1 + mov ax, [bp+var_4] + sub ax, [bx+6] + push ax + mov ax, [bp+var_2] + sub ax, [bx+4] + push ax + call sub_1BD6 + mov bx, word_1F868 + mov [bx+2], al + push ds + mov ax, word_1F868 + add ax, 8 + push ax + push ds + mov ax, word_1F868 + add ax, 0Ah + push ax + push word ptr [bx+2] + push 0A0h ; ' ' + call sub_E97A + jmp short loc_1B896 +; --------------------------------------------------------------------------- + +loc_1B855: ; CODE XREF: sub_1B723+BFj + mov bx, word_1F868 + push word ptr [bx+4] + push word ptr [bx+6] + call sub_A310 + or al, al + jz short loc_1B896 + mov bx, word_1F868 + mov byte ptr [bx], 0 + jmp short loc_1B896 +; --------------------------------------------------------------------------- + +loc_1B871: ; CODE XREF: sub_1B723+ABj + mov bx, word_1F868 + mov al, [bx] + add al, 0FFh + mov [bx], al + cmp al, 1 + jnz short loc_1B886 + push 1 + call sub_EC3A + +loc_1B886: ; CODE XREF: sub_1B723+15Aj + mov bx, word_1F868 + mov ax, [bp+var_6] + mov [bx+4], ax + mov ax, [bp+var_8] + mov [bx+6], ax + +loc_1B896: ; CODE XREF: sub_1B723+A0j + ; sub_1B723+F5j ... + inc si + add word_1F868, 0Ch + +loc_1B89C: ; CODE XREF: sub_1B723+96j + cmp si, 20h ; ' ' + jl loc_1B7BC + +loc_1B8A3: ; CODE XREF: sub_1B723+2Cj + pop si + leave + retf +sub_1B723 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B8A6 proc near ; CODE XREF: sub_1B979+56p + +var_3 = byte ptr -3 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 10h + mov [bp+var_2], ax + mov bx, word_1F868 + mov al, [bx+2] + add al, 10h + mov [bp+var_3], al + shr [bp+var_3], 5 + shl [bp+var_3], 1 + mov al, [bp+var_3] + mov ah, 0 + add [bp+var_2], ax + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF8h + mov si, ax + mov ax, di + sar ax, 4 + add ax, 8 + mov di, ax + push si + push ax + push [bp+var_2] + call sub_F100 + pop di + pop si + leave + retn 4 +sub_1B8A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B903 proc far ; DATA XREF: sub_A9EC+61o + ; sub_A9EC+10Co + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov [bp+var_1], 0 + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + xor si, si + jmp short loc_1B96E +; --------------------------------------------------------------------------- + +loc_1B91F: ; CODE XREF: sub_1B903+6Ej + mov bx, word_1F868 + cmp byte ptr [bx], 1 + jnz short loc_1B968 + mov bx, word_1F868 + mov ax, [bx+4] + cmp ax, word_20E2E + jl short loc_1B968 + cmp ax, word_20E36 + jg short loc_1B968 + mov ax, [bx+6] + cmp ax, word_20E30 + jl short loc_1B968 + cmp ax, word_20E38 + jg short loc_1B968 + push word ptr [bx+4] + push ax + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov bx, word_1F868 + mov byte ptr [bx], 0 + mov al, [bp+var_1] + add al, 2 + mov [bp+var_1], al + +loc_1B968: ; CODE XREF: sub_1B903+23j + ; sub_1B903+30j ... + inc si + add word_1F868, 0Ch + +loc_1B96E: ; CODE XREF: sub_1B903+1Aj + cmp si, 20h ; ' ' + jl short loc_1B91F + mov al, [bp+var_1] + pop si + leave + retf +sub_1B903 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B979 proc far ; DATA XREF: sub_A9EC+55o + ; sub_A9EC+100o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 180h + add ax, 2008h + mov word_1F868, ax + mov byte_1F2EA, 1 + mov word_1F2E8, 8 + cmp byte ptr word_1FE88, 0 + jnz short loc_1B9AC + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1B9B8 +; --------------------------------------------------------------------------- + +loc_1B9AC: ; CODE XREF: sub_1B979+23j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1B9B8: ; CODE XREF: sub_1B979+31j + xor si, si + jmp short loc_1B9D8 +; --------------------------------------------------------------------------- + +loc_1B9BC: ; CODE XREF: sub_1B979+62j + mov bx, word_1F868 + cmp byte ptr [bx], 1 + jnz short loc_1B9D2 + mov bx, word_1F868 + push word ptr [bx+4] + push word ptr [bx+6] + call sub_1B8A6 + +loc_1B9D2: ; CODE XREF: sub_1B979+4Aj + inc si + add word_1F868, 0Ch + +loc_1B9D8: ; CODE XREF: sub_1B979+41j + cmp si, 20h ; ' ' + jl short loc_1B9BC + pop si + pop bp + retf +sub_1B979 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B9E0 proc near ; CODE XREF: sub_1BC1D+13p + ; sub_1BC35+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_1B9F6 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_1B9F6: ; CODE XREF: sub_1B9E0+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_1BA77 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2006h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+1FFEh], 900h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+2002h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 0Eh + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 1Ch + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_1BA77: ; CODE XREF: sub_1B9E0+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz locret_1BC19 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2006h] + mov ah, 0 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_1BC0E + mov al, [bp+arg_0] + mov byte_23E4E, al + mov word_23E40, 80h ; '€' + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov byte ptr word_23E44, al + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + cmp word ptr [bx+1FFEh], 0 + jle loc_1BB55 + mov byte ptr word_23E42+1, 0 + mov byte ptr word_23E42, 38h ; '8' + mov byte ptr word_23E44+1, 2Ch ; ',' + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D58h] + mov byte_23E47, al + mov word_23E40, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+1FFEh] + mov word_23E3E, ax + push ax + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + call sub_17730 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov dx, 1200h + mov bx, ax + sub dx, [bx+1FFEh] + mov word_23E3E, dx + push dx + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + call sub_17730 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + sub word ptr [bx+1FFEh], 180h + jmp loc_1BC0E +; --------------------------------------------------------------------------- + +loc_1BB55: ; CODE XREF: sub_1B9E0+EFj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + cmp word ptr [bx+2002h], 900h + jge loc_1BBFA + call sub_13A24 + mov byte ptr word_23E42+1, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D59h] + mov byte ptr word_23E42, al + mov byte ptr word_23E44+1, 24h ; '$' + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2002h] + mov word_23E40, ax + mov word_23E3E, 0 + push 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2002h] + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + call sub_17730 + mov word_23E3E, 1200h + push 1200h + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2002h] + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + call sub_17730 + call sub_13A24 + mov byte ptr word_23E42+1, al + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + add word ptr [bx+2002h], 180h + jmp short loc_1BC0E +; --------------------------------------------------------------------------- + +loc_1BBFA: ; CODE XREF: sub_1B9E0+184j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + push word ptr [bp+var_1] + call sub_A3A8 + +loc_1BC0E: ; CODE XREF: sub_1B9E0+C5j + ; sub_1B9E0+172j ... + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2006h] + +locret_1BC19: ; CODE XREF: sub_1B9E0+ACj + leave + retn 2 +sub_1B9E0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC1D proc far ; DATA XREF: sub_A9EC+6Do + ; sub_A9EC+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1BC33 + push 1 + call sub_1B9E0 + +loc_1BC33: ; CODE XREF: sub_1BC1D+Fj + pop bp + retf +sub_1BC1D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC35 proc far ; DATA XREF: sub_A9EC+79o + ; sub_A9EC+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1BC4B + push 2 + call sub_1B9E0 + +loc_1BC4B: ; CODE XREF: sub_1BC35+Fj + pop bp + retf +sub_1BC35 endp + +seg008 ends + +; =========================================================================== + +; Segment type: Pure code +seg009 segment byte public 'CODE' use16 + assume cs:seg009 + ;org 0Dh + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC4D proc far + push bp + mov bp, sp + mov byte_1FD8E, 0 + mov byte_1FD8F, 0 + pop bp + retf +sub_1BC4D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC5C proc far ; DATA XREF: sub_AD1C+3Do sub_AD1C+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+282Eh], 1 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2830h], 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 0D8h + add ax, 267Ch + mov si, ax + xor cx, cx + jmp short loc_1BCAF +; --------------------------------------------------------------------------- + +loc_1BC8A: ; CODE XREF: sub_1BC5C+56j + xor dx, dx + jmp short loc_1BCA2 +; --------------------------------------------------------------------------- + +loc_1BC8E: ; CODE XREF: sub_1BC5C+49j + mov bx, dx + add bx, bx + mov ax, [bp+arg_2] + mov [bx+si], ax + mov bx, dx + add bx, bx + mov ax, [bp+arg_0] + mov [bx+si+1Ah], ax + inc dx + +loc_1BCA2: ; CODE XREF: sub_1BC5C+30j + cmp dx, 0Ch + jle short loc_1BC8E + mov byte ptr [si+35h], 30h ; '0' + inc cx + add si, 36h ; '6' + +loc_1BCAF: ; CODE XREF: sub_1BC5C+2Cj + cmp cx, 4 + jl short loc_1BC8A + sub si, 36h ; '6' + mov byte ptr [si+34h], 0F0h ; 'ð' + sub si, 36h ; '6' + mov byte ptr [si+34h], 0C8h ; 'È' + sub si, 36h ; '6' + mov byte ptr [si+34h], 0B8h ; '¸' + sub si, 36h ; '6' + mov byte ptr [si+34h], 90h ; '' + pop si + pop bp + retf 4 +sub_1BC5C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BCD5 proc far ; DATA XREF: sub_AD1C+49o sub_AD1C+F4o + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+282Eh], 0 + jz loc_1BDF4 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+282Eh] + mov [bp+var_7], al + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 0D8h + add ax, 267Ch + mov si, ax + xor di, di + jmp short loc_1BD7B +; --------------------------------------------------------------------------- + +loc_1BD1B: ; CODE XREF: sub_1BCD5+A9j + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_4] + push ax + push word ptr [si+34h] + mov al, [si+35h] + mov ah, 0 + push ax + call sub_E97A + mov [bp+var_6], 0Ch + jmp short loc_1BD5D +; --------------------------------------------------------------------------- + +loc_1BD3A: ; CODE XREF: sub_1BCD5+8Cj + mov bx, [bp+var_6] + dec bx + add bx, bx + mov ax, [bx+si] + mov bx, [bp+var_6] + add bx, bx + mov [bx+si], ax + mov bx, [bp+var_6] + dec bx + add bx, bx + mov ax, [bx+si+1Ah] + mov bx, [bp+var_6] + add bx, bx + mov [bx+si+1Ah], ax + dec [bp+var_6] + +loc_1BD5D: ; CODE XREF: sub_1BCD5+63j + cmp [bp+var_6], 0 + jg short loc_1BD3A + mov ax, [bp+var_2] + add [si], ax + mov ax, [bp+var_4] + add [si+1Ah], ax + cmp [bp+var_7], 1 + jnz short loc_1BD77 + dec byte ptr [si+35h] + +loc_1BD77: ; CODE XREF: sub_1BCD5+9Dj + inc di + add si, 36h ; '6' + +loc_1BD7B: ; CODE XREF: sub_1BCD5+44j + cmp di, 4 + jl short loc_1BD1B + cmp [bp+var_7], 1 + jnz short loc_1BDC8 + sub si, 36h ; '6' + mov al, [si+34h] + add al, 0FEh ; 'þ' + mov [si+34h], al + sub si, 0A2h ; '¢' + mov al, [si+34h] + add al, 2 + mov [si+34h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2830h], 28h ; '(' + jbe short loc_1BDC8 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+282Eh], 2 + xor di, di + jmp short loc_1BDC3 +; --------------------------------------------------------------------------- + +loc_1BDBB: ; CODE XREF: sub_1BCD5+F1j + mov byte ptr [si+35h], 80h ; '€' + inc di + add si, 36h ; '6' + +loc_1BDC3: ; CODE XREF: sub_1BCD5+E4j + cmp di, 4 + jl short loc_1BDBB + +loc_1BDC8: ; CODE XREF: sub_1BCD5+AFj + ; sub_1BCD5+D4j + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 0D8h + add ax, 267Ch + mov si, ax + cmp word ptr [si+32h], 0FF00h + jg short loc_1BDE9 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+282Eh], 0 + +loc_1BDE9: ; CODE XREF: sub_1BCD5+106j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2830h] + +loc_1BDF4: ; CODE XREF: sub_1BCD5+12j + pop di + pop si + leave + retf +sub_1BCD5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BDF8 proc near ; CODE XREF: sub_1BEF3:loc_1BF4Ap + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 1180h + mov di, ax + mov si, 0Ch + jmp short loc_1BE4A +; --------------------------------------------------------------------------- + +loc_1BE0D: ; CODE XREF: sub_1BDF8+54j + mov bx, si + add bx, bx + add bx, word_1FD8C + push word ptr [bx] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov bx, si + add bx, bx + add bx, word_1FD8C + mov ax, [bx+1Ah] + sar ax, 4 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push di + call sub_F100 + sub si, 4 + sub di, 500h + +loc_1BE4A: ; CODE XREF: sub_1BDF8+13j + or si, si + jge short loc_1BE0D + pop di + pop si + leave + retn +sub_1BDF8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BE52 proc far ; DATA XREF: sub_AD1C+61o + ; sub_AD1C+10Co + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov al, byte ptr word_20E3A + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+282Eh], 0 + jz loc_1BEED + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 0D8h + add ax, 267Ch + mov di, ax + mov [bp+var_2], 0 + jmp short loc_1BEE7 +; --------------------------------------------------------------------------- + +loc_1BE7D: ; CODE XREF: sub_1BE52+99j + xor si, si + jmp short loc_1BEDC +; --------------------------------------------------------------------------- + +loc_1BE81: ; CODE XREF: sub_1BE52+8Dj + mov bx, si + add bx, bx + mov ax, [bx+di] + sub ax, word_20E36 + cmp ax, 0C0h ; 'À' + jg short loc_1BED9 + mov bx, si + add bx, bx + mov ax, word_20E2E + sub ax, [bx+di] + cmp ax, 0C0h ; 'À' + jg short loc_1BED9 + mov bx, si + add bx, bx + mov ax, [bx+di+1Ah] + sub ax, word_20E38 + cmp ax, 0C0h ; 'À' + jg short loc_1BED9 + mov bx, si + add bx, bx + mov ax, word_20E30 + sub ax, [bx+di+1Ah] + cmp ax, 0C0h ; 'À' + jg short loc_1BED9 + mov bx, si + add bx, bx + push word ptr [bx+di] + mov bx, si + add bx, bx + push word ptr [bx+di+1Ah] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov al, 1 + jmp short loc_1BEEF +; --------------------------------------------------------------------------- + +loc_1BED9: ; CODE XREF: sub_1BE52+3Cj + ; sub_1BE52+4Aj ... + add si, 4 + +loc_1BEDC: ; CODE XREF: sub_1BE52+2Dj + cmp si, 0Ch + jle short loc_1BE81 + inc [bp+var_2] + add di, 36h ; '6' + +loc_1BEE7: ; CODE XREF: sub_1BE52+29j + cmp [bp+var_2], 4 + jl short loc_1BE7D + +loc_1BEED: ; CODE XREF: sub_1BE52+12j + mov al, 0 + +loc_1BEEF: ; CODE XREF: sub_1BE52+85j + pop di + pop si + leave + retf +sub_1BE52 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BEF3 proc far ; DATA XREF: sub_AD1C+55o + ; sub_AD1C+100o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+282Eh], 0 + jz short loc_1BF5F + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 0D8h + add ax, 267Ch + mov word_1FD8C, ax + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + cmp byte ptr word_1FE88, 0 + jnz short loc_1BF34 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1BF40 +; --------------------------------------------------------------------------- + +loc_1BF34: ; CODE XREF: sub_1BEF3+31j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1BF40: ; CODE XREF: sub_1BEF3+3Fj + xor dx, dx + mov ah, 5 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + xor si, si + jmp short loc_1BF53 +; --------------------------------------------------------------------------- + +loc_1BF4A: ; CODE XREF: sub_1BEF3+63j + call sub_1BDF8 + inc si + add word_1FD8C, 36h ; '6' + +loc_1BF53: ; CODE XREF: sub_1BEF3+55j + cmp si, 4 + jl short loc_1BF4A + mov dx, 1 + mov ah, 5 + int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) + +loc_1BF5F: ; CODE XREF: sub_1BEF3+10j + pop si + pop bp + retf +sub_1BEF3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BF62 proc near ; CODE XREF: sub_1C128+13p + ; sub_1C140+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_1BF78 + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_1BF78: ; CODE XREF: sub_1BF62+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_1BFF3 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+267Ah], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+2676h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov dl, 8 + sub dl, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov [bx+2D58h], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 30h ; '0' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_1BFF3: ; CODE XREF: sub_1BF62+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz locret_1C124 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+267Ah] + mov ah, 0 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov dl, [bx+2D58h] + mov dh, 0 + push dx + cwd + pop bx + idiv bx + or dx, dx + jnz loc_1C0BB + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov al, [bp+arg_0] + mov byte_23E4E, al + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov word_23E40, 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2676h] + mov word_23E3E, ax + mov byte ptr word_23E44+1, 0 + mov byte ptr word_23E42+1, 40h ; '@' + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D59h] + mov byte ptr word_23E42, al + call sub_17730 + push word_23E3E + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov dx, 1200h + mov bx, ax + sub dx, [bx+2676h] + mov word_23E3E, dx + call sub_17730 + push word_23E3E + push 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + +loc_1C0BB: ; CODE XREF: sub_1BF62+CFj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+267Ah] + mov ah, 0 + mov bx, 40h ; '@' + cwd + idiv bx + cmp dx, 20h ; ' ' + jge short loc_1C0E4 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + add word ptr [bx+2676h], 80h ; '€' + jmp short loc_1C0F3 +; --------------------------------------------------------------------------- + +loc_1C0E4: ; CODE XREF: sub_1BF62+16Fj + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + sub word ptr [bx+2676h], 80h ; '€' + +loc_1C0F3: ; CODE XREF: sub_1BF62+180j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+267Ah], 80h ; '€' + jb short loc_1C119 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + +loc_1C119: ; CODE XREF: sub_1BF62+19Dj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+267Ah] + +locret_1C124: ; CODE XREF: sub_1BF62+A6j + leave + retn 2 +sub_1BF62 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C128 proc far ; DATA XREF: sub_AD1C+6Do + ; sub_AD1C+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C13E + push 1 + call sub_1BF62 + +loc_1C13E: ; CODE XREF: sub_1C128+Fj + pop bp + retf +sub_1C128 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C140 proc far ; DATA XREF: sub_AD1C+79o + ; sub_AD1C+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C156 + push 2 + call sub_1BF62 + +loc_1C156: ; CODE XREF: sub_1C140+Fj + pop bp + retf +sub_1C140 endp + +seg009 ends + +; =========================================================================== + +; Segment type: Pure code +seg010 segment byte public 'CODE' use16 + assume cs:seg010 + ;org 8 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C158 proc far + push bp + mov bp, sp + mov byte_1FE5A, 0 + mov byte_1FE62, 0 + pop bp + retf +sub_1C158 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C167 proc far ; DATA XREF: sub_AB84+3Do sub_AB84+E8o + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov al, byte ptr word_23AF0 + mov ah, 0 + shl ax, 3 + add ax, 28FAh + mov word_1FE6A, ax + mov bx, word_1FE6A + mov byte ptr [bx], 1 + mov byte ptr [bx+1], 0 + mov ax, [bp+arg_2] + mov [bx+2], ax + mov ax, [bp+arg_0] + mov [bx+4], ax + mov word ptr [bx+6], 0FFF0h + push 6 + call sub_EC3A + pop bp + retf 4 +sub_1C167 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C19F proc far ; DATA XREF: sub_AB84+49o sub_AB84+F4o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 3 + add ax, 28FAh + mov word_1FE6A, ax + mov bx, word_1FE6A + cmp byte ptr [bx], 0 + jz short loc_1C1E7 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + mov bx, ax + mov word ptr [bx+65BEh], 0 + mov bx, word_1FE6A + mov ax, [bx+6] + add [bx+4], ax + cmp word ptr [bx+4], 0FF00h + jg short loc_1C1DF + mov byte ptr [bx], 0 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1C1DF: ; CODE XREF: sub_1C19F+39j + mov bx, word_1FE6A + sub word ptr [bx+6], 2 + +loc_1C1E7: ; CODE XREF: sub_1C19F+18j + pop bp + retf +sub_1C19F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C1E9 proc near ; CODE XREF: sub_1C295:loc_1C2DBp + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 1188h + mov [bp+var_6], ax + mov bx, word_1FE6A + push word ptr [bx+2] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFD0h + mov [bp+var_2], ax + mov bx, word_1FE6A + mov ax, [bx+4] + sar ax, 4 + add ax, 8 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push [bp+var_6] + call sub_F100 + leave + retn +sub_1C1E9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C22E proc far ; DATA XREF: sub_AB84+61o + ; sub_AB84+10Co + push bp + mov bp, sp + mov al, byte ptr word_20E3A + mov ah, 0 + shl ax, 3 + add ax, 28FAh + mov word_1FE6A, ax + mov bx, word_1FE6A + cmp byte ptr [bx], 0 + jz short loc_1C291 + mov bx, word_1FE6A + mov ax, [bx+2] + sub ax, word_20E36 + cmp ax, 280h + jg short loc_1C291 + mov ax, word_20E2E + sub ax, [bx+2] + cmp ax, 280h + jg short loc_1C291 + mov ax, [bx+4] + cmp ax, word_20E30 + jl short loc_1C291 + cmp ax, word_20E38 + jg short loc_1C291 + mov byte_26356, 1 + mov ax, word_20E2E + add ax, word_20E32 + push ax + push word ptr [bx+4] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + mov al, 3 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1C291: ; CODE XREF: sub_1C22E+18j + ; sub_1C22E+28j ... + mov al, 0 + pop bp + retf +sub_1C22E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C295 proc far ; DATA XREF: sub_AB84+55o + ; sub_AB84+100o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 3 + add ax, 28FAh + mov word_1FE6A, ax + mov bx, word_1FE6A + cmp byte ptr [bx], 0 + jz short loc_1C2DE + mov byte_1F2EA, 6 + mov word_1F2E8, 10h + cmp byte ptr word_1FE88, 0 + jnz short loc_1C2CF + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1C2DB +; --------------------------------------------------------------------------- + +loc_1C2CF: ; CODE XREF: sub_1C295+2Aj + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1C2DB: ; CODE XREF: sub_1C295+38j + call sub_1C1E9 + +loc_1C2DE: ; CODE XREF: sub_1C295+18j + pop bp + retf +sub_1C295 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C2E0 proc near ; CODE XREF: sub_1C3DA+13p + ; sub_1C3F2+13p + +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + mov [bp+var_1], 1 + cmp [bp+arg_0], 2 + jnz short loc_1C2F6 + mov al, [bp+var_1] + add al, 2 + mov [bp+var_1], al + +loc_1C2F6: ; CODE XREF: sub_1C2E0+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_1] + jnz short loc_1C36B + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+28F8h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, 4 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D58h], al + push 1 + call sub_13A36 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov dl, [bp+arg_0] + mov bx, ax + mov [bx+2D5Ah], dl + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_1C36B: ; CODE XREF: sub_1C2E0+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_1] + mov dh, 0 + inc dx + cmp ax, dx + jnz short locret_1C3D6 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+28F8h], 0 + jnz short loc_1C3A5 + push 0A00h + call sub_13A50 + add ax, 400h + push ax + push 0 + call sub_19DD3 + jmp short loc_1C3CB +; --------------------------------------------------------------------------- + +loc_1C3A5: ; CODE XREF: sub_1C2E0+AEj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+28F8h], 80h ; '€' + jb short loc_1C3CB + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + +loc_1C3CB: ; CODE XREF: sub_1C2E0+C3j + ; sub_1C2E0+D1j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+28F8h] + +locret_1C3D6: ; CODE XREF: sub_1C2E0+A0j + leave + retn 2 +sub_1C2E0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C3DA proc far ; DATA XREF: sub_AB84+6Do + ; sub_AB84+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C3F0 + push 1 + call sub_1C2E0 + +loc_1C3F0: ; CODE XREF: sub_1C3DA+Fj + pop bp + retf +sub_1C3DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C3F2 proc far ; DATA XREF: sub_AB84+79o + ; sub_AB84+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C408 + push 2 + call sub_1C2E0 + +loc_1C408: ; CODE XREF: sub_1C3F2+Fj + pop bp + retf +sub_1C3F2 endp + +seg010 ends + +; =========================================================================== + +; Segment type: Pure code +seg011 segment byte public 'CODE' use16 + assume cs:seg011 + ;org 0Ah + 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_1C40A proc far + push bp + mov bp, sp + mov byte_20E88, 0 + mov byte_20E89, 0 + pop bp + retf +sub_1C40A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C419 proc far ; CODE XREF: sub_1C497+Ap + ; DATA XREF: sub_AEB4+3Do ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_2] + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3928h], 1 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+392Ah], 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+392Ch], 80h ; '€' + mov al, byte ptr word_23AF0 + mov ah, 0 + imul ax, 18h + add ax, 38F6h + mov si, ax + xor cx, cx + jmp short loc_1C46F +; --------------------------------------------------------------------------- + +loc_1C459: ; CODE XREF: sub_1C419+59j + mov [si], di + mov ax, [bp+arg_0] + mov [si+2], ax + mov al, cl + shl al, 6 + add al, 20h ; ' ' + mov [si+4], al + inc cx + add si, 6 + +loc_1C46F: ; CODE XREF: sub_1C419+3Ej + cmp cx, 4 + jl short loc_1C459 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov bx, ax + mov [bx+3930h], di + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, ax + mov dx, [bp+arg_0] + mov bx, ax + mov [bx+3934h], dx + pop di + pop si + pop bp + retf 4 +sub_1C419 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C497 proc far ; CODE XREF: sub_D9F3+29P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_1C419 + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3928h], 2 + pop bp + retf 4 +sub_1C497 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C4B4 proc far ; CODE XREF: sub_D9F3+12P + push bp + mov bp, sp + mov al, byte ptr word_23AF0 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3928h], 0 + pop bp + retf +sub_1C4B4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C4C5 proc far ; DATA XREF: sub_AEB4+49o sub_AEB4+F4o + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3928h], 0 + jz loc_1C626 + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 7 + add ax, 65A6h + mov [bp+var_4], ax + mov bx, [bp+var_4] + mov word ptr [bx+18h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+392Ah] + mov [bp+var_5], al + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov di, [bx+392Ch] + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 18h + add ax, 38F6h + mov si, ax + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3928h], 1 + jnz short loc_1C537 + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + sub word ptr [bx+3934h], 20h ; ' ' + jmp short loc_1C55C +; --------------------------------------------------------------------------- + +loc_1C537: ; CODE XREF: sub_1C4C5+60j + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, [bp+var_4] + mov dx, [bx] + mov bx, ax + mov [bx+3930h], dx + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, [bp+var_4] + mov dx, [bx+2] + mov bx, ax + mov [bx+3934h], dx + +loc_1C55C: ; CODE XREF: sub_1C4C5+70j + mov [bp+var_2], 0 + jmp short loc_1C5C6 +; --------------------------------------------------------------------------- + +loc_1C563: ; CODE XREF: sub_1C4C5+105j + mov al, [si+4] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+3930h] + call sub_EA5D + add sp, 6 + mov [si], ax + mov al, [si+4] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push di + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+3934h] + call sub_EA5D + add sp, 6 + mov [si+2], ax + test byte ptr [bp+var_2], 1 + jz short loc_1C5B8 + mov al, 8 + jmp short loc_1C5BA +; --------------------------------------------------------------------------- + +loc_1C5B8: ; CODE XREF: sub_1C4C5+EDj + mov al, 0F8h ; 'ø' + +loc_1C5BA: ; CODE XREF: sub_1C4C5+F1j + add al, [si+4] + mov [si+4], al + inc [bp+var_2] + add si, 6 + +loc_1C5C6: ; CODE XREF: sub_1C4C5+9Cj + cmp [bp+var_2], 4 + jl short loc_1C563 + cmp [bp+var_5], 20h ; ' ' + jnb short loc_1C5D7 + add di, 20h ; ' ' + jmp short loc_1C60E +; --------------------------------------------------------------------------- + +loc_1C5D7: ; CODE XREF: sub_1C4C5+10Bj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3928h], 1 + jnz short loc_1C602 + cmp [bp+var_5], 80h ; '€' + jbe short loc_1C60E + add di, 60h ; '`' + cmp [bp+var_5], 90h ; '' + jbe short loc_1C60E + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3928h], 0 + jmp short loc_1C60E +; --------------------------------------------------------------------------- + +loc_1C602: ; CODE XREF: sub_1C4C5+11Ej + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+392Ah], 20h ; ' ' + +loc_1C60E: ; CODE XREF: sub_1C4C5+110j + ; sub_1C4C5+124j ... + mov al, byte ptr word_1FE88 + mov ah, 0 + add ax, ax + mov bx, ax + mov [bx+392Ch], di + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+392Ah] + +loc_1C626: ; CODE XREF: sub_1C4C5+12j + pop di + pop si + leave + retf +sub_1C4C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C62A proc near ; CODE XREF: sub_1C6E8:loc_1C738p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + mov al, byte ptr word_23AF0 + mov ah, 0 + add ax, 280h + mov [bp+var_6], ax + mov bx, word_20E86 + push word ptr [bx] + mov al, byte ptr word_1FE88 + mov ah, 0 + push ax + call sub_A2D0 + add ax, 0FFF0h + mov [bp+var_2], ax + mov bx, word_20E86 + mov ax, [bx+2] + sar ax, 4 + mov [bp+var_4], ax + push [bp+var_2] + push ax + push [bp+var_6] + call sub_F100 + leave + retn +sub_1C62A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C66B proc far ; DATA XREF: sub_AEB4+61o + ; sub_AEB4+10Co + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov al, byte ptr word_20E3A + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3928h], 0 + jnz short loc_1C683 + mov al, 0 + jmp short loc_1C6E4 +; --------------------------------------------------------------------------- + +loc_1C683: ; CODE XREF: sub_1C66B+12j + mov [bp+var_2], 0 + mov al, byte ptr word_20E3A + mov ah, 0 + imul ax, 18h + add ax, 38F6h + mov si, ax + xor di, di + jmp short loc_1C6DC +; --------------------------------------------------------------------------- + +loc_1C699: ; CODE XREF: sub_1C66B+74j + mov ax, [si] + sub ax, word_20E36 + cmp ax, 0C0h ; 'À' + jg short loc_1C6D8 + mov ax, word_20E2E + sub ax, [si] + cmp ax, 0C0h ; 'À' + jg short loc_1C6D8 + mov ax, [si+2] + sub ax, word_20E38 + cmp ax, 0C0h ; 'À' + jg short loc_1C6D8 + mov ax, word_20E30 + sub ax, [si+2] + cmp ax, 0C0h ; 'À' + jg short loc_1C6D8 + push word ptr [si] + push word ptr [si+2] + mov al, byte ptr word_20E3A + mov ah, 0 + push ax + call sub_B73A + inc [bp+var_2] + +loc_1C6D8: ; CODE XREF: sub_1C66B+37j + ; sub_1C66B+41j ... + inc di + add si, 6 + +loc_1C6DC: ; CODE XREF: sub_1C66B+2Cj + cmp di, 4 + jl short loc_1C699 + mov al, byte ptr [bp+var_2] + +loc_1C6E4: ; CODE XREF: sub_1C66B+16j + pop di + pop si + leave + retf +sub_1C66B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C6E8 proc far ; DATA XREF: sub_AEB4+55o + ; sub_AEB4+100o + push bp + mov bp, sp + push si + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3928h], 0 + jz short loc_1C746 + mov al, byte ptr word_1FE88 + mov ah, 0 + imul ax, 18h + add ax, 38F6h + mov word_20E86, ax + mov byte_1F2EA, 2 + mov word_1F2E8, 10h + cmp byte ptr word_1FE88, 0 + jnz short loc_1C728 + mov word_1F2E4, 0 + mov word_1F2E6, 13Fh + jmp short loc_1C734 +; --------------------------------------------------------------------------- + +loc_1C728: ; CODE XREF: sub_1C6E8+30j + mov word_1F2E4, 140h + mov word_1F2E6, 27Fh + +loc_1C734: ; CODE XREF: sub_1C6E8+3Ej + xor si, si + jmp short loc_1C741 +; --------------------------------------------------------------------------- + +loc_1C738: ; CODE XREF: sub_1C6E8+5Cj + call sub_1C62A + inc si + add word_20E86, 6 + +loc_1C741: ; CODE XREF: sub_1C6E8+4Ej + cmp si, 4 + jl short loc_1C738 + +loc_1C746: ; CODE XREF: sub_1C6E8+10j + pop si + pop bp + retf +sub_1C6E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C749 proc near ; CODE XREF: sub_1C8DA+13p + ; sub_1C8F2+13p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = byte ptr 4 + + enter 2, 0 + mov [bp+var_2], 1 + cmp [bp+arg_0], 2 + jnz short loc_1C75F + mov al, [bp+var_2] + add al, 2 + mov [bp+var_2], al + +loc_1C75F: ; CODE XREF: sub_1C749+Cj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + cmp al, [bp+var_2] + jnz short loc_1C7CA + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+38F4h], 0 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+2D54h] + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov dl, 10h + sub dl, al + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov [bx+2D58h], dl + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D56h] + add al, 30h ; '0' + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2D59h], al + leave + retn 2 +; --------------------------------------------------------------------------- + +loc_1C7CA: ; CODE XREF: sub_1C749+24j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+2D54h] + mov ah, 0 + mov dl, [bp+var_2] + mov dh, 0 + inc dx + cmp ax, dx + jnz locret_1C8D6 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+38F4h] + mov ah, 0 + mov dl, byte ptr word_1FE88 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov dl, [bx+2D58h] + mov dh, 0 + push dx + cwd + pop bx + idiv bx + or dx, dx + jnz loc_1C8A5 + mov al, 1 + sub al, byte ptr word_1FE88 + mov [bp+var_1], al + mov al, [bp+arg_0] + mov byte_23E4E, al + mov al, [bp+var_1] + mov byte ptr word_23E44, al + mov word_23E40, 0 + mov byte ptr word_23E44+1, 1 + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov al, [bx+38F4h] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov dl, 20h ; ' ' + sub dl, al + mov byte ptr word_23E42+1, dl + mov al, byte ptr word_1FE88 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov al, [bx+2D59h] + mov byte ptr word_23E42, al + mov word_23E3E, 0 + call sub_17730 + mov word_23E3E, 1200h + call sub_17730 + mov al, byte ptr word_23E42+1 + neg al + mov byte ptr word_23E42+1, al + call sub_17730 + mov word_23E3E, 0 + call sub_17730 + push large 0 + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + push large 12000000h + mov al, [bp+var_1] + mov ah, 0 + push ax + call sub_CE0C + +loc_1C8A5: ; CODE XREF: sub_1C749+BFj + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+38F4h], 80h ; '€' + jb short loc_1C8CB + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + mov byte ptr [bx+2D54h], 0 + mov al, 1 + sub al, byte ptr word_1FE88 + push ax + call sub_A3A8 + +loc_1C8CB: ; CODE XREF: sub_1C749+168j + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + inc byte ptr [bx+38F4h] + +locret_1C8D6: ; CODE XREF: sub_1C749+96j + leave + retn 2 +sub_1C749 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C8DA proc far ; DATA XREF: sub_AEB4+6Do + ; sub_AEB4+118o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C8F0 + push 1 + call sub_1C749 + +loc_1C8F0: ; CODE XREF: sub_1C8DA+Fj + pop bp + retf +sub_1C8DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C8F2 proc far ; DATA XREF: sub_AEB4+79o + ; sub_AEB4+124o + push bp + mov bp, sp + mov al, byte ptr word_1FE88 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+2D54h], 0 + jz short loc_1C908 + push 2 + call sub_1C749 + +loc_1C908: ; CODE XREF: sub_1C8F2+Fj + pop bp + retf +sub_1C8F2 endp + +seg011 ends + +; =========================================================================== + +; Segment type: Pure code +seg012 segment byte public 'CODE' use16 + assume cs:seg012 + ;org 0Ah + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::string(string const &) +@string@$bctr$qmx6string proc far ; CODE XREF: xmsg::xmsg(string &)+52P + ; xmsg::xmsg(xmsg &)+56P ... + +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 9011h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_1C939 + 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_1C953 + +loc_1C939: ; 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_1C953: ; 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_1C979 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9009o + db 0Dh dup(0), 2, 0, 2, 0, 17h, 90h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0BBh, 0 + dw seg seg012 + 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, 1Eh, 57h + 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 *src) +@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, 9083h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_1CA22 + 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_1CA96 + +loc_1CA22: ; 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_1CA86 + 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_1CA58 + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_1CA5A +; --------------------------------------------------------------------------- + +loc_1CA58: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_1CA5A: ; 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_1CA86: ; 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_1CA96: ; 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, 9Bh, 2 + dw seg seg012 +aTstringref db 'TStringRef *',0 +byte_1CAD3 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:906Do + db 0Dh dup(0), 2, 0, 2, 0, 99h, 90h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_1CB63 + db 2 dup(0), 3, 0Dh dup(0) +byte_1CB21 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9069o + db 0Dh dup(0), 2, 0, 2, 0, 0E6h, 90h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 63h, 2 + dw seg seg012 + db 2 dup(0), 3, 0Dh dup(0) +byte_1CB63 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg012:020Do + db 0Dh dup(0), 1, 0, 1, 0, 1Eh, 57h + 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, 0B2h, 6 + dw seg seg012 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0E1h, 2 + dw seg seg012 + 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, 913Ch + 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_1CC87 + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_1CC74 + 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_1CFB2 + add sp, 6 + +loc_1CC74: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_1CC87 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_1CC87: ; 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 +var_8 = 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, 9170h + 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_1CCC2 + mov ax, 1 + jmp short loc_1CCC4 +; --------------------------------------------------------------------------- + +loc_1CCC2: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_1CCC4: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_1CD45 + xor ax, ax + push ax + push ax + push ax + push ax + mov ax, 5 + push ax + mov ax, seg seg000 + push ax + mov ax, 9262h + push ax + xor ax, ax + push ax + push ax + mov [bp+var_1A], 6 + push ds + mov ax, 10DCh + push ax ; src + 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+var_8] + 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+var_8] + push ss + push ax + push cs + mov ax, 0C04h + push ax + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1CD45: ; 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 +var_8 = 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, 91B4h + 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_1CD80 + mov ax, 1 + jmp short loc_1CD82 +; --------------------------------------------------------------------------- + +loc_1CD80: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_1CD82: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_1CE03 + xor ax, ax + push ax + push ax + push ax + push ax + mov ax, 5 + push ax + mov ax, seg seg000 + push ax + mov ax, 9262h + push ax + xor ax, ax + push ax + push ax + mov [bp+var_1A], 6 + push ds + mov ax, 10FAh + push ax ; src + 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+var_8] + 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+var_8] + push ss + push ax + push cs + mov ax, 0C04h + push ax + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1CE03: ; 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 +var_8 = 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, 91F8h + 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_1CE3B + mov ax, 1 + jmp short loc_1CE3D +; --------------------------------------------------------------------------- + +loc_1CE3B: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_1CE3D: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_1CEBE + xor ax, ax + push ax + push ax + push ax + push ax + mov ax, 5 + push ax + mov ax, seg seg000 + push ax + mov ax, 9262h + push ax + xor ax, ax + push ax + push ax + mov [bp+var_1A], 6 + push ds + mov ax, 1118h + push ax ; src + 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+var_8] + 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+var_8] + push ss + push ax + push cs + mov ax, 0C04h + push ax + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1CEBE: ; 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_1CEF0 + 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_1CEF0 + jmp loc_1CF96 +; --------------------------------------------------------------------------- + +loc_1CEF0: ; 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_1D14A + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_3DBA + 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_1CF4A + push ds + mov ax, 0E32h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1CF4A: ; 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_1CF96: ; 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_1CFB2(void (*driver)(void), char) +sub_1CFB2 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, 9212h + 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_1D004 + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3C87 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_1D004 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_1D004: ; CODE XREF: sub_1CFB2+2Bj + ; sub_1CFB2+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_1CFB2 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, 9224h + 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_1D14A + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_1E63A + jbe short loc_1D072 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3F21 + 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_1D072: ; CODE XREF: seg012:0749j + 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, 922Eh + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_1D14A + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_1E63A + jbe short loc_1D0DA + mov ax, [bp-20h] + inc ax + push ax + +loc_1D0B8: + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3F21 + 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_1D0DA: ; CODE XREF: seg012:07B1j + 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_1D0E8 proc far ; CODE XREF: sub_1D189+40p + +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, 9240h + 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_3F21 + 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_1D13C + push ds + mov ax, 0E32h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1D13C: ; CODE XREF: sub_1D0E8+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D0E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_1D14A proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg012:0734p ... + +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, 924Ah + call ___InitExceptBlocks + mov ax, word_1E636 + mov [bp+var_20], ax + mov cx, word_1E638 + 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_1D14A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D189 proc far + +var_26 = word ptr -26h +var_24 = word ptr -24h +dest = dword ptr -22h +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +n = word ptr 0Ah +arg_6 = word ptr 0Ch +src = dword ptr 0Eh +arg_C = word ptr 12h + + 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, 925Ch + call ___InitExceptBlocks + les bx, [bp+arg_0] + mov ax, es:[bx+6] + add ax, [bp+arg_C] + sub ax, [bp+arg_6] + mov [bp+var_24], ax + push ax + push cs + call near ptr sub_1D14A + pop cx + mov [bp+var_26], ax + les bx, [bp+arg_0] + mov ax, es:[bx+8] + cmp ax, [bp+var_26] + jnb short loc_1D1D1 + push [bp+var_26] + push word ptr [bp+arg_0+2] + push bx + push cs + call near ptr sub_1D0E8 + add sp, 6 + jmp short loc_1D240 +; --------------------------------------------------------------------------- + +loc_1D1D1: ; CODE XREF: sub_1D189+36j + les bx, [bp+arg_0] + mov ax, es:[bx+8] + sub ax, [bp+var_26] + cmp ax, word_1E63A + jbe short loc_1D240 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_1D240 + mov ax, [bp+var_26] + inc ax + push ax + call sub_3DBA + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+arg_0] + mov ax, es:[bx+2] + or ax, es:[bx+4] + jnz short loc_1D212 + push ds + mov ax, 0E32h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1D212: ; CODE XREF: sub_1D189+7Bj + cmp [bp+n], 0 + jz short loc_1D234 + push [bp+n] ; n + les bx, [bp+arg_0] + push word ptr es:[bx+4] + push word ptr es:[bx+2] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + call _memcpy + add sp, 0Ah + +loc_1D234: ; CODE XREF: sub_1D189+8Dj + les bx, [bp+arg_0] + mov ax, [bp+var_26] + mov es:[bx+8], ax + jmp short loc_1D251 +; --------------------------------------------------------------------------- + +loc_1D240: ; CODE XREF: sub_1D189+46j + ; sub_1D189+56j ... + les bx, [bp+arg_0] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + +loc_1D251: ; CODE XREF: sub_1D189+B5j + les bx, [bp+arg_0] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, word ptr [bp+dest+2] + jnz short loc_1D26E + cmp ax, word ptr [bp+dest] + jnz short loc_1D26E + mov ax, [bp+arg_C] + cmp ax, [bp+arg_6] + jz short loc_1D2A0 + +loc_1D26E: ; CODE XREF: sub_1D189+D6j + ; sub_1D189+DBj + les bx, [bp+arg_0] + mov ax, es:[bx+6] + sub ax, [bp+n] + sub ax, [bp+arg_6] + push ax ; n + mov ax, es:[bx+2] + add ax, [bp+n] + add ax, [bp+arg_6] + push word ptr es:[bx+4] + push ax ; src + mov ax, word ptr [bp+dest] + add ax, [bp+n] + add ax, [bp+arg_C] + push word ptr [bp+dest+2] + push ax ; dest + call _memmove + add sp, 0Ah + +loc_1D2A0: ; CODE XREF: sub_1D189+E3j + cmp [bp+arg_C], 0 + jz short loc_1D2E4 + mov ax, word ptr [bp+src] + or ax, word ptr [bp+src+2] + jz short loc_1D2CB + push [bp+arg_C] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+dest] + add ax, [bp+n] + push word ptr [bp+dest+2] + push ax ; dest + call _memmove + add sp, 0Ah + jmp short loc_1D2E4 +; --------------------------------------------------------------------------- + +loc_1D2CB: ; CODE XREF: sub_1D189+123j + push [bp+arg_C] ; n + mov ax, 20h ; ' ' + push ax ; c + mov ax, word ptr [bp+dest] + add ax, [bp+n] + push word ptr [bp+dest+2] + push ax ; s + call _memset + add sp, 8 + +loc_1D2E4: ; CODE XREF: sub_1D189+11Bj + ; sub_1D189+140j + les bx, [bp+arg_0] + mov ax, [bp+var_24] + mov es:[bx+6], ax + push es + les ax, [bp+dest] + 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+arg_0] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, word ptr [bp+dest+2] + jnz short loc_1D316 + cmp ax, word ptr [bp+dest] + jz short loc_1D339 + +loc_1D316: ; CODE XREF: sub_1D189+186j + les bx, [bp+arg_0] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3C87 + pop cx + pop cx + les bx, [bp+arg_0] + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + mov es:[bx+4], dx + mov es:[bx+2], ax + +loc_1D339: ; CODE XREF: sub_1D189+18Bj + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D189 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D347 proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + 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_1E630 + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E630, ax + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D347 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D364 proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + 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_1E632 + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E632, ax + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D364 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D381 proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; string::skip_whitespace(int) +@string@skip_whitespace$qi: + sub sp, 2 + push si + push di + mov ax, word_1E634 + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E634, ax + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D381 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D39E proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; string::initial_capacity(unsigned int) +@string@initial_capacity$qui: + sub sp, 2 + push si + push di + mov ax, word_1E636 + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E636, ax + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D39E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D3BB proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; string::resize_increment(unsigned int) +@string@resize_increment$qui: + sub sp, 2 + push si + push di + mov ax, word_1E638 + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E638, ax + cmp word_1E638, 0 + jnz short loc_1D3DC + mov word_1E638, 1 + +loc_1D3DC: ; CODE XREF: sub_1D3BB+19j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D3BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D3E5 proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; string::max_waste(unsigned int) +@string@max_waste$qui: + sub sp, 2 + push si + push di + mov ax, word_1E63A + mov [bp+var_2], ax + mov ax, [bp+arg_0] + mov word_1E63A, ax + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D3E5 endp + +; --------------------------------------------------------------------------- +byte_1D402 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9238o seg000:9254o + db 0Dh dup(0), 2, 0, 2, 0, 97h, 92h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_1D492 + db 2 dup(0), 3, 0Dh dup(0), 6, 0, 3, 0, 26h, 0, 2 dup(0FFh) + db 7, 0, 2Eh, 0, 3Ah, 0Dh dup(0), 2, 0, 2, 0, 0E4h, 92h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 92h, 0Bh + dw seg seg012 + dw 0 + db 3, 0Dh dup(0) +byte_1D492 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg012:0B3Co seg012:0C3Eo + db 0Dh dup(0), 1, 0, 1, 0, 1Eh, 57h + 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, 0Fh, 3 + dw seg seg012 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_1D504 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:921Co + db 0Dh dup(0), 2, 0, 2, 0, 31h, 93h + dw seg seg000 + db 5, 0, 4Ah, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 2 dup(3Ah) + db 6Fh, 75h, 74h, 6Fh, 66h, 72h, 61h, 6Eh + dd loc_6566+1 + dd byte_1D492 + dw 0 + db 3, 1Bh dup(0) +seg012 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_1D560 dw 0 ; DATA XREF: sub_48A+7r + ; ___call_terminate+57o ... +word_1D562 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +off_1D564 dw offset loc_554E ; DATA XREF: sub_48A+20w sub_3C27+Cr ... +off_1D566 dw offset sub_4C4C ; DATA XREF: sub_48A+Br sub_3C27+2r ... +off_1D568 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_3B53+24r ... +byte_1D56A db 48h ; DATA XREF: sub_292E+10r + db 45h ; E + db 43h ; C + db 4Bh ; K + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aBorlandCCopyri db 'Borland C++ - Copyright 1993 Borland Intl.',0 +aDivideError db 'Divide error',0Dh,0Ah,0 +dword_1D5BA dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_1D5BE dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_1D5C2 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_1D5C6 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_1D5CE dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:9000w +word_1D5D2 dw 0 ; DATA XREF: start+127r seg000:8FFAw +word_1D5D4 dw 0 ; DATA XREF: start+46w +word_1D5D6 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_1D5D8 dw 0 ; DATA XREF: start+55w seg000:8FB5r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_1D5DC dw 0 ; DATA XREF: start+16w start+C7r ... +word_1D5DE dw 0 ; DATA XREF: __IOERROR:loc_3372w + ; seg000:42BAw ... + db 0FFh + db 0FFh + db 90h ; + db 8Eh ; Ž +word_1D5E4 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_1D5E6 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_1D5E8 dw 0 ; DATA XREF: sub_3FA2+6Ew __sbrk+12r ... +word_1D5EA dw 0 ; DATA XREF: start+8Bw sub_3FA2+6Aw ... +word_1D5EC dw 0 ; DATA XREF: sub_3FA2+7Ew __brk+1Cr ... +word_1D5EE dw 0 ; DATA XREF: start+21w start+F5w ... + db 64h ; d + db 0 + db 32h ; 2 + db 0 + db 14h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 32h ; 2 + db 0 + db 14h + db 0 + db 0 + db 0 + db 0 + db 0 + db 2Ch ; , + db 1 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 32h ; 2 + db 0 + db 0Ah + db 0 + db 0 + db 0 + db 90h ; + db 1 + db 2Ch ; , + db 1 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 32h ; 2 + db 0 + db 0Ah + db 0 + db 0F4h ; ô + db 1 + db 90h ; + db 1 + db 0FAh ; ú + db 0 + db 96h ; – + db 0 + db 46h ; F + db 0 + db 14h + db 0 + db 58h ; X + db 2 + db 0F4h ; ô + db 1 + db 2Ch ; , + db 1 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 32h ; 2 + db 0 + db 0E8h ; è + db 3 + db 0BCh ; ¼ + db 2 + db 0F4h ; ô + db 1 + db 2Ch ; , + db 1 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 0DCh ; Ü + db 5 + db 20h + db 3 + db 58h ; X + db 2 + db 2Ch ; , + db 1 + db 0C8h ; È + db 0 + db 64h ; d + db 0 + db 0FAh ; ú + db 0FFh + db 0DCh ; Ü + db 5 + db 0E8h ; è + db 3 + db 20h + db 3 + db 0BCh ; ¼ + db 2 + db 0F4h ; ô + db 1 + db 0FAh ; ú + db 0FFh + db 0D0h ; Ð + db 7 + db 8 + db 7 + db 14h + db 5 + db 0E8h ; è + db 3 + db 0BCh ; ¼ + db 2 + db 40h ; @ + db 40h ; @ + db 30h ; 0 + db 30h ; 0 + db 20h + db 48h ; H + db 48h ; H + db 36h ; 6 + db 36h ; 6 + db 14h + db 40h ; @ + db 40h ; @ + db 30h ; 0 + db 30h ; 0 + db 1Ch + db 34h ; 4 + db 34h ; 4 + db 2Eh ; . + db 2Eh ; . + db 0Eh + db 44h ; D + db 44h ; D + db 34h ; 4 + db 34h ; 4 + db 1Ch + db 38h ; 8 + db 38h ; 8 + db 2Ch ; , + db 2Ch ; , + db 20h + db 48h ; H + db 48h ; H + db 36h ; 6 + db 36h ; 6 + db 10h + db 50h ; P + db 50h ; P + db 40h ; @ + db 40h ; @ + db 1Ch + db 50h ; P + db 50h ; P + db 40h ; @ + db 40h ; @ + db 14h + db 0 + db 0 + db 0 + db 0 + db 0 +aCOul db '–²Žž‹ó2.dat',0 ; DATA XREF: _main+5o +aGameft_bft db 'GAMEFT.bft',0 ; DATA XREF: _main+2Fo +aOp db 'op',0 ; DATA XREF: _main+79o +; char arg0[] +arg0 db 'mainl',0 ; DATA XREF: _main+87o +aLose_bf2 db 'lose.bf2',0 ; DATA XREF: sub_9B14+318o +aRound_bf2 db 'round.bf2',0 ; DATA XREF: sub_9B14+321o +aZikicw_bf2 db 'zikicw.bf2',0 ; DATA XREF: sub_9B14+32Ao + db 0 + db 0 + db 0 + db 0 + db 1 + db 1 + db 1 + db 1 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + db 2 + db 2 + db 3 + db 3 + db 3 + db 3 + db 3 + db 3 + db 3 + db 4 + db 4 + db 4 + db 4 + db 4 + db 4 + db 5 + db 5 + db 5 + db 5 + db 5 + db 5 + db 6 + db 6 + db 6 + db 6 + db 6 + db 6 + db 6 + db 7 + db 7 + db 7 + db 7 + db 7 + db 7 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 10h + db 10h + db 10h + db 10h + db 10h + db 10h + db 10h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 12h + db 12h + db 12h + db 12h + db 12h + db 12h + db 12h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h +aBfnt db 'BFNT' + db 1Ah + db 0 +word_1D7DE dw 0 ; DATA XREF: sub_66A+Er sub_66A+60r ... +word_1D7E0 dw 27Fh ; DATA XREF: sub_908+19r sub_C40+30w ... +word_1D7E2 dw 27Fh ; DATA XREF: sub_66A:loc_67Er + ; sub_66A:loc_6D4r ... +word_1D7E4 dw 0 ; DATA XREF: sub_908:loc_946r + ; sub_9E2+Cr ... +word_1D7E6 dw 18Fh ; DATA XREF: sub_66A+33r sub_66A+47r ... +word_1D7E8 dw 18Fh ; DATA XREF: sub_C40+6Bw sub_1402+44w ... +word_1D7EA dw 0A800h ; DATA XREF: sub_908+66r sub_9E2+61r ... +word_1D7EC dw 7CB0h ; DATA XREF: sub_C40+74w sub_CD2+13r ... + dw 0 + db 80h ; € + db 0 + db 0C0h ; À + db 0 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 0 + db 0F8h ; ø + db 0 + db 0FCh ; ü + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 80h ; € + db 0FFh + db 0C0h ; À + db 0FFh + db 0E0h ; à + db 0FFh + db 0F0h ; ð + db 0FFh + db 0F8h ; ø + db 0FFh + db 0FCh ; ü + db 0FFh + db 0FEh ; þ + db 0FFh + db 0FFh +word_1D810 dw 0 ; DATA XREF: sub_7E2+5r sub_7E2+26r +word_1D812 dw 0FFFFh ; DATA XREF: sub_766r sub_766+5Dr ... +byte_1D814 db 0 ; DATA XREF: sub_8E8+4r + db 0 +word_1D816 dw 0 ; DATA XREF: sub_11B6+2r sub_11B6+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_1D820 dw 0A800h ; DATA XREF: sub_C40+7Er + ; sub_1402:loc_1421w ... +word_1D822 dw 3E80h ; DATA XREF: sub_1402+37w sub_145C+Fw ... +word_1D824 dw 190h ; DATA XREF: sub_C40+4Fr sub_1402+40w ... +word_1D826 dw 50h ; DATA XREF: sub_C40+19r sub_C40+6Er +word_1D828 dw 0 ; DATA XREF: sub_9E2+56r seg000:0B5Dr ... + db 55h ; U + db 0 +word_1D82C dw 0 ; DATA XREF: sub_2BC4:loc_2BE9w + ; sub_2C00+5r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_1D834 dw 64h ; DATA XREF: sub_536+8w + ; sub_536:loc_55Dw ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0FFh + db 0FFh + db 0 + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0 + db 0FFh + db 0FFh + db 0FFh + db 77h ; w + db 77h ; w + db 77h ; w + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª +word_1D866 dw 0 ; DATA XREF: seg000:1CA9r +word_1D868 dw 0 ; DATA XREF: sub_287C+36w + dw 0 +word_1D86C dw 200h ; DATA XREF: seg000:057Dr seg000:05A3r +byte_1D86E db 0 ; DATA XREF: seg000:loc_5B0w + ; seg000:05BCw + db 0 + db 0 + db 0 +dword_1D872 dd 1 ; DATA XREF: sub_1EEC+Cr sub_1EEC+15r ... + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FEh ; þ + db 0 + db 0FDh ; ý + db 0 + db 0FCh ; ü + db 0 + db 0FBh ; û + db 0 + db 0FAh ; ú + db 0 + db 0F8h ; ø + db 0 + db 0F7h ; ÷ + db 0 + db 0F5h ; õ + db 0 + db 0F3h ; ó + db 0 + db 0F1h ; ñ + db 0 + db 0EFh ; ï + db 0 + db 0EDh ; í + db 0 + db 0EAh ; ê + db 0 + db 0E7h ; ç + db 0 + db 0E5h ; å + db 0 + db 0E2h ; â + db 0 + db 0DFh ; ß + db 0 + db 0DCh ; Ü + db 0 + db 0D8h ; Ø + db 0 + db 0D5h ; Õ + db 0 + db 0D1h ; Ñ + db 0 + db 0CEh ; Î + db 0 + db 0CAh ; Ê + db 0 + db 0C6h ; Æ + db 0 + db 0C2h ;  + db 0 + db 0BEh ; ¾ + db 0 + db 0B9h ; ¹ + db 0 + db 0B5h ; µ + db 0 + db 0B1h ; ± + db 0 + db 0ACh ; ¬ + db 0 + db 0A7h ; § + db 0 + db 0A2h ; ¢ + db 0 + db 9Dh ; + db 0 + db 98h ; ˜ + db 0 + db 93h ; “ + db 0 + db 8Eh ; Ž + db 0 + db 89h ; ‰ + db 0 + db 84h ; „ + db 0 + db 7Eh ; ~ + db 0 + db 79h ; y + db 0 + db 73h ; s + db 0 + db 6Dh ; m + db 0 + db 68h ; h + db 0 + db 62h ; b + db 0 + db 5Ch ; \ + db 0 + db 56h ; V + db 0 + db 50h ; P + db 0 + db 4Ah ; J + db 0 + db 44h ; D + db 0 + db 3Eh ; > + db 0 + db 38h ; 8 + db 0 + db 32h ; 2 + db 0 + db 2Ch ; , + db 0 + db 26h ; & + db 0 + db 1Fh + db 0 + db 19h + db 0 + db 13h + db 0 + db 0Dh + db 0 + db 6 + db 0 + db 0 + db 0 + db 0FAh ; ú + db 0FFh + db 0F3h ; ó + db 0FFh + db 0EDh ; í + db 0FFh + db 0E7h ; ç + db 0FFh + db 0E1h ; á + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0CEh ; Î + db 0FFh + db 0C8h ; È + db 0FFh + db 0C2h ;  + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0B0h ; ° + db 0FFh + db 0AAh ; ª + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 9Eh ; ž + db 0FFh + db 98h ; ˜ + db 0FFh + db 93h ; “ + db 0FFh + db 8Dh ; + db 0FFh + db 87h ; ‡ + db 0FFh + db 82h ; ‚ + db 0FFh + db 7Ch ; | + db 0FFh + db 77h ; w + db 0FFh + db 72h ; r + db 0FFh + db 6Dh ; m + db 0FFh + db 68h ; h + db 0FFh + db 63h ; c + db 0FFh + db 5Eh ; ^ + db 0FFh + db 59h ; Y + db 0FFh + db 54h ; T + db 0FFh + db 4Fh ; O + db 0FFh + db 4Bh ; K + db 0FFh + db 47h ; G + db 0FFh + db 42h ; B + db 0FFh + db 3Eh ; > + db 0FFh + db 3Ah ; : + db 0FFh + db 36h ; 6 + db 0FFh + db 32h ; 2 + db 0FFh + db 2Fh ; / + db 0FFh + db 2Bh ; + + db 0FFh + db 28h ; ( + db 0FFh + db 24h ; $ + db 0FFh + db 21h ; ! + db 0FFh + db 1Eh + db 0FFh + db 1Bh + db 0FFh + db 19h + db 0FFh + db 16h + db 0FFh + db 13h + db 0FFh + db 11h + db 0FFh + db 0Fh + db 0FFh + db 0Dh + db 0FFh + db 0Bh + db 0FFh + db 9 + db 0FFh + db 8 + db 0FFh + db 6 + db 0FFh + db 5 + db 0FFh + db 4 + db 0FFh + db 3 + db 0FFh + db 2 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 2 + db 0FFh + db 3 + db 0FFh + db 4 + db 0FFh + db 5 + db 0FFh + db 6 + db 0FFh + db 8 + db 0FFh + db 9 + db 0FFh + db 0Bh + db 0FFh + db 0Dh + db 0FFh + db 0Fh + db 0FFh + db 11h + db 0FFh + db 13h + db 0FFh + db 16h + db 0FFh + db 19h + db 0FFh + db 1Bh + db 0FFh + db 1Eh + db 0FFh + db 21h ; ! + db 0FFh + db 24h ; $ + db 0FFh + db 28h ; ( + db 0FFh + db 2Bh ; + + db 0FFh + db 2Fh ; / + db 0FFh + db 32h ; 2 + db 0FFh + db 36h ; 6 + db 0FFh + db 3Ah ; : + db 0FFh + db 3Eh ; > + db 0FFh + db 42h ; B + db 0FFh + db 47h ; G + db 0FFh + db 4Bh ; K + db 0FFh + db 4Fh ; O + db 0FFh + db 54h ; T + db 0FFh + db 59h ; Y + db 0FFh + db 5Eh ; ^ + db 0FFh + db 63h ; c + db 0FFh + db 68h ; h + db 0FFh + db 6Dh ; m + db 0FFh + db 72h ; r + db 0FFh + db 77h ; w + db 0FFh + db 7Ch ; | + db 0FFh + db 82h ; ‚ + db 0FFh + db 87h ; ‡ + db 0FFh + db 8Dh ; + db 0FFh + db 93h ; “ + db 0FFh + db 98h ; ˜ + db 0FFh + db 9Eh ; ž + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 0AAh ; ª + db 0FFh + db 0B0h ; ° + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0C2h ;  + db 0FFh + db 0C8h ; È + db 0FFh + db 0CEh ; Î + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0E1h ; á + db 0FFh + db 0E7h ; ç + db 0FFh + db 0EDh ; í + db 0FFh + db 0F3h ; ó + db 0FFh + db 0FAh ; ú + db 0FFh + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 +word_1DAF8 dw 0A000h ; DATA XREF: sub_128C+13r sub_12D0+13r ... + db 50h ; P + db 0 +word_1DAFC dw 1 ; DATA XREF: sub_153A+2Er +unk_1DAFE db 0 ; DATA XREF: seg000:2196r + db 0 +word_1DB00 dw 0 ; DATA XREF: seg000:2188r +word_1DB02 dw 0 ; DATA XREF: sub_20FC+Ew sub_20FC+16w ... +byte_1DB04 db 0 ; DATA XREF: sub_20FC+24r sub_20FC+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_1DB0E dw 0 ; DATA XREF: sub_1F2Cr sub_226E+6w ... +word_1DB10 dw 0 ; DATA XREF: sub_224C+15w sub_226E+1Bw ... +word_1DB12 dw 0 ; DATA XREF: seg000:0577w sub_15EE+DFw ... +word_1DB14 dw 100h ; DATA XREF: sub_2294+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_1DB1B db 0 ; DATA XREF: sub_25F0+24r + ; sub_25F0:loc_2636r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_1DB22 dw 0 ; DATA XREF: sub_25F0+6Er +word_1DB24 dw 0 ; DATA XREF: sub_25F0+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_1DB32 dw 0 ; DATA XREF: sub_25F0+32r + db 0 + db 0 +word_1DB36 dw 0 ; DATA XREF: sub_248Cr sub_248C+7r ... +word_1DB38 dw 0 ; DATA XREF: sub_248C:loc_24A9r + ; sub_24D0+5r ... +word_1DB3A dw 0 ; DATA XREF: sub_248C+24r sub_248C+2Br +byte_1DB3C db 0 ; DATA XREF: sub_E922:loc_E938w + ; sub_ECB2+3r + db 0 +aPal98Grb db 'pal98 grb',0 +word_1DB48 dw 0FFFFh ; DATA XREF: sub_B4A8+6Bw sub_B4A8+C3w ... +byte_1DB4A db 0FFh ; DATA XREF: sub_EC2E+5w sub_EC3A+Dr ... +byte_1DB4B db 0 ; DATA XREF: sub_EC2Ew sub_EC3A+33w ... +a_exe db '.exe',0 + db 0 + db 0 + db 0 + db 20h + db 10h + db 2 + db 12h + db 12h + db 12h + db 40h ; @ + db 10h + db 11h + db 2 + db 11h + db 20h + db 12h + db 12h + db 12h + db 12h + db 20h + db 20h + db 12h + db 12h + db 0Eh + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 24h ; $ + db 10h + db 4 + db 10h + db 8 + db 0Ah + db 30h ; 0 + db 50h ; P + db 18h + db 11h + db 0Bh + db 4 + db 50h ; P + db 10h + db 30h ; 0 + db 4Ah ; J + db 32h ; 2 + db 20h + db 18h + db 44h ; D + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aYume_cfg db 'YUME.CFG',0 ; DATA XREF: sub_A346+6o + db 0 +byte_1DB9E db 0FFh ; DATA XREF: sub_9EBF:loc_A117w + ; sub_DA43+254r ... + db 0 +a00ch_bf2 db '00ch.bf2',0 + db 0 + db 0 + db 0 + db 0FFh + db 0FFh + 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 ; þ +aEnedat_dat db 'ENEDAT.DAT',0 ; DATA XREF: sub_13CDD+7o + db 0 + db 'À¶ÊÀ°Ð',0 + db 4 + db 8 + db 0 + db 0 + db 8 + db 1 + db 0 + db 8 + db 0 + db 8 + db 0 + db 0 + db 1 + db 0 + db 4 + db 0 + db 4 + db 4 + db 0 + db 4 + db 0 + db 0 + db 1 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 0 + db 1 + db 1 + db 0 + db 0 + db 4 + db 4 + db 0 + db 4 + db 0 + db 0 + db 1 + db 4 + db 0 + db 4 + db 0 + db 0 + db 1 + db 0 + db 1 + db 4 + db 0 + db 0 + db 1 + db 0 + db 2 + db 0 + db 2 + db 8 + db 0 + db 2 + db 0 + db 0 + db 8 + db 0 + db 8 + db 4 + db 0 + db 8 + db 0 + db 8 + db 0 + db 0 + db 2 + db 0 + db 2 + db 0 + db 8 + db 1 + db 0 + db 0 + db 2 + db 1 + db 0 + db 1 + db 0 + db 4 + db 0 + db 8 + db 0 + db 4 + db 0 + db 0 + db 2 + db 2 + db 0 + db 0 + db 2 + db 0 + db 1 + db 0 + db 4 + db 0 + db 1 + db 4 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 + db 4 + db 2 + db 0 + db 0 + db 1 + db 0 + db 4 + db 0 + db 4 + db 1 + db 0 + db 0 + db 8 + db 1 + db 0 + db 0 + db 1 + db 8 + db 0 + db 8 + db 0 + db 0 + db 1 + db 0 + db 4 + db 0 + db 8 + db 4 + db 0 + db 8 + db 0 + db 1 + db 0 + db 0 + db 2 + db 0 + db 8 + db 0 + db 8 + db 0 + db 1 + db 0 + db 2 + db 1 + db 0 + db 1 + db 0 + db 0 + db 4 + db 0 + db 4 + db 2 + db 0 + db 0 + db 8 + db 8 + db 0 + db 2 + db 0 + db 0 + db 8 + db 0 + db 8 + db 4 + db 0 + db 8 + db 0 + db 8 + db 0 + db 0 + db 2 + db 0 + db 2 + db 0 + db 8 + db 2 + db 0 + db 0 + db 2 + db 2 + db 0 + db 2 + db 0 + db 4 + db 0 + db 8 + db 0 + db 4 + db 0 + db 0 + db 2 + db 2 + db 0 + db 0 + db 2 + db 0 + db 1 + db 0 + db 4 + db 0 + db 1 + db 4 + db 0 + db 1 + db 0 + db 8 + db 0 + db 0 + db 8 + db 2 + db 0 + db 0 + db 0 + db 0 + db 4 + db 0 + db 2 + db 0 + db 1 + db 4 + db 0 + db 1 + db 0 + db 4 + db 0 + db 8 + db 0 + db 2 + db 0 + db 0 + db 2 + db 0 + db 8 + db 0 + db 0 + db 0 + db 1 + db 0 + db 4 + db 1 + db 0 + db 4 + db 0 + db 0 + db 2 + db 2 + db 0 + db 0 + db 0 + db 0 + db 1 + db 0 + db 8 + db 0 + db 4 + db 8 + db 0 + db 1 + db 0 + db 0C0h ; À + db 15h + db 6Bh ; k + db 40h ; @ + db 0EBh ; ë + db 95h ; • + db 8 + db 0Eh + db 2 + db 14h + db 0 + db 0 +byte_1DCF8 db 0 ; DATA XREF: sub_CA3C+4r sub_CA3C+31r ... +byte_1DCF9 db 0 ; DATA XREF: sub_CA3C+Br + ; sub_CA3C:loc_CA81r ... +aPqrstuvwxyz_ db 'PQRSTUVWXYZ[\]^_',0 ; DATA XREF: sub_CACB+18o +aAbcdefghijklmn db '`abcdefghijklmno',0 ; DATA XREF: sub_CACB+25o +aPqrstuvwxyz db 'pqrstuvwxyz{|}~' ; DATA XREF: sub_CACB+32o + db 7Fh ;  + db 0 +aVgdejziiklm db '‚ƒ„…†‡ˆ‰Š‹Œ',0 ; DATA XREF: sub_CACB+42o +asc_1DD39 db 'ÇÈÉÊËÌÍÎ',0 ; DATA XREF: sub_CACB+60o +asc_1DD42 db 'ÐÑÒÊËÌÍÎ',0 ; DATA XREF: sub_CACB+83o +aNoptufxccssI db 'Ž’“”•–—˜™š›œ',0 ; DATA XREF: sub_CACB+A7o +asc_1DD5A db ' ',0 ; DATA XREF: sub_CB81+140o + db 0 +unk_1DD7C db 0Ch ; DATA XREF: sub_15D53+2Eo + db 0Dh + db 0 +unk_1DD7F db 0Ah ; DATA XREF: sub_15D53+40o + db 0Bh + db 0Eh + db 0Fh + db 0 +asc_1DD84 db ' ',0 ; DATA XREF: sub_15D53+114o + ; sub_15D53+123o + db 0 + db 86h ; † + db 20h + db 0Ch + db 23h ; # + db 0A2h ; ¢ + db 20h + db 18h + db 28h ; ( + db 20h + db 28h ; ( + db 24h ; $ + db 28h ; ( + db 20h + db 2Dh ; - + db 24h ; $ + db 2Dh ; - + db 0A8h ; ¨ + db 20h + db 28h ; ( + db 28h ; ( + db 0A8h ; ¨ + db 2Fh ; / + db 0AEh ; ® + db 34h ; 4 +word_1DDA6 dw 20AEh ; DATA XREF: sub_17FCF+Fr + db 0AEh ; ® + db 2Ah ; * + db 0B6h ; ¶ + db 20h +word_1DDAC dw 2AB6h ; DATA XREF: sub_17FCF+46r + db 0 + db 32h ; 2 + db 0Ah + db 32h ; 2 + db 14h + db 32h ; 2 + db 1Eh + db 32h ; 2 + db 0 + db 0 + db 3Eh ; > + db 61h ; a + db 51h ; Q + db 49h ; I + db 45h ; E + db 43h ; C + db 3Eh ; > + db 0 + db 3Eh ; > + db 8 + db 8 + db 8 + db 28h ; ( + db 28h ; ( + db 18h + db 0 + db 7Fh ;  + db 40h ; @ + db 20h + db 1Ch + db 3 + db 41h ; A + db 3Eh ; > + db 0 + db 3Eh ; > + db 41h ; A + db 1 + db 1Eh + db 1 + db 41h ; A + db 3Eh ; > + db 0 + db 2 + db 2 + db 7Fh ;  + db 22h ; " + db 12h + db 0Ah + db 6 + db 0 + db 1Eh + db 61h ; a + db 1 + db 61h ; a + db 5Eh ; ^ + db 40h ; @ + db 7Eh ; ~ + db 0 + db 3Eh ; > + db 41h ; A + db 41h ; A + db 7Eh ; ~ + db 40h ; @ + db 41h ; A + db 3Eh ; > + db 0 + db 8 + db 8 + db 8 + db 8 + db 6 + db 41h ; A + db 7Fh ;  + db 0 + db 3Eh ; > + db 41h ; A + db 41h ; A + db 3Eh ; > + db 41h ; A + db 41h ; A + db 3Eh ; > + db 0 + db 3Eh ; > + db 41h ; A + db 1 + db 3Fh ; ? + db 41h ; A + db 41h ; A + db 3Eh ; > + db 0 + db 10h + db 27h ; ' + db 0E8h ; è + db 3 + db 64h ; d + db 0 + db 0Ah + db 0 + db 1 + db 0 + db 6Ch ; l + db 0 + db 60h ; ` + db 0 + db 50h ; P + db 0 + db 40h ; @ + db 0 + db 30h ; 0 + db 0 + db 20h + db 0 + db 10h + db 0 + db 8 + db 0 + db 4 + db 0 + db 2 + db 0 + db 8 + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 8 + db 0 + db 2 + db 0 + db 0 + db 3 + db 0 + db 7 + db 0 + db 6 + db 0 + db 6 + db 0 + db 9 + db 0 + db 5 + db 0 + db 0Ch + db 0 + db 6 + db 0 + db 0Fh + db 0 + db 7 +aVlvVwb@vbvpvnv db '‚l‚`‚w@‚b‚‚‚‚‚@@@~',0 ; DATA XREF: sub_E3F2+30o +aGqbGwgagGbgni db 'ƒQ[ƒWƒAƒ^ƒbƒN‰ñ”@@@~',0 ; DATA XREF: sub_E3F2+3Fo +aGGxgagGbgni db 'ƒ{ƒXƒAƒ^ƒbƒN‰ñ”@@@@~',0 ; DATA XREF: sub_E3F2+4Eo +aGGxgkgobGtgli db 'ƒ{ƒXƒŠƒo[ƒTƒ‹‰ñ”@@@~',0 ; DATA XREF: sub_E3F2+5Do +aGGxgpgjgbgni db 'ƒ{ƒXƒpƒjƒbƒN‰ñ”@@@@~',0 ; DATA XREF: sub_E3F2+6Co +aB@b@b@vsvnvsvV db '@@@‚s‚n‚s‚`‚k@@@@@',0 ; DATA XREF: sub_E3F2+7Bo +aB@b@vvvhvmvmvd db '@@‚v‚h‚m‚m‚d‚q@‚a‚n‚m‚t‚r@@',0 ; DATA XREF: sub_E3F2+95o +aB@b@b@vVkvkb@v db '@@@‚`‚k‚k@‚b‚k‚d‚`‚qII@@',0 ; DATA XREF: sub_E3F2+9Eo +aOcvsrlrfb@b@b@ db 'Žc‚èl”@@@@@@@@~',0 ; DATA XREF: sub_E3F2+ADo + db 0 + db '<',0 + db 0 + db 0 + db 0FFh + db 0 + db 0 + db 0 + db 0FFh + db 0 + db 0 + db 0 + db 3Ch ; < + db 0 + db 0 + db 0 + db 1Eh + db 0 + db 0 + db 0 + db 7Fh ;  + db 80h ; € + db 0 + db 0 + db 7Fh ;  + db 80h ; € + db 0 + db 0 + db 1Eh + db 0 + db 0 + db 0 + db 0Fh + db 0 + db 0 + db 0 + db 3Fh ; ? + db 0C0h ; À + db 0 + db 0 + db 3Fh ; ? + db 0C0h ; À + db 0 + db 0 + db 0Fh + db 0 + db 0 + db 0 + db 7 + db 80h ; € + db 0 + db 0 + db 1Fh + db 0E0h ; à + db 0 + db 0 + db 1Fh + db 0E0h ; à + db 0 + db 0 + db 7 + db 80h ; € + db 0 + db 0 + db 3 + db 0C0h ; À + db 0 + db 0 + db 0Fh + db 0F0h ; ð + db 0 + db 0 + db 0Fh + db 0F0h ; ð + db 0 + db 0 + db 3 + db 0C0h ; À + db 0 + db 0 + db 1 + db 0E0h ; à + db 0 + db 0 + db 7 + db 0F8h ; ø + db 0 + db 0 + db 7 + db 0F8h ; ø + db 0 + db 0 + db 1 + db 0E0h ; à + db 0 + db 0 + db 0 + db 0F0h ; ð + db 0 + db 0 + db 3 + db 0FCh ; ü + db 0 + db 0 + db 3 + db 0FCh ; ü + db 0 + db 0 + db 0 + db 0F0h ; ð + db 0 + db 0 + db 0 + db 78h ; x + db 0 + db 0 + db 1 + db 0FEh ; þ + db 0 + db 0 + db 1 + db 0FEh ; þ + db 0 + db 0 + db 0 + db 78h ; x + db 0 + db 0 + db 0 + db 3Ch ; < + db 0 + db 0 + db 0 + db 0FFh + db 0 + db 0 + db 0 + db 0FFh + db 0 + db 0 + db 0 + db 3Ch ; < + db 0 + db 0 + db 0 + db 1Eh + db 0 + db 0 + db 0 + db 7Fh ;  + db 80h ; € + db 0 + db 0 + db 7Fh ;  + db 80h ; € + db 0 + db 0 + db 1Eh + db 0 + db 0 + db 0 + db 0Fh + db 0 + db 0 + db 0 + db 3Fh ; ? + db 0C0h ; À + db 0 + db 0 + db 3Fh ; ? + db 0C0h ; À + db 0 + db 0 + db 0Fh + db 0 + db 0 + db 0 + db 7 + db 80h ; € + db 0 + db 0 + db 1Fh + db 0E0h ; à + db 0 + db 0 + db 1Fh + db 0E0h ; à + db 0 + db 0 + db 7 + db 80h ; € + db 0 + db 0 + db 3 + db 0C0h ; À + db 0 + db 0 + db 0Fh + db 0F0h ; ð + db 0 + db 0 + db 0Fh + db 0F0h ; ð + db 0 + db 0 + db 3 + db 0C0h ; À + db 0 + db 0 + db 1 + db 0E0h ; à + db 0 + db 0 + db 7 + db 0F8h ; ø + db 0 + db 0 + db 7 + db 0F8h ; ø + db 0 + db 0 + db 1 + db 0E0h ; à + db 0 + db 0 + db 0 + db 0F0h ; ð + db 0 + db 0 + db 3 + db 0FCh ; ü + db 0 + db 0 + db 3 + db 0FCh ; ü + db 0 + db 0 + db 0 + db 0F0h ; ð + db 0 + db 0 + db 0 + db 78h ; x + db 0 + db 0 + db 1 + db 0FEh ; þ + db 0 + db 0 + db 1 + db 0FEh ; þ + db 0 + db 0 + db 0 + db 78h ; x + db 0 + db 18h + db 0 + db 0 + db 0 + db 81h ; + db 0 + db 0 + db 0 + db 81h ; + db 0 + db 0 + db 0 + db 18h + db 0 + db 0 + db 0 + db 0Ch + db 0 + db 0 + db 0 + db 40h ; @ + db 80h ; € + db 0 + db 0 + db 40h ; @ + db 80h ; € + db 0 + db 0 + db 0Ch + db 0 + db 0 + db 0 + db 6 + db 0 + db 0 + db 0 + db 20h + db 40h ; @ + db 0 + db 0 + db 20h + db 40h ; @ + db 0 + db 0 + db 6 + db 0 + db 0 + db 0 + db 3 + db 0 + db 0 + db 0 + db 10h + db 20h + db 0 + db 0 + db 10h + db 20h + db 0 + db 0 + db 3 + db 0 + db 0 + db 0 + db 1 + db 80h ; € + db 0 + db 0 + db 8 + db 10h + db 0 + db 0 + db 8 + db 10h + db 0 + db 0 + db 1 + db 80h ; € + db 0 + db 0 + db 0 + db 0C0h ; À + db 0 + db 0 + db 4 + db 8 + db 0 + db 0 + db 4 + db 8 + db 0 + db 0 + db 0 + db 0C0h ; À + db 0 + db 0 + db 0 + db 60h ; ` + db 0 + db 0 + db 2 + db 4 + db 0 + db 0 + db 1 + db 4 + db 0 + db 0 + db 0 + db 60h ; ` + db 0 + db 0 + db 0 + db 30h ; 0 + db 0 + db 0 + db 1 + db 2 + db 0 + db 0 + db 1 + db 2 + db 0 + db 0 + db 0 + db 30h ; 0 + db 0 + db 0 + db 0 + db 18h + db 0 + db 0 + db 0 + db 81h ; + db 0 + db 0 + db 0 + db 81h ; + db 0 + db 0 + db 0 + db 18h + db 0 + db 0 + db 0 + db 0Ch + db 0 + db 0 + db 0 + db 40h ; @ + db 80h ; € + db 0 + db 0 + db 40h ; @ + db 80h ; € + db 0 + db 0 + db 0Ch + db 0 + db 0 + db 0 + db 6 + db 0 + db 0 + db 0 + db 20h + db 40h ; @ + db 0 + db 0 + db 20h + db 40h ; @ + db 0 + db 0 + db 6 + db 0 + db 0 + db 0 + db 3 + db 0 + db 0 + db 0 + db 10h + db 20h + db 0 + db 0 + db 10h + db 20h + db 0 + db 0 + db 3 + db 0 + db 0 + db 0 + db 1 + db 80h ; € + db 0 + db 0 + db 8 + db 10h + db 0 + db 0 + db 8 + db 10h + db 0 + db 0 + db 1 + db 80h ; € + db 0 + db 0 + db 0 + db 0C0h ; À + db 0 + db 0 + db 4 + db 8 + db 0 + db 0 + db 4 + db 8 + db 0 + db 0 + db 0 + db 0C0h ; À + db 0 + db 0 + db 0 + db 60h ; ` + db 0 + db 0 + db 2 + db 4 + db 0 + db 0 + db 1 + db 4 + db 0 + db 0 + db 0 + db 60h ; ` + db 0 + db 0 + db 0 + db 30h ; 0 + db 0 + db 0 + db 1 + db 2 + db 0 + db 0 + db 1 + db 2 + db 0 + db 0 + db 0 + db 30h ; 0 + db 0 + db 1 + db 0 +byte_1E14C db 0 ; DATA XREF: sub_17DAE+6Fr + ; sub_17DAE+77r ... + db 0 +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_1E16E dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_2F2Dr ... +off_1E170 dd sub_3140 ; DATA XREF: sub_3145+29r _setvbuf+C0w ... +off_1E174 dd sub_3140 ; DATA XREF: sub_3145+43r +off_1E178 dd sub_3140 ; DATA XREF: sub_3145+47r + db 0 + db 0 +word_1E17E dw 209h ; DATA XREF: seg000:373Dw seg000:3747r +byte_1E180 db 0 ; DATA XREF: seg000:372Er + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1Ch + db 0Ch + db 0 + db 0 +word_1E192 dw 20Ah ; DATA XREF: seg000:3776w seg000:3780r +byte_1E194 db 1 ; DATA XREF: seg000:3767r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 30h ; 0 + db 0Ch + db 0 + db 0 + db 2 + db 2 +byte_1E1A8 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 44h ; D + db 0Ch + db 0 + db 0 + db 43h ; C + db 2 + db 3 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 58h ; X + db 0Ch + db 0 + db 0 + db 42h ; B + db 2 + db 4 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 6Ch ; l + db 0Ch + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_1E30C 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_1E336 dw 0 ; DATA XREF: __IOERROR:loc_3355w + ; __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_1E392 db 0 ; DATA XREF: seg000:3524o + db 0 + db 0 + db 0 +word_1E396 dw 0 ; DATA XREF: seg000:342Cr +word_1E398 dw 33F1h ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_1E39A dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_1E3AA 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_1E4C0 dw 0 ; DATA XREF: __ExceptInit+28w +word_1E4C2 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_1E5D6 dw 0 ; DATA XREF: seg000:3AFCw seg000:3B0Fw ... +word_1E5D8 dw 0 ; DATA XREF: sub_3FA2+22r sub_3FA2+61w +byte_1E5DA db 0 ; DATA XREF: seg000:42F7r seg000:430Fw +byte_1E5DB db 0 ; DATA XREF: seg000:4292r seg000:42A5w +word_1E5DC dw 0 ; DATA XREF: seg000:41FFr seg000:4235w +word_1E5DE dw 0 ; DATA XREF: seg000:41FBr + ; seg000:loc_422Fw + db 0 + db 0 + db 0 + db 0 +word_1E5E4 dw 0 ; DATA XREF: seg000:4119r seg000:414Fw ... +word_1E5E6 dw 0 ; DATA XREF: seg000:4115r + ; seg000:loc_4149w ... + db 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_1E600 dd 0 ; DATA XREF: seg000:4473w sub_4487+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_1E614 dw 0 ; DATA XREF: _setvbuf:loc_4F58r + ; _setvbuf+4Bw +word_1E616 dw 0 ; DATA XREF: _setvbuf:loc_4F42r + ; _setvbuf+35w +word_1E618 dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_1E62C dd 0 ; DATA XREF: _getenv+21r seg000:8FC2w ... +word_1E630 dw 1 ; DATA XREF: sub_1D347+8r + ; sub_1D347+11w +word_1E632 dw 0 ; DATA XREF: sub_1D364+8r + ; sub_1D364+11w +word_1E634 dw 1 ; DATA XREF: sub_1D381+8r + ; sub_1D381+11w +word_1E636 dw 3Fh ; DATA XREF: sub_1D14A+13r + ; sub_1D39E+8r ... +word_1E638 dw 40h ; DATA XREF: sub_1D14A+19r + ; sub_1D3BB+8r ... +word_1E63A dw 3Fh ; DATA XREF: seg012:0745r seg012:07ADr ... +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 +aPath db 'PATH',0 + db '/\',0 + db 0 +a_bat db '.BAT',0 +a_com db '.COM',0 +a_exe_0 db '.EXE',0 +a_bat_0 db '.BAT',0 +aComspec db 'COMSPEC',0 + db 2Fh ; / + db 63h ; c + db 0 + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 0FFh + db 36h ; 6 + db 0 + db 0 + db 0 + db 10h + db 0EBh ; ë + db 3Ah ; : + db 0 + db 0 + db 0 + db 0Fh + db 3Eh ; > + db 44h ; D + db 0 + db 0 + db 0 + db 10h + db 0ACh ; ¬ + db 8Fh ; + db 0 + db 0 + db 1 + db 20h + dd loc_359F +dword_1E6E2 dd ? ; DATA XREF: sub_9778+9Cr + ; sub_9B14+1D3w ... +word_1E6E6 dw ? ; DATA XREF: seg001:03F9r seg001:0401w ... +word_1E6E8 dw ? ; DATA XREF: sub_9778+1DCr + ; sub_9B14+4Cw ... +word_1E6EA dw ? ; DATA XREF: sub_9778+25Cr + ; sub_9B14+18Fw ... +word_1E6EC dw ? ; DATA XREF: seg000:2CC4r +word_1E6EE dw ? ; DATA XREF: seg000:2CA1r + db ? ; + db ? ; +word_1E6F2 dw ? ; DATA XREF: seg000:2C93r +word_1E6F4 dw ? ; DATA XREF: seg000:2CC8r +word_1E6F6 dw ? ; DATA XREF: seg000:2CA8r + db ? ; + db ? ; +word_1E6FA dw ? ; DATA XREF: seg000:2C9Ar + dw ? + dw ? +dword_1E700 dd ? ; DATA XREF: sub_766+17r sub_7E2+2Er ... +word_1E704 dw ? ; DATA XREF: sub_766+22w sub_766+4Ar ... +word_1E706 dw ? ; DATA XREF: sub_766+26w sub_766+56r ... +word_1E708 dw ? ; DATA XREF: sub_766+9r sub_766+13r ... +word_1E70A dw ? ; DATA XREF: sub_766+Cr + ; sub_766:loc_7A4r ... +word_1E70C dw ? ; DATA XREF: sub_7E2:loc_885w + ; sub_896+2Ew +word_1E70E dw ? ; DATA XREF: sub_766:loc_797w + ; sub_896+31w +word_1E710 dw ? ; DATA XREF: sub_9E2+67w seg000:0A9Cr ... +word_1E712 dw ? ; DATA XREF: sub_9E2+6Aw + ; seg000:loc_A7Cr ... +word_1E714 dw ? ; DATA XREF: sub_FAC+5Fw sub_FAC+83r ... +word_1E716 dw ? ; DATA XREF: sub_2C00:loc_2C19w + ; sub_EA8C+Bw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1E74A dw ? ; DATA XREF: sub_20FC+1Ew seg000:2180w ... +word_1E74C dw ? ; DATA XREF: sub_20FC+21w seg000:2184w +word_1E74E dw ? ; DATA XREF: sub_20FC+37w sub_21AA+2Br +word_1E750 dw ? ; DATA XREF: sub_20FC+3Aw sub_21AA+27r +word_1E752 dw ? ; DATA XREF: seg000:217Aw +word_1E754 dw ? ; DATA XREF: sub_226E+Fw sub_22D0+18r ... +word_1E756 dw ? ; DATA XREF: sub_1F2C+20r sub_226E+12w ... +word_1E758 dw ? ; DATA XREF: sub_226E+15w sub_22D0+24r ... +word_1E75A dw ? ; DATA XREF: sub_1F16+7w sub_1F2C+19r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_1EF5C dd ? ; DATA XREF: sub_E8F8+3w +dword_1EF60 dd ? ; DATA XREF: sub_E8F8+Cw +dword_1EF64 dd ? ; DATA XREF: sub_E8F8+15w +dword_1EF68 dd ? ; DATA XREF: sub_E8F8+1Ew +byte_1EF6C db ? ; DATA XREF: sub_E922+Bw seg002:005Aw ... +byte_1EF6D db ? ; DATA XREF: _main+14w + ; sub_E922:loc_E934r ... +byte_1EF6E db ? ; DATA XREF: seg002:0050w +byte_1EF6F db ? ; DATA XREF: seg002:005Fw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1EFF0 dw ? ; DATA XREF: sub_296C+7Bw sub_2A28+21r ... +word_1EFF2 dw ? ; DATA XREF: sub_296C+81w seg000:2A90r +word_1EFF4 dw ? ; DATA XREF: sub_296C+47w sub_296C+58r ... +word_1EFF6 dw ? ; DATA XREF: sub_9778+A5r sub_EA8C+2w ... +word_1EFF8 dw ? ; DATA XREF: sub_9778+B4r sub_EA8C+5w ... +unk_1EFFA db ? ; ; DATA XREF: seg001:loc_9B01r + ; sub_C7A5:loc_C7E7r ... +byte_1EFFB db ? ; DATA XREF: sub_9778+C3r sub_C7A5+4Er ... +dword_1EFFC dd ? ; DATA XREF: sub_B454+7r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_1F014 db ? ; ; DATA XREF: sub_B454+4o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F2E4 dw ? ; DATA XREF: sub_B80B+39w + ; sub_B80B:loc_B852w ... +word_1F2E6 dw ? ; DATA XREF: sub_B80B+3Fw sub_B80B+4Dw ... +word_1F2E8 dw ? ; DATA XREF: sub_B80B+24w sub_C248+2Cw ... +byte_1F2EA db ? ; DATA XREF: sub_B80B+1Fw + ; sub_C248:loc_C26Fw ... + db ? +word_1F2EC dw ? ; DATA XREF: sub_A310+Br sub_14B7C+15w ... +word_1F2EE dw ? ; DATA XREF: sub_A310+1Dr + ; sub_14B7C+1Bw ... +dword_1F2F0 dd ? ; DATA XREF: _main+19r _main+50r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F324 db ? ; DATA XREF: sub_F52D+18r sub_F52D+29r ... + db ? +word_1F326 dw ? ; DATA XREF: sub_F512+Dw sub_16983+1Br +word_1F328 dw ? ; DATA XREF: sub_F512+16w + ; sub_16983+21r +word_1F32A dw ? ; DATA XREF: sub_9EBF+6w +word_1F32C dw ? ; DATA XREF: sub_9EBF+Cw +dword_1F32E dd ? ; DATA XREF: sub_9778+1Cr sub_A524+85w ... +dword_1F332 dd ? ; DATA XREF: sub_9778+32r + ; sub_A524+130w ... +dword_1F336 dd ? ; DATA XREF: sub_9778+11Fr + ; sub_A524+91w ... +dword_1F33A dd ? ; DATA XREF: sub_9778+12Dr + ; sub_A524+13Cw ... +word_1F33E dw ? ; DATA XREF: sub_F356+6w sub_F356+33r ... +word_1F340 dw ? ; DATA XREF: sub_F356+Dw sub_F3A9+Aw ... +word_1F342 dw ? ; DATA XREF: sub_10405+1Dw + ; sub_10405+36r ... +word_1F344 dw ? ; DATA XREF: sub_10405+2Ew + ; sub_10405+69r ... +word_1F346 dw ? ; DATA XREF: sub_F356+3r sub_F356+3Bw ... +word_1F348 dw ? ; DATA XREF: sub_F356+Ar sub_F356+30w +word_1F34A dw ? ; DATA XREF: sub_F4B4+Dr sub_F848+FDw ... +word_1F34C dw ? ; DATA XREF: sub_F9A6+38r sub_F9A6+5Br ... +byte_1F34E db ? ; DATA XREF: sub_F848+F8w sub_F9A6+41r ... +byte_1F34F db ? ; DATA XREF: sub_F3A9+47w + ; sub_F402:loc_F481r ... +byte_1F350 db ? ; DATA XREF: sub_F356+11w sub_F356+15r +byte_1F351 db ? ; DATA XREF: sub_F52D+4Bw sub_F52D+4Fr ... +byte_1F352 db ? ; DATA XREF: sub_F402+3Ew sub_F52D+52r ... +byte_1F353 db ? ; DATA XREF: sub_F5FE+3w + ; sub_F5FE:loc_F673w ... +byte_1F354 db ? ; DATA XREF: sub_FB95+Fw sub_10053+A7r ... +byte_1F355 db ? ; DATA XREF: sub_105B5+3r + ; sub_105B5:loc_105D4w ... +word_1F356 dw ? ; DATA XREF: sub_10324+1Cw + ; sub_10405+46w ... +byte_1F358 db ? ; DATA XREF: sub_133A5+5r + ; sub_133A5+13w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F39E db ? ; DATA XREF: sub_9B14+1ADw + ; sub_9EBF+176w ... +byte_1F39F db ? ; DATA XREF: sub_F5FE+40r sub_F5FE+59r ... +byte_1F3A0 db ? ; DATA XREF: sub_F72D+36r sub_F848+1Cw ... +byte_1F3A1 db ? ; DATA XREF: sub_F72D+6Br sub_F848+24w ... +byte_1F3A2 db ? ; DATA XREF: sub_F72D:loc_F768r + ; sub_F848+2Cw ... +byte_1F3A3 db ? ; DATA XREF: sub_F72D+41r sub_F72D+51r ... +byte_1F3A4 db ? ; DATA XREF: sub_F72D+65r sub_F848+3Cw ... +byte_1F3A5 db ? ; DATA XREF: sub_FE2B+80r sub_FED8+50w ... + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_1F3B0 dw ? ; DATA XREF: sub_F402+41w sub_F402+8Bw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F4B2 db ? ; DATA XREF: sub_A40C+2r sub_A40C+Aw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F51A dw ? ; DATA XREF: sub_1B35F+Fr + ; sub_1B35F:loc_1B37Br ... +byte_1F51C db ? ; DATA XREF: sub_13C1E+Fw + ; sub_15EDB+2Dr +byte_1F51D db ? ; DATA XREF: sub_13C1E+12w + ; sub_13C1E+2Fw ... +word_1F51E dw ? ; DATA XREF: sub_13CDD+23w + ; sub_13CDD+47r ... +byte_1F520 db ? ; DATA XREF: sub_9EBF+21w + ; sub_13C64+2Bw ... + db ? +word_1F522 dw ? ; DATA XREF: sub_13CDD+4Aw + ; sub_13CDD:loc_13D41r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F554 dw ? ; DATA XREF: sub_13C1E+1Dr + ; sub_13CDD+2Ew ... +word_1F556 dw ? ; DATA XREF: sub_13C64+33r + ; sub_13CDD+39w ... +word_1F558 dw ? ; DATA XREF: sub_13C64+47r + ; sub_13CDD+44w ... +byte_1F55A db ? ; DATA XREF: sub_13D9C+46w +byte_1F55B db ? ; DATA XREF: sub_13D9C+4Bw +byte_1F55C db ? ; DATA XREF: sub_13CDD+B8w + ; sub_13D9C+Er + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F868 dw ? ; DATA XREF: sub_1B653+3w + ; sub_1B653:loc_1B660r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FB3A dw ? ; DATA XREF: sub_193EF+4Dw + ; sub_193EF:loc_19443r ... +word_1FB3C dw ? ; DATA XREF: sub_18766+92w + ; sub_18766+185r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FBBE dw ? ; DATA XREF: sub_185AB+84w + ; sub_185AB:loc_18636r ... +word_1FBC0 dw ? ; DATA XREF: sub_9778:loc_9986w + ; sub_9778+258r ... +byte_1FBC2 db ? ; DATA XREF: sub_9EBF+17w sub_B4A8+4r ... +byte_1FBC3 db ? ; DATA XREF: sub_9778+1CDr + ; sub_9778+1E2r ... +word_1FBC4 dw ? ; DATA XREF: sub_B4A8+Bw sub_B4A8+4Cw ... +word_1FBC6 dw ? ; DATA XREF: sub_B4A8+11w sub_B4A8+8Ar ... +word_1FBC8 dw ? ; DATA XREF: sub_B4A8+17w sub_B4A8+DCr ... +word_1FBCA dw ? ; DATA XREF: sub_B4A8+1Dw sub_B4A8+51w ... +word_1FBCC dw ? ; DATA XREF: sub_B4A8+23w sub_B4A8+56w ... +word_1FBCE dw ? ; DATA XREF: sub_B4A8+29w sub_B4A8+ABr ... +word_1FBD0 dw ? ; DATA XREF: sub_B4A8+2Fw sub_B4A8+FDr ... +word_1FBD2 dw ? ; DATA XREF: sub_B4A8+35w sub_B4A8+5Bw ... +byte_1FBD4 db ? ; DATA XREF: sub_189AA:loc_18A08w + ; sub_189AA+CFr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FD8C dw ? ; DATA XREF: sub_1BDF8+19r + ; sub_1BDF8+34r ... +byte_1FD8E db ? ; DATA XREF: sub_1BC4D+3w +byte_1FD8F db ? ; DATA XREF: sub_1BC4D+8w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FDE0 db ? ; DATA XREF: sub_B73A+8w sub_B73A+Cr ... +byte_1FDE1 db ? ; DATA XREF: sub_B73A+2Er + ; sub_158F5+4Fw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_1FDEA db ? ; DATA XREF: sub_142D0+3w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FE1C db ? ; DATA XREF: sub_142D0+8w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FE4E dw ? ; DATA XREF: sub_142DF+Fw + ; sub_142DF+12r ... +byte_1FE50 db ? ; DATA XREF: sub_F5FE+16w sub_F5FE+29r ... + db ? +word_1FE52 dw ? ; DATA XREF: sub_148B5+E0w + ; sub_148B5+ECr ... +word_1FE54 dw ? ; DATA XREF: sub_148B5+E9w + ; sub_148B5+10Er ... +word_1FE56 dw ? ; DATA XREF: sub_18BB8+CAw + ; sub_18BB8+15Cr ... + db ? ; + db ? ; +byte_1FE5A db ? ; DATA XREF: sub_1C158+3w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_1FE62 db ? ; DATA XREF: sub_1C158+8w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_1FE6A dw ? ; DATA XREF: sub_1C167+Ew + ; sub_1C167+11r ... +dword_1FE6C dd ? ; DATA XREF: sub_A524+19w sub_A6BC+19w ... +dword_1FE70 dd ? ; DATA XREF: sub_9778+18r sub_A524+25w ... +dword_1FE74 dd ? ; DATA XREF: sub_9778+14Br + ; sub_A524+31w ... +dword_1FE78 dd ? ; DATA XREF: sub_A524+C4w sub_A6BC+C4w ... +dword_1FE7C dd ? ; DATA XREF: sub_9778+2Er sub_A524+D0w ... +dword_1FE80 dd ? ; DATA XREF: sub_9778+15Dr + ; sub_A524+DCw ... + dd ? +word_1FE88 dw ? ; DATA XREF: sub_9778+Ew sub_9778+24w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_2028A dw ? ; DATA XREF: sub_18FEA+1Bw + ; sub_18FEA+3Bw ... +dword_2028C dd ? ; DATA XREF: sub_9778+4Ar sub_A524+49w ... +dword_20290 dd ? ; DATA XREF: sub_9778+58r sub_A524+F4w ... +dword_20294 dd ? ; DATA XREF: sub_9778+14Fr + ; sub_A524+55w ... +dword_20298 dd ? ; DATA XREF: sub_9778+161r + ; sub_A524+100w ... +dword_2029C dd ? ; DATA XREF: sub_A524+61w sub_A6BC+61w ... +dword_202A0 dd ? ; DATA XREF: sub_A524+10Cw + ; sub_A6BC+10Cw ... +dword_202A4 dd ? ; DATA XREF: sub_9778+7Dr sub_A524+6Dw ... +dword_202A8 dd ? ; DATA XREF: sub_9778+8Fr + ; sub_A524+118w ... +dword_202AC dd ? ; DATA XREF: sub_9778+81r sub_A524+79w ... +dword_202B0 dd ? ; DATA XREF: sub_9778+93r + ; sub_A524+124w ... + db ? ; + db ? ; +byte_202B6 db ? ; DATA XREF: sub_9B14+BBw + ; sub_9B14+146w ... +byte_202B7 db ? ; DATA XREF: sub_9B14+C4w + ; sub_9B14+14Bw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_205CA dw ? ; DATA XREF: sub_14A76+3w + ; sub_14A76:loc_14A83r ... +byte_205CC db ? ; DATA XREF: sub_14A97+6Aw + ; sub_14B0A:loc_14B73w ... + db ? +dword_205CE dd ? ; DATA XREF: sub_9778+20r sub_A524+9Dw ... +dword_205D2 dd ? ; DATA XREF: sub_9778+36r + ; sub_A524+148w ... +dword_205D6 dd ? ; DATA XREF: sub_9778+103r + ; sub_A524+A9w ... +dword_205DA dd ? ; DATA XREF: sub_9778+111r + ; sub_A524+154w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_207E0 dw ? ; DATA XREF: sub_1508C+77w + ; sub_1508C:loc_1510Ar ... +byte_207E2 db ? ; DATA XREF: sub_9EBF+262w sub_BB12+6r ... +byte_207E3 db ? ; DATA XREF: sub_9B14+2Aw sub_9EBF+9Dr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_2087A dw ? ; DATA XREF: sub_BE5D+EBr + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_20CE4 dw ? ; DATA XREF: sub_BB12+13w + ; sub_BB12:loc_BB37r ... +byte_20CE6 db ? ; DATA XREF: sub_BB12+4Bw + ; sub_BB12:loc_BB86r ... + db ? +word_20CE8 dw ? ; DATA XREF: sub_BB12+Dw sub_BB12+E1w ... +word_20CEA dw ? ; DATA XREF: sub_BB12+5Bw + ; sub_BB12:loc_BB75w ... +word_20CEC dw ? ; DATA XREF: sub_BB12+6Ew sub_BE5D+EEw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_20E22 dw ? ; DATA XREF: sub_153BB+3w + ; sub_153BB:loc_153C8r ... + dw ? + dw ? +byte_20E28 db ? ; DATA XREF: sub_FB95+14w sub_FB95+39r ... +byte_20E29 db ? ; DATA XREF: sub_FB95+19w sub_FB95+9Br ... +byte_20E2A db ? ; DATA XREF: sub_FE2B:loc_FE49w + ; sub_FE2B+92r +byte_20E2B db ? ; DATA XREF: sub_FE2B+26w sub_FE2B+30r ... +byte_20E2C db ? ; DATA XREF: sub_F848+D0w + ; sub_F848+101w ... + db ? +word_20E2E dw ? ; DATA XREF: sub_B73A+40r sub_F848+EAw ... +word_20E30 dw ? ; DATA XREF: sub_B73A+51r sub_F848+F0w ... +word_20E32 dw ? ; DATA XREF: sub_B73A+35r sub_F848+D5w ... +word_20E34 dw ? ; DATA XREF: sub_B73A+46r sub_F848+DBw ... +word_20E36 dw ? ; DATA XREF: sub_14487+41r + ; sub_14CE3+50r ... +word_20E38 dw ? ; DATA XREF: sub_14CE3+67r + ; sub_15597+5Cr ... +word_20E3A dw ? ; DATA XREF: sub_F848+E4w + ; sub_FED8+101w ... +byte_20E3C db ? ; DATA XREF: sub_9778+1A0r + ; sub_9EBF+25Dw ... +byte_20E3D db ? ; DATA XREF: sub_C2F9+6r sub_C2F9+2Fr ... +word_20E3E dw ? ; DATA XREF: sub_C0D8+1Dw sub_C0D8+8Fw ... +word_20E40 dw ? ; DATA XREF: sub_C0D8+29w sub_C0D8+95w ... +word_20E42 dw ? ; DATA XREF: sub_C0D8+47w + ; sub_C0D8:loc_C127w ... +word_20E44 dw ? ; DATA XREF: sub_C568:loc_C658r + ; sub_C568+19Ar ... +word_20E46 dw ? ; DATA XREF: sub_C568+F9r sub_E0F7+AAw +byte_20E48 db ? ; DATA XREF: sub_DA43+CEr + ; sub_DA43:loc_DB1Er ... + db ? +word_20E4A dw ? ; DATA XREF: sub_C370+20r sub_C370+33r ... +byte_20E4C db ? ; DATA XREF: sub_10324+17w + ; sub_10324+A7r ... +byte_20E4D db ? ; DATA XREF: sub_10324:loc_10357w + ; sub_10324+B9r +byte_20E4E db ? ; DATA XREF: sub_10324+14w + ; sub_10324+8Dr ... + db ? +word_20E50 dw ? ; DATA XREF: sub_10324+3Dr + ; sub_10324+62r ... +word_20E52 dw ? ; DATA XREF: sub_10324+41r + ; sub_10324+66r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_20E86 dw ? ; DATA XREF: sub_1C62A+Fr + ; sub_1C62A+26r ... +byte_20E88 db ? ; DATA XREF: sub_1C40A+3w +byte_20E89 db ? ; DATA XREF: sub_1C40A+8w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_20F1E db ? ; DATA XREF: sub_CDBD+4w sub_CDBD+8r ... + db ? +dword_20F20 dd ? ; DATA XREF: _main+3Ar sub_A524+16Fw ... +dword_20F24 dd ? ; DATA XREF: sub_9778+E0r + ; sub_A524+17Bw ... +dword_20F28 dd ? ; DATA XREF: sub_A21F+44r + ; sub_A524+187w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_2142C db ? ; DATA XREF: sub_D05D+5w sub_D092+5w ... + db ? +word_2142E dw ? ; DATA XREF: sub_C433+21r sub_C433+36r ... +word_21430 dw ? ; DATA XREF: sub_C433+4Dr sub_C433+68r ... + dw ? +word_21434 dw ? ; DATA XREF: sub_9EBF+267w + ; sub_DA43:loc_DCBCw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_21560 dw ? ; DATA XREF: sub_15EE+10Bw + ; sub_15EE+15Dr ... +word_21562 dw ? ; DATA XREF: sub_15EE+11Bw +dword_21564 dd ? ; DATA XREF: sub_15EE+150w + ; sub_15EE+191r ... +word_21568 dw ? ; DATA XREF: sub_15EE+12Dw + ; sub_15EE:loc_1A78r +word_2156A dw ? ; DATA XREF: sub_15EE+130w + ; sub_15EE+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_2166C db ? ; DATA XREF: sub_15EE+8Cw + ; sub_15EE+16Dw + db ? +word_2166E dw ? ; DATA XREF: sub_15EE+21w + ; sub_15EE+4A0r ... +word_21670 dw ? ; DATA XREF: sub_15EE+34w + ; sub_15EE+1B1r ... +byte_21672 db ? ; DATA XREF: sub_15EE+25w + ; sub_15EE+1A3r ... +byte_21673 db ? ; DATA XREF: sub_15EE+2Aw + ; sub_15EE+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 ? ; +byte_22036 db ? ; DATA XREF: sub_13D9C+50w + ; sub_1609E+Bw +byte_22037 db ? ; DATA XREF: sub_13D9C+55w + ; sub_1609E+10w + db ? ; + db ? ; +byte_2203A db ? ; DATA XREF: sub_164AD+4w sub_1670D+Br ... +byte_2203B db ? ; DATA XREF: sub_1615D+106r + ; sub_1670D+26w ... +word_2203C dw ? ; DATA XREF: sub_13E22+4r sub_13EA8+5r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_220C2 dw ? ; DATA XREF: sub_1615D+180r + ; sub_1654E+Cr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_220CA db ? ; DATA XREF: sub_9B14+C7r sub_D52E+47r +byte_220CB db ? ; DATA XREF: sub_9B14+D4r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_220DC db ? ; DATA XREF: sub_9B14+CAw sub_9B14+CDr ... + db ? + db ? ; + db ? ; +byte_220E0 db ? ; DATA XREF: sub_16A55+3w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_220E6 db ? ; DATA XREF: sub_16A55+8w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_220EC dw ? ; DATA XREF: sub_18DC8+68w + ; sub_18DC8+D9r ... +word_220EE dw ? ; DATA XREF: sub_F848+B0w sub_FED8+CDw ... +word_220F0 dw ? ; DATA XREF: sub_F848+B6w sub_FED8+D3w ... +word_220F2 dw ? ; DATA XREF: sub_F848+B9w sub_FED8+D6w ... +word_220F4 dw ? ; DATA XREF: sub_F848+BFw sub_FED8+DCw ... +word_220F6 dw ? ; DATA XREF: sub_13B9A+29r + ; sub_13B9A+36r ... + db ? ; + db ? ; +byte_220FA db ? ; DATA XREF: sub_F848+C8w sub_FED8+E5w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23AE2 db ? ; DATA XREF: sub_D71E:loc_D76Br + ; sub_D71E:loc_D79Br ... +byte_23AE3 db ? ; DATA XREF: sub_D71E:loc_D785r + ; sub_D71E:loc_D7B3r ... +byte_23AE4 db ? ; DATA XREF: sub_D71E:loc_D775r + ; sub_D71E:loc_D78Dr ... +byte_23AE5 db ? ; DATA XREF: sub_D71E+5Fr sub_D71E+75r ... +byte_23AE6 db ? ; DATA XREF: sub_D6D4+Cr sub_D71E+3w ... +byte_23AE7 db ? ; DATA XREF: sub_D6D4+12r sub_D71E+8w ... +word_23AE8 dw ? ; DATA XREF: sub_D7F0+3r sub_D809+3r ... +byte_23AEA db ? ; DATA XREF: sub_9B14:loc_9BABw + ; sub_9B14:loc_9BB2w ... + db ? ; + db ? ; + db ? ; +byte_23AEE db ? ; DATA XREF: sub_9778+2B7r + ; sub_9778+2BEw ... +byte_23AEF db ? ; DATA XREF: sub_9778+2B0r + ; sub_9778+2BBw ... +word_23AF0 dw ? ; DATA XREF: sub_9778+13w sub_9778+29w ... +dword_23AF2 dd ? ; DATA XREF: _main+54r + ; sub_9778:loc_9A62w ... +word_23AF6 dw ? ; DATA XREF: sub_9778+EBr + ; sub_9778+1C5r ... +byte_23AF8 db ? ; DATA XREF: sub_9778+311r + ; sub_9778+318w ... +byte_23AF9 db ? ; DATA XREF: sub_9778:loc_99DFr + ; sub_9778+278w ... +byte_23AFA db ? ; DATA XREF: sub_9778+E4r + ; sub_9778+260r ... + db ? + db ? ; + db ? ; + db ? ; + db ? ; +byte_23B00 db ? ; DATA XREF: sub_9778:loc_9AC9r + ; seg001:041Cw ... +byte_23B01 db ? ; DATA XREF: sub_9778:loc_9A14r + ; sub_9778+2A8w ... +byte_23B02 db ? ; DATA XREF: sub_9778+307w + ; sub_9EBF+27Cw ... +byte_23B03 db ? ; DATA XREF: sub_9778+302w + ; sub_9EBF+277w +byte_23B04 db ? ; DATA XREF: sub_9778+2FDw + ; sub_9EBF+272w +byte_23B05 db ? ; DATA XREF: sub_9778+2F8w + ; sub_9EBF+26Dw ... + 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_23B1E dw ? ; DATA XREF: sub_C8C4+6r +word_23B20 dw ? ; DATA XREF: sub_C830+1Fr sub_C8C4+Fr + dw ? +byte_23B24 db ? ; DATA XREF: sub_C830+11r sub_C8C4+2Fr + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23B6A dw ? ; DATA XREF: sub_A21F+48w sub_A524+B5w ... +word_23B6C dw ? ; DATA XREF: sub_A524+AFw sub_A6BC+AFw ... +word_23B6E dw ? ; DATA XREF: sub_A524+3Dw sub_A6BC+3Dw ... +word_23B70 dw ? ; DATA XREF: sub_A524+37w sub_A6BC+37w ... +byte_23B72 db ? ; DATA XREF: sub_9778+1B7r + db ? +word_23B74 dw ? ; DATA XREF: sub_9B14+140w + db ? ; + db ? ; + db ? ; +byte_23B79 db ? ; DATA XREF: sub_9778+327r + ; sub_9778+32Ew +word_23B7A dw ? ; DATA XREF: sub_9778+345w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23B9E dw ? ; DATA XREF: sub_C8C4+17r +word_23BA0 dw ? ; DATA XREF: sub_C830+5Fr sub_C8C4+20r + dw ? +byte_23BA4 db ? ; DATA XREF: sub_C830:loc_C881r + ; sub_C8C4+64r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23BEA dw ? ; DATA XREF: sub_A21F+4Ew + ; sub_A524+160w ... +word_23BEC dw ? ; DATA XREF: sub_A524+15Aw + ; sub_A6BC+15Aw ... +word_23BEE dw ? ; DATA XREF: sub_A524+E8w sub_A6BC+E8w ... +word_23BF0 dw ? ; DATA XREF: sub_A524+E2w sub_A6BC+E2w ... +byte_23BF2 db ? ; DATA XREF: sub_9778+1BEr + db ? +word_23BF4 dw ? ; DATA XREF: sub_9B14+143w + ; sub_9EBF+138w + db ? ; + db ? ; + db ? ; +byte_23BF9 db ? ; DATA XREF: sub_9778:loc_9AAAr + ; sub_9778+339w +word_23BFA dw ? ; DATA XREF: sub_9778+34Bw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23DC6 db ? ; DATA XREF: sub_10C4D+21w + ; sub_10C4D+31r +byte_23DC7 db ? ; DATA XREF: sub_10C4D+24w + ; sub_10C4D+6Fr ... +byte_23DC8 db ? ; DATA XREF: sub_10E16+19w + ; sub_10E16+39r ... + db ? ; + 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_23DE2 db ? ; DATA XREF: sub_11439+4Cw + ; sub_11439+5Dr ... +byte_23DE3 db ? ; DATA XREF: sub_11620+31r + ; sub_11620+50r ... +byte_23DE4 db ? ; DATA XREF: sub_121F5+20w + ; sub_121F5+BCr ... +byte_23DE5 db ? ; DATA XREF: sub_121F5+25w + ; sub_121F5+B5r ... +byte_23DE6 db ? ; DATA XREF: sub_12F06+3Aw + ; sub_12F06+A7r ... +byte_23DE7 db ? ; DATA XREF: sub_12F06+46w + ; sub_12F06+49r ... +byte_23DE8 db ? ; DATA XREF: sub_135A4+45w + ; sub_135A4+6Br ... +byte_23DE9 db ? ; DATA XREF: sub_135A4+51w + ; sub_135A4:loc_135F8r +word_23DEA dw ? ; DATA XREF: sub_E3F2+189w + ; sub_E3F2+194w ... +word_23DEC dw ? ; DATA XREF: sub_E3F2+1AAw + ; sub_E3F2:loc_E692r ... +word_23DEE dw ? ; DATA XREF: sub_E3F2+1B7w + ; sub_E3F2+2F3r +dword_23DF0 dd ? ; DATA XREF: sub_E3F2+F7w + ; sub_E3F2+108w ... +byte_23DF4 db ? ; DATA XREF: sub_E3F2+CFw sub_E3F2+EAr ... +byte_23DF5 db ? ; DATA XREF: sub_E3F2+D5w sub_E3F2+FBr ... +byte_23DF6 db ? ; DATA XREF: sub_E3F2+DBw + ; sub_E3F2+10Dr ... +byte_23DF7 db ? ; DATA XREF: sub_E3F2+E1w + ; sub_E3F2+11Fr ... +byte_23DF8 db ? ; DATA XREF: sub_E3F2+E7w + ; sub_E3F2+131r ... +byte_23DF9 db ? ; DATA XREF: sub_E3F2+152w + ; sub_E3F2+155r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23E3A dw ? ; DATA XREF: sub_1714F+10w + ; sub_1714F:loc_1717Dr ... +byte_23E3C db ? ; DATA XREF: sub_9B14+1A8w + ; sub_9EBF+15Ew ... + db ? +word_23E3E dw ? ; DATA XREF: sub_F5FE+37w sub_F72D+1Dw ... +word_23E40 dw ? ; DATA XREF: sub_F5FE+3Dw sub_F72D+23w ... +word_23E42 dw ? ; DATA XREF: sub_F5FE+43w sub_F5FE+63w ... +word_23E44 dw ? ; DATA XREF: sub_F5FE+51w sub_F72D+2Cw ... +byte_23E46 db ? ; DATA XREF: sub_12C4F+ABw + ; sub_17730+142r ... +byte_23E47 db ? ; DATA XREF: sub_F72D+44w + ; sub_F72D:loc_F795w ... +word_23E48 dw ? ; DATA XREF: sub_173A2+2F2o + ; sub_173A2+307o ... +word_23E4A dw ? ; DATA XREF: sub_173A2+2F6o + ; sub_173A2+30Bo ... +word_23E4C dw ? ; DATA XREF: sub_11439+85w + ; sub_11439+92w ... +byte_23E4E db ? ; DATA XREF: sub_F5FE+46w sub_F72D+47w ... +byte_23E4F db ? ; DATA XREF: sub_17730+E2r + ; sub_1797F+12w +byte_23E50 db ? ; DATA XREF: sub_FB95+5Bw sub_FB95+65w ... +byte_23E51 db ? ; DATA XREF: sub_FD71+8Cw sub_FD71+96w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26352 db ? ; DATA XREF: sub_173A2+328w + ; sub_17730+1F9r +byte_26353 db ? ; DATA XREF: sub_17384+17w + ; sub_17730+F5r ... +word_26354 dw ? ; DATA XREF: sub_1799D+12r + ; sub_17A1B:loc_17ABDw ... +byte_26356 db ? ; DATA XREF: sub_9EBF+12w + ; sub_158F5:loc_15914w ... +byte_26357 db ? ; DATA XREF: sub_181C3:loc_1835Aw +byte_26358 db ? ; DATA XREF: sub_17DAE:loc_17E40r + ; sub_181C3+7Ew ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_263DA dw ? ; DATA XREF: seg000:429Fw +word_263DC dw ? ; DATA XREF: seg000:4299w + db ? ; + db ? ; + db ? ; + db ? ; +word_263E2 dw ? ; DATA XREF: seg000:423Fr seg000:430Cw ... +word_263E4 dw ? ; DATA XREF: seg000:423Br seg000:4308w ... +dword_263E6 dd ? ; DATA XREF: sub_73E5+ACw sub_73E5+C2r ... +dword_263EA dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dw ? +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg014 segment byte stack 'STACK' use16 + assume cs:seg014 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 80h dup(?) +seg014 ends + + + end start