From 267f9eb90aec9a34ff15aac930df364ef0b1bf54 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Wed, 2 Jul 2014 21:00:04 +0200 Subject: [PATCH] th02/main: Initial state --- th02_main.asm | 98302 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98302 insertions(+) create mode 100644 th02_main.asm diff --git a/th02_main.asm b/th02_main.asm new file mode 100644 index 00000000..41cb4dbc --- /dev/null +++ b/th02_main.asm @@ -0,0 +1,98302 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 96CEE07713A8E6460AE72276F3A9F909 + +; File Name : D:\Spiele\Touhou\ReC98\MAIN.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-26EB0h Loaded length: 1F466h +; Entry Point : 0:0 +; OS type : MS DOS +; Application type: Executable 16bit + + .386 + .model large + +; =========================================================================== + +; Segment type: Pure code +seg000 segment byte public 'CODE' use16 + assume cs:seg000 + assume es:nothing, ss:seg009, ds:nothing, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + + public start +start proc far + mov dx, seg dseg + +loc_3: + 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_1DAEC, ax + mov segx, es + mov word_1DAE6, bx + mov word_1DAFE, bp + call sub_178 + mov ax, word_1DAE6 + 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_1DAE4, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_1DAE8, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_1F12E + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_1F12E, 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_48E4 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_1DAF6, bx + mov word_1DAFA, 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_1F12E, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 19F6h + mov cx, 93BAh + sub cx, di + cld + rep stosb + cmp word_1F090, 14h + jbe short loc_110 + cmp byte ptr word_1DAEC, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_1DAEC+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_1F090 + 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_1DAFE, 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_48E4 +; --------------------------------------------------------------------------- + +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, 19D2h + mov di, 19F0h + call sub_1E8 + push word_1DAE2 + push envp ; _envp + push word_1DADE + push argv ; _argv + push argc ; _argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_4B79+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 19F0h + mov di, 19F6h + 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_4B79+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_4B79+50p + +arg_2 = byte ptr 4 + + mov bp, sp + mov ah, 4Ch ; 'L' + mov al, [bp+arg_2] + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) +__terminate endp ; AL = exit code + +; --------------------------------------------------------------------------- + mov dx, 4Bh ; 'K' + push ds + push dx + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax + nop + push cs + call near ptr __exit + +; =============== S U B R O U T I N E ======================================= + + +sub_178 proc near ; CODE XREF: start+25p + push ds + mov ax, 3500h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + +loc_17E: ; DATA XREF: sub_F7A4+18r + mov word ptr dword_1DACA, bx + +loc_182: ; DATA XREF: sub_F74C+4r + mov word ptr dword_1DACA+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_1DACE, bx + mov word ptr dword_1DACE+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_1DAD2, bx + mov word ptr dword_1DAD2+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_1DAD6, bx + mov word ptr dword_1DAD6+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_4B79+2Fp + push ds + mov ax, 2500h + lds dx, dword_1DACA + 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_1DACE + 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_1DAD2 + 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_1DAD6 + 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:loc_3w start+B0r ... +__MMODEL dw 0C004h + db 0 +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_286 + +loc_272: ; CODE XREF: sub_286+6Fj sub_286+76j + push ds + mov ds, word ptr cs:loc_35E+1 + push cs + call near ptr sub_258E + mov ax, 0FFF3h + +loc_27F: ; CODE XREF: sub_286+53j sub_286+5Bj + pop si + pop di + pop ds + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_286 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_286 proc far ; CODE XREF: sub_2E7C+60p + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 0272 SIZE 00000014 BYTES + + push bp + mov bp, sp + push ds + push si + push di + mov ax, [bp+arg_0] + mov word ptr cs:loc_36C+1, ax + mov word ptr cs:loc_35E+1, ds + mov ax, [bp+arg_6] + mov word ptr cs:loc_2EC+1, ax + push ds + lds bx, [bp+arg_2] + mov ax, [bx+8] + mov cx, [bx+0Ah] + mov bp, [bx+0Eh] + sub bp, [bx+0Ch] + inc bp + pop ds + shr ax, 3 + mov byte ptr cs:loc_308+1, al + mov dh, al + mov dl, cl + mov word ptr cs:loc_363+1, dx + mov byte ptr cs:loc_306+1, cl + mul cx + mov word ptr cs:loc_301+1, ax + shl ax, 2 + mov word ptr cs:loc_2E7+1, ax + xchg ax, bx + push bx + push cs + call near ptr sub_25A4 + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_25A4 + jb short loc_27F + mov es, ax + mov ds, cx + +loc_2E7: ; CODE XREF: sub_286+F5j + ; DATA XREF: sub_286+49w + mov cx, 1234h + xor dx, dx + +loc_2EC: ; DATA XREF: sub_286+15w + mov bx, 1234h + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jnb short loc_2F8 + jmp loc_272 +; --------------------------------------------------------------------------- + +loc_2F8: ; CODE XREF: sub_286+6Dj + cmp ax, cx + jz short loc_2FF + jmp loc_272 +; --------------------------------------------------------------------------- + +loc_2FF: ; CODE XREF: sub_286+74j + xor si, si + +loc_301: ; DATA XREF: sub_286+42w + mov dx, 1234h + xor bx, bx + +loc_306: ; DATA XREF: sub_286+3Bw + mov ch, 11h + +loc_308: ; CODE XREF: sub_286+D5j + ; DATA XREF: sub_286+2Ew + mov cl, 11h + +loc_30A: ; CODE XREF: sub_286+D1j + push cx + push dx + push bx + lodsw + mov bx, ax + lodsw + mov dx, ax + mov di, 4 + +loc_316: ; CODE XREF: sub_286+B7j + rol bl, 1 + rcl ch, 1 + rol bl, 1 + rcl cl, 1 + rol bl, 1 + rcl ah, 1 + rol bl, 1 + rcl al, 1 + rol bl, 1 + rcl ch, 1 + rol bl, 1 + rcl cl, 1 + rol bl, 1 + rcl ah, 1 + rol bl, 1 + rcl al, 1 + mov bl, bh + mov bh, dl + mov dl, dh + dec di + jnz short loc_316 + pop bx + pop dx + mov es:[bx+di], al + add di, dx + mov es:[bx+di], ah + add di, dx + mov es:[bx+di], cl + add di, dx + mov es:[bx+di], ch + pop cx + inc bx + dec cl + jnz short loc_30A + dec ch + jnz short loc_308 + push ds + +loc_35E: ; DATA XREF: sub_286-13r sub_286+Dw ... + mov ax, 1234h + mov ds, ax + assume ds:nothing + +loc_363: ; DATA XREF: sub_286+36w + mov ax, 1234h + push es + push ax + push es + xor ax, ax + push ax + +loc_36C: ; DATA XREF: sub_286+9w + mov ax, 1234h + push ax + push cs + call near ptr sub_2B94 + pop es + pop ds + assume ds:dseg + jb short loc_37E + dec bp + jz short loc_39A + jmp loc_2E7 +; --------------------------------------------------------------------------- + +loc_37E: ; CODE XREF: sub_286+F0j + push ds + mov ds, word ptr cs:loc_35E+1 + mov cx, ax + push es + push cs + call near ptr sub_258E + push cs + call near ptr sub_258E + mov ax, cx + stc + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_39A: ; CODE XREF: sub_286+F3j + push ds + mov ds, word ptr cs:loc_35E+1 + push es + push cs + call near ptr sub_258E + push cs + call near ptr sub_258E + mov ax, 0 + clc + pop si + pop di + pop ds + pop bp + retf 8 +sub_286 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_1380+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_1380+31p sub_2E7C+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, 4D6h + 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_2E7C+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_25A4 + 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_166A+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_258E + +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_2000+Cp sub_3C00+C8p + +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_2A84 + pop bp + retf 2 +sub_472 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_48A proc far ; CODE XREF: sub_506+29p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_1DA70 + mov cx, word_1DA76 + 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_1DA72, ax + mov word_1DA74, 1 + mov al, byte ptr off_1DA78 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_1DA72, 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_2E7C+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, 1A98h + 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: sub_5C8+14p sub_2078+3Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + cmp word ptr es:2, 0 + jz short loc_52D + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + push es + push cs + call near ptr sub_48A + pop bp + retf 2 +sub_506 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_536 proc far ; CODE XREF: sub_C1E4+2FP + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_1DF9A, 64h ; 'd' + nop + push cs + call near ptr sub_2836 + +loc_549: ; CODE XREF: sub_536+2Cj + nop + push cs + +loc_54B: ; DATA XREF: sub_158C+1Fr + call loc_1EF6 + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: sub_536+25j + nop + push cs + call near ptr sub_2836 + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: sub_536+1Dj + sub word_1DF9A, 6 + jg short loc_549 + mov word_1DF9A, 0 + nop + push cs + call loc_1EF6 + pop di + pop si + retf 2 +sub_536 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_574 proc far ; CODE XREF: sub_3C00+20p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov word_1E2D6, 6 + mov ax, word_1DFD2 + add ax, 9 + push ax + push cs + call near ptr sub_2980 + jb short loc_5B0 + mov es, ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_A98 + jb short loc_5B7 + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_1DFD2 + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5B0: ; CODE XREF: sub_574+14j + mov byte ptr word_1DFD4, 3 + jmp short loc_5C1 +; --------------------------------------------------------------------------- + +loc_5B7: ; CODE XREF: sub_574+22j + push es + push cs + call near ptr sub_2A84 + mov byte ptr word_1DFD4, 1 + +loc_5C1: ; CODE XREF: sub_574+41j + xor ax, ax + pop bp + retf 4 +sub_574 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5C8 proc far ; CODE XREF: sub_3CE0+4Cp + +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_4] + mov si, [bp+arg_2] + cmp si, 0 + jle short loc_5ED + +loc_5D8: ; CODE XREF: sub_5C8+23j + push [bp+arg_0] + push cs + call near ptr sub_506 + inc ah + jz short loc_5ED + mov es, [bp+arg_6] + mov es:[di], al + inc di + dec si + jnz short loc_5D8 + +loc_5ED: ; CODE XREF: sub_5C8+Ej sub_5C8+19j + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_5C8 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+0Ah] + mov ax, es:2 + mov dx, [bp+6] + mov cx, [bp+8] + or cx, cx + jnz short loc_620 + cmp dx, ax + ja short loc_620 + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_620: ; CODE XREF: seg000:060Aj seg000:060Ej + mov bx, es:0 + sub dx, ax + sbb cx, 0 + mov ax, 4201h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + sbb ax, ax + mov es:2, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_63A proc far ; CODE XREF: sub_20F8+34p sub_3CE0+BCp + +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_109C+64p sub_109C+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_1DF4C + jmp short loc_681 +; --------------------------------------------------------------------------- + nop + +loc_67E: ; CODE XREF: sub_66A+Cj + mov ax, word_1DF50 + +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_1DF54 + 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_1DF54 + +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_1DF4C, cx + jle short loc_6D4 + mov bl, 1 + retn +; --------------------------------------------------------------------------- + nop + +loc_6D4: ; CODE XREF: sub_66A+64j + cmp cx, word_1DF50 + jle short loc_6A4 + mov bl, 2 + retn +sub_66A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_6DE proc far ; CODE XREF: sub_7B0+1Ap + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds dx, [bp+arg_0] + mov ax, [bp+arg_4] + int 21h ; DOS - + pop ds + sbb dx, dx + xor ax, dx + sub ax, dx + pop bp + retf 6 +sub_6DE endp + +; --------------------------------------------------------------------------- + nop + +loc_6F6: ; CODE XREF: sub_9CE+5p + mov bx, sp + mov bx, ss:[bx+4] + mov ax, 4201h + xor cx, cx + mov dx, cx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + jb short loc_726 + push si + push di + push ax + push dx + xor dx, dx + mov ax, 4202h +; --------------------------------------------------------------------------- + db 0CDh +byte_711 db 21h ; DATA XREF: sub_166A:loc_16AFr +byte_712 db 8Bh ; DATA XREF: sub_263A+9r + db 0F0h, 8Bh, 0FAh, 59h, 5Ah, 0B8h, 0, 42h, 0CDh, 21h + db 8Bh, 0C6h, 8Bh, 0D7h, 5Fh, 5Eh, 0CAh, 2, 0 +; --------------------------------------------------------------------------- + +loc_726: ; CODE XREF: seg000:0705j + neg ax + sbb dx, dx + retf 2 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_72E proc far ; CODE XREF: sub_2740+34p sub_2740+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_72E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_74E proc far ; CODE XREF: sub_784+1p sub_43B0+2p ... + mov al, 0 + out 7Ch, al + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 80h ; '€' + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +sub_74E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_764 proc far ; CODE XREF: sub_784+27p sub_4782+83p ... + 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_764 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_784 proc far ; CODE XREF: sub_F70E+37P sub_F913+1EP + push cs + call near ptr sub_74E + 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_764 + retf +sub_784 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7B0 proc far ; CODE XREF: sub_1C95D+73P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_1DF80 + cmp bx, 0FFFFh + jnz short loc_800 + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_6DE + or ax, dx + mov word_1DF80, ax + mov cx, ax + xor ax, ax + mov word_1F4FE, ax + mov word_1F4FC, ax + mov word_1F500, ax + mov word_1F502, ax + mov word_1F4F8, ax + mov word_1F4FA, ax + inc dx + jz short loc_800 + mov bx, cx + xor cx, cx + mov dx, cx + mov ax, 4202h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from end of file + mov word_1F4F8, ax + mov word_1F4FA, dx + mov ax, 1 + +loc_800: ; CODE XREF: sub_7B0+Dj sub_7B0+39j + pop bp + retf 4 +sub_7B0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_804 proc far ; CODE XREF: sub_870+1p sub_98C+1p + mov bx, word_1DF80 + cmp bx, 0FFFFh + jz short locret_86E + mov ax, word_1F4FC + cmp word_1F4FE, ax + jnb short loc_842 + push ds + mov cx, word_1F4FC + lds dx, dword_1F4F4 + 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_835 + add word_1F4F8, ax + adc word_1F4FA, 0 + cmp word_1F4FC, ax + jz short loc_83B + +loc_835: ; CODE XREF: sub_804+20j + mov word_1F502, 1 + +loc_83B: ; CODE XREF: sub_804+2Fj + mov word_1F4FC, 0 + retf +; --------------------------------------------------------------------------- + +loc_842: ; CODE XREF: sub_804+10j + cmp word_1F4FE, 0 + jz short locret_86E + mov dx, ax + mov cx, 0 + add dx, word_1F4F8 + mov word_1F4FE, cx + mov word_1F4FC, cx + adc cx, word_1F4FA + mov ax, 4200h + mov bx, word_1DF80 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_1F4F8, ax + mov word_1F4FA, dx + +locret_86E: ; CODE XREF: sub_804+7j sub_804+43j + retf +sub_804 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_870 proc far ; CODE XREF: sub_4320+1Dp sub_C13E+9FP ... + push cs + call near ptr sub_804 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_1DF80, 0FFFFh + retf +sub_870 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_880 proc far ; CODE XREF: sub_1C9FE+DP sub_1CD36+8P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_A98 + jb short loc_896 + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_896: ; CODE XREF: sub_880+Fj + sbb ax, ax + inc ax + retf 4 +sub_880 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_89C proc far ; CODE XREF: sub_4320+Cp sub_4320+18p ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_1DF7E, 0 + jz short loc_920 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_8AE: ; CODE XREF: sub_89C+7Fj + mov ax, word_1F4FE + cmp word_1F4FC, ax + jb short loc_8E4 + add word_1F4F8, ax + adc word_1F4FA, 0 + push bx + push ds + mov cx, word_1DF7E + mov bx, word_1DF80 + lds dx, dword_1F4F4 + 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_1F4FE, ax + jz short loc_93F + mov word_1F4FC, 0 + +loc_8E4: ; CODE XREF: sub_89C+19j + mov si, word_1F4FE + sub si, word_1F4FC + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_915 + or si, si + jz short loc_915 + push si + push ds + mov cx, si + mov ax, word_1F4FC + lds si, dword_1F4F4 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_915: ; CODE XREF: sub_89C+5Cj sub_89C+60j + add word_1F4FC, si + sub bx, si + jnz short loc_8AE + jmp short loc_945 +; --------------------------------------------------------------------------- + nop + +loc_920: ; CODE XREF: sub_89C+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_1DF80 + 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_1F4F8, ax + adc word_1F4FA, 0 + mov bx, cx + sub bx, ax + jz short loc_945 + +loc_93F: ; CODE XREF: sub_89C+40j + mov word_1F500, 1 + +loc_945: ; CODE XREF: sub_89C+81j sub_89C+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_89C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_950 proc far ; CODE XREF: sub_4320p sub_C13E+3CP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_1DF80 + cmp bx, 0FFFFh + jnz short loc_987 + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_A98 + sbb bx, bx + or ax, bx + mov word_1DF80, ax + xor ax, ax + mov word_1F4FE, ax + mov word_1F4F8, ax + mov word_1F4FA, ax + mov word_1F4FC, ax + mov word_1F500, ax + mov word_1F502, ax + lea ax, [bx+1] + +loc_987: ; CODE XREF: sub_950+Cj + pop bp + retf 4 +sub_950 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_98C proc far ; CODE XREF: sub_C273+12P sub_E178+11P ... + push cs + call near ptr sub_804 + cmp bx, 0FFFFh + jz short locret_9BD + push bp + mov bp, sp + mov al, [bp+6] + mov ah, 42h ; 'B' + mov dx, [bp+8] + mov cx, [bp+0Ah] + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: + ; 0-from beginnig,1-from current,2-from end + pop bp + mov ax, 4201h + mov dx, 0 + mov cx, dx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + mov word_1F500, 0 + mov word_1F4F8, ax + mov word_1F4FA, dx + +locret_9BD: ; CODE XREF: sub_98C+7j + retf 6 +sub_98C endp + +; --------------------------------------------------------------------------- + mov ax, word_1F4FC + xor dx, dx + add ax, word_1F4F8 + adc dx, word_1F4FA + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_9CE proc far ; CODE XREF: sub_12C72+21P + push word_1DF80 + push cs + call loc_6F6 + jb short loc_9D9 + retf +; --------------------------------------------------------------------------- + +loc_9D9: ; CODE XREF: sub_9CE+8j + mov ax, dx + retf +sub_9CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9DC proc far ; CODE XREF: sub_1C95D+94P + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_1DF7E, 0 + jz short loc_A52 + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_9EE: ; CODE XREF: sub_9DC+6Ej + mov cx, word_1DF7E + sub cx, word_1F4FC + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_1F4F4 + add di, word_1F4FC + sub bx, cx + add word_1F4FC, cx + push ds + mov ds, word ptr [bp+arg_2+2] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + or ax, ax + jns short loc_A48 + push ds + push bx + mov cx, word_1DF7E + mov bx, word_1DF80 + lds dx, dword_1F4F4 + mov ah, 40h + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop bx + pop ds + jb short loc_A64 + cmp word_1DF7E, ax + jnz short loc_A64 + mov word_1F4FC, 0 + add word_1F4F8, ax + adc word_1F4FA, 0 + +loc_A48: ; CODE XREF: sub_9DC+3Fj + or bx, bx + jnz short loc_9EE + mov ax, 1 + jmp short loc_A7A +; --------------------------------------------------------------------------- + nop + +loc_A52: ; CODE XREF: sub_9DC+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_1DF80 + lds dx, [bp+arg_2] + mov ah, 40h + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop ds + jnb short loc_A6C + +loc_A64: ; CODE XREF: sub_9DC+55j sub_9DC+5Bj + mov word_1F502, 1 + xor ax, ax + +loc_A6C: ; CODE XREF: sub_9DC+86j + add word_1F4F8, ax + adc word_1F4FA, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_A7A: ; CODE XREF: sub_9DC+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_9DC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A82 proc far ; CODE XREF: sub_2E7C+68p sub_2E7C+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_A94 + mov ax, 0FFF3h + +locret_A94: ; CODE XREF: sub_A82+Dj + retf 2 +sub_A82 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_A98 proc far ; CODE XREF: sub_574+1Fp sub_880+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_1DF82 + 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_AAC + retf 4 +; --------------------------------------------------------------------------- + +loc_AAC: ; CODE XREF: sub_A98+Fj + mov ax, 0FFFEh + retf 4 +sub_A98 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_AB8 + +loc_AB2: ; CODE XREF: sub_AB8+1Fj sub_AB8+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_AB8 + +; =============== S U B R O U T I N E ======================================= + + +sub_AB8 proc far ; CODE XREF: sub_38BC+AFp + ; sub_B3DA+573P ... + +; FUNCTION CHUNK AT 0AB2 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_ACD + xchg bx, si + +loc_ACD: ; CODE XREF: sub_AB8+11j + mov bp, word_1DF4C + mov dx, word_1DF4E + sub si, bp + jl short loc_AB2 + 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_AB2 + add bx, bp + cmp ax, di + jle short loc_AF6 + xchg ax, di + +loc_AF6: ; CODE XREF: sub_AB8+3Bj + mov dx, word_1DF52 + mov bp, word_1DF54 + sub di, dx + js short loc_AB2 + 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_AB2 + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_1DF58 + 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+4ECh] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+4EEh] + sar si, 4 + js short loc_B74 + lea bp, [si+2Ah] + shl bp, 1 + +loc_B5C: ; CODE XREF: sub_AB8+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_B5C + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_B74: ; CODE XREF: sub_AB8+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_B7C: ; CODE XREF: sub_AB8+C7j + stosw + sub di, bp + jnb short loc_B7C + pop di + pop si + pop bp + retf 8 +sub_AB8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B88 proc far ; CODE XREF: sub_4782+79p sub_FF91+21P ... + push di + mov di, sp + mov ax, word_1DF52 + mov cx, ax + mov bx, ss:[di+0Ah] + sub bx, ax + jg short loc_B9A + xor bx, bx + +loc_B9A: ; CODE XREF: sub_B88+Ej + mov ax, bx + shl ax, 2 + add ax, bx + add ax, word_1DF58 + mov es, ax + mov ax, word_1DF54 + mov dx, ss:[di+6] + sub dx, cx + cmp dx, ax + jl short loc_BB6 + mov dx, ax + +loc_BB6: ; CODE XREF: sub_B88+2Aj + sub dx, bx + jl short loc_BEC + mov ax, ss:[di+0Ch] + mov bx, ss:[di+8] + sub bx, ax + jl short loc_BEC + inc bx + mov di, dx + shl di, 2 + add di, dx + shl di, 4 + add di, ax + lea dx, [bx+50h] + mov ax, 0FFFFh + test di, 1 + jnz short loc_BFE + shr bx, 1 + jb short loc_BF0 + nop + +loc_BE4: ; CODE XREF: sub_B88+62j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_BE4 + +loc_BEC: ; CODE XREF: sub_B88+30j sub_B88+3Cj + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_BF0: ; CODE XREF: sub_B88+59j sub_B88+6Fj + mov cx, bx + rep stosw + stosb + sub di, dx + jnb short loc_BF0 + pop di + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_BFE: ; CODE XREF: sub_B88+55j + shr bx, 1 + jb short loc_C12 + dec bx + nop + +loc_C04: ; CODE XREF: sub_B88+84j + mov cx, bx + stosb + rep stosw + stosb + sub di, dx + jnb short loc_C04 + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C12: ; CODE XREF: sub_B88+78j sub_B88+91j + mov cx, bx + stosb + rep stosw + sub di, dx + jnb short loc_C12 + pop di + retf 8 +sub_B88 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C20 proc far ; CODE XREF: sub_1566F+E8P + ; sub_1566F+20BP ... + +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 + mov ax, [bp+arg_0] + test ax, ax + jz short loc_CA6 + mov si, ax + mov [bp+var_2], ax + mov di, 0 + +loc_C35: ; CODE XREF: sub_C20+7Ej + mov bx, [bp+arg_4] + mov ax, bx + sub ax, si + push ax + add bx, si + push bx + mov ax, [bp+arg_2] + sub ax, di + push ax + push cs + call near ptr sub_1016 + mov bx, [bp+arg_4] + mov ax, bx + sub ax, si + push ax + add bx, si + push bx + mov ax, [bp+arg_2] + add ax, di + push ax + push cs + call near ptr sub_1016 + mov ax, di + stc + rcl ax, 1 + sub [bp+var_2], ax + jns short loc_C9B + mov bx, [bp+arg_4] + mov ax, bx + sub ax, di + push ax + add bx, di + push bx + mov ax, [bp+arg_2] + sub ax, si + push ax + push cs + call near ptr sub_1016 + mov bx, [bp+arg_4] + mov ax, bx + sub ax, di + push ax + add bx, di + push bx + mov ax, [bp+arg_2] + add ax, si + push ax + push cs + call near ptr sub_1016 + dec si + mov ax, si + shl ax, 1 + add [bp+var_2], ax + +loc_C9B: ; CODE XREF: sub_C20+47j + inc di + cmp si, di + jnb short loc_C35 + pop di + pop si + leave + retf 6 +; --------------------------------------------------------------------------- + +loc_CA6: ; CODE XREF: sub_C20+Bj + push [bp+arg_4] + push [bp+arg_2] + push cs + call near ptr sub_123A + pop di + pop si + leave + retf 6 +sub_C20 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_CC0 + +loc_CB6: ; CODE XREF: sub_CC0+4Fj + pop si + pop bp + jmp loc_E2E +; --------------------------------------------------------------------------- + +loc_CBB: ; CODE XREF: sub_CC0+18j sub_CC0+22j ... + pop si + pop bp + retf 6 +; END OF FUNCTION CHUNK FOR sub_CC0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CC0 proc far ; CODE XREF: sub_1566F+7EP + ; sub_15F95+A8P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + +; FUNCTION CHUNK AT 0CB6 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_1DF52 + mov dx, ax + sub ax, si + cmp ax, word_1DF54 + jg short loc_CBB + shl ax, 1 + rcl cx, 1 + mov ax, dx + add ax, si + js short loc_CBB + cmp word_1DF54, ax + rcl cx, 1 + mov ax, [bp+arg_4] + mov bx, ax + sub ax, si + cmp ax, word_1DF50 + jg short loc_CBB + sub ax, word_1DF4C + shl ax, 1 + rcl cx, 1 + mov ax, bx + add ax, si + cmp ax, word_1DF4C + jl short loc_CBB + cmp word_1DF50, ax + rcl cx, 1 + jcxz short loc_CB6 + or si, si + jz short loc_CBB + push di + mov al, byte ptr word_1DF96 + mov byte ptr cs:loc_D5F+2, al + mov byte ptr cs:loc_DCB+2, al + mov es, word_1DF58 + mov ax, bx + mov word_1F504, ax + mov word_1F506, dx + xor di, di + mov bp, si + +loc_D32: ; CODE XREF: sub_CC0+8Fj + call sub_D5A + cmp si, di + jz short loc_D40 + xchg si, di + call sub_D5A + xchg si, di + +loc_D40: ; CODE XREF: sub_CC0+77j + stc + sbb bp, di + sub bp, di + jns short loc_D4C + dec si + add bp, si + add bp, si + +loc_D4C: ; CODE XREF: sub_CC0+85j + inc di + cmp si, di + jge short loc_D32 + pop di + pop si + pop bp + retf 6 +sub_CC0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +nullsub_1 proc near ; CODE XREF: sub_D5A+14j sub_D5A+33j + retn +nullsub_1 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D5A proc near ; CODE XREF: sub_CC0:loc_D32p + ; sub_CC0+7Bp + mov ax, word_1F506 + mov bx, di + +loc_D5F: ; DATA XREF: sub_CC0+59w + shr bx, 9 + or bx, bx + jz short loc_DD0 + sub ax, bx + js short loc_DC6 + cmp ax, word_1DF54 + jg short nullsub_1 + mov dx, ax + shl dx, 2 + add dx, ax + shl dx, 4 + mov ax, word_1F504 + or si, si + jz short loc_DA7 + sub ax, si + cmp ax, word_1DF4C + jl short loc_DA2 + cmp ax, word_1DF50 + jg short nullsub_1 + 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_DA2: ; CODE XREF: sub_D5A+2Dj + mov ax, word_1F504 + add ax, si + +loc_DA7: ; CODE XREF: sub_D5A+25j + cmp ax, word_1DF4C + jl short loc_DC6 + cmp ax, word_1DF50 + jg short loc_DC6 + 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_DC6: ; CODE XREF: sub_D5A+Ej sub_D5A+51j ... + mov ax, word_1F506 + mov bx, di + +loc_DCB: ; DATA XREF: sub_CC0+5Dw + shr bx, 9 + add ax, bx + +loc_DD0: ; CODE XREF: sub_D5A+Aj + cmp ax, word_1DF54 + jnb short locret_E2C + mov dx, ax + shl dx, 2 + add dx, ax + shl dx, 4 + mov ax, word_1F504 + or si, si + jz short loc_E0D + sub ax, si + cmp ax, word_1DF4C + jl short loc_E08 + cmp ax, word_1DF50 + jg short locret_E2C + 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_E08: ; CODE XREF: sub_D5A+93j + mov ax, word_1F504 + add ax, si + +loc_E0D: ; CODE XREF: sub_D5A+8Bj + cmp ax, word_1DF4C + jl short locret_E2C + cmp ax, word_1DF50 + jg short locret_E2C + 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_E2C: ; CODE XREF: sub_D5A+7Aj sub_D5A+99j ... + retn +sub_D5A endp + +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_E2E: ; CODE XREF: sub_CC0-8j + push bp + mov bp, sp + push si + push di + push ds + mov dx, [bp+6] + test dx, dx + jz short loc_E68 + mov al, byte ptr word_1DF96 + mov byte ptr cs:loc_E87+2, al + mov byte ptr cs:loc_ED1+2, al + mov ax, [bp+8] + sub ax, word_1DF52 + mov bx, [bp+0Ah] + mov ds, word_1DF58 + mov word ptr cs:loc_E82+1, bx + mov word ptr cs:loc_E8A+1, ax + mov word ptr cs:loc_ED4+1, ax + xor ax, ax + mov bp, dx + jmp short loc_E81 +; --------------------------------------------------------------------------- + nop + +loc_E68: ; CODE XREF: seg000:0E39j seg000:0E7Fj + pop ds + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + nop + +loc_E70: ; CODE XREF: seg000:0F1Aj + stc + sbb bp, ax + sub bp, ax + jns short loc_E7C + dec dx + add bp, dx + add bp, dx + +loc_E7C: ; CODE XREF: seg000:0E75j + inc ax + cmp dx, ax + jl short loc_E68 + +loc_E81: ; CODE XREF: seg000:0E65j + push bp + +loc_E82: ; DATA XREF: seg000:0E54w + mov bp, 1234h + mov di, ax + +loc_E87: ; DATA XREF: seg000:0E3Ew + shr di, 9 + +loc_E8A: ; DATA XREF: seg000:0E59w + 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_ED1: ; DATA XREF: seg000:0E42w + shr di, 9 + +loc_ED4: ; DATA XREF: seg000:0E5Dw + 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_E70 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F1E proc far ; CODE XREF: sub_B3DA+551P + ; sub_13671+A1P ... + +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_FAA + cmp ax, bx + jl short loc_F30 + xchg ax, bx + +loc_F30: ; CODE XREF: sub_F1E+Fj + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_1DF94 + shl cx, 3 + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_FAA + mov word_1DF4C, ax + mov word_1DF4E, bx + add ax, bx + mov word_1DF50, ax + mov ax, [bp+arg_4] + mov bx, [bp+arg_0] + test ax, bx + js short loc_FAA + cmp ax, bx + jl short loc_F66 + xchg ax, bx + +loc_F66: ; CODE XREF: sub_F1E+45j + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_1DF92 + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_FAA + mov word_1DF52, ax + mov cx, ax + mov word_1DF54, bx + add ax, bx + mov word_1DF56, ax + mov ax, word_1DF94 + xchg ax, bx + mul bx + mov word_1DF5A, ax + mov ax, bx + shr ax, 4 + mul cx + add ax, word_1DF8E + mov word_1DF58, ax + mov ax, 1 + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_FAA: ; CODE XREF: sub_F1E+Bj sub_F1E+2Bj ... + xor ax, ax + pop bp + retf 8 +sub_F1E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_FB0 proc far ; CODE XREF: sub_199B3+98P + ; sub_199B3+21EP ... + push bp + push si + push di + mov ax, word_1DF58 + mov es, ax + mov bx, word_1DF4C + mov di, bx + shr di, 4 + shl di, 1 + add di, word_1DF5A + and bx, 0Fh + lea si, [bx-10h] + shl bx, 1 + mov dx, [bx+4ECh] + not dx + add si, word_1DF4E + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+4EEh] + sar si, 4 + js short loc_1004 + lea bp, [si+2Ah] + shl bp, 1 + +loc_FEE: ; CODE XREF: sub_FB0+4Dj + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_FEE + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + nop + +loc_1004: ; CODE XREF: sub_FB0+37j + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_100C: ; CODE XREF: sub_FB0+5Fj + stosw + sub di, bp + jnb short loc_100C + pop di + pop si + pop bp + retf +sub_FB0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1016 proc far ; CODE XREF: sub_C20+27p sub_C20+3Cp ... + +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_1DF52 + cmp dx, word_1DF54 + ja short loc_1096 + 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_1DF4C + sub cx, ax + sub bx, ax + test cx, bx + js short loc_1096 + cmp cx, bx + jg short loc_1048 + xchg cx, bx + +loc_1048: ; CODE XREF: sub_1016+2Ej + cmp bx, 8000h + sbb dx, dx + and bx, dx + mov di, word_1DF4E + sub cx, di + sbb dx, dx + and cx, dx + add cx, di + sub cx, bx + jl short loc_1096 + mov es, word_1DF58 + 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+4ECh] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_1091 + stosw + mov ax, 0FFFFh + rep stosw + +loc_1091: ; CODE XREF: sub_1016+73j + and ax, [bx+4EEh] + stosw + +loc_1096: ; CODE XREF: sub_1016+Fj sub_1016+2Aj ... + pop di + pop bp + retf 6 +sub_1016 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_109C proc far ; CODE XREF: sub_181B3+DEP + ; sub_181B3+16FP ... + 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_1DF52 + sub di, ax + sub bp, ax + mov ax, word_1DF4C + mov dx, word_1DF54 + mov bx, 505h + cmp ax, cx + jg short loc_10CC + xor bl, 3 + cmp cx, word_1DF50 + jg short loc_10CC + xor bl, 2 + +loc_10CC: ; CODE XREF: sub_109C+22j sub_109C+2Bj + cmp di, dx + jg short loc_10DA + xor bl, 0Ch + or di, di + js short loc_10DA + xor bl, 8 + +loc_10DA: ; CODE XREF: sub_109C+32j sub_109C+39j + cmp ax, si + jg short loc_10EA + xor bh, 3 + cmp si, word_1DF50 + jg short loc_10EA + xor bh, 2 + +loc_10EA: ; CODE XREF: sub_109C+40j sub_109C+49j + cmp bp, dx + jg short loc_10F8 + xor bh, 0Ch + or bp, bp + js short loc_10F8 + xor bh, 8 + +loc_10F8: ; CODE XREF: sub_109C+50j sub_109C+57j + test bh, bl + jnz short loc_1163 + or bx, bx + jz short loc_1110 + call sub_66A + jz short loc_1110 + xchg bh, bl + xchg cx, si + xchg di, bp + call sub_66A + jnz short loc_1163 + +loc_1110: ; CODE XREF: sub_109C+62j sub_109C+67j + mov es, word_1DF58 + sub si, cx + jnb short loc_111E + add cx, si + neg si + xchg di, bp + +loc_111E: ; CODE XREF: sub_109C+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_11B8 + jz short loc_1176 + 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_115A: ; CODE XREF: sub_109C+C5j sub_109C+D2j + stosb + add dx, bp + jb short loc_116A + add di, bx + loop loc_115A + +loc_1163: ; CODE XREF: sub_109C+5Ej sub_109C+72j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_116A: ; CODE XREF: sub_109C+C1j + ror al, 1 + adc di, bx + loop loc_115A + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_1176: ; CODE XREF: sub_109C+A8j + dec bx + and cl, 7 + mov al, 80h ; '€' + shr al, cl + lea cx, [si+1] + shr cx, 1 + jnb short loc_118A + stosb + ror al, 1 + adc di, bx + +loc_118A: ; CODE XREF: sub_109C+E7j + jcxz short loc_11B2 + shr cx, 1 + jnb short loc_119A + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + +loc_119A: ; CODE XREF: sub_109C+F2j + jcxz short loc_11B2 + +loc_119C: ; CODE XREF: sub_109C+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_119C + +loc_11B2: ; CODE XREF: sub_109C:loc_118Aj + ; sub_109C:loc_119Aj + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_11B8: ; CODE XREF: sub_109C+A6j + and di, 0FFFEh + or dx, dx + jz short loc_120C + 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_11D2: ; CODE XREF: sub_109C+140j + ; sub_109C+155j ... + or ax, dx + ror dx, 1 + jb short loc_11E8 + add bp, si + jb short loc_11FA + loop loc_11D2 + xchg ah, al + stosw + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_11E8: ; CODE XREF: sub_109C+13Aj + xchg ah, al + stosw + xor ax, ax + add bp, si + jb short loc_1201 + loop loc_11D2 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_11FA: ; CODE XREF: sub_109C+13Ej + xchg ah, al + mov es:[di], ax + xor ax, ax + +loc_1201: ; CODE XREF: sub_109C+153j + add di, bx + loop loc_11D2 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_120C: ; CODE XREF: sub_109C+121j + mov bx, cx + and bx, 0Fh + lea cx, [bx+si-10h] + shl bx, 1 + mov ax, [bx+4ECh] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_122E + stosw + mov ax, 0FFFFh + rep stosw + +loc_122E: ; CODE XREF: sub_109C+18Aj + and ax, [bx+4EEh] + stosw + pop di + pop si + pop bp + retf 8 +sub_109C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_123A proc far ; CODE XREF: sub_C20+8Dp sub_41AA+B5p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + mov bx, bp + mov bp, sp + mov cx, [bp+arg_2] + mov dx, [bp+arg_0] + mov bp, bx + cmp cx, word_1DF4C + jl short locret_127A + cmp cx, word_1DF50 + jg short locret_127A + sub dx, word_1DF52 + jl short locret_127A + cmp dx, word_1DF54 + jg short locret_127A + mov ax, dx + shl ax, 2 + add dx, ax + add dx, word_1DF58 + mov es, dx + mov bx, cx + shr bx, 3 + and cl, 7 + mov al, 80h ; '€' + shr al, cl + mov es:[bx], al + +locret_127A: ; CODE XREF: sub_123A+10j sub_123A+16j ... + retf 4 +sub_123A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_127E proc far ; CODE XREF: sub_38BC+ABp sub_3EF4+15p ... + 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_127E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_12A8 proc far ; CODE XREF: sub_38BC+D2p sub_3EF4+8Ep ... + xor al, al + out 7Ch, al + retf +sub_12A8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12AE proc far ; CODE XREF: sub_15A25+8BP + +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_1DF52 + mov cx, word_1DF54 + mov bx, [bp+arg_2] + mov dx, [bp+arg_0] + cmp bx, dx + jl short loc_12C5 + xchg bx, dx + +loc_12C5: ; CODE XREF: sub_12AE+13j + sub dx, ax + jl short loc_132E + sub bx, ax + cmp bh, 80h ; '€' + sbb di, di + and bx, di + cmp bx, cx + jg short loc_132E + sub dx, cx + sbb di, di + and dx, di + add dx, cx + mov ax, [bp+arg_4] + cmp ax, word_1DF4C + jl short loc_132E + cmp ax, word_1DF50 + jg short loc_132E + 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_1DF58 + inc cx + shr cx, 1 + jnb short loc_1313 + stosb + add di, dx + +loc_1313: ; CODE XREF: sub_12AE+60j + shr cx, 1 + jnb short loc_131D + stosb + add di, dx + stosb + add di, dx + +loc_131D: ; CODE XREF: sub_12AE+67j + jcxz short loc_132E + nop + +loc_1320: ; CODE XREF: sub_12AE+7Ej + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + loop loc_1320 + +loc_132E: ; CODE XREF: sub_12AE+19j sub_12AE+26j ... + pop di + pop bp + retf 6 +sub_12AE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1334 proc near ; CODE XREF: sub_1DD4+3Ap sub_1DD4+43p ... + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + retn +sub_1334 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_1340 proc far ; CODE XREF: sub_DC38+3P + xor ax, ax + cmp word_1DF84, ax + jnz short locret_1363 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_2994 + or ax, ax + jz short locret_1363 + mov word_1DF84, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_14F8 + mov ax, 1 + +locret_1363: ; CODE XREF: sub_1340+6j sub_1340+13j + retf +sub_1340 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1364 proc far ; CODE XREF: sub_DC4B+3P + mov ax, word_1DF84 + test ax, ax + jz short locret_137F + push ax + push ax + xor ax, ax + mov word_1DF84, ax + push ax + push cs + call near ptr sub_1566 + nop + push cs + call near ptr sub_2A84 + mov ax, 1 + +locret_137F: ; CODE XREF: sub_1364+5j + retf +sub_1364 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1380 proc far ; CODE XREF: sub_DC38+CP + +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_A98 + mov bp, ax + mov ax, 0 + jb short loc_140D + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_25A4 + mov si, ax + mov ax, 0 + jb short loc_1405 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_13FB + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_13FB + add di, 8 + push si + mov si, 516h + mov cx, 4 + repe cmpsw + pop si + jnz short loc_13FB + 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_13FB + push si + xor ax, ax + push ax + push cs + call near ptr sub_1566 + mov ax, 1 + jmp short loc_13FD +; --------------------------------------------------------------------------- + +loc_13FB: ; CODE XREF: sub_1380+34j sub_1380+3Fj ... + xor ax, ax + +loc_13FD: ; CODE XREF: sub_1380+79j + push ax + push si + nop + push cs + call near ptr sub_258E + pop ax + +loc_1405: ; CODE XREF: sub_1380+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_140D: ; CODE XREF: sub_1380+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_1380 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1416 proc far ; CODE XREF: sub_C0A8+1DP + ; sub_C31F+153P ... + +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_1E25E + 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_1416 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_145A proc far ; CODE XREF: _main+B2P _main+E0P ... + +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_1E25E + 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_149C + +loc_1488: ; CODE XREF: sub_145A+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_1488 + +loc_149C: ; CODE XREF: sub_145A+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_145A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_14B0 proc near ; CODE XREF: sub_14D2+1Ap sub_14F8+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_14BC: ; CODE XREF: sub_14B0+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_14BC + retn +sub_14B0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14D2 proc far + 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_14B0 + mov al, 0Ah + out 68h, al + pop di + retf 6 +sub_14D2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14F8 proc far ; CODE XREF: sub_1340+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_1506: ; CODE XREF: sub_14F8+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_14B0 + inc dl + jnz short loc_1506 + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_14F8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_151C proc near ; CODE XREF: sub_153E+1Bp sub_1566+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_1528: ; CODE XREF: sub_151C+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_1528 + retn +sub_151C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_153E proc far + push ds + push si + mov dx, sp + cli + add sp, 8 + pop si + pop ds + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_151C + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +sub_153E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1566 proc far ; CODE XREF: sub_1364+10p sub_1380+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_1575: ; CODE XREF: sub_1566+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_151C + inc dl + jnz short loc_1575 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_1566 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_158C proc far ; CODE XREF: sub_F913+23P + 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_1DF8E, ax + mov word_1DF58, ax + mov word_1DF90, 3E80h + xor ax, ax + mov word_1DF4C, ax + mov word_1DF52, 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_1DF96, ax + mov ax, 27Fh + mov word_1DF50, ax + mov word_1DF4E, ax + mov ax, 190h + mov word_1DF92, ax + dec ax + mov word_1DF56, ax + mov word_1DF54, ax + mov word_1DF5A, 7CB0h + retf +sub_158C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_15DA proc far ; CODE XREF: sub_B3DA+23P sub_B3DA+2EP ... + 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_1DF90 + mov es, word_1DF8E + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_15DA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_15FE proc near ; CODE XREF: sub_1614+25p sub_1614+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_15FE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1614 proc far ; CODE XREF: sub_1A7D5+1E4P + xor dx, dx + mov cx, word_1DF90 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_25A4 + xchg ax, dx + jb short locret_1666 + 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_15FE + call sub_15FE + mov bx, 0B000h + call sub_15FE + call sub_15FE + mov bx, 0B800h + call sub_15FE + call sub_15FE + mov bx, 0E000h + call sub_15FE + call sub_15FE + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_258E + mov ax, 1 + +locret_1666: ; CODE XREF: sub_1614+11j + retf 2 +sub_1614 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_166A proc far ; CODE XREF: sub_2740+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_16BD + 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_16BD + 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_1E262, 1 + jz short loc_16A4 + 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_16A4: ; CODE XREF: sub_166A+34j + test cl, 1 + jz short loc_16AF + 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_16AF: ; CODE XREF: sub_166A+3Dj + test es:byte_711, 1 + jz short loc_16BB + 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_16BB: ; CODE XREF: sub_166A+4Bj + mov ax, cx + +locret_16BD: ; CODE XREF: sub_166A+Aj sub_166A+1Cj + retf 4 +sub_166A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16C0 proc far ; CODE XREF: sub_C566+CP sub_E24A+CP + +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_16E1 + push ax + nop + push cs + call near ptr sub_2A84 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_16E1: ; CODE XREF: sub_16C0+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_16FB + push ax + nop + push cs + call near ptr sub_2A84 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_16FB: ; CODE XREF: sub_16C0+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_1708 + push ax + nop + push cs + call near ptr sub_2A84 + +loc_1708: ; CODE XREF: sub_16C0+40j + pop bp + retf 8 +sub_16C0 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1718 + +loc_170C: ; CODE XREF: sub_1718+11j sub_1718+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_1718 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1718 proc far ; CODE XREF: sub_F537+20P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 170C 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_A98 + jb short loc_170C + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_25A4 + jb short loc_170C + mov ds, ax + mov word_21B7E, bx + mov byte_21B82, 0 + mov byte_21B83, 0 + mov cx, 4000h + xor dx, dx + mov word_21B80, 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_1762: ; CODE XREF: sub_1718+54j sub_1718+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_1762 + inc al + loop loc_1762 + mov ax, 0FFF3h + call sub_1CC2 + cmp dl, 50h ; 'P' + jnz short loc_170C + call sub_1CC2 + cmp dl, 69h ; 'i' + jnz short loc_170C + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_178D: ; CODE XREF: sub_1718+7Cj + inc ax + call sub_1CC2 + cmp dl, 1Ah + jnz short loc_178D + stosw + +loc_1797: ; CODE XREF: sub_1718+84j + call sub_1CC2 + or dl, dl + jnz short loc_1797 + call sub_1CC2 + mov al, dl + stosb + mov byte_21B7C, al + call sub_1CC2 + mov ah, dl + call sub_1CC2 + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_17BC + jmp loc_170C +; --------------------------------------------------------------------------- + +loc_17BC: ; CODE XREF: sub_1718+9Fj + call sub_1CC2 + cmp dl, 4 + jz short loc_17C7 + jmp loc_170C +; --------------------------------------------------------------------------- + +loc_17C7: ; CODE XREF: sub_1718+AAj + mov al, dl + stosb + call sub_1CC2 + mov al, dl + call sub_1CC2 + mov ah, dl + stosw + call sub_1CC2 + mov al, dl + call sub_1CC2 + mov ah, dl + stosw + call sub_1CC2 + mov ah, dl + call sub_1CC2 + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_1E2D6, 0Ah + nop + push cs + call near ptr sub_28DC + pop ds + stosw + jb short loc_1818 + push es + push di + mov es, ax + xor di, di + +loc_180C: ; CODE XREF: sub_1718+FBj + call sub_1CC2 + mov al, dl + stosb + dec bx + jnz short loc_180C + pop di + pop es + nop + +loc_1818: ; CODE XREF: sub_1718+ECj + call sub_1CC2 + mov ah, dl + call sub_1CC2 + mov al, dl + stosw + mov word_21A70, ax + mov bx, ax + call sub_1CC2 + mov ah, dl + call sub_1CC2 + mov al, dl + stosw + mov word_21A72, ax + add ax, 2 + mul bx + shr dx, 1 + rcr ax, 1 + push ds + push dx + push ax + shl dx, 0Ch + mov word_21A78, ax + mov word_21A7A, dx + push seg dseg + pop ds + mov word_1E2D6, 0Ah + nop + push cs + call near ptr sub_28DC + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_1866 + jmp loc_170C +; --------------------------------------------------------------------------- + +loc_1866: ; CODE XREF: sub_1718+149j + mov ax, bx + mov word ptr dword_21A74, 0 + mov word ptr dword_21A74+2, ax + add word_21A7A, ax + mov cx, word_21A70 + push es + les bx, [bp+arg_0] + mov es:[bx], cx + mov es:[bx+2], ax + pop es + shl byte_21B7C, 1 + jb short loc_1898 + mov bl, 30h ; '0' + nop + +loc_188E: ; CODE XREF: sub_1718+17Ej + call sub_1CC2 + mov al, dl + stosb + dec bl + jnz short loc_188E + +loc_1898: ; CODE XREF: sub_1718+171j + xor bl, bl + call sub_1BD4 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1BD4 + or al, dl + les di, dword_21A74 + mov cx, word_21A70 + rep stosb + mov cl, 0FFh + nop + +loc_18B6: ; CODE XREF: sub_1718+490j + ; sub_1718+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, byte_21B82 + mov cl, byte_21B83 + cmp cl, ch + jnb short loc_18E2 + shl dx, cl + mov si, word_21B80 + cmp si, 4000h + jnz short loc_18D6 + call sub_1CEE + +loc_18D6: ; CODE XREF: sub_1718+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21B80, si + nop + +loc_18E2: ; CODE XREF: sub_1718+1ADj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21B82, dl + mov byte_21B83, ch + mov dl, dh + mov dh, 0 + pop cx + mov bl, dl + cmp dl, 3 + jnz short loc_1930 + push cx + mov dl, byte_21B82 + mov cl, byte_21B83 + mov dh, 0 + dec cl + jns short loc_1922 + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1918 + call sub_1CEE + +loc_1918: ; CODE XREF: sub_1718+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_1922: ; CODE XREF: sub_1718+1F1j + shl dl, 1 + mov byte_21B82, dl + mov byte_21B83, cl + adc bl, 0 + pop cx + +loc_1930: ; CODE XREF: sub_1718+1E2j + cmp bl, cl + jnz short loc_19A4 + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_194A + 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_194A: ; CODE XREF: sub_1718+223j + and bl, 0Fh + nop + +loc_194E: ; CODE XREF: sub_1718+284j + call sub_1BD4 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1BD4 + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_196C + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_196C: ; CODE XREF: sub_1718+24Aj + mov dl, byte_21B82 + mov cl, byte_21B83 + mov dh, 0 + dec cl + jns short loc_1992 + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1988 + call sub_1CEE + nop + +loc_1988: ; CODE XREF: sub_1718+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_1992: ; CODE XREF: sub_1718+260j + shl dl, 1 + mov byte_21B82, dl + mov byte_21B83, cl + jb short loc_194E + mov cl, 0FFh + jmp loc_1BA2 +; --------------------------------------------------------------------------- + nop + +loc_19A4: ; CODE XREF: sub_1718+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, byte_21B82 + mov cl, byte_21B83 + nop + +loc_19B4: ; CODE XREF: sub_1718+2BCj + inc bh + dec cl + jns short loc_19D2 + mov si, word_21B80 + cmp si, 4000h + jnz short loc_19C8 + call sub_1CEE + nop + +loc_19C8: ; CODE XREF: sub_1718+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_19D2: ; CODE XREF: sub_1718+2A0j + shl dl, 1 + jb short loc_19B4 + mov byte_21B82, dl + mov byte_21B83, cl + mov dh, 0 + dec bh + jnz short loc_19E7 + jmp loc_1A7E +; --------------------------------------------------------------------------- + +loc_19E7: ; CODE XREF: sub_1718+2CAj + cmp bh, 8 + jl short loc_1A2C + mov cx, bp + +loc_19EE: ; CODE XREF: sub_1718+30Fj + push cx + mov si, word_21B80 + cmp si, 4000h + jnz short loc_19FC + call sub_1CEE + +loc_19FC: ; CODE XREF: sub_1718+2DFj + mov dh, 0 + mov dl, [si] + inc si + mov word_21B80, si + mov cl, byte_21B83 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_21B82 + 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_19EE + mov bp, cx + nop + +loc_1A2C: ; CODE XREF: sub_1718+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, byte_21B82 + mov cl, byte_21B83 + cmp cl, ch + jnb short loc_1A58 + shl dx, cl + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1A4C + call sub_1CEE + +loc_1A4C: ; CODE XREF: sub_1718+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21B80, si + nop + +loc_1A58: ; CODE XREF: sub_1718+323j + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21B82, dl + mov byte_21B83, 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_1A7E: ; CODE XREF: sub_1718+2CCj + mov cx, ax + test bl, bl + jnz short loc_1A87 + jmp loc_1B24 +; --------------------------------------------------------------------------- + +loc_1A87: ; CODE XREF: sub_1718+36Aj + mov bh, 0 + mov ax, word_21A70 + cmp bl, 1 + jz short loc_1AA6 + cmp bl, 2 + jnz short loc_1A9C + shl ax, 1 + adc bh, bh + jmp short loc_1AA6 +; --------------------------------------------------------------------------- + +loc_1A9C: ; CODE XREF: sub_1718+37Cj + dec ax + cmp bl, 3 + jz short loc_1AA6 + add ax, 2 + nop + +loc_1AA6: ; CODE XREF: sub_1718+377j + ; sub_1718+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_1ABA + sub dx, 1000h + nop + +loc_1ABA: ; CODE XREF: sub_1718+39Bj + mov ds, dx + or bh, bh + jnz short loc_1AFC + mov ax, cx + +loc_1AC2: ; CODE XREF: sub_1718+3DEj + mov cx, si + cmp si, di + ja short loc_1ACA + mov cx, di + +loc_1ACA: ; CODE XREF: sub_1718+3AEj + neg cx + test ax, ax + jz short loc_1AD8 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1AD8: ; CODE XREF: sub_1718+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1AE8 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1AE8: ; CODE XREF: sub_1718+3C6j + or si, si + jnz short loc_1AF4 + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1AF4: ; CODE XREF: sub_1718+3D2j + test ax, ax + jnz short loc_1AC2 + pop ds + assume ds:dseg + jmp loc_1BA0 +; --------------------------------------------------------------------------- + +loc_1AFC: ; CODE XREF: sub_1718+3A6j + ; sub_1718:loc_1B1Ej + lodsb + mov ah, al + or si, si + jnz short loc_1B0C + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_1B0C: ; CODE XREF: sub_1718+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_1B1E + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1B1E: ; CODE XREF: sub_1718+3FCj + loop loc_1AFC + pop ds + assume ds:dseg + jmp short loc_1BA0 +; --------------------------------------------------------------------------- + nop + +loc_1B24: ; CODE XREF: sub_1718+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1B3A + 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_1B3A: ; CODE XREF: sub_1718+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1B5C + nop + +loc_1B44: ; CODE XREF: sub_1718:loc_1B52j + ; sub_1718+43Fj + stosb + or di, di + jnz short loc_1B52 + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_1B52: ; CODE XREF: sub_1718+42Fj + loop loc_1B44 + sub bp, 1 + jnb short loc_1B44 + jmp short loc_1BA0 +; --------------------------------------------------------------------------- + nop + +loc_1B5C: ; CODE XREF: sub_1718+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_1B74 + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_1B74: ; CODE XREF: sub_1718+44Dj + ; sub_1718:loc_1B98j ... + mov al, dl + stosb + or di, di + jnz short loc_1B82 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1B82: ; CODE XREF: sub_1718+461j + loop loc_1B8A + sub bp, 1 + jb short loc_1BA0 + nop + +loc_1B8A: ; CODE XREF: sub_1718:loc_1B82j + mov al, bh + stosb + or di, di + jnz short loc_1B98 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1B98: ; CODE XREF: sub_1718+477j + loop loc_1B74 + sub bp, 1 + jnb short loc_1B74 + nop + +loc_1BA0: ; CODE XREF: sub_1718+3E1j + ; sub_1718+409j ... + mov cl, bl + +loc_1BA2: ; CODE XREF: sub_1718+288j + cmp word_21A78, di + jbe short loc_1BAB + jmp loc_18B6 +; --------------------------------------------------------------------------- + +loc_1BAB: ; CODE XREF: sub_1718+48Ej + mov ax, es + cmp word_21A7A, ax + jbe short loc_1BB6 + jmp loc_18B6 +; --------------------------------------------------------------------------- + +loc_1BB6: ; CODE XREF: sub_1718+499j + mov ah, 3Eh ; '>' + mov bx, word_21B7E + 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_258E + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_1718 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1BD4 proc near ; CODE XREF: sub_1718+182p + ; sub_1718+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, byte_21B82 + mov cl, byte_21B83 + dec cl + jns short loc_1BFC + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1BF2 + call sub_1CEE + +loc_1BF2: ; CODE XREF: sub_1BD4+19j + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_1BFC: ; CODE XREF: sub_1BD4+Fj + shl dl, 1 + jb short loc_1C4A + add al, 2 + dec cl + jns short loc_1C1E + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1C14 + call sub_1CEE + nop + +loc_1C14: ; CODE XREF: sub_1BD4+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_1C1E: ; CODE XREF: sub_1BD4+30j + shl dl, 1 + jnb short loc_1C4A + add al, 2 + inc ah + dec cl + jns short loc_1C42 + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1C38 + call sub_1CEE + nop + +loc_1C38: ; CODE XREF: sub_1BD4+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov word_21B80, si + nop + +loc_1C42: ; CODE XREF: sub_1BD4+54j + shl dl, 1 + jnb short loc_1C4A + add al, 4 + inc ah + +loc_1C4A: ; CODE XREF: sub_1BD4+2Aj sub_1BD4+4Cj ... + mov byte_21B82, dl + mov byte_21B83, cl + mov ch, ah + inc ch + push cx + mov dh, 0 + mov dl, byte_21B82 + mov cl, byte_21B83 + cmp cl, ch + jnb short loc_1C80 + shl dx, cl + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1C74 + call sub_1CEE + +loc_1C74: ; CODE XREF: sub_1BD4+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_21B80, si + nop + +loc_1C80: ; CODE XREF: sub_1BD4+8Fj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_21B82, dl + mov byte_21B83, 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_1CB4 + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_1CB4: ; CODE XREF: sub_1BD4+D9j sub_1BD4+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_1CB4 + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1BD4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1CC2 proc near ; CODE XREF: sub_1718+5Dp sub_1718+65p ... + push cx + mov si, word_21B80 + cmp si, 4000h + jnz short loc_1CD0 + call sub_1CEE + +loc_1CD0: ; CODE XREF: sub_1CC2+9j + mov dh, 0 + mov dl, [si] + inc si + mov word_21B80, si + mov cl, byte_21B83 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_21B82 + or dl, dh + mov dh, 0 + pop cx + retn +sub_1CC2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1CEE proc near ; CODE XREF: sub_1718+1BBp + ; sub_1718+1FDp ... + pusha + mov ah, 3Fh ; '?' + mov bx, word_21B7E + 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_1CEE endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1D06 + +loc_1D00: ; CODE XREF: sub_1D06+10j sub_1D06+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1D06 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D06 proc far ; CODE XREF: sub_F970+37P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + +; FUNCTION CHUNK AT 1D00 SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_1DF52 + cmp ax, word_1DF54 + ja short loc_1D00 + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_1D00 + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1D36 + add cx, di + jle short loc_1D00 + shl di, 2 + add si, di + xor di, di + +loc_1D36: ; CODE XREF: sub_1D06+23j + cmp di, 50h ; 'P' + jge short loc_1D00 + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1D45 + mov cx, 50h ; 'P' + +loc_1D45: ; CODE XREF: sub_1D06+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_1DF58 + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1D58: ; CODE XREF: sub_1D06+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+218Eh] + mov dx, cs:[bx+2190h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+218Eh] + or dx, cs:[bx+2190h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+218Eh] + or dx, cs:[bx+2190h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+218Eh] + or dx, cs:[bx+2190h] + inc si + mov es:[di], al + mov bx, es + mov es:[di-8000h], ah + add bh, 10h + mov es, bx + assume es:nothing + mov es:[di], dl + add bh, 28h ; '(' + mov es, bx + assume es:nothing + mov es:[di], dh + sub bh, 38h ; '8' + mov es, bx + assume es:nothing + inc di + dec bp + jnz short loc_1D58 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1D06 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1DD4 proc far ; CODE XREF: sub_B3DA+18P + ; sub_12DE0+17P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov bx, [bp+arg_0] + mov dx, word_1DF92 + sub bx, dx + sbb ax, ax + and bx, ax + add bx, dx + sub dx, bx + mov bp, bx + mov cx, word_1DF96 + shl bx, cl + shl dx, cl + mov cl, 4 + +loc_1DF4: ; CODE XREF: sub_1DD4+26j + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, cl + jz short loc_1DF4 + mov al, 70h ; 'p' + out 0A2h, al ; Interrupt Controller #2, 8259A + mov ax, bp + shl ax, 1 + shl ax, 1 + add ax, bp + shl ax, 1 + shl ax, 1 + shl ax, 1 + call sub_1334 + mov ax, dx + shl ax, cl + or ah, ch + call sub_1334 + xor ax, ax + call sub_1334 + mov ax, bx + shl ax, cl + or ah, ch + call sub_1334 + pop bp + retf 2 +sub_1DD4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E2C proc far ; CODE XREF: sub_FFF8+284P + ; sub_10E95+69P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + mov bx, [bp+arg_4] + mov dx, word_1DF92 + sub bx, dx + sbb ax, ax + and bx, ax + add bx, dx + sub dx, bx + mov cx, word_1DF96 + shl bx, cl + shl dx, cl + mov cl, 4 + +loc_1E4A: ; CODE XREF: sub_1E2C+24j + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, cl + jz short loc_1E4A + mov al, 70h ; 'p' + out 0A2h, al ; Interrupt Controller #2, 8259A + mov ax, [bp+arg_2] + call sub_1334 + mov ax, bx + shl ax, cl + or ah, ch + call sub_1334 + mov ax, [bp+arg_0] + call sub_1334 + mov ax, dx + shl ax, cl + or ah, ch + call sub_1334 + pop bp + retf 6 +sub_1E2C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E78 proc far ; CODE XREF: sub_CD2A+155P + ; sub_CD2A+197P ... + +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_1EDF + 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_1EB4 + jl short loc_1EB8 + mov ax, bx + mov bx, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 3D6h + xlat + jmp short loc_1ECC +; --------------------------------------------------------------------------- + nop + +loc_1EB4: ; CODE XREF: sub_1E78+23j + mov al, 20h ; ' ' + jmp short loc_1ECC +; --------------------------------------------------------------------------- + +loc_1EB8: ; CODE XREF: sub_1E78+25j + mov ax, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 3D6h + xlat + neg al + add al, 40h ; '@' + +loc_1ECC: ; CODE XREF: sub_1E78+39j sub_1E78+3Ej + xor ah, ah + or bp, bp + jge short loc_1ED7 + neg ax + add ax, 80h ; '€' + +loc_1ED7: ; CODE XREF: sub_1E78+58j + or cx, cx + jge short loc_1EDD + neg al + +loc_1EDD: ; CODE XREF: sub_1E78+61j + xor ah, ah + +loc_1EDF: ; CODE XREF: sub_1E78+Dj + pop bp + retf 4 +sub_1E78 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1EE4 proc far ; CODE XREF: sub_F464+9P sub_F464+15P ... + mov bx, sp + mov ax, ss:[bx+4] + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov al, ah + mov ah, 0 + retf 2 +sub_1EE4 endp + +; --------------------------------------------------------------------------- + nop + +loc_1EF6: ; CODE XREF: sub_536:loc_54Bp + ; sub_536+36p ... + cld + push si + mov ax, word_1DF9A + 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_1F1C + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1F1C: ; CODE XREF: seg000:1F13j + mov si, 1A98h + mov dl, 64h ; 'd' + cmp word_1DFCC, bx + jnz short loc_1F60 + +loc_1F27: ; CODE XREF: seg000:1F5Bj + 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_1F27 + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1F60: ; CODE XREF: seg000:1F25j + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1F75 + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1F75: ; CODE XREF: seg000:1F6Cj + shr al, 1 + cmc + sbb al, al + mov cs:byte_1FDE, al + mov dx, bx + push di + mov di, 0 + +loc_1F84: ; CODE XREF: seg000:1FFBj + 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_1FB9 + mov bh, al + +loc_1FB9: ; CODE XREF: seg000:1FB5j + cmp bh, bl + ja short loc_1FBF + mov bh, bl + +loc_1FBF: ; CODE XREF: seg000:1FBBj + 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_1FDE db 0 ; DATA XREF: seg000:1F7Aw +; --------------------------------------------------------------------------- + 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_1F84 + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2000 proc far ; CODE XREF: sub_3A6C+2Cp seg000:3B45p + +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_2A84 + pop bp + retf 2 +sub_2000 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_2048 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_2048: ; CODE XREF: seg000:2030j + call word ptr es:4 + test ah, ah + jnz short locret_2077 + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_2077 + push ax + call word ptr es:4 + test ah, ah + jnz short loc_2076 + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_2076: ; CODE XREF: seg000:2064j + pop ax + +locret_2077: ; CODE XREF: seg000:204Fj seg000:205Aj + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_2078 proc near ; CODE XREF: seg000:20BCp + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_2095 + ja short loc_2091 + cmp ax, es:6 + jb short loc_2095 + +loc_2091: ; CODE XREF: sub_2078+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_2095: ; CODE XREF: sub_2078+Ej sub_2078+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_2078 endp + +; --------------------------------------------------------------------------- + call sub_2078 + or ah, ah + jnz short locret_20C8 + xor al, es:1Eh + +locret_20C8: ; CODE XREF: seg000:20C1j + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_20CA proc far ; CODE XREF: seg000:3B65p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+arg_2] + mov di, [bp+arg_4] + test si, si + jz short loc_20ED + +loc_20DA: ; CODE XREF: sub_20CA+21j + mov es, [bp+arg_0] + call word ptr es:2 + inc ah + jz short loc_20ED + mov es, [bp+arg_6] + stosb + dec si + jnz short loc_20DA + +loc_20ED: ; CODE XREF: sub_20CA+Ej sub_20CA+1Aj + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_20CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_20F8 proc far ; CODE XREF: seg000:3B9Ap + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_63A + pop bp + retf 2 +sub_20F8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2134 proc far ; CODE XREF: seg000:3BA6p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov es, [bp+arg_4] + inc [bp+arg_2] + mov di, [bp+arg_0] + or di, di + jz short loc_2151 + +loc_2145: ; CODE XREF: sub_2134+1Bj sub_2134+20j + call word ptr es:2 + test ah, ah + jnz short loc_2156 + dec di + jnz short loc_2145 + +loc_2151: ; CODE XREF: sub_2134+Fj + dec [bp+arg_2] + jnz short loc_2145 + +loc_2156: ; CODE XREF: sub_2134+18j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 +sub_2134 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2164 proc far ; CODE XREF: sub_C224:loc_C22AP + ; sub_102D6+40P ... + mov ax, 4E35h + mul word ptr dword_1DFD8+2 + mov cx, ax + mov ax, 15Ah + mul word ptr dword_1DFD8 + add cx, ax + mov ax, 4E35h + mul word ptr dword_1DFD8 + add ax, 1 + adc dx, cx + mov word ptr dword_1DFD8, ax + mov ax, dx + mov word ptr dword_1DFD8+2, ax + and ah, 7Fh + retf +sub_2164 endp + +; --------------------------------------------------------------------------- + db 4 dup(0), 1, 4 dup(0), 1, 2 dup(0), 2 dup(1), 4 dup(0) + db 1, 0, 1, 0, 1, 2 dup(0), 2 dup(1), 0, 3 dup(1), 4 dup(0) + db 2 dup(1), 2 dup(0), 1, 0, 1, 0, 3 dup(1), 0, 1, 2 dup(0) + db 3 dup(1), 0, 2 dup(1), 0, 7 dup(1), 2, 3 dup(0), 3 + db 3 dup(0), 2, 1, 2 dup(0), 3, 1, 2 dup(0), 2, 0, 1, 0 + db 3, 0, 1, 0, 2, 2 dup(1), 0, 3, 2 dup(1), 0, 2, 2 dup(0) + db 1, 3, 2 dup(0), 1, 2, 1, 0, 1, 3, 1, 0, 1, 2, 0, 2 dup(1) + db 3, 0, 2 dup(1), 2, 3 dup(1), 3, 3 dup(1), 0, 2, 2 dup(0) + db 1, 2, 3 dup(0), 3, 2 dup(0), 1, 3, 3 dup(0), 2, 1, 0 + db 1, 2, 1, 2 dup(0), 3, 1, 0, 1, 3, 1, 2 dup(0), 2, 0 + db 2 dup(1), 2, 0, 1, 0, 3, 0, 2 dup(1), 3, 0, 1, 0, 2 + db 3 dup(1), 2, 2 dup(1), 0, 3, 3 dup(1), 3, 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 2 dup(0), 2, 3, 2 dup(0) + db 2 dup(3), 2 dup(0), 2 dup(2), 1, 0, 3, 2, 1, 0, 2, 3 + db 1, 0, 2 dup(3), 1, 0, 2 dup(2), 0, 1, 3, 2, 0, 1, 2 + db 3, 0, 1, 2 dup(3), 0, 1, 2 dup(2), 2 dup(1), 3, 2, 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(3), 2 dup(1), 2 dup(0), 2, 0 + db 1, 0, 2, 2 dup(0), 1, 2, 0, 2 dup(1), 2, 3 dup(0), 3 + db 0, 1, 0, 3, 2 dup(0), 1, 3, 0, 2 dup(1), 3, 3 dup(0) + db 2, 2 dup(1), 0, 2, 1, 0, 1, 2, 3 dup(1), 2, 1, 2 dup(0) + db 3, 2 dup(1), 0, 3, 1, 0, 1, 3, 3 dup(1), 3, 1, 2, 0 + db 2, 0, 3, 0, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 2, 0, 3, 0 + db 3, 0, 3, 0, 2, 1, 3, 0, 3, 1, 3, 0, 2, 0, 2, 1, 3, 0 + db 2, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 0, 3, 1, 3, 0, 3, 1 + db 2, 1, 3, 1, 3, 1, 3, 1, 0, 2 dup(2), 0, 1, 2 dup(2) + db 2 dup(0), 3, 2, 0, 1, 3, 2, 2 dup(0), 2, 3, 0, 1, 2 + db 3, 2 dup(0), 2 dup(3), 0, 1, 2 dup(3), 2 dup(0), 2 dup(2) + db 2 dup(1), 2 dup(2), 1, 0, 3, 2, 2 dup(1), 3, 2, 1, 0 + db 2, 3, 2 dup(1), 2, 3, 1, 0, 2 dup(3), 2 dup(1), 2 dup(3) + db 1, 3 dup(2), 0, 3, 2 dup(2), 0, 2, 3, 2, 0, 2 dup(3) + db 2, 0, 2 dup(2), 3, 0, 3, 2, 3, 0, 2, 2 dup(3), 0, 3 dup(3) + db 0, 3 dup(2), 1, 3, 2 dup(2), 1, 2, 3, 2, 1, 2 dup(3) + db 2, 1, 2 dup(2), 3, 1, 3, 2, 3, 1, 2, 2 dup(3), 1, 3 dup(3) + db 1, 3 dup(0), 2, 1, 2 dup(0), 2, 0, 1, 0, 2, 2 dup(1) + db 0, 2, 2 dup(0), 1, 2, 1, 0, 1, 2, 0, 2 dup(1), 2, 3 dup(1) + db 2, 3 dup(0), 3, 1, 2 dup(0), 3, 0, 1, 0, 3, 2 dup(1) + db 0, 3, 2 dup(0), 1, 3, 1, 0, 1, 3, 0, 2 dup(1), 3, 3 dup(1) + db 3, 2, 2 dup(0), 2, 3, 2 dup(0), 2 dup(2), 1, 0, 2, 3 + db 1, 0, 2 dup(2), 0, 1, 2, 3, 0, 1, 2 dup(2), 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(2), 2 dup(0), 2 dup(3), 2 dup(0) + db 3, 2, 1, 0, 2 dup(3), 1, 0, 3, 2, 0, 1, 2 dup(3), 0 + db 1, 3, 2, 2 dup(1), 2 dup(3), 2 dup(1), 3, 0, 2, 0, 2 + db 1, 2, 0, 2, 0, 3, 0, 2, 1, 3, 0, 2, 0, 2, 1, 2, 1, 2 + db 1, 2, 0, 3, 1, 2, 1, 3, 1, 2 + db 0, 2, 0, 3, 1, 2, 0, 3, 0, 3, 0, 3, 1, 3, 0, 3, 0, 2 + db 1, 3, 1, 2, 1, 3, 0, 3, 1, 3, 1, 3, 1, 3, 2 dup(2) + db 0, 2, 3, 2, 0, 2 dup(2), 3, 0, 2, 2 dup(3), 0, 3 dup(2) + db 1, 2, 3, 2, 1, 2 dup(2), 3, 1, 2, 2 dup(3), 1, 3 dup(2) + db 0, 2 dup(3), 2, 0, 3, 2, 3, 0, 3 dup(3), 0, 3, 2 dup(2) + db 1, 2 dup(3), 2, 1, 3, 2, 3, 1, 3 dup(3), 1, 3, 2 dup(0) + db 2 dup(2), 1, 0, 2 dup(2), 0, 1, 2 dup(2), 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 1, 0, 3, 2, 0, 1, 3, 2, 2 dup(1) + db 3, 2, 2 dup(0), 2, 3, 1, 0, 2, 3, 0, 1, 2, 3, 2 dup(1) + db 2, 3, 2 dup(0), 2 dup(3), 1, 0, 2 dup(3), 0, 1, 2 dup(3) + db 2 dup(1), 2 dup(3), 2, 0, 2 dup(2), 3, 0, 3 dup(2) + db 1, 2 dup(2), 3, 1, 3 dup(2), 0, 3, 2, 3, 0, 3, 2 dup(2) + db 1, 3, 2, 3, 1, 3, 2 dup(2), 0, 2, 2 dup(3), 0, 2, 3 + db 2, 1, 2, 2 dup(3), 1, 2, 3, 2, 0, 3 dup(3), 0, 2 dup(3) + db 2, 1, 3 dup(3), 1, 2 dup(3), 0, 3 dup(2), 1, 3 dup(2) + db 0, 3, 2 dup(2), 1, 3, 2 dup(2), 0, 2, 3, 2, 1, 2, 3 + db 2, 0, 2 dup(3), 2, 1, 2 dup(3), 2, 0, 2 dup(2), 3, 1 + db 2 dup(2), 3, 0, 3, 2, 3, 1, 3, 2, 3, 0, 2, 2 dup(3) + db 1, 2, 2 dup(3), 0, 3 dup(3), 1, 3 dup(3), 4 dup(2) + db 3, 4 dup(2), 3, 2 dup(2), 2 dup(3), 4 dup(2), 3, 2 + db 3, 2, 3, 2 dup(2), 2 dup(3), 2, 3 dup(3), 4 dup(2) + db 2 dup(3), 2 dup(2), 3, 2, 3, 2, 3 dup(3), 2, 3, 2 dup(2) + db 3 dup(3), 2, 2 dup(3), 2, 7 dup(3) + +; =============== S U B R O U T I N E ======================================= + + +sub_258E proc far ; CODE XREF: sub_286-Dp sub_286+102p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_1F548, bx + pop bx + retf 2 +sub_258E endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_25A4 + +loc_259E: ; CODE XREF: sub_25A4+5j + push cs + call near ptr sub_2958 + jb short loc_25D3 +; END OF FUNCTION CHUNK FOR sub_25A4 + +; =============== S U B R O U T I N E ======================================= + + +sub_25A4 proc far ; CODE XREF: sub_286+50p sub_286+58p ... + +; FUNCTION CHUNK AT 259E SIZE 00000006 BYTES + + cmp word_1E2D2, 0 + jz short loc_259E + 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_1F548 + add bx, ax + jb short loc_25D2 + cmp word_1F544, bx + jb short loc_25D2 + mov word_1F548, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_25D2: ; CODE XREF: sub_25A4+1Ej sub_25A4+24j + pop bx + +loc_25D3: ; CODE XREF: sub_25A4-2j + mov ax, 0FFF8h + retf 2 +sub_25A4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_25DA proc far ; CODE XREF: sub_B3DA+4F0P + 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_1E25E + 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_261C: ; CODE XREF: sub_25DA+48j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_261C + pop di + retf 0Ah +sub_25DA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2628 proc far ; CODE XREF: sub_BF7B+3P sub_C566+28P ... + 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_2628 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_263A proc far ; CODE XREF: sub_BF7B+EP + +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, es:byte_712 + inc ax + mov dx, ax + shl dx, 1 + shl dx, 1 + add dx, ax + mov cl, 4 + shl dx, cl + mov cx, dx + mov es, word_1E25E + 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_263A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2672 proc far ; CODE XREF: sub_FBE9+17P + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + mov cx, di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_1E25E + mov es, di + assume es:nothing + mov di, [bp+arg_6] + shl di, 1 + mov ax, [bp+arg_2] + mov bx, [bp+arg_0] + mov bp, dx + or ah, ah + jz short loc_26BE + cmp ah, 80h ; '€' + jb short loc_26B2 + shl ah, 1 + cmp al, 9Fh ; 'Ÿ' + jnb short loc_26AC + cmp al, 80h ; '€' + adc ax, 0FEDFh + +loc_26AC: ; CODE XREF: sub_2672+33j + sbb ax, 0DFFEh + and ax, 7F7Fh + +loc_26B2: ; CODE XREF: sub_2672+2Dj + xchg ah, al + sub al, 20h ; ' ' + mov es:[di+2000h], bx + stosw + or al, 80h + +loc_26BE: ; CODE XREF: sub_2672+28j + mov es:[di+2000h], bx + stosw + mov di, cx + retf 8 +sub_2672 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_26CA proc far ; CODE XREF: _main+CCP sub_B9E2+19P ... + +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_1E25E + 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_2729 + +loc_26FE: ; CODE XREF: sub_26CA+5Dj + xor ah, ah + cmp al, dl + jbe short loc_2723 + cmp al, dh + jbe short loc_270C + cmp al, bl + jbe short loc_2723 + +loc_270C: ; CODE XREF: sub_26CA+3Cj + mov ah, al + lodsb + shl ah, 1 + cmp al, dh + jnb short loc_2719 + cmp al, dl + adc ax, bx + +loc_2719: ; CODE XREF: sub_26CA+49j + sbb al, bh + and ax, 7F7Fh + xchg ah, al + stosw + or al, dl + +loc_2723: ; CODE XREF: sub_26CA+38j sub_26CA+40j + stosw + lodsb + or al, al + jnz short loc_26FE + +loc_2729: ; CODE XREF: sub_26CA+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_26CA endp + +; --------------------------------------------------------------------------- +dword_273C dd 0 ; DATA XREF: sub_2740+5Ew sub_27AA+1r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2740 proc far ; CODE XREF: sub_F913+19P + xor ax, ax + push ax + push ax + push cs + call near ptr sub_166A + and ax, 0Ch + cmp ax, 0Ch + mov word_1E2C6, 33FFh + jz short loc_275C + mov word_1E2C6, 0 + +loc_275C: ; CODE XREF: sub_2740+14j + xor ax, ax + mov word_1F538, ax + mov word_1F53A, ax + cmp byte_1E2C8, al + jnz short locret_27A9 + mov al, 0Ah + push ax + push cs + mov ax, 27B4h + push ax + nop + push cs + call near ptr sub_72E + mov word_1F53C, ax + mov word_1F53E, 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_1E2C8, ah + mov ax, 18h + push ax + push cs + mov ax, 27AAh + push ax + nop + push cs + call near ptr sub_72E + mov word ptr cs:dword_273C, ax + mov word ptr cs:dword_273C+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_27A9: ; CODE XREF: sub_2740+28j + retf +sub_2740 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_27AA proc far + pushf + call cs:dword_273C + out 64h, al ; AT Keyboard controller 8042. + iret +sub_27AA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_27B4 proc far + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_1E2C6 + add word_1F540, ax + jb short loc_27E5 + inc word_1F538 + inc word_1F53A + cmp word_1E2C4, 0 + jz short loc_27E5 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_1E2C2 + pop es + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_27E5: ; CODE XREF: sub_27B4+Ej sub_27B4+1Dj + pop ds + mov al, 20h ; ' ' + out 0, al + out 64h, al ; AT Keyboard controller 8042. + pop ax + iret +sub_27B4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_27EE proc far ; CODE XREF: sub_F70E+28P + cmp byte_1E2C8, 0 + jz short locret_2834 + mov ax, 18h + push ax + push word ptr cs:dword_273C+2 + push word ptr cs:dword_273C + nop + push cs + call near ptr sub_72E + 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_1F53E + push word_1F53C + nop + push cs + call near ptr sub_72E + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_1E2C8 + 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_1E2C8, al + +locret_2834: ; CODE XREF: sub_27EE+5j + retf +sub_27EE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2836 proc far ; CODE XREF: sub_536+10p sub_536+21p ... + cmp byte_1E2C8, 0 + jnz short loc_2852 + +loc_283D: ; CODE XREF: sub_2836+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_283D + +loc_2847: ; CODE XREF: sub_2836+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2847 + retf +; --------------------------------------------------------------------------- + +loc_2852: ; CODE XREF: sub_2836+5j + mov ax, word_1F538 + +loc_2855: ; CODE XREF: sub_2836+23j + cmp ax, word_1F538 + jz short loc_2855 + retf +sub_2836 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_285C proc far ; CODE XREF: sub_13414+1EP + ; sub_1523C+78P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_1DF9A, 0C8h ; 'È' + push cs + call near ptr sub_2836 + +loc_286E: ; CODE XREF: sub_285C+2Ej + push cs + call loc_1EF6 + mov di, si + cmp di, 0 + jle short loc_2880 + +loc_2879: ; CODE XREF: sub_285C+22j + push cs + call near ptr sub_2836 + dec di + jnz short loc_2879 + +loc_2880: ; CODE XREF: sub_285C+1Bj + sub word_1DF9A, 6 + cmp word_1DF9A, 64h ; 'd' + jg short loc_286E + mov word_1DF9A, 64h ; 'd' + push cs + call loc_1EF6 + pop di + pop si + retf 2 +sub_285C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_289C proc far ; CODE XREF: sub_13414+5P + ; sub_13439+60P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_1DF9A, 64h ; 'd' + push cs + call near ptr sub_2836 + +loc_28AE: ; CODE XREF: sub_289C+2Fj + push cs + call loc_1EF6 + mov di, si + cmp di, 0 + jle short loc_28C0 + +loc_28B9: ; CODE XREF: sub_289C+22j + push cs + call near ptr sub_2836 + dec di + jnz short loc_28B9 + +loc_28C0: ; CODE XREF: sub_289C+1Bj + add word_1DF9A, 6 + cmp word_1DF9A, 0C8h ; 'È' + jl short loc_28AE + mov word_1DF9A, 0C8h ; 'È' + push cs + call loc_1EF6 + pop di + pop si + retf 2 +sub_289C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_28DC proc far ; CODE XREF: sub_1718+E7p + ; sub_1718+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_2908 + rcr bx, 1 + push bx + push cs + call near ptr sub_2994 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_2908: ; CODE XREF: sub_28DC+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_28DC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2910 proc far ; CODE XREF: sub_F913+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_292B + push ax + push bx + push cs + call near ptr sub_2932 + xor ax, ax + mov word_1E2D4, 1 + +loc_292B: ; CODE XREF: sub_2910+Bj + neg ax + pop bx + retf 2 +sub_2910 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2932 proc far ; CODE XREF: sub_2910+10p sub_2958+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_1E2D2, ax + mov word_1F548, ax + add ax, [bp+arg_0] + mov word_1F542, ax + mov word_1F544, ax + mov word_1F546, 0 + mov word_1E2D4, 0 + clc + pop bp + retf 4 +sub_2932 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2958 proc far ; CODE XREF: sub_25A4-5p sub_2994+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_1E2D8 + cmp bx, ax + jbe short loc_2969 + sub bx, ax + +loc_2969: ; CODE XREF: sub_2958+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_297D + push ax + push ax + push bx + push cs + call near ptr sub_2932 + mov word_1E2D4, 1 + pop ax + +loc_297D: ; CODE XREF: sub_2958+15j + pop bx + retf +sub_2958 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2980 proc far ; CODE XREF: sub_574+11p sub_2B94+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_299B +sub_2980 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2994 proc far ; CODE XREF: sub_1340+Ep sub_28DC+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_299B: ; CODE XREF: sub_2980+12j + cmp word_1E2D2, 0 + jnz short loc_29A6 + push cs + call near ptr sub_2958 + +loc_29A6: ; CODE XREF: sub_2994+Cj + push cx + push es + test bx, bx + jz short loc_2A07 + mov ax, word_1F542 + sub ax, word_1F548 + cmp bx, ax + jnb short loc_2A07 + inc bx + mov ax, word_1F546 + test ax, ax + jz short loc_29E3 + mov cx, word_1F542 + +loc_29C3: ; CODE XREF: sub_2994+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_29DF + mov cx, es + add cx, bx + jb short loc_29DB + cmp cx, ax + jbe short loc_2A14 + +loc_29DB: ; CODE XREF: sub_2994+41j + mov cx, word_1F542 + +loc_29DF: ; CODE XREF: sub_2994+3Bj + cmp ax, cx + jnz short loc_29C3 + +loc_29E3: ; CODE XREF: sub_2994+29j + mov ax, word_1F544 + mov cx, ax + sub ax, bx + jb short loc_2A07 + cmp ax, word_1F548 + jb short loc_2A07 + mov word_1F544, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_2A6D +; --------------------------------------------------------------------------- + +loc_2A07: ; CODE XREF: sub_2994+16j sub_2994+21j ... + mov ax, 0 + mov word_1E2D6, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2A14: ; CODE XREF: sub_2994+45j + sub ax, cx + cmp ax, 1 + jbe short loc_2A44 + 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_1F546 + jnz short loc_2A6D + mov word_1F546, cx + jmp short loc_2A6D +; --------------------------------------------------------------------------- + +loc_2A44: ; CODE XREF: sub_2994+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_1F546 + jnz short loc_2A6D + mov ax, word_1F542 + mov cx, bx + push bx + +loc_2A59: ; CODE XREF: sub_2994+D0j + les cx, es:0 + jcxz short loc_2A68 + mov bx, es + cmp bx, ax + jb short loc_2A59 + xor bx, bx + +loc_2A68: ; CODE XREF: sub_2994+CAj + mov word_1F546, bx + pop bx + +loc_2A6D: ; CODE XREF: sub_2994+71j sub_2994+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_1E2D6 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_2A7E: ; CODE XREF: sub_2A84+12j sub_2A84+1Aj + pop es + pop cx + pop bx + retf 2 +sub_2994 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2A84 proc far ; CODE XREF: sub_472+11p sub_574+45p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_1F544 + jz short loc_2AE8 + jb short loc_2A7E + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_2A7E + mov es:[bx], bx + mov cx, word_1F546 + mov ax, es + mov word_1F546, ax + jcxz short loc_2B25 + cmp ax, cx + jb short loc_2AB7 + mov ax, cx + mov word_1F546, ax + +loc_2AB7: ; CODE XREF: sub_2A84+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_1F542 + jnz short loc_2AC5 + mov ax, es + +loc_2AC5: ; CODE XREF: sub_2A84+3Dj + push ds + +loc_2AC6: ; CODE XREF: sub_2A84+4Dj sub_2A84+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_2AE5 + cmp [bx], bx + jnz short loc_2AC6 + +loc_2AD3: ; CODE XREF: sub_2A84+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_2AC6 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_2AD3 + +loc_2AE5: ; CODE XREF: sub_2A84+49j + pop ds + jmp short loc_2B25 +; --------------------------------------------------------------------------- + +loc_2AE8: ; CODE XREF: sub_2A84+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_1F544, ax + cmp ax, word_1F542 + jz short loc_2B25 + mov es, ax + cmp es:[bx], bx + jnz short loc_2B25 + mov ax, es:[bx+2] + mov word_1F544, ax + mov cx, word_1F542 + cmp ax, cx + jz short loc_2B21 + jmp short loc_2B18 +; --------------------------------------------------------------------------- + nop + +loc_2B10: ; CODE XREF: sub_2A84+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_2B21 + +loc_2B18: ; CODE XREF: sub_2A84+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_2B10 + mov bx, es + +loc_2B21: ; CODE XREF: sub_2A84+87j sub_2A84+92j + mov word_1F546, bx + +loc_2B25: ; CODE XREF: sub_2A84+28j sub_2A84+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_2A84 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2B2C proc far ; CODE XREF: sub_F70E+2DP + cmp word_1E2D2, 0 + jz short loc_2B47 + mov ax, word_1E2D2 + mov es, ax + xor ax, ax + cmp word_1E2D4, ax + mov word_1E2D2, ax + jz short loc_2B47 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2B47: ; CODE XREF: sub_2B2C+5j sub_2B2C+15j + mov ax, 1 + retf +sub_2B2C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2B4B proc far + xor ax, ax + stc + retf +sub_2B4B endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2B50 proc far ; CODE XREF: sub_C566+1EP + cmp word_1E2FA, 0 + jz short locret_2B7F + push word_1E2FA + push cs + call near ptr sub_2A84 + mov word_1E2FA, 0 + jmp short loc_2B6D +; --------------------------------------------------------------------------- + +loc_2B67: ; CODE XREF: sub_2B50+22j + dec ax + push ax + push cs + call near ptr sub_2F06 + +loc_2B6D: ; CODE XREF: sub_2B50+15j + mov ax, word_1E2FC + test ax, ax + jnz short loc_2B67 + cmp word_1E2FE, 0 + jz short locret_2B7F + call word_1E2FE + +locret_2B7F: ; CODE XREF: sub_2B50+5j sub_2B50+29j + retf +sub_2B50 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_2B94 + +loc_2B80: ; CODE XREF: sub_2B94+32j + push ax + push es + push cs + call near ptr sub_2A84 + pop ax + jmp short loc_2B8D +; END OF FUNCTION CHUNK FOR sub_2B94 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_2B94 + +loc_2B8A: ; CODE XREF: sub_2B94+24j + mov ax, 0FFF8h + +loc_2B8D: ; CODE XREF: sub_2B94-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_2B94 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2B94 proc far ; CODE XREF: sub_286+EBp + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 2B80 SIZE 00000009 BYTES +; FUNCTION CHUNK AT 2B8A SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_1E2FC + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_1E2D6, 4 + push ax + push cs + call near ptr sub_2980 + jb short loc_2B8A + mov es, ax + push word_1E2FC + push dx + push ax + push cs + call near ptr sub_2E08 + jb short loc_2B80 + 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_2BEA + rep movsb + jmp short loc_2BF0 +; --------------------------------------------------------------------------- + nop + +loc_2BEA: ; CODE XREF: sub_2B94+4Fj sub_2B94+5Aj + lodsb + not al + stosb + loop loc_2BEA + +loc_2BF0: ; CODE XREF: sub_2B94+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2BF8: ; CODE XREF: sub_2B94+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2BF8 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2C08: ; CODE XREF: sub_2B94+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2C08 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2C18: ; CODE XREF: sub_2B94+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2C18 + test dl, dl + jz short loc_2C34 + mov ah, 4 + +loc_2C26: ; CODE XREF: sub_2B94+9Ej + xor si, si + mov cx, bx + +loc_2C2A: ; CODE XREF: sub_2B94+9Aj + lodsb + and [di], al + inc di + loop loc_2C2A + dec ah + jnz short loc_2C26 + +loc_2C34: ; CODE XREF: sub_2B94+8Ej + pop ds + mov ax, word_1E2FC + dec ax + pop di + pop si + pop bp + retf 8 +sub_2B94 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2C40 proc far ; CODE XREF: sub_1B025+139P + +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 + push ds + push si + push di + mov cx, [bp+arg_8] + mov di, [bp+arg_6] + mov si, [bp+arg_2] + mov ax, [bp+arg_0] + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add di, ax + mov bx, [bp+arg_4] + shl bx, 1 + mov dx, [bx+1EDAh] + push bx + mov al, dh + xor ah, ah + mul dl + mov bp, ax + pop ax + xor bx, bx + or si, si + jz short loc_2C90 + +loc_2C8B: ; CODE XREF: sub_2C40+4Ej + add bx, bp + dec si + jnz short loc_2C8B + +loc_2C90: ; CODE XREF: sub_2C40+49j + mov es, bx + mov si, cx + mov bl, [si+85Ah] + mov ch, dh + shr ch, 1 + test di, 1 + jz short loc_2CA5 + jmp loc_2D46 +; --------------------------------------------------------------------------- + +loc_2CA5: ; CODE XREF: sub_2C40+60j + mov bp, di + test dh, 1 + jnz short loc_2CF4 + mov byte ptr cs:loc_2CD7+1, bl + mov byte ptr cs:loc_2CEC+1, ch + mov bx, ax + mov si, es + mov ds, word ptr [bx+1ADAh] + mov bx, dx + xor bh, bh + mov al, 50h ; 'P' + sub al, dh + mov byte ptr cs:loc_2CE9+2, al + mov ax, 0A800h + mov es, ax + assume es:nothing + xor dl, dl + nop + +loc_2CD2: ; CODE XREF: sub_2C40+A2j sub_2C40+AFj + lodsw + ror ax, cl + mov dh, al + +loc_2CD7: ; DATA XREF: sub_2C40+6Cw + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_2CD2 + mov es:[di], dl + mov dl, ch + +loc_2CE9: ; DATA XREF: sub_2C40+86w + add di, 50h ; 'P' + +loc_2CEC: ; DATA XREF: sub_2C40+71w + mov ch, 11h + dec bx + jnz short loc_2CD2 + jmp loc_2DFD +; --------------------------------------------------------------------------- + +loc_2CF4: ; CODE XREF: sub_2C40+6Aj + mov byte ptr cs:loc_2D23+1, bl + mov byte ptr cs:loc_2D3E+1, ch + mov bx, ax + mov si, es + mov ds, word ptr [bx+1ADAh] + mov bx, dx + xor bh, bh + mov al, 50h ; 'P' + sub al, dh + mov byte ptr cs:loc_2D3B+2, al + mov ax, 0A800h + mov es, ax + xor dl, dl + nop + +loc_2D1A: ; CODE XREF: sub_2C40+101j + or ch, ch + jz short loc_2D30 + +loc_2D1E: ; CODE XREF: sub_2C40+EEj + lodsw + ror ax, cl + mov dh, al + +loc_2D23: ; DATA XREF: sub_2C40:loc_2CF4w + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_2D1E + +loc_2D30: ; CODE XREF: sub_2C40+DCj + lodsb + xor ah, ah + ror ax, cl + or al, dl + stosw + dec di + mov dl, ch + +loc_2D3B: ; DATA XREF: sub_2C40+CEw + add di, 50h ; 'P' + +loc_2D3E: ; DATA XREF: sub_2C40+B9w + mov ch, 11h + dec bx + jnz short loc_2D1A + jmp loc_2DFD +; --------------------------------------------------------------------------- + +loc_2D46: ; CODE XREF: sub_2C40+62j + dec di + mov bp, di + test dh, 1 + jnz short loc_2DAA + mov byte ptr cs:loc_2D89+1, bl + dec ch + mov byte ptr cs:loc_2DA3+1, ch + mov bx, ax + mov si, es + mov ds, word ptr [bx+1ADAh] + mov bx, dx + xor bh, bh + mov al, 4Eh ; 'N' + sub al, dh + mov byte ptr cs:loc_2DA0+2, al + mov ax, 0A800h + mov es, ax + nop + +loc_2D74: ; CODE XREF: sub_2C40+166j + lodsb + xor ah, ah + ror ax, cl + mov dl, ah + xchg ah, al + xor al, al + stosw + or ch, ch + jz short loc_2D96 + +loc_2D84: ; CODE XREF: sub_2C40+154j + lodsw + ror ax, cl + mov dh, al + +loc_2D89: ; DATA XREF: sub_2C40+10Ew + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_2D84 + +loc_2D96: ; CODE XREF: sub_2C40+142j + lodsb + xor ah, ah + ror ax, cl + or al, dl + stosw + mov dl, ch + +loc_2DA0: ; DATA XREF: sub_2C40+12Aw + add di, 50h ; 'P' + +loc_2DA3: ; DATA XREF: sub_2C40+115w + mov ch, 11h + dec bx + jnz short loc_2D74 + jmp short loc_2DFD +; --------------------------------------------------------------------------- + +loc_2DAA: ; CODE XREF: sub_2C40+10Cj + mov byte ptr cs:loc_2DE3+1, bl + mov byte ptr cs:loc_2DF8+1, ch + mov bx, ax + mov si, es + mov ds, word ptr [bx+1ADAh] + mov bx, dx + xor bh, bh + mov al, 4Fh ; 'O' + sub al, dh + mov byte ptr cs:loc_2DF5+2, al + mov ax, 0A800h + mov es, ax + nop + +loc_2DCE: ; CODE XREF: sub_2C40+1BBj + lodsb + xor ah, ah + ror ax, cl + mov dl, ah + xchg ah, al + xor al, al + stosw + or ch, ch + jz short loc_2DF0 + +loc_2DDE: ; CODE XREF: sub_2C40+1AEj + lodsw + ror ax, cl + mov dh, al + +loc_2DE3: ; DATA XREF: sub_2C40:loc_2DAAw + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_2DDE + +loc_2DF0: ; CODE XREF: sub_2C40+19Cj + mov es:[di], dl + mov dl, ch + +loc_2DF5: ; DATA XREF: sub_2C40+184w + add di, 50h ; 'P' + +loc_2DF8: ; DATA XREF: sub_2C40+16Fw + mov ch, 11h + dec bx + jnz short loc_2DCE + +loc_2DFD: ; CODE XREF: sub_2C40+B1j + ; sub_2C40+103j ... + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 0Ah +sub_2C40 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2E08 proc far ; CODE XREF: sub_2B94+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_2E77 + cmp word_1E2FA, 0 + jnz short loc_2E48 + mov word_1E2D6, 4 + push 240h + push cs + call near ptr sub_2994 + mov word_1E2FA, ax + mov ax, 0FFF8h + jb short loc_2E77 + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 1EDAh + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_2E48: ; CODE XREF: sub_2E08+17j + mov ax, bx + shl bx, 1 + cmp ax, word_1E2FC + jnb short loc_2E63 + cmp word ptr [bx+1EDAh], 0 + jz short loc_2E67 + push word ptr [bx+1ADAh] + push cs + call near ptr sub_2A84 + jmp short loc_2E67 +; --------------------------------------------------------------------------- + +loc_2E63: ; CODE XREF: sub_2E08+48j + inc ax + mov word_1E2FC, ax + +loc_2E67: ; CODE XREF: sub_2E08+4Fj sub_2E08+59j + mov ax, [bp+arg_2] + mov [bx+1EDAh], ax + mov ax, [bp+arg_0] + mov [bx+1ADAh], ax + xor ax, ax + +loc_2E77: ; CODE XREF: sub_2E08+10j sub_2E08+2Cj + pop bx + pop bp + retf 6 +sub_2E08 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2E7C proc far ; CODE XREF: sub_B2AB+27P sub_B2AB+30P ... + +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_A98 + jb short loc_2EFE + mov bx, ax + mov cx, 86Ah + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_2EF6 + mov al, byte_1E2DF + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_2EF6 + xor si, si + mov ax, word_1E2F6 + or ax, ax + jz short loc_2EC2 + 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_2EC2: ; CODE XREF: sub_2E7C+37j + test byte_1E2DF, 80h + jz short loc_2ED6 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_2EF6 + +loc_2ED6: ; CODE XREF: sub_2E7C+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call near ptr sub_286 + pop bx + jb short loc_2EF6 + push bx + push cs + call near ptr sub_A82 + mov ax, word_1E2E8 + sub ax, word_1E2E6 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_2EF6: ; CODE XREF: sub_2E7C+22j sub_2E7C+2Ej ... + push ax + push bx + push cs + call near ptr sub_A82 + pop ax + stc + +loc_2EFE: ; CODE XREF: sub_2E7C+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_2E7C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2F06 proc far ; CODE XREF: sub_2B50+1Ap sub_2F56+1Dp ... + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_1E2FC + jnb short loc_2F4E + mov cx, bx + shl bx, 1 + mov ax, [bx+1EDAh] + or ax, ax + jz short loc_2F4E + push word ptr [bx+1ADAh] + push cs + call near ptr sub_2A84 + mov [bx+1ADAh], dx + mov [bx+1EDAh], dx + inc cx + cmp cx, word_1E2FC + jnz short loc_2F46 + +loc_2F37: ; CODE XREF: sub_2F06+3Dj + dec word_1E2FC + jz short loc_2F46 + dec bx + dec bx + mov cx, [bx+1ADAh] + jcxz short loc_2F37 + nop + +loc_2F46: ; CODE XREF: sub_2F06+2Fj sub_2F06+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_2F4E: ; CODE XREF: sub_2F06+Cj sub_2F06+18j + stc + mov ax, 0FFE1h + retf 2 +sub_2F06 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2F56 proc far ; CODE XREF: sub_1696B+14P + ; sub_199B3+10P ... + push si + mov si, sp + push di + mov di, ss:[si+6] + cmp di, word_1E2FC + jl short loc_2F69 + mov di, word_1E2FC + dec di + +loc_2F69: ; CODE XREF: sub_2F56+Cj + mov si, ss:[si+8] + cmp si, di + ja short loc_2F7B + +loc_2F71: ; CODE XREF: sub_2F56+23j + push si + push cs + call near ptr sub_2F06 + inc si + cmp si, di + jbe short loc_2F71 + +loc_2F7B: ; CODE XREF: sub_2F56+19j + pop di + pop si + retf 4 +sub_2F56 endp + +; --------------------------------------------------------------------------- + +loc_2F80: ; CODE XREF: sub_11183+43P + ; sub_116EC+4EP ... + push bp + mov bp, sp + push ds + push si + push di + mov cx, [bp+0Eh] + mov di, [bp+0Ch] + mov ax, [bp+6] + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + mov ax, di + shl di, 2 + add di, ax + shl di, 4 + mov bx, cx + and cx, 7 + shr bx, 3 + add di, bx + mov bx, [bp+0Ah] + shl bx, 1 + mov dx, [bx+1EDAh] + push bx + mov bx, cx + mov cx, [bp+8] + mov bp, ax + mov al, dh + mul dl + xor si, si + jcxz short loc_2FCC + +loc_2FC8: ; CODE XREF: seg000:2FCAj + add si, ax + loop loc_2FC8 + +loc_2FCC: ; CODE XREF: seg000:2FC6j + mov al, [bx+85Ah] + mov ch, dh + shr ch, 1 + mov cl, bl + pop bx + mov ds, word ptr [bx+1ADAh] + mov bx, 0A800h + mov es, bx + assume es:nothing + mov bx, dx + xor bh, bh + add bp, bx + sub bp, 190h + jg short loc_2FEE + xor bp, bp + +loc_2FEE: ; CODE XREF: seg000:2FEAj + sub bx, bp + test di, 1 + jz short loc_2FF9 + jmp loc_308E +; --------------------------------------------------------------------------- + +loc_2FF9: ; CODE XREF: seg000:2FF4j + xor dl, dl + test dh, 1 + jnz short loc_3042 + mov byte ptr cs:loc_3017+1, al + mov byte ptr cs:loc_302C+1, ch + mov al, 50h ; 'P' + sub al, dh + mov byte ptr cs:loc_3029+2, al + nop + +loc_3012: ; CODE XREF: seg000:3022j seg000:302Fj ... + lodsw + ror ax, cl + mov dh, al + +loc_3017: ; DATA XREF: seg000:3000w + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_3012 + mov es:[di], dl + mov dl, ch + +loc_3029: ; DATA XREF: seg000:300Dw + add di, 50h ; 'P' + +loc_302C: ; DATA XREF: seg000:3004w + mov ch, 11h + dec bx + jnz short loc_3012 + or bp, bp + jnz short loc_3038 + jmp loc_313A +; --------------------------------------------------------------------------- + +loc_3038: ; CODE XREF: seg000:3033j + sub di, 7D00h + mov bx, bp + xor bp, bp + jmp short loc_3012 +; --------------------------------------------------------------------------- + +loc_3042: ; CODE XREF: seg000:2FFEj + mov byte ptr cs:loc_305D+1, al + mov byte ptr cs:loc_3078+1, ch + mov al, 50h ; 'P' + sub al, dh + mov byte ptr cs:loc_3075+2, al + nop + +loc_3054: ; CODE XREF: seg000:307Bj seg000:308Cj + or ch, ch + jz short loc_306A + +loc_3058: ; CODE XREF: seg000:3068j + lodsw + ror ax, cl + mov dh, al + +loc_305D: ; DATA XREF: seg000:loc_3042w + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_3058 + +loc_306A: ; CODE XREF: seg000:3056j + lodsb + xor ah, ah + ror ax, cl + or al, dl + stosw + dec di + mov dl, ch + +loc_3075: ; DATA XREF: seg000:304Fw + add di, 50h ; 'P' + +loc_3078: ; DATA XREF: seg000:3046w + mov ch, 11h + dec bx + jnz short loc_3054 + or bp, bp + jnz short loc_3084 + jmp loc_313A +; --------------------------------------------------------------------------- + +loc_3084: ; CODE XREF: seg000:307Fj + sub di, 7D00h + mov bx, bp + xor bp, bp + jmp short loc_3054 +; --------------------------------------------------------------------------- + +loc_308E: ; CODE XREF: seg000:2FF6j + dec di + test dh, 1 + jnz short loc_30EA + mov byte ptr cs:loc_30BD+1, al + dec ch + mov byte ptr cs:loc_30D7+1, ch + mov al, 4Eh ; 'N' + sub al, dh + mov byte ptr cs:loc_30D4+2, al + nop + +loc_30A8: ; CODE XREF: seg000:30DAj seg000:30E8j + lodsb + xor ah, ah + ror ax, cl + mov dl, ah + xchg ah, al + xor al, al + stosw + or ch, ch + jz short loc_30CA + +loc_30B8: ; CODE XREF: seg000:30C8j + lodsw + ror ax, cl + mov dh, al + +loc_30BD: ; DATA XREF: seg000:3094w + and al, 11h + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_30B8 + +loc_30CA: ; CODE XREF: seg000:30B6j + lodsb + xor ah, ah + ror ax, cl + or al, dl + stosw + mov dl, ch + +loc_30D4: ; DATA XREF: seg000:30A3w + add di, 50h ; 'P' + +loc_30D7: ; DATA XREF: seg000:309Aw + mov ch, 11h + dec bx + jnz short loc_30A8 + or bp, bp + jz short loc_313A + sub di, 7D00h + mov bx, bp + xor bp, bp + jmp short loc_30A8 +; --------------------------------------------------------------------------- + +loc_30EA: ; CODE XREF: seg000:3092j + mov cs:byte_3112, al + mov cs:byte_3127, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_3125, al + nop + +loc_30FC: ; CODE XREF: seg000:3129j seg000:3137j + lodsb + xor ah, ah + ror ax, cl + mov dl, ah + xchg ah, al + xor al, al + stosw + or ch, ch + jz short loc_311E + +loc_310C: ; CODE XREF: seg000:311Cj + lodsw + ror ax, cl + mov dh, al +; --------------------------------------------------------------------------- + db 24h +byte_3112 db 11h ; DATA XREF: seg000:loc_30EAw +; --------------------------------------------------------------------------- + xor dh, al + or al, dl + stosw + mov dl, dh + dec ch + jnz short loc_310C + +loc_311E: ; CODE XREF: seg000:310Aj + mov es:[di], dl + mov dl, ch +; --------------------------------------------------------------------------- + db 83h, 0C7h +byte_3125 db 50h ; DATA XREF: seg000:30F7w + db 0B5h +byte_3127 db 11h ; DATA XREF: seg000:30EEw +; --------------------------------------------------------------------------- + dec bx + jnz short loc_30FC + or bp, bp + jz short loc_313A + sub di, 7D00h + mov bx, bp + xor bp, bp + jmp short loc_30FC +; --------------------------------------------------------------------------- + nop + +loc_313A: ; CODE XREF: seg000:3035j seg000:3081j ... + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 0Ah +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3146 proc far ; CODE XREF: sub_D488+112P + ; sub_EF36+71P ... + +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 cx, [bp+arg_4] + mov di, [bp+arg_2] + mov si, di + shl di, 2 + add di, si + shl di, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add di, ax + mov bx, cx + mov al, [bx+85Ah] + mov bx, [bp+arg_0] + shl bx, 1 + mov dx, [bx+1EDAh] + mov ch, dh + shr ch, 1 + mov ds, word ptr [bx+1ADAh] + mov bx, dx + xor bh, bh + add si, bx + sub si, 190h + jg short loc_318B + xor si, si + +loc_318B: ; CODE XREF: sub_3146+41j + sub bx, si + mov cs:word_3269, si + mov cs:word_3263, bx + mov bp, di + test di, 1 + jnz short loc_31D8 + test dh, 1 + jnz short loc_31BE + mov cs:byte_3278, al + mov cs:byte_328D, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_328B, al + mov cs:word_326C, 3270h + jmp short loc_3212 +; --------------------------------------------------------------------------- + +loc_31BE: ; CODE XREF: sub_3146+5Cj + mov cs:byte_32AC, al + mov cs:byte_32C7, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_32C5, al + mov cs:word_326C, 32A0h + jmp short loc_3212 +; --------------------------------------------------------------------------- + +loc_31D8: ; CODE XREF: sub_3146+57j + dec bp + test dh, 1 + jnz short loc_31FA + mov cs:byte_32F0, al + dec ch + mov cs:byte_330A, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_3308, al + mov cs:word_326C, 32DAh + jmp short loc_3212 +; --------------------------------------------------------------------------- + +loc_31FA: ; CODE XREF: sub_3146+96j + mov cs:byte_3334, al + mov cs:byte_3349, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_3347, al + mov cs:word_326C, 331Eh + +loc_3212: ; CODE XREF: sub_3146+76j sub_3146+90j ... + mov cs:word_3266, bp + xor si, si + mov ax, 0C0h ; 'À' + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + mov ax, 0A800h + mov es, ax + call near ptr byte_3262 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call near ptr byte_3262 + mov al, 0CDh ; 'Í' + out 7Ch, al + call near ptr byte_3262 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call near ptr byte_3262 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call near ptr byte_3262 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_3146 endp + +; --------------------------------------------------------------------------- +byte_3262 db 0BBh ; CODE XREF: sub_3146+E7p sub_3146+F9p ... +word_3263 dw 1234h ; DATA XREF: sub_3146+4Cw + db 0BFh +word_3266 dw 1234h ; DATA XREF: sub_3146:loc_3212w + db 0BDh +word_3269 dw 1234h ; DATA XREF: sub_3146+47w + db 0B8h +word_326C dw 1234h ; DATA XREF: sub_3146+6Fw sub_3146+89w ... +; --------------------------------------------------------------------------- + jmp ax +; --------------------------------------------------------------------------- + db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h +byte_3278 db 11h ; DATA XREF: sub_3146+5Ew + db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h + db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_328B db 50h ; DATA XREF: sub_3146+6Bw + db 0B5h +byte_328D db 11h ; DATA XREF: sub_3146+62w + db 4Bh, 75h, 0E1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh + db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0D2h, 32h, 0D2h + db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h +byte_32AC db 11h ; DATA XREF: sub_3146:loc_31BEw + db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h + db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh + db 4Fh, 8Ah, 0D5h, 83h, 0C7h +byte_32C5 db 50h ; DATA XREF: sub_3146+85w + db 0B5h +byte_32C7 db 11h ; DATA XREF: sub_3146+7Cw + db 4Bh, 75h, 0D7h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh + db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C8h, 0ACh, 32h + db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh + db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h +byte_32F0 db 11h ; DATA XREF: sub_3146+98w + db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h + db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh + db 8Ah, 0D5h, 83h, 0C7h +byte_3308 db 50h ; DATA XREF: sub_3146+A7w + db 0B5h +byte_330A db 11h ; DATA XREF: sub_3146+9Ew + db 4Bh, 75h, 0CCh, 0Bh, 0EDh, 75h, 2, 0C3h, 90h, 81h, 0EFh + db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0BCh, 0ACh, 32h + db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh + db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h +byte_3334 db 11h ; DATA XREF: sub_3146:loc_31FAw + db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h + db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_3347 db 50h ; DATA XREF: sub_3146+C1w + db 0B5h +byte_3349 db 11h ; DATA XREF: sub_3146+B8w + db 4Bh, 75h, 0D1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh + db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C2h +; --------------------------------------------------------------------------- + +loc_335C: ; CODE XREF: seg000:33BAj seg000:33C3j ... + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_3362: ; CODE XREF: sub_1566F+AAP + ; sub_158DC+FP ... + push bp + mov bp, sp + push si + push di + mov bx, [bp+6] + shl bx, 1 + mov ax, [bx+1ADAh] + mov cs:word_3519, ax + mov bx, [bx+1EDAh] + xor ax, ax + xchg al, bh + mov word_1FD4A, ax + mov cx, ax + shl cx, 3 + add cx, [bp+0Ah] + dec cx + imul bx + mov cs:word_3552, ax + cmp cx, word_1DF50 + jg short loc_33B6 + mov dx, word_1DF4C + cmp [bp+0Ah], dx + jl short loc_33B6 + mov di, [bp+8] + cmp word_1DF52, di + jg short loc_33B6 + mov ax, bx + add ax, di + cmp ax, word_1DF56 + jge short loc_33B6 + pop di + pop si + pop bp + jmp near ptr sub_3556 +; --------------------------------------------------------------------------- + +loc_33B6: ; CODE XREF: seg000:3392j seg000:339Bj ... + cmp cx, word_1DF4C + jl short loc_335C + mov dx, word_1DF50 + cmp [bp+0Ah], dx + jg short loc_335C + mov di, [bp+8] + cmp word_1DF56, di + jl short loc_335C + mov ax, bx + add ax, di + cmp ax, word_1DF52 + jle short loc_335C + cmp cx, dx + jle short loc_33DE + mov cx, dx + +loc_33DE: ; CODE XREF: seg000:33DAj + mov al, [bp+0Ah] + and al, 7 + mov cs:byte_345B, al + xor si, si + mov ax, word_1DF4C + cmp [bp+0Ah], ax + jge short loc_3403 + mov dx, ax + shr dx, 3 + add si, dx + mov dx, [bp+0Ah] + sar dx, 3 + sub si, dx + mov [bp+0Ah], ax + +loc_3403: ; CODE XREF: seg000:33EFj + sub di, word_1DF52 + jns short loc_3414 + add bx, di + mov ax, word_1FD4A + imul di + sub si, ax + xor di, di + +loc_3414: ; CODE XREF: seg000:3407j + lea ax, [bx+di-1] + sub ax, word_1DF54 + jle short loc_341F + sub bx, ax + +loc_341F: ; CODE XREF: seg000:341Bj + mov cs:word_351D, bx + mov ax, [bp+0Ah] + shr ax, 3 + imul bx, di, 50h + add bx, ax + mov cs:word_3520, bx + mov bx, cx + mov dx, 80FFh + and cl, 7 + sar dh, cl + mov cl, [bp+0Ah] + and cl, 7 + shr dl, cl + mov cx, ax + shr bx, 3 + sub bx, cx + jnz short loc_3451 + and dl, dh + +loc_3451: ; CODE XREF: seg000:344Dj + mov cs:word_3523, bx + mov es, word_1DF58 +; --------------------------------------------------------------------------- + assume es:nothing + db 0B1h +byte_345B db 12h ; DATA XREF: seg000:33E3w +; --------------------------------------------------------------------------- + mov al, 0C0h ; 'À' + out 7Ch, al + mov al, 0 + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_3516 + mov al, 0CEh ; 'Î' + out 7Ch, al + mov al, 0FFh + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_3516 + mov ax, 0CDh ; 'Í' + out 7Ch, al + call loc_3516 + mov ax, 0CBh ; 'Ë' + out 7Ch, al + call loc_3516 + mov ax, 0C7h ; 'Ç' + out 7Ch, al + call loc_3516 + mov al, 0 + out 7Ch, al + pop di + pop si + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_34A0 proc near + test si, si + jz short loc_34A7 + +loc_34A4: ; CODE XREF: sub_34A0+43j + mov ah, [si-1] + +loc_34A7: ; CODE XREF: sub_34A0+2j + mov al, [si] + inc si + mov bx, ax + shr bx, cl + and bl, dl + mov es:[di], bl + inc di + mov ch, 12h + dec ch + js short loc_34DA + jz short loc_34CD + +loc_34BC: ; CODE XREF: sub_34A0+2Bj + mov ah, al + mov al, [si] + inc si + mov bx, ax + shr bx, cl + mov es:[di], bl + inc di + dec ch + jnz short loc_34BC + +loc_34CD: ; CODE XREF: sub_34A0+1Aj + mov ah, al + mov al, [si] + inc si + shr ax, cl + and al, dh + mov es:[di], al + inc di + +loc_34DA: ; CODE XREF: sub_34A0+18j + add si, 1234h + add di, 1234h + dec bp + jnz short loc_34A4 + retn +sub_34A0 endp + +; --------------------------------------------------------------------------- + +loc_34E6: ; CODE XREF: seg000:3513j + mov al, [si] + inc si + and al, dl + mov es:[di], al + inc di + cmp bx, 1 + jl short loc_3503 + lea cx, [bx-1] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + lodsb + and al, dh + stosb + +loc_3503: ; CODE XREF: seg000:34F2j + mov al, 0 + xchg al, ah + add si, ax + sub si, bx + mov ah, al + add di, 4Fh ; 'O' + sub di, bx + dec bp + jnz short loc_34E6 + retn +; --------------------------------------------------------------------------- + +loc_3516: ; CODE XREF: seg000:346Ap seg000:347Bp ... + push si + push ds +; --------------------------------------------------------------------------- + db 0B8h +word_3519 dw 1234h ; DATA XREF: seg000:3370w + db 50h, 0BDh +word_351D dw 1234h ; DATA XREF: seg000:loc_341Fw + db 0BFh +word_3520 dw 1234h ; DATA XREF: seg000:342Fw + db 0BBh +word_3523 dw 1234h ; DATA XREF: seg000:loc_3451w + db 0A1h, 0DAh, 22h, 48h, 80h, 0F9h, 0, 75h, 8, 8Ah, 0E0h + db 1Fh, 68h, 4Eh, 35h, 0EBh, 0B0h, 2Eh, 88h, 1Eh, 0B5h + db 34h, 2Bh, 0C3h, 2Eh, 0A3h, 0DCh, 34h, 0B8h, 4Fh, 0 + db 2Bh, 0C3h, 2Eh, 0A3h, 0E0h, 34h, 1Fh, 0E8h, 52h, 0FFh + db 1Fh, 5Eh, 81h, 0C6h +word_3552 dw 1234h ; DATA XREF: seg000:338Aw +; --------------------------------------------------------------------------- + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3556 proc far ; CODE XREF: seg000:33B3j + ; sub_11766+104P ... + +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+1EDAh] + 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+85Ah] + mov cs:word_3703, ax + test bp, 1 + jnz short loc_35C6 + test dh, 1 + jnz short loc_35B0 + mov cs:byte_3663, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_3661, al + mov cs:word_3706, 0FF3Eh + jmp short loc_35F8 +; --------------------------------------------------------------------------- + +loc_35B0: ; CODE XREF: sub_3556+42j + mov cs:byte_3691, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_368F, al + mov cs:word_3706, 0FF62h + jmp short loc_35F8 +; --------------------------------------------------------------------------- + +loc_35C6: ; CODE XREF: sub_3556+3Dj + dec bp + test dh, 1 + jnz short loc_35E4 + dec ch + mov cs:byte_36C8, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_36C6, al + mov cs:word_3706, 0FF90h + jmp short loc_35F8 +; --------------------------------------------------------------------------- + +loc_35E4: ; CODE XREF: sub_3556+74j + mov cs:byte_36F9, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_36F7, al + mov cs:word_3706, 0FFC6h + +loc_35F8: ; CODE XREF: sub_3556+58j sub_3556+6Ej ... + mov ds, word ptr [bx+1ADAh] + 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_3700 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_3700 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_3700 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_3700 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_3700 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_3556 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_3661 db 50h ; DATA XREF: sub_3556+4Dw + db 0B5h +byte_3663 db 11h ; DATA XREF: sub_3556+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_368F db 50h ; DATA XREF: sub_3556+63w + db 0B5h +byte_3691 db 11h ; DATA XREF: sub_3556:loc_35B0w + 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_36C6 db 50h ; DATA XREF: sub_3556+81w + db 0B5h +byte_36C8 db 11h ; DATA XREF: sub_3556+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_36F7 db 50h ; DATA XREF: sub_3556+97w + db 0B5h +byte_36F9 db 11h ; DATA XREF: sub_3556:loc_35E4w + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_3700: ; CODE XREF: sub_3556+BBp sub_3556+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_3703 dw 1234h ; DATA XREF: sub_3556+35w + db 0E9h +word_3706 dw 0FF3Eh ; DATA XREF: sub_3556+51w sub_3556+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_3708 proc far ; CODE XREF: sub_D488+FAP + ; sub_D488:loc_D60EP ... + mov bx, sp + push ds + push si + push di + mov cx, ss:[bx+8] + mov di, ss:[bx+6] + mov bx, ss:[bx+4] + shl bx, 1 + mov ds, word ptr [bx+1ADAh] + mov bx, di + shl bx, 2 + add bx, di + shl bx, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add bx, ax + xor si, si + mov ax, 0A800h + mov es, ax + lodsw + cmp al, 80h ; '€' + jnz short loc_37B0 + mov al, 0C0h ; 'À' + pushf + cli + out 7Ch, al + popf + mov dl, 0FFh + shr dl, cl + test bx, 1 + jnz short loc_37B6 + +loc_3750: ; CODE XREF: sub_3708+A4j + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + mov ch, 10h + mov di, bx + cmp di, 7850h + jb short loc_3792 + +loc_3772: ; CODE XREF: sub_3708+83j + lodsw + ror ax, cl + mov dh, al + and al, dl + mov es:[di], ax + xor al, dh + mov es:[di+2], al + add di, 50h ; 'P' + dec ch + cmp di, 7D00h + jb short loc_3772 + sub di, 7D00h + nop + +loc_3792: ; CODE XREF: sub_3708+68j sub_3708+9Fj + lodsw + ror ax, cl + mov dh, al + and al, dl + mov es:[di], ax + xor al, dh + mov es:[di+2], al + add di, 50h ; 'P' + dec ch + jnz short loc_3792 + lodsw + cmp al, 80h ; '€' + jz short loc_3750 + out 7Ch, al + +loc_37B0: ; CODE XREF: sub_3708+35j + pop di + pop si + pop ds + retf 6 +; --------------------------------------------------------------------------- + +loc_37B6: ; CODE XREF: sub_3708+46j + ; sub_3708+10Ej + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + shr ah, 1 + sbb al, al + out 7Eh, al + mov ch, 10h + mov di, bx + cmp di, 7850h + jb short loc_37FA + +loc_37D8: ; CODE XREF: sub_3708+EBj + lodsw + ror ax, cl + mov dh, al + and al, dl + mov es:[di], al + xor al, dh + xchg ah, al + mov es:[di+1], ax + add di, 50h ; 'P' + dec ch + cmp di, 7D00h + jb short loc_37D8 + sub di, 7D00h + nop + +loc_37FA: ; CODE XREF: sub_3708+CEj + ; sub_3708+109j + lodsw + ror ax, cl + mov dh, al + and al, dl + mov es:[di], al + xor al, dh + xchg ah, al + mov es:[di+1], ax + add di, 50h ; 'P' + dec ch + jnz short loc_37FA + lodsw + cmp al, 80h ; '€' + jz short loc_37B6 + out 7Ch, al + pop di + pop si + pop ds + retf 6 +sub_3708 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3820 proc far ; CODE XREF: sub_B2AB+44P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + push si + push di + xor di, di + mov ax, 4 + push ax + mov bx, [bp+arg_0] + cmp bx, word_1E2FC + jnb short loc_38AF + shl bx, 1 + mov cx, [bx+1ADAh] + jcxz short loc_38AF + mov ax, [bx+1EDAh] + mul ah + mov bp, ax + mov es, word_1E2FA + assume es:nothing + mov ds, cx + mov bh, 0FFh + +loc_384D: ; CODE XREF: sub_3820+76j + xor si, si + mov ax, bx + not ax + mov al, 80h ; '€' + and ah, 0Fh + stosw + mov cx, bp + shr cx, 1 + rep movsw + sub di, bp + mov bl, 4 + mov cx, bp + shr cx, 1 + nop + +loc_3868: ; CODE XREF: sub_3820+5Ej + ror bh, 1 + sbb dx, dx + +loc_386C: ; CODE XREF: sub_3820+54j + lodsw + xor ax, dx + and es:[di], ax + inc di + inc di + loop loc_386C + sub di, bp + mov cx, bp + shr cx, 1 + dec bl + jnz short loc_3868 + lea dx, [di-2] + xor ax, ax + repe scasw + mov di, dx + jz short loc_3893 + lea di, [bp+di+2] + pop ax + dec ax + push ax + js short loc_38AF + +loc_3893: ; CODE XREF: sub_3820+69j + sub bh, 11h + jnb short loc_384D + mov cx, di + shr cx, 1 + push ds + push es + pop ds + pop es + xor ax, ax + mov di, ax + mov si, ax + rep movsw + stosw + clc + mov ax, 0 + jmp short loc_38B3 +; --------------------------------------------------------------------------- + +loc_38AF: ; CODE XREF: sub_3820+13j sub_3820+1Bj ... + mov ax, 0FFF3h + stc + +loc_38B3: ; CODE XREF: sub_3820+8Dj + pop di + pop di + pop si + pop ds + pop bp + retf 2 +sub_3820 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_38BC proc far ; CODE XREF: sub_137FE+ACP + ; sub_13C0C+6BP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_6] + mov word ptr cs:loc_3982+1, si + mov di, [bp+arg_4] + mov ax, [bp+arg_0] + mov word ptr cs:loc_3945+2, ax + mov word ptr cs:loc_3985+2, ax + dec ax + mov word ptr cs:loc_3953+1, ax + mov word ptr cs:loc_3959+1, ax + mov bx, [bp+arg_2] + shl bx, 1 + mov cx, [bx+1EDAh] + mov byte ptr cs:loc_3980+1, ch + mov es, word ptr [bx+1ADAh] + mov ax, cx + xor ah, ah + mul ch + mov bp, ax + mov word ptr cs:loc_3917+2, ax + mov word ptr cs:loc_391F+2, ax + mov word ptr cs:loc_3927+2, ax + shl ax, 1 + add ax, bp + dec ax + mov word ptr cs:loc_3978+2, ax + jmp short $+2 + +loc_3911: ; CODE XREF: sub_38BC+C2j sub_38BC+CFj + mov ah, 8 + mov bh, es:[bp+0] + +loc_3917: ; DATA XREF: sub_38BC+3Ew + add bp, 1111h + mov bl, es:[bp+0] + +loc_391F: ; DATA XREF: sub_38BC+42w + add bp, 1111h + mov dh, es:[bp+0] + +loc_3927: ; DATA XREF: sub_38BC+46w + add bp, 1111h + mov dl, es:[bp+0] + +loc_392F: ; CODE XREF: sub_38BC+BAj + xor al, al + shl dl, 1 + rcl al, 1 + shl dh, 1 + rcl al, 1 + shl bl, 1 + rcl al, 1 + shl bh, 1 + rcl al, 1 + or al, al + jnz short loc_394C + +loc_3945: ; DATA XREF: sub_38BC+13w + add si, 1111h + jmp short loc_3974 +; --------------------------------------------------------------------------- + nop + +loc_394C: ; CODE XREF: sub_38BC+87j + push ax + push bx + push cx + push dx + push es + push si + push di + +loc_3953: ; DATA XREF: sub_38BC+1Cw + mov bx, 1111h + add si, bx + push si + +loc_3959: ; DATA XREF: sub_38BC+20w + mov bx, 1111h + add bx, di + push bx + mov bx, 0C0h ; 'À' + push bx + xor ah, ah + push ax + push cs + call near ptr sub_127E + push cs + call near ptr sub_AB8 + inc si + pop es + pop dx + pop cx + pop bx + pop ax + +loc_3974: ; CODE XREF: sub_38BC+8Dj + dec ah + jnz short loc_392F + +loc_3978: ; DATA XREF: sub_38BC+4Fw + sub bp, 1111h + dec ch + jnz short loc_3911 + +loc_3980: ; DATA XREF: sub_38BC+2Dw + mov ch, 11h + +loc_3982: ; DATA XREF: sub_38BC+8w + mov si, 1111h + +loc_3985: ; DATA XREF: sub_38BC+17w + add di, 1111h + dec cl + jnz short loc_3911 + push cs + call near ptr sub_12A8 + pop di + pop si + pop bp + retf 8 +sub_38BC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3998 proc far ; CODE XREF: sub_4344+2Dp sub_4548+3Fp ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + push ds + mov di, [bp+arg_2] + mov ax, [bp+arg_4] + sar ax, 3 + mov dx, di + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov ax, [bp+arg_0] + shl ax, 7 + mov dx, word ptr dword_1FFBC+2 + mov bx, word ptr dword_1FFBC + add bx, ax + mov ds, dx + mov si, bx + mov cx, 10h + +loc_39CC: ; CODE XREF: sub_3998+65j + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ax, [si] + mov es:[di], ax + mov ax, 0B000h + mov es, ax + assume es:nothing + mov ax, [si+20h] + mov es:[di], ax + mov ax, 0B800h + mov es, ax + assume es:nothing + mov ax, [si+40h] + mov es:[di], ax + mov ax, 0E000h + mov es, ax + assume es:nothing + mov ax, [si+60h] + mov es:[di], ax + add di, 50h ; 'P' + add si, 2 + loop loc_39CC + pop ds + pop di + pop si + pop bp + retf 6 +sub_3998 endp + +; --------------------------------------------------------------------------- +dword_3A06 dd 0 ; DATA XREF: sub_3A0C+4r sub_3A0C+14w ... +byte_3A0A db 0 ; DATA XREF: seg000:3A9Cr seg000:3AB3w ... + db 90h ; + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3A0C proc far ; CODE XREF: sub_F913+31P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_3A06 + or ax, word ptr cs:dword_3A06+2 + jnz short loc_3A42 + 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_3A06, bx + mov word ptr cs:dword_3A06+2, es + mov word_1FFA4, 0 + mov word_1FFA6, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 3A9Ch + 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_3A42: ; CODE XREF: sub_3A0C+Dj + push si + push di + push ds + mov cx, 0FFFFh + mov al, 0 + les di, [bp+arg_0] + assume es:nothing + repne scasb + not cx + sub di, cx + mov si, di + mov di, 24B4h + 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_3A0C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_3A6C proc far ; CODE XREF: sub_F70E+3P + mov ax, word ptr cs:dword_3A06 + or ax, word ptr cs:dword_3A06+2 + jz short locret_3A9B + push ds + lds dx, cs:dword_3A06 + 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_3A06, ax + mov word ptr cs:dword_3A06+2, ax + cmp word_1FFA4, ax + jz short locret_3A9B + push word_1FFA4 + push cs + call near ptr sub_2000 + +locret_3A9B: ; CODE XREF: sub_3A6C+9j sub_3A6C+25j + retf +sub_3A6C endp + +; --------------------------------------------------------------------------- + cmp cs:byte_3A0A, 0 + jz short loc_3AA9 + jmp cs:dword_3A06 +; --------------------------------------------------------------------------- + +loc_3AA9: ; CODE XREF: seg000:3AA2j + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_3A0A + push word ptr [bp+18h] + popf + mov cs:byte_3B00, ah + mov si, 3AD0h + +loc_3AC4: ; CODE XREF: seg000:3ACAj + add si, 4 + cmp ah, cs:[si] + jnz short loc_3AC4 + mov di, word_1FFA6 + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 4, 3Bh, 3Eh, 0, 39h, 3Bh, 3Fh, 0, 57h, 3Bh + db 42h, 0, 6Bh, 3Bh, 46h, 0, 0CCh, 3Bh, 40h, 0, 0D0h, 3Bh + db 45h, 0, 0D0h, 3Bh, 4Ch, 0, 0AEh, 3Bh, 57h, 0, 0D0h + db 3Bh, 5Ch, 0, 0D0h, 3Bh, 44h, 0, 0BAh, 3Bh +byte_3B00 db 0 ; DATA XREF: seg000:3ABCw + db 0 +; --------------------------------------------------------------------------- + aam 3Bh + test al, 0Fh + jz short loc_3B0B + jmp loc_3BD4 +; --------------------------------------------------------------------------- + +loc_3B0B: ; CODE XREF: seg000:3B06j + or di, di + js short loc_3B12 + jmp loc_3BD4 +; --------------------------------------------------------------------------- + +loc_3B12: ; CODE XREF: seg000:3B0Dj + push ds + push offset unk_1FF24 + push word ptr [bp+2] + push dx + push cs + call near ptr sub_3C00 + or ax, ax + jnz short loc_3B25 + jmp loc_3BD4 +; --------------------------------------------------------------------------- + +loc_3B25: ; CODE XREF: seg000:3B20j + mov word_1FFA4, ax + mov es, ax + mov es, word ptr es:0 + mov ax, es:0 + mov word_1FFA6, ax + jmp loc_3BEF +; --------------------------------------------------------------------------- + cmp bx, di + jz short loc_3B40 + jmp loc_3BD4 +; --------------------------------------------------------------------------- + +loc_3B40: ; CODE XREF: seg000:3B3Bj + push word_1FFA4 + push cs + call near ptr sub_2000 + mov word_1FFA4, 0 + mov word_1FFA6, 0FFFFh + jmp loc_3BEF +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_3BD4 + push word ptr [bp+2] + push dx + push cx + push word_1FFA4 + push cs + call near ptr sub_20CA + jmp loc_3BEF +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_3BD4 + or cx, cx + jl short loc_3BE6 + cmp al, 1 + jz short loc_3B9F + jl short loc_3B93 + mov es, word_1FFA4 + mov dx, es:16h + mov cx, es:18h + sub dx, es:12h + sbb cx, es:14h + jmp short loc_3B9F +; --------------------------------------------------------------------------- + +loc_3B93: ; CODE XREF: seg000:3B77j + push cx + push dx + push word_1FFA4 + push cs + call near ptr sub_20F8 + pop dx + pop cx + +loc_3B9F: ; CODE XREF: seg000:3B75j seg000:3B91j + push word_1FFA4 + push cx + push dx + push cs + call near ptr sub_2134 + mov [bp+0Eh], dx + jmp short loc_3BEF +; --------------------------------------------------------------------------- + db 2Eh, 0C5h, 16h, 6, 3Ah, 0B8h, 21h, 25h, 0CDh, 21h, 0EBh + db 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h, 6 + db 0CAh, 3Bh, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh + db 74h, 16h, 3Bh, 0DFh, 74h, 12h +; --------------------------------------------------------------------------- + +loc_3BD4: ; CODE XREF: seg000:3B08j seg000:3B0Fj ... + dec cs:byte_3A0A + push word ptr [bp+18h] + popf + pop es + pop ds + popa + cli + jmp cs:dword_3A06 +; --------------------------------------------------------------------------- + +loc_3BE6: ; CODE XREF: seg000:3B71j + or byte ptr [bp+18h], 1 + mov ax, 1 + jmp short loc_3BF3 +; --------------------------------------------------------------------------- + +loc_3BEF: ; CODE XREF: seg000:3B36j seg000:3B54j ... + and byte ptr [bp+18h], 0FEh + +loc_3BF3: ; CODE XREF: seg000:3BEDj + mov [bp+12h], ax + dec cs:byte_3A0A + pop es + pop ds + popa + iret +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C00 proc far ; CODE XREF: seg000:3B1Bp + +var_20 = byte ptr -20h +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + enter 20h, 0 + push si + push di + mov word_1E2D6, 7 + push 1Fh + push cs + call near ptr sub_2980 + jnb short loc_3C17 + jmp loc_3CD2 +; --------------------------------------------------------------------------- + +loc_3C17: ; CODE XREF: sub_3C00+12j + mov si, ax + push [bp+arg_6] + push [bp+arg_4] + push cs + call near ptr sub_574 + or ax, ax + jnz short loc_3C2A + jmp loc_3CCB +; --------------------------------------------------------------------------- + +loc_3C2A: ; CODE XREF: sub_3C00+25j + mov es, si + mov es:0, ax + lea di, [bp+var_20] + push di + push si + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + call sub_3CE0 + or ax, ax + jnz short loc_3CBF + mov ax, 20BCh + mov es:4, ax + mov al, byte_1DFD6 + mov es:1Eh, al + mov ax, ss:[di] + cmp ax, 0F388h + jz short loc_3C68 + cmp ax, 9595h + jz short loc_3C72 + mov ax, 5 + jmp short loc_3CBF +; --------------------------------------------------------------------------- + +loc_3C68: ; CODE XREF: sub_3C00+5Cj + mov ax, es:4 + mov es:2, ax + jmp short loc_3C87 +; --------------------------------------------------------------------------- + +loc_3C72: ; CODE XREF: sub_3C00+61j + mov word ptr es:2, 202Ah + mov word ptr es:1Ah, 0 + mov word ptr es:1Ch, 0FFFFh + +loc_3C87: ; CODE XREF: sub_3C00+70j + mov ax, ss:[di+arg_A] + mov dx, ss:[di+arg_C] + mov es:6, ax + mov es:8, dx + mov ax, ss:[di+arg_E] + mov dx, ss:[di+arg_10] + mov es:16h, ax + mov es:18h, dx + xor ax, ax + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + mov ax, si + jmp short loc_3CD9 +; --------------------------------------------------------------------------- + +loc_3CBF: ; CODE XREF: sub_3C00+46j sub_3C00+66j + mov word_1DFD4, ax + push word ptr es:0 + push cs + call near ptr sub_472 + +loc_3CCB: ; CODE XREF: sub_3C00+27j + push si + push cs + call near ptr sub_2A84 + jmp short loc_3CD7 +; --------------------------------------------------------------------------- + +loc_3CD2: ; CODE XREF: sub_3C00+14j + mov byte ptr word_1DFD4, 3 + +loc_3CD7: ; CODE XREF: sub_3C00+D0j + xor ax, ax + +loc_3CD9: ; CODE XREF: sub_3C00+BDj + pop di + pop si + leave + retf 8 +sub_3C00 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3CE0 proc near ; CODE XREF: sub_3C00+41p + +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_14 = word ptr 18h +arg_16 = word ptr 1Ah + + enter 6, 0 + push si + push di + push es + mov si, [bp+arg_8] + mov es, si + xor ax, ax + mov es:0Eh, ax + mov es:10h, ax + push ds + push si + cld + xor bx, bx + mov dx, bx + lds si, [bp+arg_4] + +loc_3D00: ; CODE XREF: sub_3CE0+27j sub_3CE0+2Ej + lodsb + cmp al, 0 + jz short loc_3D10 + cmp al, 2Eh ; '.' + jnz short loc_3D00 + lea bx, [si-1] + mov dx, ds + jmp short loc_3D00 +; --------------------------------------------------------------------------- + +loc_3D10: ; CODE XREF: sub_3CE0+23j + pop si + pop ds + mov ax, dx + or ax, bx + jz short $+2 + mov di, [bp+arg_A] + mov byte_1E309, 0 + +loc_3D20: ; CODE XREF: sub_3CE0+9Bj + mov es, si + push ss + push di + push 20h ; ' ' + push word ptr es:0 + push cs + call near ptr sub_5C8 + inc byte_1E309 + cmp byte_1E309, 0FFh + mov bx, 2 + jz short loc_3D7D + cmp ax, 20h ; ' ' + jnz short loc_3D7D + mov es, si + add es:0Eh, ax + adc word ptr es:10h, 0 + mov ax, ss:[di] + and ax, ax + mov bx, 6 + jz short loc_3D7D + lea bx, [di+3] + +loc_3D5C: ; CODE XREF: sub_3CE0+86j + cmp byte ptr ss:[bx], 0 + jz short loc_3D68 + not byte ptr ss:[bx] + inc bx + jmp short loc_3D5C +; --------------------------------------------------------------------------- + +loc_3D68: ; CODE XREF: sub_3CE0+80j + lea bx, [di+3] + push [bp+arg_2] + push [bp+arg_0] + push ss + push bx + call sub_3DA6 + mov ax, 0 + jnz short loc_3D7F + jmp short loc_3D20 +; --------------------------------------------------------------------------- + +loc_3D7D: ; CODE XREF: sub_3CE0+5Bj sub_3CE0+60j ... + mov ax, bx + +loc_3D7F: ; CODE XREF: sub_3CE0+99j + mov es, si + mov ax, ss:[di+arg_14] + mov dx, ss:[di+arg_16] + mov es:0Eh, ax + mov es:10h, dx + push word ptr es:0 + push dx + push ax + push 0 + push cs + call near ptr sub_63A + pop es + pop di + pop si + leave + retn 0Ch +sub_3CE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3DA6 proc near ; CODE XREF: sub_3CE0+93p + +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+arg_4] + lds si, [bp+arg_0] + +loc_3DB2: ; CODE XREF: sub_3DA6+2Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_3DBF + sub al, 20h ; ' ' + +loc_3DBF: ; CODE XREF: sub_3DA6+15j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_3DCA + sub ah, 20h ; ' ' + +loc_3DCA: ; CODE XREF: sub_3DA6+1Fj + cmp ah, al + jnz short loc_3DD4 + add al, 61h ; 'a' + jnz short loc_3DB2 + jmp short loc_3DD6 +; --------------------------------------------------------------------------- + +loc_3DD4: ; CODE XREF: sub_3DA6+26j + xor ax, ax + +loc_3DD6: ; CODE XREF: sub_3DA6+2Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 +sub_3DA6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3DDE proc far ; CODE XREF: sub_B3DA+69P + push bp + mov bp, sp + xor bx, bx + jmp short loc_3DED +; --------------------------------------------------------------------------- + +loc_3DE5: ; CODE XREF: sub_3DDE+13j + mov byte ptr [bx+258Ch], 0 + add bx, 0Ch + +loc_3DED: ; CODE XREF: sub_3DDE+5j + cmp bx, 168h + jl short loc_3DE5 + mov word_1FFF0, 20h ; ' ' + mov word_1FFF2, 1 + mov word_1FFF4, 0 + mov byte_1FFF8, 0Fh + mov byte_1FFF9, 0 + mov byte_1FFFA, 0FFh + mov word_1FFF6, 20h ; ' ' + pop bp + retf +sub_3DDE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3E1C proc far ; CODE XREF: sub_1BEF2+81P + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + mov cx, [bp+arg_4] + mov bx, [bp+arg_2] + shl cx, 4 + shl bx, 4 + mov ax, 258Ch + mov si, ax + xor dx, dx + jmp short loc_3E5F +; --------------------------------------------------------------------------- + +loc_3E35: ; CODE XREF: sub_3E1C+46j + cmp byte ptr [si], 0 + jnz short loc_3E5B + mov byte ptr [si], 1 + mov al, [bp+arg_0] + mov [si+1], al + mov [si+2], cx + mov [si+6], cx + mov [si+4], bx + mov [si+8], bx + mov byte ptr [si+0Ah], 1 + mov al, byte ptr word_1FFF0 + mov [si+0Bh], al + jmp short loc_3E64 +; --------------------------------------------------------------------------- + +loc_3E5B: ; CODE XREF: sub_3E1C+1Cj + inc dx + add si, 0Ch + +loc_3E5F: ; CODE XREF: sub_3E1C+17j + cmp dx, 1Eh + jl short loc_3E35 + +loc_3E64: ; CODE XREF: sub_3E1C+3Dj + pop si + pop bp + retf 6 +sub_3E1C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3E6A proc far ; CODE XREF: sub_3F8A+EBp + ; sub_135BB+99P ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, 0A800h + mov es, ax + assume es:nothing + mov si, [bp+arg_0] + mov ax, word_20164 + sar ax, 3 + mov dx, word_20166 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov bx, word_20164 + and bx, 7 + mov al, [si+8EEh] + mov ah, 0 + mov [bp+var_2], ax + mov cl, bl + shr ax, cl + mov cl, 10h + sub cl, bl + mov dx, [bp+var_2] + shl dx, cl + or ax, dx + jmp short loc_3EB8 +; --------------------------------------------------------------------------- + +loc_3EB1: ; CODE XREF: sub_3E6A+50j + mov es:[di], ax + add di, 50h ; 'P' + dec si + +loc_3EB8: ; CODE XREF: sub_3E6A+45j + or si, si + jg short loc_3EB1 + pop di + pop si + leave + retf 2 +sub_3E6A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3EC2 proc near ; CODE XREF: sub_3EF4+5Dp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov ax, word_20164 + sar ax, 3 + mov dx, word_20166 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov bx, ax + jmp short loc_3EEA +; --------------------------------------------------------------------------- + +loc_3EE1: ; CODE XREF: sub_3EC2+2Aj + mov word ptr es:[bx], 0FFFFh + add bx, 50h ; 'P' + dec si + +loc_3EEA: ; CODE XREF: sub_3EC2+1Dj + or si, si + jg short loc_3EE1 + pop si + pop bp + retn 2 +sub_3EC2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3EF4 proc far ; CODE XREF: sub_1C16A+3FP + push bp + mov bp, sp + push si + push di + mov ax, 0A800h + mov es, ax + push 0C0h ; 'À' + mov al, byte_1FFF9 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_127E + mov ax, 258Ch + mov si, ax + xor di, di + jmp short loc_3F7B +; --------------------------------------------------------------------------- + +loc_3F15: ; CODE XREF: sub_3EF4+8Aj + cmp byte ptr [si], 0 + jz short loc_3F77 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + sar ax, 4 + mov word_20164, ax + mov ax, [bx+si+4] + sar ax, 4 + mov word_20166, ax + cmp byte_2066C, 0 + jz short loc_3F4B + mov al, byte_20618 + mov ah, 0 + mov dx, di + and dx, 1 + cmp ax, dx + jnz short loc_3F54 + +loc_3F4B: ; CODE XREF: sub_3EF4+47j + mov al, [si+0Ah] + mov ah, 0 + push ax + call sub_3EC2 + +loc_3F54: ; CODE XREF: sub_3EF4+55j + cmp byte ptr [si], 2 + jnz short loc_3F5E + mov byte ptr [si], 0 + jmp short loc_3F77 +; --------------------------------------------------------------------------- + +loc_3F5E: ; CODE XREF: sub_3EF4+63j + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + mov cx, [bx+si+4] + xor bx, 4 + mov [bx+si+2], ax + mov [bx+si+4], cx + +loc_3F77: ; CODE XREF: sub_3EF4+24j sub_3EF4+68j + inc di + add si, 0Ch + +loc_3F7B: ; CODE XREF: sub_3EF4+1Fj + cmp di, 1Eh + jl short loc_3F15 + nop + push cs + call near ptr sub_12A8 + pop di + pop si + pop bp + retf +sub_3EF4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3F8A proc far ; CODE XREF: sub_1BEF2:loc_1BF9EP + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + push 0C0h ; 'À' + mov al, byte_1FFF8 + mov ah, 0 + push ax + nop + push cs + call near ptr sub_127E + mov al, byte_1FFFA + mov byte_20168, al + mov al, byte_1FFF8 + mov byte_20169, al + mov ax, 258Ch + mov si, ax + mov [bp+var_2], 0 + jmp loc_407E +; --------------------------------------------------------------------------- + +loc_3FB9: ; CODE XREF: sub_3F8A+FAj + cmp byte ptr [si], 1 + jz short loc_3FC1 + jmp loc_4078 +; --------------------------------------------------------------------------- + +loc_3FC1: ; CODE XREF: sub_3F8A+32j + mov al, [si+0Bh] + add al, byte ptr word_1FFF2 + mov [si+0Bh], al + mov al, [si+1] + add al, byte ptr word_1FFF4 + mov [si+1], al + push ss + lea ax, [bp+var_4] + push ax + push ss + lea ax, [bp+var_6] + push ax + push word ptr [si+1] + mov al, [si+0Bh] + mov ah, 0 + push ax + nop + push cs + ; Hack (what is this I don't even) + db 0e8h + db 075h + db 0b5h + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov dx, [bp+var_4] + add [bx+si+2], dx + mov dx, [bp+var_6] + add [bx+si+4], dx + mov dx, [bx+si+2] + sar dx, 4 + mov word_20164, dx + mov ax, [bx+si+4] + sar ax, 4 + mov word_20166, ax + cmp dx, 1A0h + jge short loc_402B + cmp dx, 18h + jle short loc_402B + cmp ax, 8 + jle short loc_402B + cmp ax, 180h + jl short loc_4030 + +loc_402B: ; CODE XREF: sub_3F8A+90j sub_3F8A+95j ... + mov byte ptr [si], 2 + jmp short loc_4078 +; --------------------------------------------------------------------------- + +loc_4030: ; CODE XREF: sub_3F8A+9Fj + mov ax, word_1FFF6 + shl ax, 2 + add ax, word_1FFF6 + mov di, ax + mov bl, 5 + jmp short loc_404F +; --------------------------------------------------------------------------- + +loc_4040: ; CODE XREF: sub_3F8A+C9j + mov al, [si+0Bh] + mov ah, 0 + cmp ax, di + jg short loc_4055 + sub di, word_1FFF6 + dec bl + +loc_404F: ; CODE XREF: sub_3F8A+B4j + cmp di, word_1FFF6 + jg short loc_4040 + +loc_4055: ; CODE XREF: sub_3F8A+BDj + mov [si+0Ah], bl + cmp byte_2066C, 0 + jz short loc_406E + mov al, byte_20618 + mov ah, 0 + mov dx, [bp+var_2] + and dx, 1 + cmp ax, dx + jnz short loc_4078 + +loc_406E: ; CODE XREF: sub_3F8A+D3j + mov al, [si+0Ah] + mov ah, 0 + push ax + push cs + call near ptr sub_3E6A + +loc_4078: ; CODE XREF: sub_3F8A+34j sub_3F8A+A4j ... + inc [bp+var_2] + add si, 0Ch + +loc_407E: ; CODE XREF: sub_3F8A+2Cj + cmp [bp+var_2], 1Eh + jge short loc_4087 + jmp loc_3FB9 +; --------------------------------------------------------------------------- + +loc_4087: ; CODE XREF: sub_3F8A+F8j + nop + push cs + call near ptr sub_12A8 + pop di + pop si + leave + retf +sub_3F8A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4090 proc far ; CODE XREF: sub_E618+143P + ; sub_EFF2+46P ... + +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 + + enter 8, 0 + push si + push di + mov ax, [bp+arg_6] + cmp ax, 190h + jb short loc_40A1 + sub ax, 190h + +loc_40A1: ; CODE XREF: sub_4090+Cj + mov [bp+arg_6], ax + shl [bp+arg_8], 4 + shl [bp+arg_6], 4 + mov ax, 37D0h + mov si, ax + mov ax, word_20274 + mov [bp+var_8], ax + mov cl, 14h + imul cl + add si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov [bp+var_6], ax + xor di, di + jmp short loc_4142 +; --------------------------------------------------------------------------- + +loc_40CC: ; CODE XREF: sub_4090+B5j + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov bx, [bp+var_6] + mov dx, [bp+arg_8] + mov [bx+si+2], dx + mov dx, [bp+arg_6] + mov [bx+si+4], dx + cmp [bp+arg_0], 0 + jnz short loc_4100 + mov al, [si+13h] + mov [si+0Eh], al + mov al, [si+11h] + mov ah, 0 + add ax, [bp+arg_4] + mov [bp+var_2], ax + mov al, [si+10h] + mov ah, 0 + jmp short loc_4114 +; --------------------------------------------------------------------------- + +loc_4100: ; CODE XREF: sub_4090+56j + mov byte ptr [si+0Eh], 0Eh + mov ax, [bp+arg_4] + mov [bp+var_2], ax + mov ax, di + mov cl, 8 + shl ax, cl + cwd + idiv [bp+arg_2] + +loc_4114: ; CODE XREF: sub_4090+6Ej + mov [bp+var_4], ax + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push [bp+var_4] + push [bp+var_2] + nop + push cs + ; Hack (what is this I don't even) + db 0e8h + db 036h + db 0b4h + inc di + add si, 14h + inc [bp+var_8] + cmp [bp+var_8], 40h ; '@' + jl short loc_4142 + mov [bp+var_8], 0 + sub si, 500h + +loc_4142: ; CODE XREF: sub_4090+3Aj sub_4090+A7j + cmp di, [bp+arg_2] + jl short loc_40CC + mov ax, [bp+arg_2] + add byte ptr word_20274, al + and byte ptr word_20274, 3Fh + pop di + pop si + leave + retf 0Ah +sub_4090 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_415A proc near ; CODE XREF: sub_41AA+C3p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ax, 0A800h + mov es, ax + mov bx, [bp+arg_4] + mov ax, bx + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov ax, bx + and ax, 7 + shl ax, 7 + mov dx, [bp+arg_0] + shl dx, 4 + add ax, dx + add ax, 0C9Ah + mov si, ax + mov cx, 8 + +loc_4193: ; CODE XREF: sub_415A:loc_41A1j + movsw + add di, 4Eh ; 'N' + cmp di, 7D00h + jl short loc_41A1 + sub di, 7D00h + +loc_41A1: ; CODE XREF: sub_415A+41j + loop loc_4193 + pop di + pop si + pop bp + retn 6 +sub_415A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_41AA proc far ; CODE XREF: sub_BCB1+146P + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_6 = word ptr -6 +var_2 = word ptr -2 + + enter 0Eh, 0 + push si + push di + push 0C0h ; 'À' + push 0Eh + nop + push cs + call near ptr sub_127E + mov ax, 37D0h + mov si, ax + mov [bp+var_2], 0 + jmp loc_4276 +; --------------------------------------------------------------------------- + +loc_41C7: ; CODE XREF: sub_41AA+D2j + cmp byte ptr [si], 1 + jz short loc_41CF + jmp loc_4270 +; --------------------------------------------------------------------------- + +loc_41CF: ; CODE XREF: sub_41AA+20j + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, si + add ax, 2 + mov [bp+var_6], ax + add ax, 2 + mov [bp+var_A], ax + mov ax, [si+0Ah] + mov bx, [bp+var_6] + add [bx], ax + mov ax, word_1EB0A + add [si+0Ah], ax + mov ax, [si+0Ch] + mov bx, [bp+var_A] + add [bx], ax + mov ax, [bx] + mov [bp+var_E], ax + mov bx, [bp+var_6] + mov ax, [bx] + sar ax, 4 + mov [bp+var_C], ax + mov bx, [bp+var_A] + mov ax, [bx] + sar ax, 4 + mov [bp+var_E], ax + mov di, [bp+var_E] + inc word ptr [si+0Ch] + inc byte ptr [si+1] + cmp [bp+var_C], 20h ; ' ' + jl short loc_4240 + cmp [bp+var_C], 198h + jge short loc_4240 + mov al, [si+1] + cmp al, byte_2174C + ja short loc_4240 + cmp di, 180h + jge short loc_4240 + cmp di, 8 + jg short loc_4245 + +loc_4240: ; CODE XREF: sub_41AA+79j sub_41AA+80j ... + mov byte ptr [si], 2 + jmp short loc_4270 +; --------------------------------------------------------------------------- + +loc_4245: ; CODE XREF: sub_41AA+94j + add di, word_20344 + cmp di, 190h + jb short loc_4253 + sub di, 190h + +loc_4253: ; CODE XREF: sub_41AA+A3j + push [bp+var_C] + push di + cmp byte ptr [si+0Eh], 0 + jnz short loc_4264 + nop + push cs + call near ptr sub_123A + jmp short loc_4270 +; --------------------------------------------------------------------------- + +loc_4264: ; CODE XREF: sub_41AA+B1j + mov al, [si+1] + mov ah, 0 + and ax, 7 + push ax + call sub_415A + +loc_4270: ; CODE XREF: sub_41AA+22j sub_41AA+99j ... + inc [bp+var_2] + add si, 14h + +loc_4276: ; CODE XREF: sub_41AA+1Aj + cmp [bp+var_2], 40h ; '@' + jge short loc_427F + jmp loc_41C7 +; --------------------------------------------------------------------------- + +loc_427F: ; CODE XREF: sub_41AA+D0j + nop + push cs + call near ptr sub_12A8 + pop di + pop si + leave + retf +sub_41AA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4288 proc far ; CODE XREF: sub_BCB1+5BP + push bp + mov bp, sp + push si + push di + mov ax, 37D0h + mov si, ax + xor di, di + jmp short loc_42EF +; --------------------------------------------------------------------------- + +loc_4296: ; CODE XREF: sub_4288+6Aj + cmp byte ptr [si], 0 + jz short loc_42EB + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + sar ax, 4 + push ax + mov ax, [bx+si+4] + sar ax, 4 + push ax + cmp byte ptr [si+0Eh], 0 + jnz short loc_42BF + push 1 + push 1 + jmp short loc_42C3 +; --------------------------------------------------------------------------- + +loc_42BF: ; CODE XREF: sub_4288+2Fj + push 8 + push 8 + +loc_42C3: ; CODE XREF: sub_4288+35j + nop + push cs + call near ptr sub_45FC + cmp byte ptr [si], 2 + jnz short loc_42D2 + mov byte ptr [si], 0 + jmp short loc_42EB +; --------------------------------------------------------------------------- + +loc_42D2: ; CODE XREF: sub_4288+43j + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + mov dx, [bx+si+4] + xor bx, 4 + mov [bx+si+2], ax + mov [bx+si+4], dx + +loc_42EB: ; CODE XREF: sub_4288+11j sub_4288+48j + inc di + add si, 14h + +loc_42EF: ; CODE XREF: sub_4288+Cj + cmp di, 40h ; '@' + jl short loc_4296 + pop di + pop si + leave + retf +sub_4288 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_42F8 proc far ; CODE XREF: sub_B3DA+181P + mov word_22796, 17h + mov byte_22798, 0 + mov byte_20618, 0 + mov byte_2287E, 1 + mov byte_22D48, 0 + retf +sub_42F8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4314 proc near ; CODE XREF: sub_B3DA+17CP + +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 0Ah, 0 + push [bp+arg_4] + push [bp+arg_2] + nop + push cs +sub_4314 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc far ; CODE XREF: sub_7C3A+7Bp sub_7C3A+9Ap ... + call near ptr sub_950 + push ss + lea ax, [bp-0Ah] + push ax + push 0Ah + nop + push cs + call near ptr sub_89C + push ds + push offset unk_21A56 + push 0C00h + nop + push cs + call near ptr sub_89C + nop + push cs + call near ptr sub_870 + leave + retf 4 +sub_4320 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4344 proc far ; CODE XREF: sub_B3DA:loc_B88AP + push bp + mov bp, sp + push si + push di + xor si, si + jmp short loc_43A6 +; --------------------------------------------------------------------------- + +loc_434D: ; CODE XREF: sub_4344+65j + mov di, 1 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + +loc_4356: ; CODE XREF: sub_4344+3Dj + mov ax, si + mov bx, 19h + cwd + idiv bx + shl ax, 4 + add ax, 240h + push ax + mov ax, si + cwd + idiv bx + shl dx, 4 + push dx + push si + nop + push cs + call near ptr sub_3998 + cmp di, 0 + jz short loc_4383 + xor di, di + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + jmp short loc_4356 +; --------------------------------------------------------------------------- + +loc_4383: ; CODE XREF: sub_4344+33j + mov ax, si + mov bx, 19h + cwd + idiv bx + add ax, ax + push ax + mov ax, si + cwd + idiv bx + imul dx, 500h + pop ax + add ax, dx + add ax, 48h ; 'H' + mov bx, si + add bx, bx + mov [bx+4D2Ah], ax + inc si + +loc_43A6: ; CODE XREF: sub_4344+7j + cmp si, 64h ; 'd' + jl short loc_434D + pop di + pop si + pop bp + retf +sub_4344 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_43B0 proc far ; CODE XREF: sub_4782+1Ap sub_480C+41p ... + nop + push cs + call near ptr sub_74E + 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 + retf +sub_43B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_43E0 proc near ; CODE XREF: sub_445A+B6p sub_445A+D7p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_2] + mov bx, [bp+arg_0] + add bx, bx + mov ax, [bx+4D2Ah] + mov dx, word_22862 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov si, ax + mov cx, word_22864 + +loc_4405: ; CODE XREF: sub_43E0+31j + mov ax, es:[si] + mov es:[di], ax + add di, 50h ; 'P' + add si, 50h ; 'P' + loop loc_4405 + pop di + pop si + pop bp + retn 4 +sub_43E0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4419 proc near ; CODE XREF: sub_4692+56p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_2] + mov bx, [bp+arg_0] + add bx, bx + mov si, [bx+4D2Ah] + mov cx, 10h + +loc_442D: ; CODE XREF: sub_4419+20j + mov ax, es:[si] + mov es:[di], ax + add di, 50h ; 'P' + add si, 50h ; 'P' + loop loc_442D + pop di + pop si + pop bp + retn 4 +sub_4419 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4441 proc near ; CODE XREF: sub_4692+B3p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + mov cx, 10h + +loc_444B: ; CODE XREF: sub_4441+12j + mov word ptr es:[si], 0FFFFh + add si, 50h ; 'P' + loop loc_444B + pop si + pop bp + retn 2 +sub_4441 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_445A proc far ; CODE XREF: sub_BCB1+193P + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov al, byte_22798 + sub al, byte ptr [bp+arg_0] + mov byte_22798, al + mov ax, word_20344 + sar ax, 4 + imul ax, 18h + mov [bp+var_2], ax + cmp byte_22798, 0 + jge short loc_44D9 + mov al, byte_22798 + add al, 10h + mov byte_22798, al + inc word_22796 + mov ax, word_22796 + shr ax, 3 + cmp ax, word_22FD8 + jb short loc_449C + mov ax, 1 + jmp loc_453A +; --------------------------------------------------------------------------- + +loc_449C: ; CODE XREF: sub_445A+3Aj + mov ax, word_22796 + shr ax, 3 + mov bx, ax + mov al, [bx+4BE6h] + mov ah, 0 + imul ax, 0C0h + mov di, ax + mov ax, word_22796 + and ax, 7 + imul ax, 18h + mov cx, ax + xor si, si + jmp short loc_44D4 +; --------------------------------------------------------------------------- + +loc_44BF: ; CODE XREF: sub_445A+7Dj + mov bx, di + add bx, cx + mov al, [bx+3FE6h] + mov [si+4DF6h], al + mov bx, [bp+var_2] + mov [bx+si+4E0Fh], al + inc si + inc cx + +loc_44D4: ; CODE XREF: sub_445A+63j + cmp si, 18h + jl short loc_44BF + +loc_44D9: ; CODE XREF: sub_445A+22j + mov al, byte_22798 + cbw + mov word_22862, ax + mov ax, [bp+arg_0] + mov word_22864, ax + mov ax, word_20344 + shl ax, 6 + mov dx, ax + shr dx, 2 + add ax, dx + add ax, 4 + mov di, ax + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + mov ax, 0A800h + mov es, ax + xor si, si + jmp short loc_4517 +; --------------------------------------------------------------------------- + +loc_4508: ; CODE XREF: sub_445A+C0j + push di + mov al, [si+4DF6h] + mov ah, 0 + push ax + call sub_43E0 + inc si + add di, 2 + +loc_4517: ; CODE XREF: sub_445A+ACj + cmp si, 18h + jl short loc_4508 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + jmp short loc_4534 +; --------------------------------------------------------------------------- + +loc_4525: ; CODE XREF: sub_445A+DCj + dec si + sub di, 2 + push di + mov al, [si+4DF6h] + mov ah, 0 + push ax + call sub_43E0 + +loc_4534: ; CODE XREF: sub_445A+C9j + or si, si + jge short loc_4525 + xor ax, ax + +loc_453A: ; CODE XREF: sub_445A+3Fj + pop di + pop si + leave + retf 2 +sub_445A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4540 proc near ; CODE XREF: sub_4596+1Ap + push bp + mov bp, sp + sub sp, 2 + push si + push di +sub_4540 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4548 proc near ; CODE XREF: sub_7C3A+7Bp sub_7C3A+9Ap ... + mov ax, [bp+4] + sar ax, 3 + mov di, ax + mov al, [di+4BE6h] + mov ah, 0 + mov di, ax + xor si, si + jmp short loc_458B +; --------------------------------------------------------------------------- + +loc_455C: ; CODE XREF: sub_4548+46j + mov bx, di + imul bx, 0C0h + mov ax, [bp+4] + and ax, 7 + imul ax, 18h + add bx, ax + mov al, [bx+si+3FE6h] + mov ah, 0 + mov [bp-2], ax + mov ax, si + shl ax, 4 + add ax, [bp+8] + push ax + push word ptr [bp+6] + push word ptr [bp-2] + nop + push cs + call near ptr sub_3998 + inc si + +loc_458B: ; CODE XREF: sub_4548+12j + cmp si, 18h + jl short loc_455C + pop di + pop si + leave + retn 6 +sub_4548 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4596 proc far ; CODE XREF: sub_B3DA+512P + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + xor di, di + jmp short loc_45F3 +; --------------------------------------------------------------------------- + +loc_45A2: ; CODE XREF: sub_4596+60j + push 20h ; ' ' + mov ax, di + shl ax, 4 + mov dx, 170h + sub dx, ax + push dx + push di + call sub_4540 + mov ax, di + sar ax, 3 + mov [bp+var_2], ax + mov bx, [bp+var_2] + mov al, [bx+4BE6h] + mov ah, 0 + mov [bp+var_2], ax + xor si, si + jmp short loc_45ED +; --------------------------------------------------------------------------- + +loc_45CB: ; CODE XREF: sub_4596+5Aj + mov bx, [bp+var_2] + imul bx, 0C0h + mov ax, di + and ax, 7 + imul ax, 18h + add bx, ax + mov al, [bx+si+3FE6h] + mov bx, 17h + sub bx, di + imul bx, 18h + mov [bx+si+4E0Fh], al + inc si + +loc_45ED: ; CODE XREF: sub_4596+33j + cmp si, 18h + jl short loc_45CB + inc di + +loc_45F3: ; CODE XREF: sub_4596+Aj + cmp di, 18h + jl short loc_45A2 + pop di + pop si + leave + retf +sub_4596 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_45FC proc far ; CODE XREF: sub_4288+3Dp sub_C6B2+57P ... + +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 + cmp byte_2287E, 2 + jnz short loc_460B + jmp loc_468C +; --------------------------------------------------------------------------- + +loc_460B: ; CODE XREF: sub_45FC+Aj + dec [bp+arg_2] + mov ax, [bp+arg_6] + add [bp+arg_2], ax + sar [bp+arg_2], 4 + sar [bp+arg_6], 4 + sub [bp+arg_6], 2 + sub [bp+arg_2], 2 + mov ax, [bp+arg_4] + add ax, word_20344 + cmp ax, 190h + jl short loc_4635 + sub ax, 190h + jmp short loc_463D +; --------------------------------------------------------------------------- + +loc_4635: ; CODE XREF: sub_45FC+32j + cmp ax, 0 + jnb short loc_463D + add ax, 190h + +loc_463D: ; CODE XREF: sub_45FC+37j sub_45FC+3Cj + mov di, [bp+arg_0] + dec di + add di, ax + and ax, 0FFF0h + mov [bp+arg_4], ax + mov si, [bp+arg_6] + mov ax, si + imul ax, 19h + jmp short loc_4687 +; --------------------------------------------------------------------------- + +loc_4653: ; CODE XREF: sub_45FC+8Ej + or si, si + jl short loc_4683 + cmp si, 18h + jge short loc_4683 + mov cx, [bp+arg_4] + +loc_465F: ; CODE XREF: sub_45FC+80j + mov dx, cx + cmp dx, 190h + jl short loc_466B + sub dx, 190h + +loc_466B: ; CODE XREF: sub_45FC+69j + sar dx, 4 + mov bx, ax + add bx, dx + mov byte ptr [bx+5068h], 1 + add cx, 10h + cmp cx, di + jle short loc_465F + mov byte ptr [si+52C0h], 1 + +loc_4683: ; CODE XREF: sub_45FC+59j sub_45FC+5Ej + inc si + add ax, 19h + +loc_4687: ; CODE XREF: sub_45FC+55j + cmp si, [bp+arg_2] + jle short loc_4653 + +loc_468C: ; CODE XREF: sub_45FC+Cj + pop di + pop si + pop bp + retf 8 +sub_45FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4692 proc far ; CODE XREF: sub_BCB1+7CP + ; sub_FFF8+16FP ... + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, 0E000h + mov es, ax + assume es:nothing + cmp byte_2287E, 1 + jnz short loc_46FE + xor di, di + jmp short loc_46F7 +; --------------------------------------------------------------------------- + +loc_46AA: ; CODE XREF: sub_4692+68j + cmp byte_22D48, 1 + jz short loc_46B8 + cmp byte ptr [di+52C0h], 0 + jz short loc_46F6 + +loc_46B8: ; CODE XREF: sub_4692+1Dj + mov ax, di + add ax, ax + add ax, 4 + mov [bp+var_2], ax + xor si, si + jmp short loc_46F1 +; --------------------------------------------------------------------------- + +loc_46C6: ; CODE XREF: sub_4692+62j + cmp byte_22D48, 1 + jz short loc_46D9 + mov bx, di + imul bx, 19h + cmp byte ptr [bx+si+5068h], 0 + jz short loc_46EB + +loc_46D9: ; CODE XREF: sub_4692+39j + push [bp+var_2] + mov bx, si + imul bx, 18h + mov al, [bx+di+4E0Fh] + mov ah, 0 + push ax + call sub_4419 + +loc_46EB: ; CODE XREF: sub_4692+45j + inc si + add [bp+var_2], 500h + +loc_46F1: ; CODE XREF: sub_4692+32j + cmp si, 19h + jl short loc_46C6 + +loc_46F6: ; CODE XREF: sub_4692+24j + inc di + +loc_46F7: ; CODE XREF: sub_4692+16j + cmp di, 18h + jl short loc_46AA + jmp short loc_475E +; --------------------------------------------------------------------------- + +loc_46FE: ; CODE XREF: sub_4692+12j + cmp byte_2287E, 0 + jnz short loc_475E + push 0C0h ; 'À' + push 0 + nop + push cs + call near ptr sub_127E + xor di, di + jmp short loc_4754 +; --------------------------------------------------------------------------- + +loc_4713: ; CODE XREF: sub_4692+C5j + cmp byte_22D48, 1 + jz short loc_4721 + cmp byte ptr [di+52C0h], 0 + jz short loc_4753 + +loc_4721: ; CODE XREF: sub_4692+86j + mov ax, di + add ax, ax + add ax, 4 + mov [bp+var_2], ax + xor si, si + jmp short loc_474E +; --------------------------------------------------------------------------- + +loc_472F: ; CODE XREF: sub_4692+BFj + cmp byte_22D48, 1 + jz short loc_4742 + mov bx, di + imul bx, 19h + cmp byte ptr [bx+si+5068h], 0 + jz short loc_4748 + +loc_4742: ; CODE XREF: sub_4692+A2j + push [bp+var_2] + call sub_4441 + +loc_4748: ; CODE XREF: sub_4692+AEj + inc si + add [bp+var_2], 500h + +loc_474E: ; CODE XREF: sub_4692+9Bj + cmp si, 19h + jl short loc_472F + +loc_4753: ; CODE XREF: sub_4692+8Dj + inc di + +loc_4754: ; CODE XREF: sub_4692+7Fj + cmp di, 18h + jl short loc_4713 + nop + push cs + call near ptr sub_12A8 + +loc_475E: ; CODE XREF: sub_4692+6Aj sub_4692+71j + xor bx, bx + mov cx, 258h + +loc_4763: ; CODE XREF: sub_4692+D7j + mov byte ptr [bx+5068h], 0 + inc bx + loop loc_4763 + xor bx, bx + mov cx, 18h + +loc_4770: ; CODE XREF: sub_4692+E4j + mov byte ptr [bx+52C0h], 0 + inc bx + loop loc_4770 + mov byte_22D48, 0 + pop di + pop si + leave + retf +sub_4692 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4782 proc far ; CODE XREF: sub_B3DA+51DP + ; sub_B98E+2CP ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, 0A800h + mov es, ax + assume es:nothing + mov word_22862, 0 + mov word_22864, 10h + push cs + call near ptr sub_43B0 + cmp byte_2287E, 1 + jnz short loc_47E6 + mov [bp+var_2], 0 + mov [bp+var_6], 4 + jmp short loc_47DE +; --------------------------------------------------------------------------- + +loc_47B2: ; CODE XREF: sub_4782+60j + xor si, si + mov di, [bp+var_6] + jmp short loc_47D1 +; --------------------------------------------------------------------------- + +loc_47B9: ; CODE XREF: sub_4782+52j + mov bx, [bp+var_2] + imul bx, 18h + mov al, [bx+si+4E0Fh] + mov ah, 0 + mov [bp+var_4], ax + push di + push ax + call sub_43E0 + inc si + add di, 2 + +loc_47D1: ; CODE XREF: sub_4782+35j + cmp si, 18h + jl short loc_47B9 + inc [bp+var_2] + add [bp+var_6], 500h + +loc_47DE: ; CODE XREF: sub_4782+2Ej + cmp [bp+var_2], 19h + jl short loc_47B2 + jmp short loc_4803 +; --------------------------------------------------------------------------- + +loc_47E6: ; CODE XREF: sub_4782+22j + push 0C0h ; 'À' + push 0 + nop + push cs + call near ptr sub_127E + push 4 + push 10h + push 34h ; '4' + push 180h + nop + push cs + call near ptr sub_B88 + nop + push cs + call near ptr sub_12A8 + +loc_4803: ; CODE XREF: sub_4782+62j + nop + push cs + call near ptr sub_764 + pop di + pop si + leave + retf +sub_4782 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_480C proc far ; CODE XREF: sub_1223E:loc_12279P + ; sub_1223E+57P ... + +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 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, 0A800h + mov es, ax + mov di, [bp+arg_4] + mov si, [bp+arg_2] + mov ax, si + sar ax, 4 + mov [bp+var_2], ax + lea ax, [di-20h] + sar ax, 4 + mov [bp+var_4], ax + mov word_22862, 0 + mov word_22864, 10h + mov bx, [bp+var_2] + imul bx, 18h + add bx, [bp+var_4] + mov al, byte ptr [bp+arg_0] + mov [bx+4E0Fh], al + push cs + call near ptr sub_43B0 + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + mov ax, [bp+var_2] + shl ax, 4 + mov si, ax + mov ax, di + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov [bp+var_6], ax + push ax + push [bp+arg_0] + call sub_43E0 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + push [bp+var_6] + push [bp+arg_0] + call sub_43E0 + nop + push cs + call near ptr sub_764 + pop di + pop si + leave + retf 6 +sub_480C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4896 proc far ; CODE XREF: sub_19E2F+92P + +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 ax, 0E000h + mov es, ax + assume es:nothing + mov ax, [bp+arg_4] + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov bx, [bp+arg_0] + add bx, bx + mov bx, [bx+4D2Ah] + xor si, si + jmp short loc_48D9 +; --------------------------------------------------------------------------- + +loc_48C2: ; CODE XREF: sub_4896+46j + mov ax, es:[bx] + mov es:[di], ax + add di, 50h ; 'P' + add bx, 50h ; 'P' + cmp di, 7D00h + jle short loc_48D8 + sub di, 7D00h + +loc_48D8: ; CODE XREF: sub_4896+3Cj + inc si + +loc_48D9: ; CODE XREF: sub_4896+2Aj + cmp si, 10h + jl short loc_48C2 + pop di + pop si + pop bp + retf 6 +sub_4896 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_48E4 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 1462h + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_48E4 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_5DEA + pop cx + nop + push cs + call near ptr sub_48E4 +_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_1EEF2, 20h ; ' ' + jnz short loc_4961 + mov ax, 1 + jmp short loc_497D +; --------------------------------------------------------------------------- + +loc_4961: ; CODE XREF: _atexit+Aj + mov bx, word_1EEF2 + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx-6CDAh], dx + mov [bx-6CDCh], ax + inc word_1EEF2 + xor ax, ax + +loc_497D: ; 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:50FEp ... + +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_5705 + 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_9A39+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_AF09+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_49FF + mov [bp+var_6], 0 + jmp short loc_49EA +; --------------------------------------------------------------------------- + +loc_49D1: ; CODE XREF: __DOSENV+50j + les bx, [bp+var_4] + assume es:nothing + 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_49EA: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_49FF + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_49D1 + +loc_49FF: ; 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_4A1D + 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_4A1D: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_4A27 + jmp loc_4B0E +; --------------------------------------------------------------------------- + +loc_4A27: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_5838 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4A41 + jmp loc_4B0E +; --------------------------------------------------------------------------- + +loc_4A41: ; 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_4AB7 + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_4AB7 + jmp short loc_4AA0 +; --------------------------------------------------------------------------- + +loc_4A74: ; 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_4AA0: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_4AC1 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_4A74 + jmp short loc_4AC1 +; --------------------------------------------------------------------------- + +loc_4AB7: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_4AC1: ; 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_4B03 + 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_4B03: ; 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_4B12 +; --------------------------------------------------------------------------- + +loc_4B0E: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_4B12: ; 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_630F+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 near + +drive = word ptr 4 +ndrives = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov dl, byte ptr [bp+ndrives] + 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+2] +__dos_setdrive endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4B43 proc far ; CODE XREF: sub_78EC+77p sub_78EC+A1p ... + mov es:[bx], ax + pop di + pop si + pop bp + retf +sub_4B43 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far __ErrorMessage(char *buf) +___ErrorMessage proc far ; CODE XREF: seg000:016Ap sub_48E4+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_1EF2C + 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_4B74 proc far ; CODE XREF: sub_4B79+29P sub_4B79+43P ... + push si + push di + pop di + pop si + retf +sub_4B74 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_4B79 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_4BA6 + jmp short loc_4B96 +; --------------------------------------------------------------------------- + +loc_4B86: ; CODE XREF: sub_4B79+22j + dec word_1EEF2 + mov bx, word_1EEF2 + mov cl, 2 + shl bx, cl + call dword ptr [bx-6CDCh] + +loc_4B96: ; CODE XREF: sub_4B79+Bj + cmp word_1EEF2, 0 + jnz short loc_4B86 + nop + push cs + call __cleanup + call off_1EEF4 + +loc_4BA6: ; CODE XREF: sub_4B79+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_4BCD + cmp [bp+arg_4], 0 + jnz short loc_4BC4 + call off_1EEF8 + call off_1EEFC + +loc_4BC4: ; CODE XREF: sub_4B79+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_4BCD: ; CODE XREF: sub_4B79+3Bj + pop di + pop si + pop bp + retn 6 +sub_4B79 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_4B79 + 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_48E4+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_4B79 + 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_4B79 + 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_4B79 + pop di + pop si + retf +__c_exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +SCOPY@ proc far ; CODE XREF: sub_FC53+16P sub_FE12+16P ... + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + push ds + lds si, [bp+arg_0] + les di, [bp+arg_4] + cld + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop di + pop si + pop bp + retf 8 +SCOPY@ endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl getdate(struct date *datep) +_getdate proc far ; CODE XREF: sub_1C9FE+13EP + +datep = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 2Ah + int 21h ; DOS - GET CURRENT DATE + ; Return: DL = day, DH = month, CX = year + ; AL = day of the week (0=Sunday, 1=Monday, etc.) + les bx, [bp+datep] + mov es:[bx], cx + mov es:[bx+2], dx + pop di + pop si + pop bp + retf +_getdate endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl gettime(struct time *timep) +_gettime proc far + +timep = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 2Ch + int 21h ; DOS - GET CURRENT TIME + ; Return: CH = hours, CL = minutes, DH = seconds + ; DL = hundredths of seconds + les bx, [bp+timep] + mov es:[bx], cx + mov es:[bx+2], dx + pop di + pop si + pop bp + retf +_gettime 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:5D82p + +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:5CC7p seg000:5DC4p ... + +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_4CAD + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_9886+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_4CAD +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_4CAD +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_4CAD: ; CODE XREF: seg000:4C95j 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_4CCC + or dx, dx + jz short loc_4D31 + or bx, bx + jz short loc_4D31 + +loc_4CCC: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_4CEE + or dx, dx + jns short loc_4CE0 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_4CE0: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_4CEE + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_4CEE: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_4CF8: ; CODE XREF: N_LUDIV@:loc_4D0Fj + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_4D0F + ja short loc_4D0A + cmp si, bx + jb short loc_4D0F + +loc_4D0A: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_4D0F: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_4CF8 + pop bx + test bx, 2 + jz short loc_4D1E + mov ax, si + mov dx, di + shr bx, 1 + +loc_4D1E: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_4D2B + neg dx + neg ax + sbb dx, 0 + +loc_4D2B: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_4D31: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_4D3A + xchg ax, dx + +loc_4D3A: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_4D2B +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_4D56 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_4D56: ; 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_4D72 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_4DA1 +; --------------------------------------------------------------------------- + +loc_4D72: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_4D7A + add dx, 1000h + +loc_4D7A: ; 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_4DA1 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_4D72 +; --------------------------------------------------------------------------- + +loc_4DA1: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_4DA9 + sub dx, 1000h + +loc_4DA9: ; 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_4DE2 + cmp dx, 58h ; 'X' + jle short loc_4DD3 + +loc_4DD0: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_4DD3: ; CODE XREF: __IOERROR+Fj + mov word_1F0BA, dx + mov bx, dx + mov al, [bx+164Ch] + cbw + mov dx, ax + jmp short loc_4DF0 +; --------------------------------------------------------------------------- + +loc_4DE2: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_1F39C + jg short loc_4DD0 + mov word_1F0BA, 0FFFFh + +loc_4DF0: ; CODE XREF: __IOERROR+21j + mov word_1DAEE, 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:51B3p seg000:51ECp + +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+1622h], 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_4E4A + jmp short loc_4E4F +; --------------------------------------------------------------------------- + +loc_4E4A: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_4E4F: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_507E + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 53h, 4Eh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 4E61h + 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, 4F59h + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 16A6h + 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_1F11A + 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, 507Eh + 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_1F11E + mov ax, word_1F11C + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_1F11E, dx + mov word_1F11C, 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_4F25 + mov ax, [bp+arg_0] + jmp short loc_4F28 +; --------------------------------------------------------------------------- + +loc_4F25: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_4F28: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_4F31 +; --------------------------------------------------------------------------- + +loc_4F2D: ; CODE XREF: operator new(uint)+43j + call dword ptr word_1F11C + +loc_4F31: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_5838 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_4F4D + mov ax, word_1F11C + or ax, seg_1F11E + jnz short loc_4F2D + +loc_4F4D: ; 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_507E + db 2 dup(0), 0A6h, 16h + dw seg dseg + dd byte_5044 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 9Ch, 4Fh + +; =============== 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:19D4o + +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, 4FB4h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 16B0h + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + call @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ds + mov ax, 16A6h + 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_501D: ; DATA XREF: dseg:19F2o + 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, 16A6h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_5044 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:4FA6o + db 0Dh dup(0), 1, 0, 1, 0, 14h, 3 + dw seg seg007 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_507E db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:4E53o seg000:4F9Co + db 0Dh dup(0), 2, 0, 2, 0, 0C0h, 50h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0Dh, 51h + 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_5107 + 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_5105 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_5109 +; --------------------------------------------------------------------------- + +loc_5105: ; CODE XREF: seg000:50F4j + jmp short loc_5109 +; --------------------------------------------------------------------------- + +loc_5107: ; CODE XREF: seg000:50CBj + xor ax, ax + +loc_5109: ; CODE XREF: seg000:5103j + ; seg000:loc_5105j + 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, 9Ch, 71h + 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_9886+51p sub_9886+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_514E + mul bx + +loc_514E: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_5155 + xchg ax, cx + mul si + add ax, cx + +loc_5155: ; CODE XREF: N_LXMUL@:loc_514Ej + 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_517C + cmp ax, bx + +locret_517C: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_51A6 +; --------------------------------------------------------------------------- + +loc_5184: ; CODE XREF: seg000:51AAj + mov bx, cx + add bx, bx + mov word ptr [bx+1622h], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+1494h], 0FFh + add ax, 1490h + mov bx, dx + mov [bx+14A2h], ax + inc cx + +loc_51A6: ; CODE XREF: seg000:5182j + cmp cx, word_1F090 + jb short loc_5184 + mov al, byte_1EF04 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_51C1 + and word_1EF02, 0FDFFh + +loc_51C1: ; CODE XREF: seg000:51B9j + mov ax, 200h + push ax + test byte ptr word_1EF02+1, 2 + jz short loc_51D1 + mov ax, 1 + jmp short loc_51D3 +; --------------------------------------------------------------------------- + +loc_51D1: ; CODE XREF: seg000:51CAj + xor ax, ax + +loc_51D3: ; CODE XREF: seg000:51CFj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 1490h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_1EF18 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_51FA + and word_1EF16, 0FDFFh + +loc_51FA: ; CODE XREF: seg000:51F2j + mov ax, 200h + push ax + test byte ptr word_1EF16+1, 2 + jz short loc_520A + mov ax, 2 + jmp short loc_520C +; --------------------------------------------------------------------------- + +loc_520A: ; CODE XREF: seg000:5203j + xor ax, ax + +loc_520C: ; CODE XREF: seg000:5208j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 14A4h + 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_630F+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_5233 + mov ax, 0FFFFh + jmp short loc_524D +; --------------------------------------------------------------------------- + +loc_5233: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_5249 + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_524D +; --------------------------------------------------------------------------- + +loc_5249: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_524D: ; 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:4EB2p seg000:4F82p ... + 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:4E7Fp + ; 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:53CCp ... + +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:17CCo + 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_5320 + 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_5320: ; 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 + +; --------------------------------------------------------------------------- + dd 0 + dd loc_53BA + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 2Ch, 53h + dw seg seg000 + dw 0 + db 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_7F11+272p ... + +var_26 = dword ptr -26h +var_22 = word ptr -22h +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_12 = word ptr -12h + + push bp + mov bp, sp + sub sp, 26h + push si + push di + mov ax, seg seg000 + mov bx, 5344h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_22], ds + nop + push cs + call near ptr _flushall + les bx, ss:16h + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + mov [bp+var_12], 6 + les bx, ss:16h + cmp word ptr es:[bx+12h], 0 + jnz short loc_539E + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_539E: ; CODE XREF: ___call_terminate+3Dj + les bx, ss:16h + mov ax, es:[bx+12h] + mov [bp+var_20], ax + mov ds, [bp+var_20] + call [bp+var_26] + mov ds, [bp+var_22] + mov [bp+var_12], 0 + jmp short loc_53C2 +; --------------------------------------------------------------------------- + +loc_53BA: ; DATA XREF: seg000:5330o + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_53C2: ; 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:17D0o + 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_5414 + 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_5414: ; 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_5450 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_5450: ; 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_5483 + xor ax, ax + jmp short loc_54BD +; --------------------------------------------------------------------------- + +loc_5483: ; 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_54BD: ; 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_54D7 + xor ax, ax + jmp short loc_5515 +; --------------------------------------------------------------------------- + +loc_54D7: ; 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_5515: ; 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, 17C2h + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_1F246, ax + mov word_1F244, 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_1F35A, 0 + jz short locret_55C4 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_1F35A, 2 + jz short locret_55C4 + 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_1F35A, 3 + mov esp, edx + jz short locret_55C4 + mov word_1F35A, 4 + +locret_55C4: ; CODE XREF: seg000:5580j seg000:5593j ... + retn +; --------------------------------------------------------------------------- +word_55C5 dw 0 ; DATA XREF: sub_55D1r sub_55D1+1Dr ... +word_55C7 dw 0 ; DATA XREF: sub_55D1+14w sub_55D1+27w ... +word_55C9 dw 0 ; DATA XREF: sub_55D1+4Cw sub_56A5+19w ... +word_55CB dw 0 ; DATA XREF: sub_55D1+32r + ; sub_55D1:loc_5624r ... +word_55CD dw 0 ; DATA XREF: sub_58BF+1r sub_599F+1Aw +word_55CF dw 0 ; DATA XREF: sub_58BF+7r sub_599F+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_55D1 proc near ; CODE XREF: sub_5705+18p + cmp dx, cs:word_55C5 + jz short loc_560F + mov ds, dx + mov ds, word_1DA72 + cmp word_1DA72, 0 + jz short loc_55EC + mov cs:word_55C7, ds + jmp short loc_5624 +; --------------------------------------------------------------------------- + +loc_55EC: ; CODE XREF: sub_55D1+12j + mov ax, ds + cmp ax, cs:word_55C5 + jz short loc_560A + mov ax, off_1DA78 + mov cs:word_55C7, ax + push ds + xor ax, ax + push ax + call sub_56A5 + mov ds, cs:word_55CB + jmp short loc_562D +; --------------------------------------------------------------------------- + +loc_560A: ; CODE XREF: sub_55D1+22j + mov dx, cs:word_55C5 + +loc_560F: ; CODE XREF: sub_55D1+5j + mov cs:word_55C5, 0 + mov cs:word_55C7, 0 + mov cs:word_55C9, 0 + +loc_5624: ; CODE XREF: sub_55D1+19j + mov ds, cs:word_55CB + push dx + xor ax, ax + push ax + +loc_562D: ; CODE XREF: sub_55D1+37j + call __brk + add sp, 4 + retn +sub_55D1 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_5634 proc near ; CODE XREF: sub_5705:loc_5722p + mov ds, dx + push ds + mov es, word_1DA72 + mov word_1DA72, 0 + mov off_1DA78, es + cmp dx, cs:word_55C5 + jz short loc_567A + cmp word ptr es:2, 0 + jnz short loc_567A + mov ax, word_1DA70 + 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_5673 + mov es:8, cx + jmp short loc_567D +; --------------------------------------------------------------------------- + +loc_5673: ; CODE XREF: sub_5634+36j + mov es:2, cx + jmp short loc_567D +; --------------------------------------------------------------------------- + +loc_567A: ; CODE XREF: sub_5634+16j sub_5634+1Ej + call sub_56CE + +loc_567D: ; CODE XREF: sub_5634+3Dj sub_5634+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_1DA72, 0 + jz short loc_568F + retn +; --------------------------------------------------------------------------- + +loc_568F: ; CODE XREF: sub_5634+58j + mov ax, word_1DA70 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_1DA70 + mov es, bx + mov es:2, ax +sub_5634 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_56A5 proc near ; CODE XREF: sub_55D1+2Fp sub_5842+66p + mov bx, ds + cmp bx, word_1DA76 + jz short loc_56C6 + mov es, word_1DA76 + mov ds, word_1DA74 + mov word_1DA76, es + mov word ptr es:4, ds + mov cs:word_55C9, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_56C6: ; CODE XREF: sub_56A5+6j + mov cs:word_55C9, 0 + retn +sub_56A5 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_56CE proc near ; CODE XREF: sub_5634:loc_567Ap + mov ax, cs:word_55C9 + or ax, ax + jz short loc_56F7 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov word_1DA74, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov word_1DA76, es + retn +; --------------------------------------------------------------------------- + +loc_56F7: ; CODE XREF: sub_56CE+6j + mov cs:word_55C9, ds + mov word_1DA74, ds + mov word_1DA76, ds + retn +sub_56CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5705 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_58BF+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_55CB, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_5725 + cmp dx, cs:word_55C7 + jnz short loc_5722 + call sub_55D1 + jmp short loc_5725 +; --------------------------------------------------------------------------- + +loc_5722: ; CODE XREF: sub_5705+16j + call sub_5634 + +loc_5725: ; CODE XREF: sub_5705+Fj sub_5705+1Bj + mov ds, cs:word_55CB + pop di + pop si + pop bp + retf +sub_5705 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_572E proc near ; CODE XREF: sub_5842:loc_5897p + push ax + mov ds, cs:word_55CB + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_5757 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_55CB + push ax + push dx + call __sbrk + add sp, 4 + +loc_5757: ; CODE XREF: sub_572E+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_55CB + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_578E + mov cs:word_55C5, dx + mov cs:word_55C7, dx + mov ds, dx + mov word_1DA70, bx + mov word_1DA72, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_578E: ; CODE XREF: sub_572E+46j + xor ax, ax + cwd + retn +sub_572E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_5792 proc near ; CODE XREF: sub_5842:loc_5892p + push ax + mov ds, cs:word_55CB + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_57BA + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_55CB + push ax + push dx + call __sbrk + add sp, 4 + +loc_57BA: ; CODE XREF: sub_5792+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_55CB + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_5811 + and ax, 0Fh + jnz short loc_57F6 + +loc_57DE: ; CODE XREF: sub_5792+7Dj + mov cx, cs:word_55C7 + mov cs:word_55C7, dx + mov ds, dx + mov word_1DA70, bx + mov word_1DA72, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_57F6: ; CODE XREF: sub_5792+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_5811 + inc dx + jmp short loc_57DE +; --------------------------------------------------------------------------- + +loc_5811: ; CODE XREF: sub_5792+45j sub_5792+7Aj + xor ax, ax + cwd + retn +sub_5792 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_5815 proc near ; CODE XREF: sub_5842:loc_589Cp + mov bx, dx + sub word_1DA70, ax + add dx, word_1DA70 + mov ds, dx + mov word_1DA70, ax + mov word_1DA72, bx + mov bx, dx + add bx, word_1DA70 + mov ds, bx + mov word_1DA72, dx + mov ax, 4 + retn +sub_5815 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5838 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_584B +sub_5838 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5842 proc far ; CODE XREF: sub_58BF+Ep sub_599F+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_584B: ; CODE XREF: sub_5838+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_55CB, ds + jz short loc_58B6 + add ax, 13h + adc dx, 0 + jb short loc_58A1 + test dx, 0FFF0h + jnz short loc_58A1 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_55C5 + or dx, dx + jz short loc_5897 + mov dx, cs:word_55C9 + or dx, dx + jz short loc_5892 + mov bx, dx + +loc_5882: ; CODE XREF: sub_5842+4Ej + mov ds, dx + cmp word_1DA70, ax + jnb short loc_58A6 + mov dx, word_1DA76 + cmp dx, bx + jnz short loc_5882 + +loc_5892: ; CODE XREF: sub_5842+3Cj + call sub_5792 + jmp short loc_58B6 +; --------------------------------------------------------------------------- + +loc_5897: ; CODE XREF: sub_5842+33j + call sub_572E + jmp short loc_58B6 +; --------------------------------------------------------------------------- + +loc_589C: ; CODE XREF: sub_5842:loc_58A6j + call sub_5815 + jmp short loc_58B6 +; --------------------------------------------------------------------------- + +loc_58A1: ; CODE XREF: sub_5842+1Cj sub_5842+22j + xor ax, ax + cwd + jmp short loc_58B6 +; --------------------------------------------------------------------------- + +loc_58A6: ; CODE XREF: sub_5842+46j + ja short loc_589C + call sub_56A5 + mov bx, off_1DA78 + mov word_1DA72, bx + mov ax, offset word_1DA74 + +loc_58B6: ; CODE XREF: sub_5842+14j sub_5842+53j ... + mov ds, cs:word_55CB + pop di + pop si + pop bp + retf +sub_5842 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_58BF proc near ; CODE XREF: sub_599F:loc_59FBp + push bx + mov si, cs:word_55CD + push si + mov si, cs:word_55CF + push si + push cs + call near ptr sub_5842 + add sp, 4 + or dx, dx + jnz short loc_58D9 + pop bx + retn +; --------------------------------------------------------------------------- + +loc_58D9: ; CODE XREF: sub_58BF+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_1DA70 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_592A + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_58FD: ; CODE XREF: sub_58BF+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_590C + mov cx, 1000h + +loc_590C: ; CODE XREF: sub_58BF+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_592A + 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_58FD +; --------------------------------------------------------------------------- + +loc_592A: ; CODE XREF: sub_58BF+32j sub_58BF+59j + mov ds, cs:word_55CB + assume ds:dseg + push cs + call near ptr sub_5705 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_58BF endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_593B proc near ; CODE XREF: sub_599F:loc_59F6p + cmp bx, cs:word_55C7 + jz short loc_5987 + 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_5973 + mov es:2, di + jmp short loc_5978 +; --------------------------------------------------------------------------- + +loc_5973: ; CODE XREF: sub_593B+2Fj + mov es:8, di + +loc_5978: ; CODE XREF: sub_593B+36j + mov si, bx + push cs + call near ptr sub_5705 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_5987: ; CODE XREF: sub_593B+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_593B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_599F proc far ; CODE XREF: sub_630F+2DDp + ; seg007:075DP ... + +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_59AC +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_59AC: ; CODE XREF: sub_599F+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_55CB, ds + mov cs:word_55CD, dx + mov cs:word_55CF, ax + or bx, bx + jz short loc_5A00 + mov cx, ax + or cx, dx + jz short loc_5A0B + add ax, 13h + adc dx, 0 + jb short loc_5A14 + test dx, 0FFF0h + jnz short loc_5A14 + 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_59FB + ja short loc_59F6 + mov dx, bx + mov ax, 4 + jmp short loc_5A17 +; --------------------------------------------------------------------------- + +loc_59F6: ; CODE XREF: sub_599F+4Ej + call sub_593B + jmp short loc_5A17 +; --------------------------------------------------------------------------- + +loc_59FB: ; CODE XREF: sub_599F+4Cj + call sub_58BF + jmp short loc_5A17 +; --------------------------------------------------------------------------- + +loc_5A00: ; CODE XREF: sub_599F+25j + push dx + push ax + push cs + call near ptr sub_5842 + add sp, 4 + jmp short loc_5A17 +; --------------------------------------------------------------------------- + +loc_5A0B: ; CODE XREF: sub_599F+2Bj + push bx + push ax + push cs + call near ptr sub_5705 + add sp, 4 + +loc_5A14: ; CODE XREF: sub_599F+33j sub_599F+39j + xor ax, ax + cwd + +loc_5A17: ; CODE XREF: sub_599F+55j sub_599F+5Aj ... + mov ds, cs:word_55CB + pop di + pop si + pop bp + retf +sub_599F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5A20 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_1F35C + jz short loc_5A84 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_1DAFE + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_5A65 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_5A65: ; CODE XREF: sub_5A20+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_5A96 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_1F35C, ax + +loc_5A84: ; CODE XREF: sub_5A20+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_1DAFA, dx + mov word_1DAF8, ax + mov ax, 1 + jmp short loc_5AA6 +; --------------------------------------------------------------------------- + +loc_5A96: ; CODE XREF: sub_5A20+58j + mov ax, segx + add ax, dx + mov word_1DAFE, ax + mov word_1DAFC, 0 + xor ax, ax + +loc_5AA6: ; CODE XREF: sub_5A20+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_5A20 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_55D1:loc_562Dp + ; sub_593B+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_1DAF6 + mov bx, word_1DAF4 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_5AE6 + mov cx, word_1DAFE + mov bx, word_1DAFC + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_5AE6 + push [bp+arg_2] + push [bp+arg_0] + call sub_5A20 + or ax, ax + jnz short loc_5AEB + +loc_5AE6: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_5AED +; --------------------------------------------------------------------------- + +loc_5AEB: ; CODE XREF: __brk+36j + xor ax, ax + +loc_5AED: ; 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_572E+Ap sub_572E+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_1DAFA + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_1DAF8 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_5B1C + jg short loc_5B6C + cmp ax, 0FFFFh + ja short loc_5B6C + +loc_5B1C: ; CODE XREF: __sbrk+22j + mov dx, word_1DAFA + mov ax, word_1DAF8 + 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_1DAF6 + mov bx, word_1DAF4 + call N_PCMP@ + jb short loc_5B6C + mov cx, word_1DAFE + mov bx, word_1DAFC + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_5B6C + mov dx, word_1DAFA + mov ax, word_1DAF8 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_5A20 + or ax, ax + jnz short loc_5B74 + +loc_5B6C: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_5B7A +; --------------------------------------------------------------------------- + +loc_5B74: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_5B7A: ; 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_1F36A + mov ax, word_1F368 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_5BA9 + cmp ax, 1 + jz short loc_5BE6 + +loc_5BA9: ; CODE XREF: seg000:5BA2j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_5BBD + cmp word ptr [bp-2], 0FFFFh + jnz short loc_5BC7 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_5BC7 + +loc_5BBD: ; CODE XREF: seg000:5BAFj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_5BC7: ; CODE XREF: seg000:5BB5j seg000:5BBBj + mov word_1F36A, 0 + mov word_1F368, 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_5BE6: ; CODE XREF: seg000:5BA7j + 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_1F36A + mov ax, word_1F368 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_5C1B + cmp ax, 1 + jz short loc_5C58 + +loc_5C1B: ; CODE XREF: seg000:5C14j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_5C2F + cmp word ptr [bp-2], 0FFFFh + jnz short loc_5C39 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_5C39 + +loc_5C2F: ; CODE XREF: seg000:5C21j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_5C39: ; CODE XREF: seg000:5C27j seg000:5C2Dj + mov word_1F36A, 0 + mov word_1F368, 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_5C58: ; CODE XREF: seg000:5C19j + 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_1F362 + mov ax, word_1F360 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_5C8F + cmp ax, 1 + jz short loc_5CD4 + +loc_5C8F: ; CODE XREF: seg000:5C88j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_5CA3 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_5CAD + cmp word ptr [bp-4], 0FFFFh + jnz short loc_5CAD + +loc_5CA3: ; CODE XREF: seg000:5C95j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_5CAD: ; CODE XREF: seg000:5C9Bj seg000:5CA1j + mov word_1F362, 0 + mov word_1F360, 0 + push word_26E1E + push word_26E1C + 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_5CD4: ; CODE XREF: seg000:5C8Dj + 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_5CE3 proc far ; CODE XREF: seg000:5D2Cp sub_5DEA+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_5CEA: ; CODE XREF: sub_5CE3+1Cj + mov bx, dx + mov al, [bx+1908h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_5CFB + mov ax, dx + jmp short loc_5D04 +; --------------------------------------------------------------------------- + +loc_5CFB: ; CODE XREF: sub_5CE3+12j + inc dx + cmp dx, 6 + jl short loc_5CEA + mov ax, 0FFFFh + +loc_5D04: ; CODE XREF: sub_5CE3+16j + pop di + pop si + pop bp + retf +sub_5CE3 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_1F35F, 0 + jnz short loc_5D28 + mov word_26E16, seg seg000 + mov word_26E14, 5D08h + mov byte_1F35F, 1 + +loc_5D28: ; CODE XREF: seg000:5D15j + push word ptr [bp+6] + push cs + call near ptr sub_5CE3 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_5D47 + mov word_1DAEE, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_5DE4 +; --------------------------------------------------------------------------- + +loc_5D47: ; CODE XREF: seg000:5D36j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+18F2h] + mov ax, [bx+18F0h] + 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+18F2h], dx + mov [bx+18F0h], ax + cmp word ptr [bp+6], 2 + jnz short loc_5DB1 + cmp byte_1F35E, 0 + jnz short loc_5D92 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_26E1E, dx + mov word_26E1C, ax + mov byte_1F35E, 1 + +loc_5D92: ; CODE XREF: seg000:5D7Aj + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_5DA4 + push word_26E1E + push word_26E1C + jmp short loc_5DAC +; --------------------------------------------------------------------------- + +loc_5DA4: ; CODE XREF: seg000:5D98j + mov ax, seg seg000 + push ax + mov ax, 5C64h + push ax + +loc_5DAC: ; CODE XREF: seg000:5DA2j + mov ax, 23h ; '#' + jmp short loc_5DD5 +; --------------------------------------------------------------------------- + +loc_5DB1: ; CODE XREF: seg000:5D73j + cmp word ptr [bp+6], 8 + jnz short loc_5DDE + mov ax, seg seg000 + push ax + mov ax, 5B80h + push ax + xor ax, ax + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + mov ax, seg seg000 + push ax + mov ax, 5BF2h + push ax + mov ax, 4 + +loc_5DD5: ; CODE XREF: seg000:5DAFj + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_5DDE: ; CODE XREF: seg000:5DB5j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_5DE4: ; CODE XREF: seg000:5D44j + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5DEA 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_5CE3 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_5E07 + mov ax, 1 + jmp short loc_5E7B +; --------------------------------------------------------------------------- + +loc_5E07: ; CODE XREF: sub_5DEA+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+18F2h] + mov ax, [bx+18F0h] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_5E25 + cmp ax, 1 + jz short loc_5E79 + +loc_5E25: ; CODE XREF: sub_5DEA+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_5E54 + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_5E3F + cmp ax, 16h + jnz short loc_5E48 + nop + push cs + call near ptr sub_48E4 +; --------------------------------------------------------------------------- + +loc_5E3F: ; CODE XREF: sub_5DEA+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_5E48: ; CODE XREF: sub_5DEA+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_5E79 +; --------------------------------------------------------------------------- + +loc_5E54: ; CODE XREF: sub_5DEA+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+18F2h], 0 + mov word ptr [bx+18F0h], 0 + mov bx, [bp+var_2] + mov al, [bx+190Eh] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_5E79: ; CODE XREF: sub_5DEA+39j sub_5DEA+68j + xor ax, ax + +loc_5E7B: ; CODE XREF: sub_5DEA+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5DEA 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_6857+A8p sub_AE80+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_5EA0 + jmp short loc_5EB8 +; --------------------------------------------------------------------------- + +loc_5EA0: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_5EAB + test dl, 1 + jnz short loc_5EAF + +loc_5EAB: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_5EB8 +; --------------------------------------------------------------------------- + +loc_5EAF: ; CODE XREF: __access+28j + mov word_1DAEE, 5 + mov ax, 0FFFFh + +loc_5EB8: ; 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, 14h, 19h, 0Bh, 6, 16h, 19h, 75h, 27h, 0BEh + db 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h, 8Ch + db 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h, 5, 83h + db 0FEh, 0FFh, 75h, 6, 0BEh, 18h, 19h, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_1F384, si + mov word ptr dword_1F384+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_5F05 proc far ; CODE XREF: sub_5F2A+35p + ; sub_630F+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_1F384 + +loc_5F13: ; CODE XREF: sub_5F05+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_5F25 + cmp al, dl + jb short loc_5F25 + inc bx + inc bx + cmp al, dh + ja short loc_5F13 + inc cx + +loc_5F25: ; CODE XREF: sub_5F05+13j sub_5F05+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_5F05 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5F2A proc far ; CODE XREF: sub_62D5+23p + ; sub_630F+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_5F40: ; CODE XREF: sub_5F2A+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5F4D + xor cx, cx + jmp short loc_5F7B +; --------------------------------------------------------------------------- + +loc_5F4D: ; CODE XREF: sub_5F2A+1Dj + cmp cx, 1 + jnz short loc_5F57 + mov cx, 2 + jmp short loc_5F6E +; --------------------------------------------------------------------------- + +loc_5F57: ; CODE XREF: sub_5F2A+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_5F05 + pop cx + or ax, ax + jz short loc_5F6C + mov cx, 1 + jmp short loc_5F6E +; --------------------------------------------------------------------------- + +loc_5F6C: ; CODE XREF: sub_5F2A+3Bj + xor cx, cx + +loc_5F6E: ; CODE XREF: sub_5F2A+2Bj sub_5F2A+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_5F7B + inc word ptr [bp+var_4] + jmp short loc_5F40 +; --------------------------------------------------------------------------- + +loc_5F7B: ; CODE XREF: sub_5F2A+21j sub_5F2A+4Aj + or cx, cx + jnz short loc_5F84 + mov ax, 1 + jmp short loc_5F86 +; --------------------------------------------------------------------------- + +loc_5F84: ; CODE XREF: sub_5F2A+53j + xor ax, ax + +loc_5F86: ; CODE XREF: sub_5F2A+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_5F2A 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_5FA5 + xchg ax, cx + jmp short loc_5FA9 +; --------------------------------------------------------------------------- + +loc_5FA5: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_5FA9: ; 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_5FC5 + nop + push cs + call near ptr _flushall + jmp loc_6076 +; --------------------------------------------------------------------------- + +loc_5FC5: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_5FD4 + jmp loc_6071 +; --------------------------------------------------------------------------- + +loc_5FD4: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_602B + test byte ptr es:[bx+2], 8 + jnz short loc_5FFC + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_5FF6 + jmp loc_6076 +; --------------------------------------------------------------------------- + +loc_5FF6: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_6076 + +loc_5FFC: ; 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_6076 + cmp es:[bx+0Ch], ax + jnz short loc_6076 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_6076 +; --------------------------------------------------------------------------- + +loc_602B: ; 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_6076 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_6076 + or word ptr es:[bx+2], 10h + +loc_6071: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_6078 +; --------------------------------------------------------------------------- + +loc_6076: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_6078: ; 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_1F090 + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 1490h + jmp short loc_60B7 +; --------------------------------------------------------------------------- + +loc_609B: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_60B3 + 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_60B3: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_60B7: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_609B + 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_60CA 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_60E7 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_60F4 +; --------------------------------------------------------------------------- + +loc_60E7: ; CODE XREF: sub_60CA+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_60F4: ; CODE XREF: sub_60CA+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_6148 + 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_6141 + jmp short loc_6129 +; --------------------------------------------------------------------------- + +loc_611A: ; CODE XREF: sub_60CA+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_6129 + inc [bp+var_2] + +loc_6129: ; CODE XREF: sub_60CA+4Ej sub_60CA+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_611A + jmp short loc_6148 +; --------------------------------------------------------------------------- + +loc_6132: ; CODE XREF: sub_60CA+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_6141 + inc [bp+var_2] + +loc_6141: ; CODE XREF: sub_60CA+4Cj sub_60CA+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_6132 + +loc_6148: ; CODE XREF: sub_60CA+35j sub_60CA+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_60CA 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_616E + mov ax, 0FFFFh + jmp short loc_61D1 +; --------------------------------------------------------------------------- + +loc_616E: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_618B + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_618B + push word ptr [bp+stream+2] + push bx + call sub_60CA + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_618B: ; 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_61CF + cmp ax, 0FFFFh + jnz short loc_61CF + mov ax, 0FFFFh + jmp short loc_61D1 +; --------------------------------------------------------------------------- + +loc_61CF: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_61D1: ; 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_6209 + cmp ax, 0FFFFh + jnz short loc_6209 + jmp loc_62AA +; --------------------------------------------------------------------------- + +loc_6209: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_6215 + jmp loc_629A +; --------------------------------------------------------------------------- + +loc_6215: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+1623h], 8 + jz short loc_6288 + 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_6250 + cmp ax, 0FFFFh + jnz short loc_6250 + jmp short loc_62B0 +; --------------------------------------------------------------------------- + +loc_6250: ; 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_627C + cmp ax, 0FFFFh + jnz short loc_627C + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_62B0 +; --------------------------------------------------------------------------- + +loc_627C: ; 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_6288: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_60CA + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_62AA +; --------------------------------------------------------------------------- + +loc_629A: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_60CA + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_62AA: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_62B0: ; 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_62B6 proc near ; CODE XREF: sub_62D5+Ep sub_630F+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_62C8 + cmp ax, 2Fh ; '/' + jnz short loc_62CD + +loc_62C8: ; CODE XREF: sub_62B6+Bj + mov ax, 1 + jmp short loc_62CF +; --------------------------------------------------------------------------- + +loc_62CD: ; CODE XREF: sub_62B6+10j + xor ax, ax + +loc_62CF: ; CODE XREF: sub_62B6+15j + pop di + pop si + pop bp + retn 2 +sub_62B6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_62D5 proc near ; CODE XREF: sub_630F+CDp + ; sub_630F+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_62B6 + or ax, ax + jz short loc_6307 + 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_5F2A + add sp, 8 + or ax, ax + jz short loc_6307 + mov ax, 1 + jmp short loc_6309 +; --------------------------------------------------------------------------- + +loc_6307: ; CODE XREF: sub_62D5+13j sub_62D5+2Bj + xor ax, ax + +loc_6309: ; CODE XREF: sub_62D5+30j + pop di + pop si + pop bp + retn 8 +sub_62D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_630F proc far ; CODE XREF: sub_6857+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_5838 + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_632E + jmp loc_6571 +; --------------------------------------------------------------------------- + +loc_632E: ; CODE XREF: sub_630F+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+16C1h], 0Ch + jz short loc_636E + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_636E + 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_6384 +; --------------------------------------------------------------------------- + +loc_636E: ; CODE XREF: sub_630F+39j sub_630F+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_6384: ; CODE XREF: sub_630F+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_62B6 + or ax, ax + jnz short loc_63EC + 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_63BC + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + jmp loc_6571 +; --------------------------------------------------------------------------- + +loc_63BC: ; CODE XREF: sub_630F+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_62D5 + or ax, ax + jnz short loc_640E + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_640B +; --------------------------------------------------------------------------- + +loc_63EC: ; CODE XREF: sub_630F+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_640B: ; CODE XREF: sub_630F+DBj + inc word ptr [bp+dest] + +loc_640E: ; CODE XREF: sub_630F+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_6434: ; CODE XREF: sub_630F+28Cj + ; sub_630F+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_6450 + push ax + call sub_62B6 + or ax, ax + jnz short loc_6450 + jmp loc_6582 +; --------------------------------------------------------------------------- + +loc_6450: ; CODE XREF: sub_630F+134j + ; sub_630F+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_6477 + 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_62D5 + or ax, ax + jz short loc_6477 + sub word ptr [bp+dest], 2 + jmp short loc_64EE +; --------------------------------------------------------------------------- + +loc_6477: ; CODE XREF: sub_630F+149j + ; sub_630F+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_64EE + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_64EE + 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_62D5 + or ax, ax + jz short loc_64EE + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_64D7 + 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_5F2A + add sp, 8 + or ax, ax + jz short loc_64D7 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + jmp loc_6571 +; --------------------------------------------------------------------------- + +loc_64D7: ; CODE XREF: sub_630F+19Cj + ; sub_630F+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_62D5 + or ax, ax + jz short loc_64D7 + +loc_64EE: ; CODE XREF: sub_630F+166j + ; sub_630F+170j ... + cmp [bp+var_E], 0 + jz short loc_64F7 + jmp loc_6577 +; --------------------------------------------------------------------------- + +loc_64F7: ; CODE XREF: sub_630F+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_62D5 + or ax, ax + jz short loc_650F + dec word ptr [bp+dest] + +loc_650F: ; CODE XREF: sub_630F+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_653D + 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_5F2A + add sp, 8 + or ax, ax + jz short loc_653D + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_653D: ; CODE XREF: sub_630F+208j + ; sub_630F+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_655F + jmp loc_65E3 +; --------------------------------------------------------------------------- + +loc_655F: ; CODE XREF: sub_630F+24Bj + cmp dx, [bp+arg_8] + jbe short loc_65BC + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + +loc_6571: ; CODE XREF: sub_630F+1Cj sub_630F+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_65F2 +; --------------------------------------------------------------------------- + +loc_6577: ; CODE XREF: sub_630F+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_65B6 +; --------------------------------------------------------------------------- + +loc_6582: ; CODE XREF: sub_630F+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_5F05 + pop cx + or ax, ax + jnz short loc_659E + jmp loc_6434 +; --------------------------------------------------------------------------- + +loc_659E: ; CODE XREF: sub_630F+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_65AA + jmp loc_6434 +; --------------------------------------------------------------------------- + +loc_65AA: ; CODE XREF: sub_630F+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_65B6: ; CODE XREF: sub_630F+271j + inc word ptr [bp+dest] + jmp loc_6434 +; --------------------------------------------------------------------------- + +loc_65BC: ; CODE XREF: sub_630F+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_5705 + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_65F2 +; --------------------------------------------------------------------------- + +loc_65E3: ; CODE XREF: sub_630F+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_599F + add sp, 6 + +loc_65F2: ; CODE XREF: sub_630F+266j + ; sub_630F+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_630F 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_630F+93p sub_6857+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_6614 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_6614: ; 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_6670 + 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_664F + mov word_1DAEE, 22h ; '"' + jmp short loc_6670 +; --------------------------------------------------------------------------- + +loc_664F: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_6676 + push [bp+len] + nop + push cs + call near ptr sub_5838 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_6676 + mov word_1DAEE, 8 + +loc_6670: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_668F +; --------------------------------------------------------------------------- + +loc_6676: ; 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_668F: ; CODE XREF: __getdcwd+7Cj + pop di + pop si + mov sp, bp + pop bp + retf +__getdcwd endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl getenv(const char *name) +_getenv proc far ; CODE XREF: __searchenv+10p + ; sub_AF09+126p + +var_4 = dword ptr -4 +_name = dword ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les di, [bp+_name] + mov ax, es + or ax, di + jz short loc_66C6 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_66C6 + les di, dword_1F3B0 + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_66D3 + +loc_66C6: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_66FF +; --------------------------------------------------------------------------- + +loc_66CC: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_66D3: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_66C6 + mov al, es:[di] + or al, al + jz short loc_66C6 + cmp ah, al + jnz short loc_66CC + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_66CC + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_66CC + inc di + mov ax, di + mov dx, es + +loc_66FF: ; CODE XREF: _getenv+35j + pop di + pop si + mov sp, bp + pop bp + retf +_getenv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl memcmp(const void *s1, const void *s2, size_t n) +_memcmp proc far ; CODE XREF: __CurrExcContext+39p + +s1 = dword ptr 6 +s2 = dword ptr 0Ah +n = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push ds + mov ax, [bp+n] + mov cx, ax + jcxz short loc_6726 + 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_6726: ; 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_7F11+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_6745 + movsb + +loc_6745: ; 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_676C + jcxz short loc_6773 + stosb + dec cx + +loc_676C: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_6773 + stosb + +loc_6773: ; 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_8BBD+CFp seg007:09E1P + +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_67B6 + std + mov ax, 1 + jmp short loc_67B9 +; --------------------------------------------------------------------------- + +loc_67B6: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_67B9: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_67CC + add si, cx + dec si + add di, cx + dec di + +loc_67CC: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_67D6 + jcxz short loc_67E5 + movsb + dec cx + +loc_67D6: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_67E5 + add si, ax + add di, ax + movsb + +loc_67E5: ; CODE XREF: _movmem+39j _movmem+45j + cld + pop ds + pop di + pop si + pop bp + retf +_movmem endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void *__cdecl memmove(void *dest, const void *src, size_t n) +_memmove proc far ; CODE XREF: seg007:099DP seg007:09C6P + +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_AE80+43p + +var_4 = dword ptr -4 +src = dword ptr 6 +varname = dword ptr 0Ah +pathname = dword ptr 0Eh + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push word ptr [bp+varname+2] + push word ptr [bp+varname] ; name + nop + push cs + call near ptr _getenv + pop cx + pop cx + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + or ax, dx + jnz short loc_6837 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 1924h + +loc_6837: ; 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_6857 + add sp, 0Ch + pop di + pop si + mov sp, bp + pop bp + retf +__searchenv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_6857(char *src, __int32, char *pathname) +sub_6857 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_687C + xor dx, dx + jmp short loc_688B +; --------------------------------------------------------------------------- + +loc_687C: ; CODE XREF: sub_6857+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_688B: ; CODE XREF: sub_6857+23j sub_6857+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_68E0 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_68B1 + cmp bl, 2Fh ; '/' + jz short loc_68B1 + cmp bl, 3Ah ; ':' + jnz short loc_68CD + +loc_68B1: ; CODE XREF: sub_6857+4Ej sub_6857+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_5F2A + add sp, 8 + or ax, ax + jnz short loc_68E0 + +loc_68CD: ; CODE XREF: sub_6857+58j + push ds + mov ax, 1926h + 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_68E0: ; CODE XREF: sub_6857+3Fj sub_6857+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_6954 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_691B + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_6993 +; --------------------------------------------------------------------------- + +loc_691B: ; CODE XREF: sub_6857+B9j + xor dx, dx + jmp short loc_6933 +; --------------------------------------------------------------------------- + +loc_691F: ; CODE XREF: sub_6857+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_6933: ; CODE XREF: sub_6857+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_6942 + cmp byte ptr es:[bx], 0 + jnz short loc_691F + +loc_6942: ; CODE XREF: sub_6857+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_694E + jmp loc_688B +; --------------------------------------------------------------------------- + +loc_694E: ; CODE XREF: sub_6857+F2j + inc word ptr [bp+arg_4] + jmp loc_688B +; --------------------------------------------------------------------------- + +loc_6954: ; CODE XREF: sub_6857+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_630F + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_6993 + 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_5705 + add sp, 0Ch + +loc_6993: ; CODE XREF: sub_6857+C2j + ; sub_6857+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_6857 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:51DFp seg000:5218p + +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_69AD + jmp loc_6A84 +; --------------------------------------------------------------------------- + +loc_69AD: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_69B6 + jmp loc_6A84 +; --------------------------------------------------------------------------- + +loc_69B6: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_69C0 + jmp loc_6A84 +; --------------------------------------------------------------------------- + +loc_69C0: ; CODE XREF: _setvbuf+22j + cmp word_1F39A, 0 + jnz short loc_69D6 + cmp word ptr [bp+stream], 14A4h + jnz short loc_69D6 + mov word_1F39A, 1 + jmp short loc_69EA +; --------------------------------------------------------------------------- + +loc_69D6: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_1F398, 0 + jnz short loc_69EA + cmp word ptr [bp+stream], 1490h + jnz short loc_69EA + mov word_1F398, 1 + +loc_69EA: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_6A07 + 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_6A07: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_6A20 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + +loc_6A20: ; 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_6AB4 + cmp [bp+_size], 0 + jbe short loc_6AB4 + mov word ptr off_1EEF4+2, seg seg000 + mov word ptr off_1EEF4, 6DC2h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_6A89 + push [bp+_size] + nop + push cs + call near ptr sub_5838 + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_6A84 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_6A89 +; --------------------------------------------------------------------------- + +loc_6A84: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_6AB6 +; --------------------------------------------------------------------------- + +loc_6A89: ; 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_6AB4 + or word ptr es:[bx+2], 8 + +loc_6AB4: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_6AB6: ; 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_6857+83p sub_6857+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_6AEA + movsb + dec cx + +loc_6AEA: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_6AF1 + movsb + +loc_6AF1: ; 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_630F+10Dp + ; sub_630F+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_AF09+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_6B67: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_6B8B + scasb + jz short loc_6B67 + cmp al, ch + jb short loc_6B7C + cmp al, cl + ja short loc_6B7C + sub al, 20h ; ' ' + +loc_6B7C: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_6B87 + cmp bl, cl + ja short loc_6B87 + sub bl, 20h ; ' ' + +loc_6B87: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_6B67 + +loc_6B8B: ; 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_6BA6 + cmp ax, di + jz short loc_6BB0 + +loc_6BA6: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_6BB0: ; 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_6BB4(char *s, char) +sub_6BB4 proc far ; CODE XREF: sub_AF09+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_6BF3 +; --------------------------------------------------------------------------- + +loc_6BDC: ; CODE XREF: sub_6BB4+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_6BF2 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_6BFB +; --------------------------------------------------------------------------- + +loc_6BF2: ; CODE XREF: sub_6BB4+34j + dec cx + +loc_6BF3: ; CODE XREF: sub_6BB4+26j + or cx, cx + jnz short loc_6BDC + xor dx, dx + xor ax, ax + +loc_6BFB: ; CODE XREF: sub_6BB4+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_6BB4 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_1F090 + jb short loc_6C1D + mov ax, 6 + push ax + call __IOERROR + jmp loc_6D61 +; --------------------------------------------------------------------------- + +loc_6C1D: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_6C2B + xor ax, ax + jmp loc_6D61 +; --------------------------------------------------------------------------- + +loc_6C2B: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+1623h], 8 + jz short loc_6C4A + 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_6C4A: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+1623h], 40h + jnz short loc_6C6D + 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_6D61 +; --------------------------------------------------------------------------- + +loc_6C6D: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+1622h], 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_6D07 +; --------------------------------------------------------------------------- + +loc_6C8C: ; 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_6CA9 + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_6CA9: ; 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_6D11 + jnz short loc_6CCF + cmp dx, 80h ; '€' + jb short loc_6D11 + +loc_6CCF: ; 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_6D07 + cmp dx, 0FFFFh + jnz short loc_6CFF + mov ax, 0FFFFh + jmp short loc_6D5C +; --------------------------------------------------------------------------- + +loc_6CFF: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_6D57 +; --------------------------------------------------------------------------- + +loc_6D07: ; 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_6D11: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_6D1A + jmp loc_6C8C +; --------------------------------------------------------------------------- + +loc_6D1A: ; 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_6D5E + 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_6D5E + cmp dx, 0FFFFh + jnz short loc_6D54 + mov ax, 0FFFFh + jmp short loc_6D5C +; --------------------------------------------------------------------------- + +loc_6D54: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_6D57: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_6D5C: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_6D61 +; --------------------------------------------------------------------------- + +loc_6D5E: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_6D61: ; 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+1622h], 1 + jz short loc_6D7E + mov ax, 5 + push ax + jmp short loc_6D9F +; --------------------------------------------------------------------------- + +loc_6D7E: ; 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_6D9E + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+1622h], 1000h + pop ax + jmp short loc_6DA2 +; --------------------------------------------------------------------------- + +loc_6D9E: ; CODE XREF: __rtl_write+26j + push ax + +loc_6D9F: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_6DA2: ; 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], 1490h + jmp short loc_6DF5 +; --------------------------------------------------------------------------- + +loc_6DD9: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_6DEE + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_6DEE: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_6DF5: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_6DD9 + 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_6E22 + 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_6E40 + +loc_6E22: ; 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_6E40: ; 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_6F3B + db 4 dup(0), 3Bh, 6Fh + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 5Ch, 6Eh + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 64h, 6Eh + +; =============== 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_1D5FD+4DP ... + +var_28 = dword ptr -28h +src = byte ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 6E72h + nop + push cs + call near ptr ___InitExceptBlocks + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 6EF8h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_28+2], dx + mov word ptr [bp+var_28], ax + push dx + push ax + push ss + lea ax, [bp+src] + push ax + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+var_28] + mov ax, es:[bx+4] + mov [bp+var_2], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 6F3Bh + push ax ; int + nop + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + pop di + pop si + mov sp, bp + pop bp + retf +@xalloc@raise$qv endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+0Ah] + mov ax, es:[bx+4] + les bx, [bp+6] + mov es:[bx+4], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- +byte_6F3B db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:6E5Co + db 0Dh dup(0), 2, 0, 2, 0, 7Dh, 6Fh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0CAh, 6Fh + 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_6FC4 + 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_6FC2 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_6FC6 +; --------------------------------------------------------------------------- + +loc_6FC2: ; CODE XREF: seg000:6FB1j + jmp short loc_6FC6 +; --------------------------------------------------------------------------- + +loc_6FC4: ; CODE XREF: seg000:6F88j + xor ax, ax + +loc_6FC6: ; CODE XREF: seg000:6FC0j + ; seg000:loc_6FC2j + 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, 9Ch, 71h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 70h, 73h + 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), 2, 70h + +; =============== 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, 7010h + 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_7055 + 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_70A7 + +loc_7055: ; 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_7097 + 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_7097: ; 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_70A7: ; 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_7370 + 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), 0CDh, 70h + +; =============== 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:4EA4p seg000:4F6Cp ... + +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, 70DBh + 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_7120 + 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_7176 + +loc_7120: ; 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_7166 + 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_7166: ; 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_7176: ; 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:503Bp seg000:50EAp ... + +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_71F6 + 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_71F6 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_71F6: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_7338 + db 4 dup(0), 0FAh, 71h + dw seg seg000 + db 0E2h, 0FFh + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::raise(void) +@xmsg@raise$qv proc far + +src = byte ptr -22h +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 7202h + nop + push cs + call near ptr ___InitExceptBlocks + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 70F1h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push [bp+arg_2] + push [bp+arg_0] + push ss + lea ax, [bp+src] + push ax + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 7338h + push ax ; int + nop + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + pop di + pop si + mov sp, bp + pop bp + retf +@xmsg@raise$qv endp + +; --------------------------------------------------------------------------- + dd byte_7370 + 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), 5Bh, 72h + +; =============== 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, 7269h + 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_72A2 + cmp ax, word ptr [bp+arg_4] + jz short loc_7320 + +loc_72A2: ; 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_7310 + 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_7310: ; 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_7320: ; 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_7338 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:71FAo + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 71h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_7370 db 4, 0, 10h, 20h, 0Ah, 0, 83h, 73h ; DATA XREF: seg000:70CDo + ; seg000:725Bo + 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, 14h, 3 + dw seg seg007 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +___JumpToCatch__ proc far ; CODE XREF: __ExceptionHandler+261p + push si + push di + mov sp, bx + mov bp, cx + push dx + push ax + retf +___JumpToCatch__ endp + +; --------------------------------------------------------------------------- + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_73C9 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_73DD + mov dx, ds + mov ax, 192Eh + jmp short loc_73EA +; --------------------------------------------------------------------------- + +loc_73DD: ; CODE XREF: sub_73C9+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_73EA: ; CODE XREF: sub_73C9+12j + pop di + pop si + pop bp + retf +sub_73C9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_73EE proc far ; CODE XREF: sub_748B+69p + ; sub_748B+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_7406 + cmp ax, word ptr [bp+arg_4] + jz short loc_7482 + +loc_7406: ; CODE XREF: sub_73EE+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_747A + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_747A + 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_747A + 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_745C: ; CODE XREF: sub_73EE+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_747E + +loc_747A: ; CODE XREF: sub_73EE+26j sub_73EE+34j ... + xor ax, ax + jmp short loc_7485 +; --------------------------------------------------------------------------- + +loc_747E: ; CODE XREF: sub_73EE+8Aj + or dx, dx + jnz short loc_745C + +loc_7482: ; CODE XREF: sub_73EE+16j + mov ax, 1 + +loc_7485: ; CODE XREF: sub_73EE+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_73EE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_748B proc near ; CODE XREF: sub_748B+9Bp + ; sub_748B+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_74A6: ; CODE XREF: sub_748B+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_753A + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_7533 + cmp [bp+arg_C], 0 + jz short loc_74E2 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_74E2 + mov ax, 1 + jmp short loc_74E4 +; --------------------------------------------------------------------------- + +loc_74E2: ; CODE XREF: sub_748B+41j sub_748B+50j + xor ax, ax + +loc_74E4: ; CODE XREF: sub_748B+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_73EE + add sp, 8 + or ax, ax + jz short loc_7507 + cmp [bp+var_6], 0 + jz short loc_7507 + jmp loc_75CA +; --------------------------------------------------------------------------- + +loc_7507: ; CODE XREF: sub_748B+71j sub_748B+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_7533 + 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_748B + add sp, 0Eh + or ax, ax + jz short loc_7533 + jmp loc_75CA +; --------------------------------------------------------------------------- + +loc_7533: ; CODE XREF: sub_748B+3Bj sub_748B+84j ... + add word ptr [bp+var_4], 8 + jmp loc_74A6 +; --------------------------------------------------------------------------- + +loc_753A: ; CODE XREF: sub_748B+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_754D: ; CODE XREF: sub_748B+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_75D6 + cmp [bp+arg_C], 0 + jz short loc_757F + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_757F + mov ax, 1 + jmp short loc_7581 +; --------------------------------------------------------------------------- + +loc_757F: ; CODE XREF: sub_748B+DEj sub_748B+EDj + xor ax, ax + +loc_7581: ; CODE XREF: sub_748B+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_73EE + add sp, 8 + or ax, ax + jz short loc_75A1 + cmp [bp+var_6], 0 + jnz short loc_75CA + +loc_75A1: ; CODE XREF: sub_748B+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_75CF + 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_748B + add sp, 0Eh + or ax, ax + jz short loc_75CF + +loc_75CA: ; CODE XREF: sub_748B+79j sub_748B+A5j ... + mov ax, 1 + jmp short loc_75D8 +; --------------------------------------------------------------------------- + +loc_75CF: ; CODE XREF: sub_748B+11Ej + ; sub_748B+13Dj + add word ptr [bp+var_4], 8 + jmp loc_754D +; --------------------------------------------------------------------------- + +loc_75D6: ; CODE XREF: sub_748B+D8j + xor ax, ax + +loc_75D8: ; CODE XREF: sub_748B+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_748B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_75DE proc near ; CODE XREF: sub_77E7+1Dp sub_77E7+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_75E9: ; CODE XREF: sub_75DE+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_75FC + cmp ax, word ptr [bp+arg_4] + jnz short loc_75FC + jmp loc_7711 +; --------------------------------------------------------------------------- + +loc_75FC: ; CODE XREF: sub_75DE+14j sub_75DE+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_768C + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_762F + jmp loc_76D2 +; --------------------------------------------------------------------------- + +loc_762F: ; CODE XREF: sub_75DE+4Cj + or cx, cx + jz short loc_7636 + jmp loc_774A +; --------------------------------------------------------------------------- + +loc_7636: ; CODE XREF: sub_75DE+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_766C + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_765A + jmp loc_774A +; --------------------------------------------------------------------------- + +loc_765A: ; CODE XREF: sub_75DE+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_76D2 + +loc_766C: ; CODE XREF: sub_75DE+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_7680 + jmp loc_774A +; --------------------------------------------------------------------------- + +loc_7680: ; CODE XREF: sub_75DE+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_7689 + jmp loc_774A +; --------------------------------------------------------------------------- + +loc_7689: ; CODE XREF: sub_75DE+A6j + jmp loc_7711 +; --------------------------------------------------------------------------- + +loc_768C: ; CODE XREF: sub_75DE+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_76FA + 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_76B1 + cmp ax, es:[bx+0Ah] + jz short loc_76D2 + +loc_76B1: ; CODE XREF: sub_75DE+CBj + or cx, cx + jz short loc_76B8 + jmp loc_774A +; --------------------------------------------------------------------------- + +loc_76B8: ; CODE XREF: sub_75DE+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_774A + +loc_76D2: ; CODE XREF: sub_75DE+4Ej sub_75DE+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_75E9 +; --------------------------------------------------------------------------- + +loc_76FA: ; CODE XREF: sub_75DE+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_73EE + add sp, 8 + or ax, ax + jz short loc_7716 + +loc_7711: ; CODE XREF: sub_75DE+1Bj + ; sub_75DE:loc_7689j + mov ax, 1 + jmp short loc_774C +; --------------------------------------------------------------------------- + +loc_7716: ; CODE XREF: sub_75DE+131j + test byte ptr [bp+var_2], 2 + jz short loc_774A + test byte ptr [bp+var_4], 1 + jz short loc_774A + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_774A + 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_748B + add sp, 0Eh + jmp short loc_774C +; --------------------------------------------------------------------------- + +loc_774A: ; CODE XREF: sub_75DE+55j sub_75DE+79j ... + xor ax, ax + +loc_774C: ; CODE XREF: sub_75DE+136j + ; sub_75DE+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_75DE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7752 proc far ; CODE XREF: sub_7F11+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_5838 + 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_77A2 + cmp [bp+arg_0], 80h ; '€' + ja short loc_7784 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_7789 + +loc_7784: ; CODE XREF: sub_7752+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_7789: ; CODE XREF: sub_7752+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_77A8 +; --------------------------------------------------------------------------- + +loc_77A2: ; CODE XREF: sub_7752+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_77A8: ; CODE XREF: sub_7752+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_7752 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_77D6 + cmp ax, [bp+6] + jnz short loc_77D6 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_77E3 +; --------------------------------------------------------------------------- + +loc_77D6: ; CODE XREF: seg000:77C3j seg000:77C8j + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + +loc_77E3: ; CODE XREF: seg000:77D4j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_77E7 proc near ; CODE XREF: sub_9078+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_75DE + add sp, 0Eh + or ax, ax + jz short loc_7811 + jmp loc_78AD +; --------------------------------------------------------------------------- + +loc_7811: ; CODE XREF: sub_77E7+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_78A1 + 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_75DE + add sp, 0Eh + or ax, ax + jnz short loc_78AD + 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_78E4 + 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_75DE + add sp, 0Eh + or ax, ax + jnz short loc_78AD + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_78E4 + +loc_78A1: ; CODE XREF: sub_77E7+42j + test byte ptr [bp+var_4], 10h + jz short loc_78E4 + test [bp+arg_C], 1 + jz short loc_78B2 + +loc_78AD: ; CODE XREF: sub_77E7+27j sub_77E7+67j ... + mov ax, 1 + jmp short loc_78E6 +; --------------------------------------------------------------------------- + +loc_78B2: ; CODE XREF: sub_77E7+C4j + test byte ptr [bp+var_2], 10h + jz short loc_78E4 + test byte ptr [bp+var_2+1], 20h + jz short loc_78C4 + test byte ptr [bp+var_4+1], 20h + jz short loc_78E4 + +loc_78C4: ; CODE XREF: sub_77E7+D5j + test byte ptr [bp+var_4], 40h + jz short loc_78E4 + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_78E0 + mov ax, 1 + jmp short loc_78E2 +; --------------------------------------------------------------------------- + +loc_78E0: ; CODE XREF: sub_77E7+F2j + xor ax, ax + +loc_78E2: ; CODE XREF: sub_77E7+F7j + jmp short loc_78E6 +; --------------------------------------------------------------------------- + +loc_78E4: ; CODE XREF: sub_77E7+88j sub_77E7+B8j ... + xor ax, ax + +loc_78E6: ; CODE XREF: sub_77E7+C9j + ; sub_77E7:loc_78E2j + pop di + pop si + mov sp, bp + pop bp + retn +sub_77E7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_78EC proc near ; CODE XREF: sub_7F11+263p + ; sub_8BBD+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_7917 + or [bp+var_4], 2 + +loc_7917: ; CODE XREF: sub_78EC+25j + test byte ptr [bp+arg_C], 2 + jz short loc_792B + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_792B + or [bp+var_4], 20h + +loc_792B: ; CODE XREF: sub_78EC+2Fj sub_78EC+39j + test byte ptr [bp+arg_C], 20h + jz short loc_7935 + or [bp+var_4], 8 + +loc_7935: ; CODE XREF: sub_78EC+43j + test byte ptr [bp+arg_C], 80h + jz short loc_793F + or [bp+var_4], 10h + +loc_793F: ; CODE XREF: sub_78EC+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_7948 + jmp loc_7ACD +; --------------------------------------------------------------------------- + +loc_7948: ; CODE XREF: sub_78EC+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_7953 + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7953: ; CODE XREF: sub_78EC+62j + add bx, bx + jmp cs:off_7C0A[bx] + +loc_795A: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:off_7C0Ao + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_796C: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_7BD3 +; --------------------------------------------------------------------------- + +loc_797E: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_79A4 +; --------------------------------------------------------------------------- + +loc_7992: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_79A4: ; CODE XREF: sub_78EC+A4j + add sp, 0Ah + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_79AA: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_79B9: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_79C8: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_79EE +; --------------------------------------------------------------------------- + +loc_79DC: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_79EE: ; CODE XREF: sub_78EC+EEj + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_79F1: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7A01: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_7A09: ; CODE XREF: sub_78EC+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7A11: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_7A1F: ; CODE XREF: sub_78EC+263j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7A35 +; --------------------------------------------------------------------------- + +loc_7A24: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_7A32: ; CODE XREF: sub_78EC+272j + call [bp+arg_8] + +loc_7A35: ; CODE XREF: sub_78EC+136j + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7A38: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7A52 +; --------------------------------------------------------------------------- + +loc_7A46: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_7A4F: ; CODE XREF: sub_78EC+205j + call [bp+arg_8] + +loc_7A52: ; CODE XREF: sub_78EC+158j + ; sub_78EC+1FCj + pop cx + pop cx + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7A57: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + pop ds + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7A6E: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_7BD3 +; --------------------------------------------------------------------------- + +loc_7A85: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_7A8E: ; CODE XREF: sub_78EC+234j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7A9F +; --------------------------------------------------------------------------- + +loc_7A93: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_7A9C: ; CODE XREF: sub_78EC+23Dj + call [bp+arg_8] + +loc_7A9F: ; CODE XREF: sub_78EC+1A5j + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7AA2: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7AB6: ; CODE XREF: sub_78EC+69j + ; sub_78EC+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_7BD3 +; --------------------------------------------------------------------------- + +loc_7ACA: ; CODE XREF: sub_78EC+69j + ; sub_78EC+1EEj + ; DATA XREF: ... + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7ACD: ; CODE XREF: sub_78EC+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_7AD8 + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7AD8: ; CODE XREF: sub_78EC+1E7j + add bx, bx + jmp cs:off_7BDA[bx] + +loc_7ADF: ; DATA XREF: seg000:off_7BDAo + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7A52 +; --------------------------------------------------------------------------- + +loc_7AEB: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BDCo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7A4F +; --------------------------------------------------------------------------- + +loc_7AF4: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BDEo + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7B14 +; --------------------------------------------------------------------------- + +loc_7B05: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BE0o + 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_7B14: ; CODE XREF: sub_78EC+217j + add sp, 8 + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7B1A: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BE2o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7A8E +; --------------------------------------------------------------------------- + +loc_7B23: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BE4o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7A9C +; --------------------------------------------------------------------------- + +loc_7B2C: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BEAo + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7B3A: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BECo + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_7A09 +; --------------------------------------------------------------------------- + +loc_7B43: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BE6o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_7A1F +; --------------------------------------------------------------------------- + +loc_7B52: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BE8o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_7A32 +; --------------------------------------------------------------------------- + +loc_7B61: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BFAo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7B6D: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BFCo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7B79: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7BFEo + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + pop cx + pop ds + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7B8B: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7C00o + 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_7BD3 +; --------------------------------------------------------------------------- + +loc_7B9D: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7C02o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7BA8: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7C04o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7BB3: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7C06o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp short loc_7BD3 +; --------------------------------------------------------------------------- + +loc_7BC3: ; CODE XREF: sub_78EC+1EEj + ; DATA XREF: seg000:7C08o + 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_7BD3: ; CODE XREF: sub_78EC+64j sub_78EC+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_78EC endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7BDA dw offset loc_7ADF ; DATA XREF: sub_78EC+1EEr + dw offset loc_7AEB + dw offset loc_7AF4 + dw offset loc_7B05 + dw offset loc_7B1A + dw offset loc_7B23 + dw offset loc_7B43 + dw offset loc_7B52 + dw offset loc_7B2C + dw offset loc_7B3A + dw offset loc_7B43 + dw offset loc_7B52 + dw offset loc_7BD3 + dw offset loc_7BD3 + dw offset loc_7BD3 + dw offset loc_7BD3 + dw offset loc_7B61 + dw offset loc_7B6D + dw offset loc_7B79 + dw offset loc_7B8B + dw offset loc_7B9D + dw offset loc_7BA8 + dw offset loc_7BB3 + dw offset loc_7BC3 +off_7C0A dw offset loc_795A ; DATA XREF: sub_78EC+69r + dw offset loc_796C + dw offset loc_797E + dw offset loc_7992 + dw offset loc_79AA + dw offset loc_79B9 + dw offset loc_79C8 + dw offset loc_79DC + dw offset loc_79F1 + dw offset loc_7A01 + dw offset loc_7A11 + dw offset loc_7A24 + dw offset loc_7ACA + dw offset loc_7ACA + dw offset loc_7ACA + dw offset loc_7ACA + dw offset loc_7A38 + dw offset loc_7A46 + dw offset loc_7A57 + dw offset loc_7A6E + dw offset loc_7A85 + dw offset loc_7A93 + dw offset loc_7AA2 + dw offset loc_7AB6 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7C3A proc near ; CODE XREF: sub_7F11+2BCp + ; sub_88C9+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_7C4D + mov ax, 2 + jmp short loc_7C4F +; --------------------------------------------------------------------------- + +loc_7C4D: ; CODE XREF: sub_7C3A+Cj + xor ax, ax + +loc_7C4F: ; CODE XREF: sub_7C3A+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_7C75 + or [bp+var_6], 2 + +loc_7C75: ; CODE XREF: sub_7C3A+35j + test byte ptr [bp+arg_8], 2 + jz short loc_7C89 + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_7C89 + or [bp+var_6], 20h + +loc_7C89: ; CODE XREF: sub_7C3A+3Fj sub_7C3A+49j + test byte ptr [bp+arg_8], 20h + jz short loc_7C93 + or [bp+var_6], 8 + +loc_7C93: ; CODE XREF: sub_7C3A+53j + test byte ptr [bp+arg_8], 80h + jz short loc_7C9D + or [bp+var_6], 10h + +loc_7C9D: ; CODE XREF: sub_7C3A+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_7CA8 + jmp loc_7DBB +; --------------------------------------------------------------------------- + +loc_7CA8: ; CODE XREF: sub_7C3A+69j + add bx, bx + jmp cs:off_7DC2[bx] + +loc_7CAF: ; DATA XREF: seg000:off_7DC2o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_7DBB +; --------------------------------------------------------------------------- + +loc_7CBD: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DC4o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_7DBB +; --------------------------------------------------------------------------- + +loc_7CCB: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DC6o + 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_7DBB +; --------------------------------------------------------------------------- + +loc_7CDD: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DC8o + 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_7DBB +; --------------------------------------------------------------------------- + +loc_7CEF: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DCAo + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7D55 +; --------------------------------------------------------------------------- + +loc_7CFA: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DCCo + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_7D52 +; --------------------------------------------------------------------------- + +loc_7D02: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DCEo + 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_7D1C +; --------------------------------------------------------------------------- + +loc_7D10: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DD0o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_7D1C: ; CODE XREF: sub_7C3A+D4j + jmp loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D1F: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DD2o + 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_7DBB +; --------------------------------------------------------------------------- + +loc_7D2D: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DD4o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D3B: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DD6o + 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_7D55 +; --------------------------------------------------------------------------- + +loc_7D49: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DD8o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_7D52: ; CODE XREF: sub_7C3A+C6j + call [bp+arg_4] + +loc_7D55: ; CODE XREF: sub_7C3A+BEj + ; sub_7C3A+10Dj + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D57: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DE2o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D63: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DE4o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D6F: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DE6o + 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_7DBB +; --------------------------------------------------------------------------- + +loc_7D7D: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DE8o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D8B: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DEAo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7D96: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DECo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7DA1: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DEEo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_7DBB +; --------------------------------------------------------------------------- + +loc_7DAE: ; CODE XREF: sub_7C3A+70j + ; DATA XREF: seg000:7DF0o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_7DBB: ; CODE XREF: sub_7C3A+6Bj sub_7C3A+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_7C3A endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7DC2 dw offset loc_7CAF ; DATA XREF: sub_7C3A+70r + dw offset loc_7CBD + dw offset loc_7CCB + dw offset loc_7CDD + dw offset loc_7CEF + dw offset loc_7CFA + dw offset loc_7D02 + dw offset loc_7D10 + dw offset loc_7D1F + dw offset loc_7D2D + dw offset loc_7D3B + dw offset loc_7D49 + dw offset loc_7DBB + dw offset loc_7DBB + dw offset loc_7DBB + dw offset loc_7DBB + dw offset loc_7D57 + dw offset loc_7D63 + dw offset loc_7D6F + dw offset loc_7D7D + dw offset loc_7D8B + dw offset loc_7D96 + dw offset loc_7DA1 + dw offset loc_7DAE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7DF2 proc near ; CODE XREF: sub_9A39+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_7E1D + or [bp+var_4], 2 + +loc_7E1D: ; CODE XREF: sub_7DF2+25j + test byte ptr [bp+arg_8], 2 + jz short loc_7E27 + or [bp+var_4], 4 + +loc_7E27: ; CODE XREF: sub_7DF2+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_7E31 + or [bp+var_4], 8 + +loc_7E31: ; CODE XREF: sub_7DF2+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_7EA4 + add bx, bx + jmp cs:off_7EAB[bx] + +loc_7E40: ; DATA XREF: seg000:off_7EABo + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E49: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EADo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E52: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EAFo + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7E66 +; --------------------------------------------------------------------------- + +loc_7E5D: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EB1o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_7E66: ; CODE XREF: sub_7DF2+69j + pop cx + pop cx + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E6A: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EB3o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7E78 +; --------------------------------------------------------------------------- + +loc_7E72: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EB5o + push [bp+arg_0] + call [bp+arg_4] + +loc_7E78: ; CODE XREF: sub_7DF2+7Ej + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E7A: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EBBo + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E84: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EBDo + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_7EA4 +; --------------------------------------------------------------------------- + +loc_7E8E: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EB7o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7EA2 +; --------------------------------------------------------------------------- + +loc_7E99: ; CODE XREF: sub_7DF2+49j + ; DATA XREF: seg000:7EB9o ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_7EA2: ; CODE XREF: sub_7DF2+A5j + jmp short $+2 + +loc_7EA4: ; CODE XREF: sub_7DF2+45j sub_7DF2+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_7DF2 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7EAB dw offset loc_7E40 ; DATA XREF: sub_7DF2+49r + dw offset loc_7E49 + dw offset loc_7E52 + dw offset loc_7E5D + dw offset loc_7E6A + dw offset loc_7E72 + dw offset loc_7E8E + dw offset loc_7E99 + dw offset loc_7E7A + dw offset loc_7E84 + dw offset loc_7E8E + dw offset loc_7E99 + db 4 dup(0), 2 dup(81h) + dw seg seg000 + db 14h dup(0), 0DAh, 81h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0C3h, 7Eh + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 0DBh, 7Eh + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_7F11(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_7F11 proc far ; CODE XREF: _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *)+4Dp + ; _ReThrowException(uint,uchar *)+9Ep + +var_48 = word ptr -48h +var_46 = word ptr -46h +var_44 = word ptr -44h +var_42 = word ptr -42h +var_40 = word ptr -40h +var_3E = word ptr -3Eh +var_3C = word ptr -3Ch +var_3A = word ptr -3Ah +var_38 = dword ptr -38h +var_34 = dword ptr -34h +var_30 = dword ptr -30h +var_2C = word ptr -2Ch +var_2A = word ptr -2Ah +n = word ptr -28h +var_26 = dword ptr -26h +var_22 = dword ptr -22h +var_1E = word ptr -1Eh +var_12 = word ptr -12h +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh +arg_1A = word ptr 20h +arg_1C = word ptr 22h +arg_1E = word ptr 24h + + push bp + mov bp, sp + sub sp, 48h + push si + push di + mov ax, seg seg000 + mov bx, 7EF3h + nop + push cs + call near ptr ___InitExceptBlocks + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_22+2], dx + mov word ptr [bp+var_22], ax + les bx, ss:16h + mov word ptr es:[bx+6], ds + mov dx, ss:18h + mov ax, ss:16h + add ax, 28h ; '(' + les bx, ss:16h + mov es:[bx+1Eh], dx + mov es:[bx+1Ch], ax + les bx, [bp+var_22] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + add ax, es:[bx+4] + mov word ptr [bp+var_34+2], dx + mov word ptr [bp+var_34], ax + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov word ptr [bp+var_38+2], dx + mov word ptr [bp+var_38], ax + jmp short loc_7F9D +; --------------------------------------------------------------------------- + +loc_7F7A: ; CODE XREF: sub_7F11+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_7F9A + 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_7F9A: ; CODE XREF: sub_7F11+78j + inc word ptr [bp+var_34] + +loc_7F9D: ; CODE XREF: sub_7F11+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_7F7A + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + les bx, [bp+var_22] + mov ax, es:[bx] + mov [bp+n], ax + les bx, [bp+var_22] + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_7FFA + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_7FFC +; --------------------------------------------------------------------------- + +loc_7FFA: ; CODE XREF: sub_7F11+DEj + xor ax, ax + +loc_7FFC: ; CODE XREF: sub_7F11+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_8016 + 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_8016: ; CODE XREF: sub_7F11+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_7752 + pop cx + mov word ptr [bp+var_30+2], dx + mov word ptr [bp+var_30], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + mov es:[bx+0Ch], ax + les bx, [bp+var_30] + mov ax, [bp+n] + mov es:[bx+0Eh], ax + les bx, [bp+var_30] + mov ax, [bp+var_2A] + mov es:[bx+14h], ax + les bx, [bp+var_30] + mov ax, [bp+var_2C] + mov es:[bx+16h], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_26+2] + mov ax, word ptr [bp+var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, [bp+var_30] + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, [bp+var_30] + mov word ptr es:[bx+24h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+18h], ds + les bx, [bp+var_30] + mov word ptr es:[bx+1Ch], seg seg000 + mov word ptr es:[bx+1Ah], 77AEh + les bx, [bp+var_30] + mov ax, [bp+arg_14] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_10] + mov es:[bx+22h], ax + les bx, [bp+var_30] + mov byte ptr es:[bx+39h], 0 + les bx, [bp+var_30] + mov byte ptr es:[bx+38h], 1 + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_81A0 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+var_3A], dx + mov [bp+var_3C], ax + mov [bp+var_12], 6 + push [bp+arg_10] + push [bp+arg_E] + push [bp+arg_C] + push word ptr [bp+src+2] + push word ptr [bp+src] + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax + call sub_78EC + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_818B +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_818B: ; CODE XREF: sub_7F11+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_81A0: ; CODE XREF: sub_7F11+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_81E4 + test byte ptr [bp+var_2C], 2 + jz short loc_81E4 + 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_7C3A + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_81E4 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_81E4: ; CODE XREF: sub_7F11+293j + ; sub_7F11+299j ... + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+var_46], dx + mov [bp+var_48], ax + mov dx, [bp+arg_1C] + mov ax, [bp+arg_1A] + mov [bp+var_42], dx + mov [bp+var_44], ax + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov [bp+var_3E], dx + mov [bp+var_40], ax + push ss + lea ax, [bp+var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nop + push cs + call near ptr _RaiseException + add sp, 10h + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_7F11 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:4ECEp + ; xalloc::raise(void)+6Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], bp + mov bx, [bp+var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + xor ax, ax + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_18] ; int + push [bp+arg_16] ; int + push [bp+arg_14] ; int + push [bp+arg_12] ; int + push [bp+arg_10] ; int + push [bp+arg_E] ; int + push [bp+arg_C] ; int + push [bp+arg_A] ; int + push [bp+arg_8] ; int + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push [bp+arg_2] ; int + push [bp+arg_0] ; int + push cs + call near ptr sub_7F11 + 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_82D4 + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_82D4: ; CODE XREF: _ReThrowException(uint,uchar *)+34j + mov ax, 1 + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_4] ; int + push [bp+arg_2] ; int + push [bp+arg_0] ; int + les bx, [bp+var_8] + push word ptr es:[bx+0Ch] ; int + les bx, [bp+var_8] + push word ptr es:[bx+22h] ; int + les bx, [bp+var_8] + push word ptr es:[bx+20h] ; int + push word ptr es:[bx+1Eh] ; int + les bx, [bp+var_8] + push word ptr es:[bx+0Ah] ; int + push word ptr es:[bx+8] ; int + les bx, [bp+var_8] + cmp byte ptr es:[bx+38h], 0 + jz short loc_8320 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_8329 +; --------------------------------------------------------------------------- + +loc_8320: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_8329: ; CODE XREF: _ReThrowException(uint,uchar *)+85j + push dx + push ax ; src + les bx, [bp+var_8] + push word ptr es:[bx+6] ; int + push word ptr es:[bx+4] ; int + push cs + call near ptr sub_7F11 + 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_8343 proc far ; CODE XREF: sub_8348+22p + push si + push di + pop di + pop si + retf +sub_8343 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8348 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_8362 + inc [bp+var_4] + +loc_8362: ; CODE XREF: sub_8348+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_8343 + jmp short loc_83B0 +; --------------------------------------------------------------------------- + +loc_836F: ; CODE XREF: sub_8348+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_839A + mov ax, dx + jmp short loc_83CE +; --------------------------------------------------------------------------- + +loc_839A: ; CODE XREF: sub_8348+4Cj + cmp [bp+var_4], 0 + jz short loc_83A7 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_83A7: ; CODE XREF: sub_8348+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_83B0: ; CODE XREF: sub_8348+25j + cmp [bp+var_2], 0FFFFh + jz short loc_83BE + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_836F + +loc_83BE: ; CODE XREF: sub_8348+6Cj + cmp [bp+var_4], 0 + jz short loc_83CB + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_83CB: ; CODE XREF: sub_8348+7Aj + mov ax, 1 + +loc_83CE: ; CODE XREF: sub_8348+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_8348 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_83FF + 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_83FF: ; 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_8348 + 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_841B proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_841B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_7F11+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 8892 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_841B + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_1F35A, 3 + jnb short loc_8449 + jmp loc_84FF +; --------------------------------------------------------------------------- + +loc_8449: ; 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_8548 +; --------------------------------------------------------------------------- + +loc_84FF: ; 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_8548: ; 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_8579 + cmp [bp+arg_0], 0FACEh + jnz short loc_8579 + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_8587 +; --------------------------------------------------------------------------- + +loc_8579: ; 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_8587: ; 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_8658 + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_8658: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_8670 + ja short loc_8666 + cmp [bp+arg_8], 0Fh + jbe short loc_8670 + +loc_8666: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_8670: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_86A6 +; --------------------------------------------------------------------------- + +loc_867D: ; 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_86A6: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_867D + jnz short loc_86B7 + cmp ax, [bp+arg_8] + jb short loc_867D + +loc_86B7: ; 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_8348 + add sp, 8 + or ax, ax + jnz short loc_8702 + test byte ptr [bp+arg_4], 1 + jz short loc_8722 + 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_86B7 +; --------------------------------------------------------------------------- + +loc_8702: ; 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_8348 + add sp, 8 + or ax, ax + jz short loc_8722 + jmp loc_888D +; --------------------------------------------------------------------------- + +loc_8722: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_1F35A, 3 + jnb short loc_872C + jmp loc_880C +; --------------------------------------------------------------------------- + +loc_872C: ; 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_8892 +; --------------------------------------------------------------------------- + +loc_880C: ; 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_8892 +; --------------------------------------------------------------------------- + +loc_888D: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_8892: ; 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), 1, 89h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Fh, 88h + 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_88C9 proc near ; CODE XREF: sub_8919+58p sub_8919+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, 88B7h + 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_7C3A + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_890B +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_890B: ; CODE XREF: sub_88C9+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_88C9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8919 proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_8E63+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_8994 + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_898C + 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_88C9 + 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_898C: ; CODE XREF: sub_8919+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_8994: ; CODE XREF: sub_8919+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_89EB + 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_89E3 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_89E3 + 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_88C9 + add sp, 0Ah + +loc_89E3: ; CODE XREF: sub_8919+9Ej sub_8919+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_89EB: ; CODE XREF: sub_8919+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8919 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_7F11+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_8919 + 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_8A6E proc near ; CODE XREF: sub_8A6E+A0p sub_8B3A+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_8A76: ; CODE XREF: sub_8A6E+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_8A93 + xor ax, ax + jmp loc_8B34 +; --------------------------------------------------------------------------- + +loc_8A93: ; CODE XREF: sub_8A6E+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_8ABF + 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_8ABF: ; CODE XREF: sub_8A6E+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_73EE + add sp, 8 + or ax, ax + jnz short loc_8B18 + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_8B2D + 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_8B2D + 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_8A6E + add sp, 0Ch + or ax, ax + jz short loc_8B2D + +loc_8B18: ; CODE XREF: sub_8A6E+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_8B34 +; --------------------------------------------------------------------------- + +loc_8B2D: ; CODE XREF: sub_8A6E+70j sub_8A6E+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_8A76 +; --------------------------------------------------------------------------- + +loc_8B34: ; CODE XREF: sub_8A6E+22j sub_8A6E+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_8A6E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8B3A proc far ; CODE XREF: sub_8BBD+159p + ; sub_8BBD+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_8BAB + 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_8A6E + add sp, 0Ch + or ax, ax + jnz short loc_8BAB + 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_8A6E + add sp, 0Ch + or ax, ax + jz short loc_8BB3 + +loc_8BAB: ; CODE XREF: sub_8B3A+Ej sub_8B3A+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_8BB7 +; --------------------------------------------------------------------------- + +loc_8BB3: ; CODE XREF: sub_8B3A+6Fj + xor dx, dx + xor ax, ax + +loc_8BB7: ; CODE XREF: sub_8B3A+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_8B3A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8BBD 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_8BEC + jmp loc_8E5D +; --------------------------------------------------------------------------- + +loc_8BEC: ; CODE XREF: sub_8BBD+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_8BF9 + jmp loc_8E5D +; --------------------------------------------------------------------------- + +loc_8BF9: ; CODE XREF: sub_8BBD+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_8C6D + 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_8C6D: ; CODE XREF: sub_8BBD+96j + test cl, 10h + jz short loc_8C95 + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_8C95 + 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_8DC0 +; --------------------------------------------------------------------------- + +loc_8C95: ; CODE XREF: sub_8BBD+B3j sub_8BBD+BDj + test dl, 1 + jnz short loc_8C9D + jmp loc_8D41 +; --------------------------------------------------------------------------- + +loc_8C9D: ; CODE XREF: sub_8BBD+DBj + test cl, 30h + jnz short loc_8CA5 + jmp loc_8D41 +; --------------------------------------------------------------------------- + +loc_8CA5: ; CODE XREF: sub_8BBD+E3j + test cl, 20h + jz short loc_8CAC + jmp short loc_8CCF +; --------------------------------------------------------------------------- + +loc_8CAC: ; CODE XREF: sub_8BBD+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_8CD6 + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_8CCF: ; CODE XREF: sub_8BBD+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_8CD6: ; CODE XREF: sub_8BBD+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_73EE + add sp, 8 + or ax, ax + jnz short loc_8D37 + 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_8B3A + 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_8D32 + cmp ax, [bp+var_18] + jz short loc_8D37 + +loc_8D32: ; CODE XREF: sub_8BBD+16Ej + mov [bp+var_14], 1 + +loc_8D37: ; CODE XREF: sub_8BBD+133j + ; sub_8BBD+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_8E0B +; --------------------------------------------------------------------------- + +loc_8D41: ; CODE XREF: sub_8BBD+DDj sub_8BBD+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_8DC7 + 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_73EE + add sp, 8 + or ax, ax + jnz short loc_8D90 + 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_8B3A + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_8D90: ; CODE XREF: sub_8BBD+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_8E0E + 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_78EC + add sp, 0Eh + +loc_8DC0: ; CODE XREF: sub_8BBD+D5j + ; sub_8BBD+227j + mov [bp+var_14], 1 + jmp short loc_8E27 +; --------------------------------------------------------------------------- + +loc_8DC7: ; CODE XREF: sub_8BBD+18Cj + test cl, 20h + jz short loc_8DE6 + 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_8DC0 +; --------------------------------------------------------------------------- + +loc_8DE6: ; CODE XREF: sub_8BBD+20Dj + test cl, 10h + jz short loc_8E0E + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_8E0E + 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_8E0B: ; CODE XREF: sub_8BBD+181j + push ax + jmp short loc_8E17 +; --------------------------------------------------------------------------- + +loc_8E0E: ; CODE XREF: sub_8BBD+1DBj + ; sub_8BBD+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_8E17: ; CODE XREF: sub_8BBD+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_8E27: ; CODE XREF: sub_8BBD+208j + cmp [bp+var_14], 0 + jnz short loc_8E5D + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_8E55 + 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_88C9 + add sp, 0Ah + +loc_8E55: ; CODE XREF: sub_8BBD+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_8E5D: ; CODE XREF: sub_8BBD+2Cj sub_8BBD+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_8BBD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8E63 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_9008 +; --------------------------------------------------------------------------- + +loc_8EBB: ; CODE XREF: sub_8E63+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_8EF6 + jmp loc_9005 +; --------------------------------------------------------------------------- + +loc_8EF6: ; CODE XREF: sub_8E63+8Ej + add bx, bx + jmp cs:off_9022[bx] + +loc_8EFD: ; DATA XREF: seg000:off_9022o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_26E20+2, dx + mov word ptr dword_26E20, 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_26E20 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_9005 +; --------------------------------------------------------------------------- + +loc_8F38: ; CODE XREF: sub_8E63+95j + ; DATA XREF: seg000:902Ao + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_8F67 +; --------------------------------------------------------------------------- + +loc_8F47: ; CODE XREF: sub_8E63+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_8F61 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_8F61 + jmp short loc_8F81 +; --------------------------------------------------------------------------- + +loc_8F61: ; CODE XREF: sub_8E63+EEj sub_8E63+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_8F67: ; CODE XREF: sub_8E63+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_8F47 + +loc_8F81: ; CODE XREF: sub_8E63+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_8919 + 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_9005 +; --------------------------------------------------------------------------- + +loc_8FBA: ; CODE XREF: sub_8E63+95j + ; DATA XREF: seg000:902Co + 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_9A39 + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_9005: ; CODE XREF: sub_8E63+90j sub_8E63+95j ... + mov ax, [bp+var_8] + +loc_9008: ; CODE XREF: sub_8E63+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_901C + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_901C + jmp loc_8EBB +; --------------------------------------------------------------------------- + +loc_901C: ; CODE XREF: sub_8E63+1ACj + ; sub_8E63+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8E63 endp + +; --------------------------------------------------------------------------- +off_9022 dw offset loc_8EFD ; DATA XREF: sub_8E63+95r + dw offset loc_9005 + dw offset loc_9005 + dw offset loc_9005 + dw offset loc_8F38 + dw offset loc_8FBA + +; =============== 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_8E63 + 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_8E63 + 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_9078 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_90E6 +; --------------------------------------------------------------------------- + +loc_9091: ; CODE XREF: sub_9078+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_90DA + 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_77E7 + add sp, 10h + or ax, ax + jz short loc_90E2 + +loc_90DA: ; CODE XREF: sub_9078+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_90F6 +; --------------------------------------------------------------------------- + +loc_90E2: ; CODE XREF: sub_9078+60j + add word ptr [bp+var_4], 10h + +loc_90E6: ; CODE XREF: sub_9078+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_9091 + xor dx, dx + xor ax, ax + +loc_90F6: ; CODE XREF: sub_9078+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_9078 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_9190 + jmp loc_9238 +; --------------------------------------------------------------------------- + +loc_9190: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_8E63 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_91A9 + jmp loc_946B +; --------------------------------------------------------------------------- + +loc_91A9: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_91B3 + jmp loc_946B +; --------------------------------------------------------------------------- + +loc_91B3: ; 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_91CE + jmp loc_946B +; --------------------------------------------------------------------------- + +loc_91CE: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_920C +; --------------------------------------------------------------------------- + +loc_91D0: ; 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_77E7 + add sp, 10h + or ax, ax + jz short loc_9208 + jmp loc_946B +; --------------------------------------------------------------------------- + +loc_9208: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_920C: ; CODE XREF: __ExceptionHandler:loc_91CEj + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_91D0 + 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_946B +; --------------------------------------------------------------------------- + +loc_9238: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_945F +; --------------------------------------------------------------------------- + +loc_9242: ; 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_9273 + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_9273: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_9474[bx] + +loc_927A: ; DATA XREF: seg000:947Ao + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_9288 + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_9288: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_9292 + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_9292: ; 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_9078 + 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_92CC + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_92CC: ; 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_9300: ; 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_8E63 + 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_9352 + 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_8BBD + add sp, 10h + +loc_9352: ; 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_945C +; --------------------------------------------------------------------------- + +loc_936B: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:9476o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_9380 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_9380 + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_9380: ; 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_26E24+2, dx + mov word ptr dword_26E24, 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_26E24 + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_9417 +; --------------------------------------------------------------------------- + +loc_93E2: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:9478o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_93F6 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_93F6 + jmp short loc_945C +; --------------------------------------------------------------------------- + +loc_93F6: ; 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_9417: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_9435 + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_9431 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_9431: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_946E +; --------------------------------------------------------------------------- + +loc_9435: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_943D + jmp short loc_945C +; --------------------------------------------------------------------------- + +loc_943D: ; 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_9300 +; --------------------------------------------------------------------------- + +loc_945C: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_945F: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_946B + jmp loc_9242 +; --------------------------------------------------------------------------- + +loc_946B: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_946E: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_9474 dw offset loc_945C ; DATA XREF: __ExceptionHandler+171r + dw offset loc_936B + dw offset loc_93E2 + dw offset loc_927A + dw offset loc_945C + dw offset loc_945C + db 4 dup(0), 13h, 95h + dw seg seg000 + db 14h dup(0), 23h, 95h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 98h, 94h + dw seg seg000 + dw 0 + db 4, 0, 6, 0, 3, 0, 80h, 94h + 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_94CE proc far ; CODE XREF: sub_95BB+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, 94B0h + 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_7C3A + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_951C +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_951C: ; CODE XREF: sub_94CE+43j + mov [bp+var_12], 0 + jmp short loc_952C +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_952C: ; CODE XREF: sub_94CE+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_94CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_953A proc far ; CODE XREF: sub_95BB+DCp + ; sub_95BB+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_95A9 +; --------------------------------------------------------------------------- + +loc_9547: ; CODE XREF: sub_953A+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_956F + 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_956F: ; CODE XREF: sub_953A+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_95A9 + 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_95BB + add sp, 10h + xor cx, cx + +loc_95A9: ; CODE XREF: sub_953A+Bj sub_953A+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_9547 + pop di + pop si + mov sp, bp + pop bp + retf +sub_953A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_95BB proc far ; CODE XREF: sub_953A+67p + ; sub_95BB+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_95D2 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_95D9 +; --------------------------------------------------------------------------- + +loc_95D2: ; CODE XREF: sub_95BB+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_95D9: ; CODE XREF: sub_95BB+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_95FB + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_9614 + jnz short loc_95FB + cmp ax, [bp+var_1C] + jb short loc_9614 + +loc_95FB: ; CODE XREF: sub_95BB+2Cj sub_95BB+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_94CE + add sp, 0Ah + jmp loc_9880 +; --------------------------------------------------------------------------- + +loc_9614: ; CODE XREF: sub_95BB+37j sub_95BB+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_96AD + +loc_963F: ; CODE XREF: sub_95BB+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_96AD + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_96A7 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_96A0 + jnz short loc_9676 + cmp bx, [bp+var_1C] + jb short loc_96A0 + +loc_9676: ; CODE XREF: sub_95BB+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_9690: ; CODE XREF: sub_95BB+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_953A + add sp, 12h + jmp loc_9880 +; --------------------------------------------------------------------------- + +loc_96A0: ; CODE XREF: sub_95BB+B2j sub_95BB+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_96A7: ; CODE XREF: sub_95BB+A4j + add word ptr [bp+var_10], 8 + jmp short loc_963F +; --------------------------------------------------------------------------- + +loc_96AD: ; CODE XREF: sub_95BB+82j sub_95BB+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_96C6: ; CODE XREF: sub_95BB+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_973C + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_9736 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_972F + jnz short loc_96FD + cmp bx, [bp+var_1C] + jb short loc_972F + +loc_96FD: ; CODE XREF: sub_95BB+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_953A + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_972C + jmp loc_9880 +; --------------------------------------------------------------------------- + +loc_972C: ; CODE XREF: sub_95BB+16Cj + jmp loc_9860 +; --------------------------------------------------------------------------- + +loc_972F: ; CODE XREF: sub_95BB+139j + ; sub_95BB+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_9736: ; CODE XREF: sub_95BB+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_96C6 +; --------------------------------------------------------------------------- + +loc_973C: ; CODE XREF: sub_95BB+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_9755: ; CODE XREF: sub_95BB+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_978F + 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_978F: ; CODE XREF: sub_95BB+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_97B3 + jb short loc_97A9 + cmp bx, [bp+var_1C] + jnb short loc_97B3 + +loc_97A9: ; CODE XREF: sub_95BB+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_9879 +; --------------------------------------------------------------------------- + +loc_97B3: ; CODE XREF: sub_95BB+1E5j + ; sub_95BB+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_97FF + 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_9886 + add sp, 0Eh + jmp short loc_981F +; --------------------------------------------------------------------------- + +loc_97FF: ; CODE XREF: sub_95BB+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_95BB + add sp, 10h + +loc_981F: ; CODE XREF: sub_95BB+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_9838 + jmp loc_97B3 +; --------------------------------------------------------------------------- + +loc_9838: ; CODE XREF: sub_95BB+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_953A + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_9880 + +loc_9860: ; CODE XREF: sub_95BB:loc_972Cj + 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_9690 +; --------------------------------------------------------------------------- + +loc_9879: ; CODE XREF: sub_95BB+1F5j + add word ptr [bp+var_18], 6 + jmp loc_9755 +; --------------------------------------------------------------------------- + +loc_9880: ; CODE XREF: sub_95BB+56j sub_95BB+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_95BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_9886 proc far ; CODE XREF: sub_95BB+23Cp + ; sub_9A39+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_98E0 + 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_98E0: ; CODE XREF: sub_9886+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_9970 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_995D +; --------------------------------------------------------------------------- + +loc_993E: ; CODE XREF: sub_9886+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_995D: ; CODE XREF: sub_9886+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_95BB + add sp, 10h + +loc_9970: ; CODE XREF: sub_9886+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_993E + pop di + pop si + mov sp, bp + pop bp + retf +sub_9886 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_9988 proc far ; CODE XREF: sub_9A39+1B1p + ; sub_9A39+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_9A2D + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_9A2D + 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_99E7 + 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_99F0 +; --------------------------------------------------------------------------- + +loc_99E7: ; CODE XREF: sub_9988+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_99F0: ; CODE XREF: sub_9988+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_9A2D: ; CODE XREF: sub_9988+27j sub_9988+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_9988 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_9A39 proc near ; CODE XREF: sub_8E63+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_9A4F + jmp loc_9E3C +; --------------------------------------------------------------------------- + +loc_9A4F: ; CODE XREF: sub_9A39+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_9AA8 + 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_9AA8: ; CODE XREF: sub_9A39+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_9ABF + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_9E3E +; --------------------------------------------------------------------------- + +loc_9ABF: ; CODE XREF: sub_9A39+77j + cmp [bp+var_6], 0 + jg short loc_9AF1 + jnz short loc_9ACD + cmp [bp+var_8], 0 + ja short loc_9AF1 + +loc_9ACD: ; CODE XREF: sub_9A39+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_9ADF + jmp loc_9E3C +; --------------------------------------------------------------------------- + +loc_9ADF: ; CODE XREF: sub_9A39+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_9C56 +; --------------------------------------------------------------------------- + +loc_9AF1: ; CODE XREF: sub_9A39+8Aj sub_9A39+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_9AFD: ; CODE XREF: sub_9A39+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_9B10 + sub word ptr [bp+var_C], 0Ah + jmp loc_9C56 +; --------------------------------------------------------------------------- + +loc_9B10: ; CODE XREF: sub_9A39+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_9B38 + jmp loc_9C02 +; --------------------------------------------------------------------------- + +loc_9B38: ; CODE XREF: sub_9A39+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_9B5C + jmp loc_9C02 +; --------------------------------------------------------------------------- + +loc_9B5C: ; CODE XREF: sub_9A39+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_9B69 + jmp loc_9C02 +; --------------------------------------------------------------------------- + +loc_9B69: ; CODE XREF: sub_9A39+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_9B76 + jmp loc_9C02 +; --------------------------------------------------------------------------- + +loc_9B76: ; CODE XREF: sub_9A39+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_9B8F + 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_9B9D +; --------------------------------------------------------------------------- + +loc_9B8F: ; CODE XREF: sub_9A39+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_9B9D: ; CODE XREF: sub_9A39+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_9BC5 + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_9BCE +; --------------------------------------------------------------------------- + +loc_9BC5: ; CODE XREF: sub_9A39+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_9BCE: ; CODE XREF: sub_9A39+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_9BDF + add word ptr [bp+var_1C], 4 + +loc_9BDF: ; CODE XREF: sub_9A39+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_9988 + 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_9C02: ; CODE XREF: sub_9A39+FCj + ; sub_9A39+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_9C27 + 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_9C27: ; CODE XREF: sub_9A39+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_9C45 + jnz short loc_9C56 + cmp ax, [bp+var_8] + jnb short loc_9C56 + +loc_9C45: ; CODE XREF: sub_9A39+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_9AFD +; --------------------------------------------------------------------------- + +loc_9C56: ; CODE XREF: sub_9A39+B5j sub_9A39+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_9C85 + 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_9C93 +; --------------------------------------------------------------------------- + +loc_9C85: ; CODE XREF: sub_9A39+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_9C93: ; CODE XREF: sub_9A39+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_9C9F + jmp loc_9D29 +; --------------------------------------------------------------------------- + +loc_9C9F: ; CODE XREF: sub_9A39+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_9CD1 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_9CDA +; --------------------------------------------------------------------------- + +loc_9CD1: ; CODE XREF: sub_9A39+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_9CDA: ; CODE XREF: sub_9A39+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_9CF8 + add [bp+var_18], 4 + +loc_9CF8: ; CODE XREF: sub_9A39+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_9D29 + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_9D29 + test byte ptr [bp+var_16+2], 8 + jz short loc_9D29 + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_9988 + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_9D29: ; CODE XREF: sub_9A39+263j + ; sub_9A39+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_9D77 + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_9D57 + 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_9886 + add sp, 0Eh + jmp short loc_9D77 +; --------------------------------------------------------------------------- + +loc_9D57: ; CODE XREF: sub_9A39+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_95BB + add sp, 10h + +loc_9D77: ; CODE XREF: sub_9A39+2F4j + ; sub_9A39+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_9D85 + jmp loc_9E23 +; --------------------------------------------------------------------------- + +loc_9D85: ; CODE XREF: sub_9A39+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_9D94 + sub word ptr [bp+driver], 4 + +loc_9D94: ; CODE XREF: sub_9A39+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_9DE3 + 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_9DD0 + 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_9E02 +; --------------------------------------------------------------------------- + +loc_9DD0: ; CODE XREF: sub_9A39+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_9E23 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_9E21 +; --------------------------------------------------------------------------- + +loc_9DE3: ; CODE XREF: sub_9A39+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_9E10 + 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_9E02: ; CODE XREF: sub_9A39+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_7DF2 + add sp, 0Ah + jmp short loc_9E23 +; --------------------------------------------------------------------------- + +loc_9E10: ; CODE XREF: sub_9A39+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_9E23 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_9E21: ; CODE XREF: sub_9A39+3A8j + pop cx + pop cx + +loc_9E23: ; CODE XREF: sub_9A39+349j + ; sub_9A39+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_9E3C + jmp loc_9C56 +; --------------------------------------------------------------------------- + +loc_9E3C: ; CODE XREF: sub_9A39+13j sub_9A39+A3j ... + xor ax, ax + +loc_9E3E: ; CODE XREF: sub_9A39+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_9A39 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_9E87 + 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, 1937h + 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_9E8C + +loc_9E87: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_9E93 +; --------------------------------------------------------------------------- + +loc_9E8C: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_9E93: ; CODE XREF: __CurrExcContext+46j + pop di + pop si + mov sp, bp + pop bp + retf +__CurrExcContext endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __ThrowFileName(void) +@__ThrowFileName$qv proc far + push si + push di + les bx, ss:16h + mov dx, es:[bx+18h] + mov ax, es:[bx+16h] + pop di + pop si + retf +@__ThrowFileName$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __ThrowLineNumber(void) +@__ThrowLineNumber$qv proc far + push si + push di + les bx, ss:16h + mov ax, es:[bx+1Ah] + pop di + pop si + retf +@__ThrowLineNumber$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __ThrowExceptionName(void) +@__ThrowExceptionName$qv proc far + push si + push di + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + pop di + pop si + retf +@__ThrowExceptionName$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) +@typeinfo@0$bctr$qmx8typeinfo proc far + +src = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_9EEF + 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_9F2D + +loc_9EEF: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 0A4CBh + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_2], 0 + mov [bp+src], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0A4ADh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_9F2D: ; 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_9F78 + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 0A4CBh + test dl, 1 + jz short loc_9F78 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_9F78: ; 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_73EE + 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_9FDC + xor ax, ax + jmp short loc_A035 +; --------------------------------------------------------------------------- + +loc_9FDC: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_9FEE + mov ax, 1 + jmp short loc_A035 +; --------------------------------------------------------------------------- + +loc_9FEE: ; 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_A033 + mov ax, 1 + jmp short loc_A035 +; --------------------------------------------------------------------------- + +loc_A033: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_A035: ; 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_73C9 + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) +@__GetTypeInfo$qnvt1t1t1 proc far + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_A097 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 93B8h + push ax ; src + push cs ; int + mov ax, 0A497h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_A097: ; CODE XREF: __GetTypeInfo(void *,void *,void *,void *)+1Aj + les bx, dword ptr [bp+arg_4] + mov dx, [bp+arg_4+2] + mov ax, [bp+arg_4] + sub ax, es:[bx-2] + mov [bp+arg_4+2], dx + mov [bp+arg_4], ax + les bx, dword ptr [bp+arg_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov [bp+var_2], dx + mov [bp+var_4], ax + les bx, [bp+var_8] + mov dx, [bp+var_2] + mov ax, [bp+var_4] + mov es:[bx+6], dx + mov es:[bx+4], ax + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + pop di + pop si + mov sp, bp + pop bp + retf +@__GetTypeInfo$qnvt1t1t1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_A0D8 proc near ; CODE XREF: sub_A0D8+143p + ; sub_A0D8+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_A113 + 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_73EE + add sp, 8 + or ax, ax + jnz short loc_A11D + +loc_A113: ; CODE XREF: sub_A0D8+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_A124 + +loc_A11D: ; CODE XREF: sub_A0D8+39j + xor dx, dx + xor ax, ax + jmp loc_A318 +; --------------------------------------------------------------------------- + +loc_A124: ; CODE XREF: sub_A0D8+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_A136: ; CODE XREF: sub_A0D8+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_A13C: ; CODE XREF: sub_A0D8+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_A157 + jmp loc_A2E0 +; --------------------------------------------------------------------------- + +loc_A157: ; CODE XREF: sub_A0D8+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_A164 + jmp loc_A2D9 +; --------------------------------------------------------------------------- + +loc_A164: ; CODE XREF: sub_A0D8+87j + cmp [bp+arg_1A], 0 + jz short loc_A17E + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_A17E + mov ax, 1 + jmp short loc_A180 +; --------------------------------------------------------------------------- + +loc_A17E: ; CODE XREF: sub_A0D8+90j sub_A0D8+9Fj + xor ax, ax + +loc_A180: ; CODE XREF: sub_A0D8+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_A1C7 + 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_A1C7: ; CODE XREF: sub_A0D8+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_73EE + add sp, 8 + or ax, ax + jnz short loc_A249 + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_A1EB + jmp loc_A2D9 +; --------------------------------------------------------------------------- + +loc_A1EB: ; CODE XREF: sub_A0D8+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_A0D8 + 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_A232 + jmp loc_A2D9 +; --------------------------------------------------------------------------- + +loc_A232: ; CODE XREF: sub_A0D8+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_A2A6 +; --------------------------------------------------------------------------- + +loc_A249: ; CODE XREF: sub_A0D8+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_A26A + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_A2D9 + cmp ax, word ptr [bp+var_14] + jnz short loc_A2D9 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_A318 +; --------------------------------------------------------------------------- + +loc_A26A: ; CODE XREF: sub_A0D8+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_A2A6 + 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_A0D8 + add sp, 20h + or ax, dx + jz short loc_A2D9 + +loc_A2A6: ; CODE XREF: sub_A0D8+16Fj + ; sub_A0D8+198j + cmp [bp+var_E], 0 + jz short loc_A2C4 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_A2C4 + cmp ax, [bp+var_C] + jnz short loc_A2C4 + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_A2D9 +; --------------------------------------------------------------------------- + +loc_A2C4: ; CODE XREF: sub_A0D8+1D2j + ; sub_A0D8+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_A2D9: ; CODE XREF: sub_A0D8+89j + ; sub_A0D8+110j ... + add word ptr [bp+var_4], 8 + jmp loc_A13C +; --------------------------------------------------------------------------- + +loc_A2E0: ; CODE XREF: sub_A0D8+7Cj + cmp [bp+var_6], 0 + jnz short loc_A2F9 + 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_A136 +; --------------------------------------------------------------------------- + +loc_A2F9: ; CODE XREF: sub_A0D8+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_A312 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_A312: ; CODE XREF: sub_A0D8+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_A318: ; CODE XREF: sub_A0D8+49j + ; sub_A0D8+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_A0D8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) +@__DynamicCast$qnvt1t1t1i proc far + +var_16 = word ptr -16h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_A349 + jmp loc_A44D +; --------------------------------------------------------------------------- + +loc_A349: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+26j + les bx, dword ptr [bp+arg_4] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + sub ax, es:[bx-4] + mov [bp+var_E], dx + mov [bp+var_10], ax + les bx, dword ptr [bp+arg_4] + mov dx, [bp+arg_4+2] + mov ax, [bp+arg_4] + sub ax, es:[bx-2] + mov [bp+arg_4+2], dx + mov [bp+arg_4], ax + les bx, dword ptr [bp+arg_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+arg_C] + or ax, [bp+arg_E] + jz short loc_A39F + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_73EE + add sp, 8 + or ax, ax + jz short loc_A3A8 + +loc_A39F: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_A47D +; --------------------------------------------------------------------------- + +loc_A3A8: ; 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_73EE + add sp, 8 + or ax, ax + jnz short loc_A401 + 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_A0D8 + 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_A445 + +loc_A401: ; 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_A0D8 + 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_A44D + cmp [bp+var_16], 0 + jz short loc_A44D + +loc_A445: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_A47D +; --------------------------------------------------------------------------- + +loc_A44D: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_A479 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 93B9h + push ax ; src + push cs ; int + mov ax, 0A483h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_A479: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_A47D: ; 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, 0CFh, 0A4h + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 0CFh, 0A4h + dw seg seg000 + db 4 dup(0), 48h, 9Fh + 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, 48h, 9Fh + 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_AF09:loc_B074p + +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_A534 + 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_A534: ; 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_A55E +; --------------------------------------------------------------------------- + +loc_A542: ; 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_A55E: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_A542 + push [bp+var_2] + nop + push cs + call near ptr sub_5838 + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_A584 + xor dx, dx + xor ax, ax + jmp loc_A63A +; --------------------------------------------------------------------------- + +loc_A584: ; 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_A5C7 + 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_A5C7: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_A615 + 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_A609 +; --------------------------------------------------------------------------- + +loc_A5DD: ; 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_A609: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_A5DD + +loc_A615: ; 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_A63A: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_A6D1 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_A723 db 0 ; DATA XREF: __exec+50w +byte_A724 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 +word_A7A2 dw 0FFh ; DATA XREF: __exec+22Dr +word_A7A4 dw 0 ; DATA XREF: __exec+1D0w +word_A7A6 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_A9A2r ... +byte_A7A8 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_1DAE6 + mov cs:word_A7A6, 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_A7CD + jmp loc_A9DB +; --------------------------------------------------------------------------- + +loc_A7CD: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_A6D1, 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_A723, al + +loc_A7FD: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_A80E + cmp al, 9 + jz short loc_A80E + cmp al, 0Dh + jz short loc_A80E + inc si + jmp short loc_A7FD +; --------------------------------------------------------------------------- + +loc_A80E: ; 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_A724, 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_1DAEC, 3 + jnb short loc_A82D + sub bx, 280h + +loc_A82D: ; 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_A842 + xor ax, ax + mov di, ax + jmp short loc_A85F +; --------------------------------------------------------------------------- + +loc_A842: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_A84C: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_A84C + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_A85F: ; 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_1DAE6 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_A887 + dec cs:byte_A7A8 + inc ax + sub [bp+var_4], ax + +loc_A887: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 0A6D3h + +loc_A88F: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_A88F + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 0A642h + 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_A8D1 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_A8DD + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_A8CE + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_A8CE + jmp short loc_A919 +; --------------------------------------------------------------------------- + +loc_A8CE: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_A8D1: ; 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_A9DB +; --------------------------------------------------------------------------- + +loc_A8DD: ; 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_A8F7: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_A8F7 + 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_A943 +; --------------------------------------------------------------------------- + +loc_A919: ; 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_A925: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_A925 + 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_A943: ; 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_A959 + jmp loc_A8D1 +; --------------------------------------------------------------------------- + +loc_A959: ; 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_A970 + jmp loc_A8D1 +; --------------------------------------------------------------------------- + +loc_A970: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_A7A4, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 0A642h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_A7A8, 0 + jnz short loc_A9A2 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_A9DB + jmp short loc_A9A6 +; --------------------------------------------------------------------------- + +loc_A9A2: ; CODE XREF: __exec+1EDj + mov ax, cs:word_A7A6 + +loc_A9A6: ; 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_A7A8, 0 + jnz short loc_A9D5 + mov es, cs:word_A7A6 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_A9D5: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:word_A7A2 +; --------------------------------------------------------------------------- + +loc_A9DB: ; 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_C566+40P + +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, 0A7A9h + push ax ; int + call sub_AF09 + 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_5A20+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_AA20 + mov ax, 0FFFFh + jmp short loc_AA26 +; --------------------------------------------------------------------------- + +loc_AA20: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_AA26: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_1DAE6 + xor di, di + push es + push word_1DAE8 + nop + push cs + call near ptr sub_5838 + pop bx + mov bx, ax + pop es + mov word ptr dword_1F3B0, ax + mov word ptr dword_1F3B0+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_AA53 + nop + nop + jmp near ptr sub_48E4 +; --------------------------------------------------------------------------- + +loc_AA53: ; CODE XREF: seg000:AA4Cj + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_AA6D + +loc_AA5E: ; CODE XREF: seg000:AA6Bj + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_AA5E + +loc_AA6D: ; CODE XREF: seg000:AA5Cj + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_1F3B0+2 + mov word_1DAE2, ax + mov ax, word ptr dword_1F3B0 + 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_1CE8E + db 4 dup(0), 87h, 0AAh + 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_AADC + 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_AADA + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_AADE +; --------------------------------------------------------------------------- + +loc_AADA: ; CODE XREF: seg000:AAC9j + jmp short loc_AADE +; --------------------------------------------------------------------------- + +loc_AADC: ; CODE XREF: seg000:AAA0j + xor ax, ax + +loc_AADE: ; CODE XREF: seg000:AAD8j + ; seg000:loc_AADAj + 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_1D036 + dd byte_1CFE8 + db 4 dup(0), 0C1h, 1 + dw seg seg007 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 0E7h, 0AAh + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 0F3h, 0AAh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_AB5E + 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_AB5C + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_AB60 +; --------------------------------------------------------------------------- + +loc_AB5C: ; CODE XREF: seg000:AB4Bj + jmp short loc_AB60 +; --------------------------------------------------------------------------- + +loc_AB5E: ; CODE XREF: seg000:AB22j + xor ax, ax + +loc_AB60: ; CODE XREF: seg000:AB5Aj + ; seg000:loc_AB5Cj + 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_ABAB + 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_ABA9 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_ABAD +; --------------------------------------------------------------------------- + +loc_ABA9: ; CODE XREF: seg000:AB98j + jmp short loc_ABAD +; --------------------------------------------------------------------------- + +loc_ABAB: ; CODE XREF: seg000:AB6Fj + xor ax, ax + +loc_ABAD: ; CODE XREF: seg000:ABA7j + ; seg000:loc_ABA9j + 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), 0B6h, 0ABh + dw seg seg000 + db 0E2h, 0FFh, 9, 0Ch + dw seg seg007 + dd 0 + dd byte_1D9DF + db 4, 0, 0FCh, 0FFh, 2 dup(0), 9, 0Ch + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 97h, 0Bh + dw seg seg007 + db 0, 2 dup(1), 7 dup(0), 0C0h, 0ABh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0C8h, 0ABh, 6, 0 + db 5, 0, 1, 0, 0E0h, 0ABh, 9, 0Ch + dw seg seg007 + db 4 dup(0), 0CFh, 0Bh + dw seg seg007 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 9, 0Ch + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 97h, 0Bh + dw seg seg007 + db 0, 2 dup(1), 7 dup(0), 4, 0ACh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0Ch, 0ACh, 6, 0 + db 5, 0, 1, 0, 24h, 0ACh, 9, 0Ch + dw seg seg007 + dd 0 + dd byte_1D9DF + db 4, 0, 0FCh, 0FFh, 2 dup(0), 9, 0Ch + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 97h, 0Bh + dw seg seg007 + db 0, 2 dup(1), 7 dup(0), 48h, 0ACh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 50h, 0ACh, 6, 0 + db 5, 0, 1, 0, 68h, 0ACh, 4 dup(0), 8Ch, 0ACh + dw seg seg000 + db 0E2h, 0FFh, 55h, 0Bh + dw seg seg007 + dd byte_1DA19 + db 4 dup(0), 96h, 0ACh + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0A8h, 0ACh + dw seg seg000 + db 0E2h, 0FFh, 55h, 0Bh + dw seg seg007 + dd byte_1D917 + db 4 dup(0), 0B2h, 0ACh + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0C4h, 0ACh + dw seg seg000 + db 0E2h, 0FFh, 55h, 0Bh + dw seg seg007 + dd byte_1D917 + db 4 dup(0), 0CEh, 0ACh + 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_AD5C + 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_AD5A + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_AD5E +; --------------------------------------------------------------------------- + +loc_AD5A: ; CODE XREF: seg000:AD49j + jmp short loc_AD5E +; --------------------------------------------------------------------------- + +loc_AD5C: ; CODE XREF: seg000:AD20j + xor ax, ax + +loc_AD5E: ; CODE XREF: seg000:AD58j + ; seg000:loc_AD5Aj + 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_ADA9 + 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_ADA7 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_ADAB +; --------------------------------------------------------------------------- + +loc_ADA7: ; CODE XREF: seg000:AD96j + jmp short loc_ADAB +; --------------------------------------------------------------------------- + +loc_ADA9: ; CODE XREF: seg000:AD6Dj + xor ax, ax + +loc_ADAB: ; CODE XREF: seg000:ADA5j + ; seg000:loc_ADA7j + 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_ADF6 + 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_ADF4 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_ADF8 +; --------------------------------------------------------------------------- + +loc_ADF4: ; CODE XREF: seg000:ADE3j + jmp short loc_ADF8 +; --------------------------------------------------------------------------- + +loc_ADF6: ; CODE XREF: seg000:ADBAj + xor ax, ax + +loc_ADF8: ; CODE XREF: seg000:ADF2j + ; seg000:loc_ADF4j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADFC proc far ; CODE XREF: sub_AF09+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_AE6D +; --------------------------------------------------------------------------- + +loc_AE12: ; CODE XREF: sub_ADFC+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_5F05 + pop cx + or ax, ax + jz short loc_AE31 + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_AE6A + jmp short loc_AE76 +; --------------------------------------------------------------------------- + +loc_AE31: ; CODE XREF: sub_ADFC+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_AE50 +; --------------------------------------------------------------------------- + +loc_AE3F: ; CODE XREF: sub_ADFC+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_AE59 + inc word ptr [bp+var_8] + +loc_AE50: ; CODE XREF: sub_ADFC+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_AE3F + +loc_AE59: ; CODE XREF: sub_ADFC+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_AE6A + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_AE7A +; --------------------------------------------------------------------------- + +loc_AE6A: ; CODE XREF: sub_ADFC+31j sub_ADFC+64j + inc word ptr [bp+var_4] + +loc_AE6D: ; CODE XREF: sub_ADFC+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_AE12 + +loc_AE76: ; CODE XREF: sub_ADFC+33j + xor dx, dx + xor ax, ax + +loc_AE7A: ; CODE XREF: sub_ADFC+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_ADFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_AE80(int, int, char *pathname, char *src, int) +sub_AE80 proc far ; CODE XREF: sub_AF09+7Fp sub_AF09+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_AED4 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 19AAh + 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_AF01 + jmp short loc_AEFC +; --------------------------------------------------------------------------- + +loc_AED4: ; CODE XREF: sub_AE80+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_AF01 + +loc_AEFC: ; CODE XREF: sub_AE80+52j + mov ax, 1 + jmp short loc_AF03 +; --------------------------------------------------------------------------- + +loc_AF01: ; CODE XREF: sub_AE80+50j sub_AE80+7Aj + xor ax, ax + +loc_AF03: ; CODE XREF: sub_AE80+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_AE80 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_AF09(int, char *s, int, int, int, int, int) +sub_AF09 proc near ; CODE XREF: _execl+19p + +pathname = word ptr -9Ch +var_1A = word ptr -1Ah +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +s1 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +s = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h + + push bp + mov bp, sp + sub sp, 9Ch + push si + push di + les bx, [bp+s] + mov al, es:[bx] + cbw + mov dx, ax + cmp ax, 61h ; 'a' + jb short loc_AF23 + sub dx, 20h ; ' ' + +loc_AF23: ; CODE XREF: sub_AF09+15j + cmp dx, 41h ; 'A' + jb short loc_AF37 + cmp dx, 5Ah ; 'Z' + ja short loc_AF37 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_AF4D + +loc_AF37: ; CODE XREF: sub_AF09+1Dj sub_AF09+22j + push ds + mov ax, 19AFh + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_ADFC + add sp, 8 + or ax, dx + jz short loc_AF52 + +loc_AF4D: ; CODE XREF: sub_AF09+2Cj + mov [bp+arg_E], 0 + +loc_AF52: ; CODE XREF: sub_AF09+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_6BB4 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_AFB1 + push [bp+arg_E] ; int + push ds + mov ax, 19B2h + 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_AE80 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_AF98 + jmp loc_B01C +; --------------------------------------------------------------------------- + +loc_AF98: ; CODE XREF: sub_AF09+8Aj + push ds + mov ax, 19B3h + 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_B01C + jmp short loc_B017 +; --------------------------------------------------------------------------- + +loc_AFB1: ; CODE XREF: sub_AF09+68j + push [bp+arg_E] ; int + push ds + mov ax, 19B8h + 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_AE80 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_B01C + push [bp+arg_E] ; int + push ds + mov ax, 19BDh + 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_AE80 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_B01C + push [bp+arg_E] ; int + push ds + mov ax, 19C2h + 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_AE80 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_B01C + +loc_B017: ; CODE XREF: sub_AF09+A6j + mov [bp+var_1A], 1 + +loc_B01C: ; CODE XREF: sub_AF09+8Cj sub_AF09+A4j ... + cmp [bp+var_18], 0 + jz short loc_B03E + cmp [bp+var_1A], 0 + jz short loc_B047 + push ds + mov ax, 19C7h + push ax ; name + nop + push cs + call near ptr _getenv + pop cx + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_B047 + +loc_B03E: ; CODE XREF: sub_AF09+117j + mov word_1DAEE, 2 + jmp loc_B10D +; --------------------------------------------------------------------------- + +loc_B047: ; CODE XREF: sub_AF09+11Dj + ; sub_AF09+133j + cmp [bp+var_1A], 0 + jz short loc_B060 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 19CFh + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_B074 +; --------------------------------------------------------------------------- + +loc_B060: ; CODE XREF: sub_AF09+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_B074: ; CODE XREF: sub_AF09+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_B08E + mov word_1DAEE, 8 + jmp loc_B10D +; --------------------------------------------------------------------------- + +loc_B08E: ; CODE XREF: sub_AF09+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_B0B7 + mov word_1DAEE, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + jmp short loc_B10D +; --------------------------------------------------------------------------- + +loc_B0B7: ; CODE XREF: sub_AF09+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_B0CC + mov dx, word ptr dword_1F3B0+2 + mov ax, word ptr dword_1F3B0 + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_B0CC: ; CODE XREF: sub_AF09+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_B0E0 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_B0E6 +; --------------------------------------------------------------------------- + +loc_B0E0: ; CODE XREF: sub_AF09+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_B0E6: ; CODE XREF: sub_AF09+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_B112 + mov word_1DAEE, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_5705 + pop cx + pop cx + +loc_B10D: ; CODE XREF: sub_AF09+13Bj + ; sub_AF09+182j ... + mov ax, 0FFFFh + jmp short loc_B15D +; --------------------------------------------------------------------------- + +loc_B112: ; CODE XREF: sub_AF09+1EFj + call off_1EEF4 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_B130 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_B136 +; --------------------------------------------------------------------------- + +loc_B130: ; CODE XREF: sub_AF09+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_B136: ; CODE XREF: sub_AF09+225j + push dx + push ax + call [bp+arg_0] + add sp, 0Ch + mov [bp+var_16], ax + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + nop + push cs + call near ptr sub_5705 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_5705 + add sp, 8 + mov ax, [bp+var_16] + +loc_B15D: ; CODE XREF: sub_AF09+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_AF09 endp + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + ;org 3 + 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 + +loc_B165: + mov bp, sp + call sub_C273 + or ax, ax + jz short loc_B17E + call sub_F913 + or ax, ax + jz short loc_B183 + push 3 + call sub_F458 + +loc_B17E: ; CODE XREF: _main+8j + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_B183: ; CODE XREF: _main+11j + les bx, dword_2026C + cmp byte ptr es:[bx+18h], 1 + jnz short loc_B19A + call sub_F7A4 + mov byte_1FFAB, 0 + jmp short loc_B1B5 +; --------------------------------------------------------------------------- + +loc_B19A: ; CODE XREF: _main+28j + les bx, dword_2026C + cmp byte ptr es:[bx+18h], 2 + jnz short loc_B1BA + call sub_F7A4 + call sub_F74C + mov al, byte_1FFAD + mov byte_1FFAB, al + +loc_B1B5: ; CODE XREF: _main+34j + call sub_F786 + +loc_B1BA: ; CODE XREF: _main+3Fj + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jz short loc_B1CA + nop + push cs + call near ptr sub_C13E + +loc_B1CA: ; CODE XREF: _main+5Fj + call sub_B2AB + +loc_B1CD: ; CODE XREF: _main+FCj + les bx, dword_2026C + mov eax, es:[bx+1Ch] + mov dword_1DFD8, eax + call sub_B3DA + nop + push cs + call near ptr sub_E16D + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_B237 + mov al, byte_1E365 + cbw + cmp ax, 5 + jnz short loc_B202 + push large 10000Ch + push ds + push offset aOKKO ; "®Á½»ªÏϼ½ª°®" + jmp short loc_B213 +; --------------------------------------------------------------------------- + +loc_B202: ; CODE XREF: _main+90j + mov al, byte_1F467 + mov ah, 0 + mov dx, 1Ch + sub dx, ax + push dx + push 0Ch + push ds + push offset aKOb ; "¼½ª°®¡" + +loc_B213: ; CODE XREF: _main+9Cj + push 0C1h ; 'Á' + call sub_145A + mov al, byte_1F468 + mov ah, 0 + mov dx, 1Ch + sub dx, ax + push dx + push 0Dh + push ds + push word_1F46A + push 0E1h ; 'á' + call sub_26CA + jmp short loc_B249 +; --------------------------------------------------------------------------- + +loc_B237: ; CODE XREF: _main+87j + push large 12000Ch + push ds + push offset aNoK ; "­®·¸Ï¹µªÂ" + push 0C3h ; 'Ã' + call sub_145A + +loc_B249: ; CODE XREF: _main+D1j + mov word_1FFA8, 0 + +loc_B24F: ; CODE XREF: _main+114j + call dword_1F4A4 + or ax, ax + jz short loc_B263 + push 228h + call sub_F9F6 + pop cx + jmp loc_B1CD +; --------------------------------------------------------------------------- + +loc_B263: ; CODE XREF: _main+F1j + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_B287 + call sub_C31F + or ax, ax + jz short loc_B27A + call sub_B98E + jmp short loc_B24F +; --------------------------------------------------------------------------- + +loc_B27A: ; CODE XREF: _main+10Fj + les bx, dword_2026C + mov al, byte_1E365 + mov es:[bx+0Bh], al + jmp short loc_B290 +; --------------------------------------------------------------------------- + +loc_B287: ; CODE XREF: _main+108j + push word ptr dword_1F4A8+2 + call sub_2A84 + +loc_B290: ; CODE XREF: _main+121j + mov word_1DF9A, 0 + call far ptr loc_1EF6 + push ds + push offset arg0 ; "op" + nop + push cs + call near ptr sub_C566 + add sp, 4 + xor ax, ax + pop bp + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2AB proc near ; CODE XREF: _main:loc_B1CAp + push bp + mov bp, sp + push si + push 0B00h + push ds + push offset aHuuma_efc ; "huuma.efc" + call sub_F7FA + call sub_1CD36 + push ds + push offset aEye_pi ; "EYE.PI" + push 0 + call sub_F537 + add sp, 0Ch + push ds + push offset aMiko_bft ; "miko.bft" + call sub_2E7C + push ds + push offset aMiko32_bft ; "miko32.bft" + call sub_2E7C + push ds + push offset aMiko16_bft ; "miko16.bft" + call sub_2E7C + mov si, 30h ; '0' + jmp short loc_B2F5 +; --------------------------------------------------------------------------- + +loc_B2EE: ; CODE XREF: sub_B2AB+4Ej + push si + call sub_3820 + inc si + +loc_B2F5: ; CODE XREF: sub_B2AB+41j + cmp si, 80h ; '€' + jl short loc_B2EE + call sub_DC38 + call sub_E178 + les bx, dword_2026C + mov al, es:[bx+24h] + mov byte_2066C, al + mov word ptr dword_1F4A4+2, seg seg001 + mov word ptr dword_1F4A4, offset sub_BCB1 + cmp word ptr es:[bx+12h], 0 + jz short loc_B34C + cmp word ptr es:[bx+12h], 9 + jb short loc_B32B + mov ax, 9 + jmp short loc_B333 +; --------------------------------------------------------------------------- + +loc_B32B: ; CODE XREF: sub_B2AB+79j + les bx, dword_2026C + mov ax, es:[bx+12h] + +loc_B333: ; CODE XREF: sub_B2AB+7Ej + movzx eax, ax + mov dword_1E598, eax + mov al, byte_1E365 + cbw + mov bx, 5 + cwd + idiv bx + add dx, 2 + mov word_1E51E, dx + +loc_B34C: ; CODE XREF: sub_B2AB+72j + cmp byte_1E364, 0 + jnz short loc_B35A + mov byte_1F4AC, 4 + jmp short loc_B35F +; --------------------------------------------------------------------------- + +loc_B35A: ; CODE XREF: sub_B2AB+A6j + mov byte_1F4AC, 10h + +loc_B35F: ; CODE XREF: sub_B2AB+ADj + pop si + pop bp + retn +sub_B2AB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B362 proc near ; CODE XREF: sub_B3DA+148p + ; sub_B3DA+15Ep ... + +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + les bx, [bp+arg_4] + push es + les si, [bp+arg_0] + mov al, es:[si] + pop es + mov es:[bx+7], al + les bx, [bp+arg_0] + mov al, es:[bx+1] + les bx, [bp+arg_4] + mov es:[bx+8], al + les bx, [bp+arg_0] + mov al, es:[bx+2] + les bx, [bp+arg_4] + mov es:[bx+9], al + pop si + pop bp + retn 8 +sub_B362 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B396 proc near ; CODE XREF: sub_B3DA+Ap + +arg_0 = dword ptr 4 + + push bp + mov bp, sp + les bx, [bp+arg_0] + mov byte ptr es:[bx], 73h ; 's' + mov byte ptr es:[bx+1], 74h ; 't' + mov byte ptr es:[bx+2], 61h ; 'a' + mov byte ptr es:[bx+3], 67h ; 'g' + mov byte ptr es:[bx+4], 65h ; 'e' + mov al, byte_1E365 + add al, 30h ; '0' + mov es:[bx+5], al + mov byte ptr es:[bx+6], 2Eh ; '.' + mov byte ptr es:[bx+7], 62h ; 'b' + mov byte ptr es:[bx+8], 66h ; 'f' + mov byte ptr es:[bx+9], 74h ; 't' + mov byte ptr es:[bx+0Ah], 0 + pop bp + retn 4 +sub_B396 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B3DA proc near ; CODE XREF: _main+76p + +var_C = byte ptr -0Ch + + enter 0Ch, 0 + push si + push ss + lea ax, [bp+var_C] + push ax + call sub_B396 + mov word_1F538, 0 + call sub_BF7B + push 0 + call sub_1DD4 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E012 + call sub_FBE9 + push 0 + call sub_F94D + push 0 + call sub_F94D + push large 90h ; '' + push 60h ; '`' + call sub_F970 + add sp, 0Ah + call sub_102D6 + call sub_16A6B + call sub_3DDE + call sub_129DD + call sub_E271 + call sub_FA46 + call sub_1028C + nop + push cs + call near ptr sub_CA1C + call sub_C224 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + mov ax, 0D0h ; 'Ð' + mov word_205E6, ax + mov word_205E8, ax + mov ax, 150h + mov word_205EA, ax + mov word_205EC, ax + mov dword_20612, 0 + mov byte_2061A, 0 + mov byte_1F466, 0 + mov byte_2066D, 1 + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_B4BB + mov byte_1F46C, 1 + mov al, byte_1E365 + add al, al + mov byte_1F46D, al + mov al, byte_1E365 + add al, al + inc al + mov byte_1F46E, al + jmp short loc_B4C0 +; --------------------------------------------------------------------------- + +loc_B4BB: ; CODE XREF: sub_B3DA+C6j + mov byte_1F46C, 0 + +loc_B4C0: ; CODE XREF: sub_B3DA+DFj + mov si, 0C0h ; 'À' + jmp short loc_B4D7 +; --------------------------------------------------------------------------- + +loc_B4C5: ; CODE XREF: sub_B3DA+101j + mov bx, si + add bx, bx + cmp word ptr [bx+1EDAh], 0 + jz short loc_B4D6 + push si + call sub_2F06 + +loc_B4D6: ; CODE XREF: sub_B3DA+F4j + dec si + +loc_B4D7: ; CODE XREF: sub_B3DA+E9j + cmp si, 80h ; '€' + jge short loc_B4C5 + mov byte_1F467, 6 + mov al, byte_1E365 + cbw + mov bx, 5 + cwd + idiv bx + add dl, 0A1h ; '¡' + mov byte ptr aKOb+5, dl + mov al, byte_1E365 + cbw + add ax, ax + mov bx, ax + mov ax, [bx+0C8h] + mov word_1F46A, ax + mov al, byte_1E365 + cbw + mov bx, ax + mov al, [bx+0D4h] + mov byte_1F468, al + push ss + lea ax, [bp+var_C] + push ax + call sub_2E7C + push ss + lea ax, [bp+var_C] + push ax + push ds + push offset aBmt ; "bmt" + call sub_B362 + push ss + lea ax, [bp+var_C] + push ax + call sub_2E7C + push ss + lea ax, [bp+var_C] + push ax + push ds + push offset aBbt ; "bbt" + call sub_B362 + push ss + lea ax, [bp+var_C] + push ax + call sub_2E7C + push ss + lea ax, [bp+var_C] + push ax + push ds + push offset aMap ; "map" + call sub_B362 + push ss + lea ax, [bp+var_C] + push ax + call far ptr sub_4314 + call sub_42F8 + push ss + lea ax, [bp+var_C] + push ax + push ds + push offset aMpn ; "mpn" + call sub_B362 + push ss + lea ax, [bp+var_C] + push ax + call sub_F4D1 + push 30h ; '0' ; n + push ds + push offset unk_1FFC0 ; src + push ds + push offset unk_1F4AD ; dest + call _memcpy + add sp, 0Ah + call sub_1C608 + call sub_1C3DF + call sub_12C72 + mov word ptr dword_1F478+2, seg seg001 + mov word ptr dword_1F478, offset sub_BF90 + mov word ptr dword_1F47C+2, seg seg001 + mov word ptr dword_1F47C, offset sub_BF95 + mov word ptr dword_1F490+2, seg seg001 + mov word ptr dword_1F490, offset sub_BF90 + mov word ptr dword_1F4A0+2, seg seg001 + mov word ptr dword_1F4A0, offset sub_BF90 + mov word ptr dword_23A72+2, seg seg001 + mov word ptr dword_23A72, offset sub_BF90 + mov word ptr dword_23A76+2, seg seg001 + mov word ptr dword_23A76, offset sub_BF90 + mov word ptr dword_26C3C+2, seg seg003 + mov word ptr dword_26C3C, offset sub_17979 + mov word ptr dword_26C40+2, seg seg003 + mov word ptr dword_26C40, offset sub_1766E + mov word ptr dword_1F494+2, seg seg001 + mov word ptr dword_1F494, offset sub_BFD0 + mov word ptr dword_1F498+2, seg seg001 + mov word ptr dword_1F498, offset sub_C05D + mov word ptr dword_1F48C+2, seg seg001 + mov word ptr dword_1F48C, offset sub_BF95 + call sub_C5B0 + mov byte_20342, 1 + mov byte_1E500, 4 + mov al, byte_1E365 + cbw + mov bx, ax + cmp bx, 5 + ja loc_B88A + add bx, bx + jmp cs:off_B982[bx] + +loc_B63C: ; DATA XREF: seg001:off_B982o + mov word_20616, 74h ; 't' + mov word ptr dword_1F474+2, seg seg003 + mov word ptr dword_1F474, offset sub_13786 + mov word ptr dword_1F470+2, seg seg003 + mov word ptr dword_1F470, offset sub_13909 + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_13ADE + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_13B8B + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_13BB5 + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset loc_13FE5 + mov word ptr dword_1F490+2, seg seg003 + mov word ptr dword_1F490, offset sub_13671 + jmp short loc_B6F2 +; --------------------------------------------------------------------------- + +loc_B698: ; CODE XREF: sub_B3DA+25Dj + ; DATA XREF: seg001:0824o + mov word_20616, 50h ; 'P' + mov word ptr dword_1F474+2, seg seg003 + mov word ptr dword_1F474, offset sub_1410A + mov word ptr dword_1F470+2, seg seg003 + mov word ptr dword_1F470, offset sub_1424A + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_1523C + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_15218 + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_143E5 + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset sub_150F4 + mov word ptr dword_1F490+2, seg seg003 + mov word ptr dword_1F490, offset sub_140AE + +loc_B6F2: ; CODE XREF: sub_B3DA+2BCj + mov word ptr dword_1F4A0+2, seg seg003 + mov word ptr dword_1F4A0, offset sub_13513 + jmp loc_B88A +; --------------------------------------------------------------------------- + +loc_B701: ; CODE XREF: sub_B3DA+25Dj + ; DATA XREF: seg001:0826o + mov word_20616, 67h ; 'g' + mov word ptr dword_1F474+2, seg seg003 + mov word ptr dword_1F474, offset sub_110B7 + mov word ptr dword_1F470+2, seg seg003 + mov word ptr dword_1F470, offset sub_114D6 + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_12754 + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_1273B + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_116AD + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset sub_123A9 + mov word ptr dword_1F490+2, seg seg003 + mov word ptr dword_1F490, offset sub_10E95 + mov word ptr dword_1F4A0+2, seg seg003 + mov word ptr dword_1F4A0, offset sub_10E4F + jmp loc_B88A +; --------------------------------------------------------------------------- + +loc_B76A: ; CODE XREF: sub_B3DA+25Dj + ; DATA XREF: seg001:0828o + mov word_20616, 3B0h + mov word ptr dword_1F474+2, seg seg003 + mov word ptr dword_1F474, offset sub_19EF3 + mov word ptr dword_1F470+2, seg seg003 + mov word ptr dword_1F470, offset sub_1A1FF + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_1A7D5 + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_1C270 + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_1C16A + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset sub_1BEF2 + cmp byte_2066C, 0 + jnz short loc_B7CB + mov word ptr dword_1F490+2, seg seg003 + mov word ptr dword_1F490, 0A36Fh + +loc_B7CB: ; CODE XREF: sub_B3DA+3E3j + call sub_129FC + mov byte_20342, 2 + mov byte_1E500, 1 + jmp loc_B88A +; --------------------------------------------------------------------------- + +loc_B7DD: ; CODE XREF: sub_B3DA+25Dj + ; DATA XREF: seg001:082Ao + mov word_20616, 0FFFFh + mov word ptr dword_1F474+2, seg seg001 + mov word ptr dword_1F474, offset sub_BF95 + mov word ptr dword_1F470+2, seg seg001 + mov word ptr dword_1F470, offset sub_BF90 + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_199B3 + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_19D96 + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_17B75 + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset sub_19456 + mov byte_1E500, 1 + jmp short loc_B88A +; --------------------------------------------------------------------------- + +loc_B832: ; CODE XREF: sub_B3DA+25Dj + ; DATA XREF: seg001:082Co + mov word_20616, 0C8h ; 'È' + mov word ptr dword_1F474+2, seg seg003 + mov word ptr dword_1F474, offset sub_15402 + mov word ptr dword_1F470+2, seg seg003 + mov word ptr dword_1F470, offset sub_1540C + mov word ptr dword_1F484+2, seg seg003 + mov word ptr dword_1F484, offset sub_1696B + mov word ptr dword_1F488+2, seg seg003 + mov word ptr dword_1F488, offset sub_16A21 + mov word ptr dword_1F49C+2, seg seg003 + mov word ptr dword_1F49C, offset sub_159AF + mov word ptr dword_1F480+2, seg seg003 + mov word ptr dword_1F480, offset sub_16744 + call sub_129FC + mov byte_1E500, 2 + +loc_B88A: ; CODE XREF: sub_B3DA+257j + ; sub_B3DA+324j ... + call sub_4344 + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_B8AF + push 0FFh + call sub_F7DE + pop cx + push ss + lea ax, [bp+var_C] + push ax + push ds + push offset aM ; "m" + call sub_B362 + +loc_B8AF: ; CODE XREF: sub_B3DA+4BEj + call sub_D629 + call sub_DCD1 + +loc_B8B5: ; CODE XREF: sub_B3DA+4E0j + cmp word_1F538, 64h ; 'd' + jb short loc_B8B5 + push large 40001h + push large 330017h + push 5 + call sub_25DA + push 30h ; '0' ; n + push ds + push offset unk_1F4AD ; src + push ds + push offset byte_1F508 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1EF6 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_4596 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_4782 + call sub_F4EF + push ds + push offset aMiko_k_mpn ; "miko_k.mpn" + call sub_F4D1 + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_B922 + push ss + lea ax, [bp+var_C] + push ax + call sub_13ABB + add sp, 4 + +loc_B922: ; CODE XREF: sub_B3DA+539j + push large 0 + push large 27F018Fh + call sub_F1E + push large 0C0000Bh + call sub_127E + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 1A00000h + push large 23F018Fh + call sub_AB8 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 1A00000h + push large 23F018Fh + call sub_AB8 + call sub_12A8 + mov byte_20619, 1 + mov al, byte_20619 + out 0A4h, al ; Interrupt Controller #2, 8259A + xor al, al + out 0A6h, al ; Interrupt Controller #2, 8259A + mov byte_20618, al + pop si + leave + retn +sub_B3DA endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_B982 dw offset loc_B63C ; DATA XREF: sub_B3DA+25Dr + dw offset loc_B698 + dw offset loc_B701 + dw offset loc_B76A + dw offset loc_B7DD + dw offset loc_B832 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B98E proc near ; CODE XREF: _main+111p + push bp + mov bp, sp + call sub_E012 + nop + push cs + call near ptr sub_E162 + mov ax, 0D0h ; 'Ð' + mov word_205E8, ax + mov word_205E6, ax + mov ax, 150h + mov word_205EC, ax + mov word_205EA, ax + call sub_C5B0 + mov byte_20605, 0C8h ; 'È' + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + call sub_4782 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + call sub_4782 + call sub_10E0A + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + nop + push cs + call near ptr sub_E16D + pop bp + retn +sub_B98E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9E2 proc near ; CODE XREF: sub_BCB1+152p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + xor si, si + mov [bp+var_1], 0 + push large 17000Fh + push large [off_1DB70] + push 0E9h ; 'é' + call sub_26CA + push large 170010h + push large [off_1DB6C] + push 61h ; 'a' + call sub_26CA + mov word_1DF9A, 46h ; 'F' + call far ptr loc_1EF6 + +loc_BA1D: ; CODE XREF: sub_B9E2+2C9j + mov ax, si + and ax, 3Fh + cmp ax, 32h ; '2' + jnb short loc_BA33 + push large 12000Ch + push ds + push offset aKOO ; "¹ª¾¼®Ï·®¶¾" + jmp short loc_BA3D +; --------------------------------------------------------------------------- + +loc_BA33: ; CODE XREF: sub_B9E2+43j + push large 12000Ch + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + +loc_BA3D: ; CODE XREF: sub_B9E2+4Fj + push 0E1h ; 'á' + call sub_145A + call sub_F62E + inc si + cmp [bp+var_1], 0 + jnz short loc_BA5C + cmp word_1FFA8, 0 + jnz short loc_BA5C + mov [bp+var_1], 1 + +loc_BA5C: ; CODE XREF: sub_B9E2+6Dj sub_B9E2+74j + cmp [bp+var_1], 1 + jnz loc_BB30 + test byte ptr word_1FFA8, 1 + jnz short loc_BA72 + test byte ptr word_1FFA8, 2 + jz short loc_BAC8 + +loc_BA72: ; CODE XREF: sub_B9E2+87j + mov al, 1 + sub al, byte_1DB74 + mov byte_1DB74, al + cmp byte_1DB74, 0 + jnz short loc_BA8E + mov byte_1F4DD, 0E9h ; 'é' + mov byte_1F4DE, 61h ; 'a' + jmp short loc_BA98 +; --------------------------------------------------------------------------- + +loc_BA8E: ; CODE XREF: sub_B9E2+9Ej + mov byte_1F4DD, 61h ; 'a' + mov byte_1F4DE, 0E9h ; 'é' + +loc_BA98: ; CODE XREF: sub_B9E2+AAj + push large 17000Fh + push large [off_1DB70] + mov al, byte_1F4DD + mov ah, 0 + push ax + call sub_26CA + push large 170010h + push large [off_1DB6C] + mov al, byte_1F4DE + mov ah, 0 + push ax + call sub_26CA + mov [bp+var_1], 0 + +loc_BAC8: ; CODE XREF: sub_B9E2+8Ej + test byte ptr word_1FFA8, 80h + jnz short loc_BAD6 + test byte ptr word_1FFA8, 10h + jz short loc_BB24 + +loc_BAD6: ; CODE XREF: sub_B9E2+EBj + cmp byte_1DB74, 0 + jnz short loc_BAE3 + mov [bp+var_1], 2 + jmp short loc_BB24 +; --------------------------------------------------------------------------- + +loc_BAE3: ; CODE XREF: sub_B9E2+F9j + push large 11000Eh + push large [off_1DB76] + push 0E3h ; 'ã' + call sub_26CA + push large 11000Fh + push large [off_1DB7A] + push 0E1h ; 'á' + call sub_26CA + push large 110010h + push large [off_1DB7E] + push 61h ; 'a' + call sub_26CA + mov [bp+var_1], 3 + mov byte_1DB74, 0 + +loc_BB24: ; CODE XREF: sub_B9E2+F2j sub_B9E2+FFj + test byte ptr word_1FFA8, 40h + jz loc_BCA4 + jmp loc_BCA0 +; --------------------------------------------------------------------------- + +loc_BB30: ; CODE XREF: sub_B9E2+7Ej + cmp [bp+var_1], 2 + jnz short loc_BB9D + cmp word_1FFA8, 0 + jnz loc_BCA4 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + mov word_1FFA8, 0 + push large 12000Ch + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 11000Eh + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 11000Fh + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 110010h + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + xor ax, ax + jmp loc_BCAE +; --------------------------------------------------------------------------- + +loc_BB9D: ; CODE XREF: sub_B9E2+152j + cmp [bp+var_1], 3 + jnz short loc_BBB2 + cmp word_1FFA8, 0 + jnz loc_BCA4 + inc [bp+var_1] + jmp loc_BCA4 +; --------------------------------------------------------------------------- + +loc_BBB2: ; CODE XREF: sub_B9E2+1BFj + cmp [bp+var_1], 4 + jnz loc_BCA4 + test byte ptr word_1FFA8, 1 + jnz short loc_BBC8 + test byte ptr word_1FFA8, 2 + jz short loc_BC1E + +loc_BBC8: ; CODE XREF: sub_B9E2+1DDj + mov al, 1 + sub al, byte_1DB74 + mov byte_1DB74, al + cmp byte_1DB74, 0 + jnz short loc_BBE4 + mov byte_1F4DD, 0E9h ; 'é' + mov byte_1F4DE, 61h ; 'a' + jmp short loc_BBEE +; --------------------------------------------------------------------------- + +loc_BBE4: ; CODE XREF: sub_B9E2+1F4j + mov byte_1F4DD, 61h ; 'a' + mov byte_1F4DE, 0E9h ; 'é' + +loc_BBEE: ; CODE XREF: sub_B9E2+200j + push large 11000Fh + push large [off_1DB7A] + mov al, byte_1F4DD + mov ah, 0 + push ax + call sub_26CA + push large 110010h + push large [off_1DB7E] + mov al, byte_1F4DE + mov ah, 0 + push ax + call sub_26CA + mov [bp+var_1], 3 + +loc_BC1E: ; CODE XREF: sub_B9E2+1E4j + test byte ptr word_1FFA8, 80h + jnz short loc_BC2C + test byte ptr word_1FFA8, 10h + jz short loc_BC99 + +loc_BC2C: ; CODE XREF: sub_B9E2+241j + cmp byte_1DB74, 0 + jnz short loc_BC94 + push large 11000Eh + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 11000Fh + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 110010h + push ds + push offset asc_1DB5F ; "ÏÏÏÏÏÏÏÏÏÏÏ" + push 0E1h ; 'á' + call sub_145A + push large 17000Fh + push large [off_1DB70] + push 0E9h ; 'é' + call sub_26CA + push large 170010h + push large [off_1DB6C] + push 61h ; 'a' + call sub_26CA + mov [bp+var_1], 0 + jmp short loc_BC99 +; --------------------------------------------------------------------------- + +loc_BC94: ; CODE XREF: sub_B9E2+24Fj + mov ax, 1 + jmp short loc_BCAE +; --------------------------------------------------------------------------- + +loc_BC99: ; CODE XREF: sub_B9E2+248j + ; sub_B9E2+2B0j + test byte ptr word_1FFA8, 40h + jz short loc_BCA4 + +loc_BCA0: ; CODE XREF: sub_B9E2+14Bj + mov [bp+var_1], 2 + +loc_BCA4: ; CODE XREF: sub_B9E2+147j + ; sub_B9E2+159j ... + push 1 + call sub_F618 + jmp loc_BA1D +; --------------------------------------------------------------------------- + +loc_BCAE: ; CODE XREF: sub_B9E2+1B8j + ; sub_B9E2+2B5j + pop si + leave + retn +sub_B9E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BCB1 proc far ; DATA XREF: sub_B2AB+67o + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 8 + push si + mov eax, dword_1DB82 + mov [bp+var_8], eax + jmp loc_BF63 +; --------------------------------------------------------------------------- + +loc_BCC3: ; CODE XREF: sub_BCB1+2B7j + call sub_FA8A + call dword_1F498 + call sub_C0A8 + mov si, word_20344 + mov al, byte_20618 + mov ah, 0 + add ax, ax + lea dx, [bp+var_8] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + mov word_20344, ax + call dword_1F478 + cmp byte_2061A, 0 + jz short loc_BCF9 + call dword_1F474 + mov byte_2061A, al + +loc_BCF9: ; CODE XREF: sub_BCB1+3Fj + call dword_26C3C + call sub_C6B2 + call sub_10D42 + call dword_23A72 + call sub_D874 + call sub_4288 + call sub_E2D9 + cmp word_2034C, 0 + jz short loc_BD26 + call sub_16D9B + mov word_2034C, 0 + +loc_BD26: ; CODE XREF: sub_BCB1+68j + call sub_C10A + call dword_1F4A0 + call sub_4692 + call dword_1F490 + 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): + ; + mov ax, word_2034A + cmp ax, word_20616 + jnz short loc_BD62 + mov byte_2061A, 1 + +loc_BD62: ; CODE XREF: sub_BCB1+AAj + mov byte_1E503, 0 + mov word_20344, si + cmp byte_1E501, 0 + jnz short loc_BDA2 + mov al, byte_20343 + mov ah, 0 + mov dl, byte_1E500 + mov dh, 0 + push dx + cwd + pop bx + idiv bx + or dx, dx + jnz short loc_BDA2 + mov al, byte_20342 + mov ah, 0 + sub word_20344, ax + cmp word_20344, 0 + jge short loc_BD9C + add word_20344, 190h + +loc_BD9C: ; CODE XREF: sub_BCB1+E3j + mov al, byte_20342 + mov byte_1E503, al + +loc_BDA2: ; CODE XREF: sub_BCB1+BFj sub_BCB1+D3j + mov al, byte_20618 + mov ah, 0 + add ax, ax + lea dx, [bp+var_8] + add ax, dx + mov dx, word_20344 + mov bx, ax + mov ss:[bx], dx + call sub_F62E + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jz short loc_BDCC + nop + push cs + call near ptr sub_C1E4 + +loc_BDCC: ; CODE XREF: sub_BCB1+114j + call sub_F1D8 + call sub_ECAC + call dword_26C40 + call dword_1F47C + mov byte_1F466, al + cmp byte_2061A, 0 + jz short loc_BDE8 + call dword_1F470 + +loc_BDE8: ; CODE XREF: sub_BCB1+131j + call sub_EF36 + call sub_DAF0 + call dword_23A76 + call sub_10BC6 + call sub_41AA + test byte ptr word_1FFA8, 40h + jz short loc_BE0F + call sub_B9E2 + or ax, ax + jz short loc_BE0F + mov byte_20607, 1 + +loc_BE0F: ; CODE XREF: sub_BCB1+150j + ; sub_BCB1+157j + cmp byte_1E503, 0 + jz loc_BEDC + mov ax, word_20344 + shl ax, 5 + mov dx, word_20344 + shl dx, 3 + add ax, dx + mov word_20348, ax + test byte ptr word_20344, 7 + jnz short loc_BE3B + inc word_2034A + mov word_2034C, 1 + +loc_BE3B: ; CODE XREF: sub_BCB1+17Ej + call sub_C10A + mov al, byte_20342 + mov ah, 0 + push ax + call sub_445A + mov byte_1E501, al + 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): + ; + cmp byte_1E501, 0 + jz short loc_BE77 + inc word_20344 + jmp short loc_BEE0 +; --------------------------------------------------------------------------- + +loc_BE77: ; CODE XREF: sub_BCB1+1BEj + mov ax, 190h + sub ax, word_20344 + mov [bp+var_2], ax + mov ax, word_20348 + mov [bp+var_4], ax + mov cx, word_1DF96 + mov cl, 4 + +loc_BE8D: ; CODE XREF: sub_BCB1+1E2j + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test cl, al + jz short loc_BE8D + mov al, 70h ; 'p' + out 0A2h, al ; Interrupt Controller #2, 8259A + mov ax, [bp+var_4] + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov ax, [bp+var_2] + shl ax, cl + or ah, ch + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov ax, 0 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov ax, 190h + shl ax, cl + or ah, ch + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + cmp byte_1E501, 0 + jnz short loc_BEE0 + +loc_BEDC: ; CODE XREF: sub_BCB1+163j + inc byte_20343 + +loc_BEE0: ; CODE XREF: sub_BCB1+1C4j + ; sub_BCB1+229j + cmp byte_2066D, 1 + jnz short loc_BEED + mov word_1F538, 0 + +loc_BEED: ; CODE XREF: sub_BCB1+234j + ; sub_BCB1+245j + mov al, byte_2066D + mov ah, 0 + cmp ax, word_1F538 + ja short loc_BEED + mov word_1F538, 0 + mov al, byte_20618 + mov byte_20619, al + out 0A4h, al ; Interrupt Controller #2, 8259A + xor byte_20618, 1 + mov al, byte_20618 + out 0A6h, al ; Interrupt Controller #2, 8259A + call dword_1F494 + les bx, dword_2026C + inc dword ptr es:[bx+1Ch] + inc dword_20612 + call dword_1F48C + or ax, ax + jz short loc_BF36 + cmp byte_20607, 0 + jnz short loc_BF36 + mov ax, 1 + jmp short loc_BF78 +; --------------------------------------------------------------------------- + +loc_BF36: ; CODE XREF: sub_BCB1+277j + ; sub_BCB1+27Ej + mov eax, dword_20612 + mov ebx, 708h + xor edx, edx + div ebx + cmp edx, 5DCh + jnz short loc_BF60 + mov al, byte_1F4AC + mov ah, 0 + cmp ax, word_20272 + jle short loc_BF60 + inc word_20272 + jmp short $+2 + +loc_BF60: ; CODE XREF: sub_BCB1+29Cj + ; sub_BCB1+2A7j + call sub_DD41 + +loc_BF63: ; CODE XREF: sub_BCB1+Fj + cmp byte_20607, 0 + jz loc_BCC3 + nop + push cs + call near ptr sub_DCFE + mov byte_20607, 0 + xor ax, ax + +loc_BF78: ; CODE XREF: sub_BCB1+283j + pop si + leave + retf +sub_BCB1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF7B proc near ; CODE XREF: sub_B3DA+13p + push bp + mov bp, sp + call sub_2628 + push large 200005h + call sub_263A + pop bp + retn +sub_BF7B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF90 proc far ; DATA XREF: sub_B3DA+1C3o + ; sub_B3DA+1DBo ... + push bp + mov bp, sp + pop bp + retf +sub_BF90 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF95 proc far ; DATA XREF: sub_B3DA+1CFo + ; sub_B3DA+23Bo ... + push bp + mov bp, sp + xor ax, ax + pop bp + retf +sub_BF95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF9C proc far ; DATA XREF: sub_BFD0+75o + push bp + mov bp, sp + cmp byte_1F466, 2 + jnz short loc_BFCC + mov al, byte_1E365 + cbw + cmp ax, 2 + jnz short loc_BFC3 + mov byte_1F508, 0 + mov byte_1F509, 0 + mov byte_1F50A, 0 + call far ptr loc_1EF6 + +loc_BFC3: ; CODE XREF: sub_BF9C+11j + call dword_1F488 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_BFCC: ; CODE XREF: sub_BF9C+8j + xor ax, ax + pop bp + retf +sub_BF9C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFD0 proc far ; DATA XREF: sub_B3DA+223o + push bp + mov bp, sp + cmp byte_1E501, 1 + jnz loc_C05B + mov byte_1F466, 1 + mov al, byte_1E365 + cbw + cmp ax, 3 + jnz short loc_BFF8 + mov word ptr dword_1F490+2, seg seg001 + mov word ptr dword_1F490, 0E30h + jmp short loc_C015 +; --------------------------------------------------------------------------- + +loc_BFF8: ; CODE XREF: sub_BFD0+18j + mov al, byte_1E365 + cbw + cmp ax, 2 + jnz short loc_C015 + mov byte_1F508, 0 + mov byte_1F509, 0 + mov byte_1F50A, 0 + call far ptr loc_1EF6 + +loc_C015: ; CODE XREF: sub_BFD0+26j sub_BFD0+2Fj + call dword_1F484 + call sub_17A55 + call sub_16A8A + mov word ptr dword_1F494+2, seg seg001 + mov word ptr dword_1F494, offset sub_BF90 + mov eax, dword_1F49C + mov dword_1F478, eax + mov eax, dword_1F480 + mov dword_1F47C, eax + mov word ptr dword_1F48C+2, seg seg001 + mov word ptr dword_1F48C, offset sub_BF9C + mov byte_20343, 0FFh + mov byte_1F46C, 1 + mov al, byte_1F46E + mov byte_1F46D, al + +loc_C05B: ; CODE XREF: sub_BFD0+8j + pop bp + retf +sub_BFD0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C05D proc far ; DATA XREF: sub_B3DA+22Fo + push bp + mov bp, sp + cmp dword_20612, 0A0h ; ' ' + jnz short loc_C0A6 + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 0 + jnz short loc_C09A + push large 4000Ch + push ds + push offset asc_1DDF7 ; " "... + push 0E1h ; 'á' + call sub_26CA + push large 4000Dh + push ds + push offset asc_1DDF7 ; " "... + push 0E1h ; 'á' + call sub_26CA + +loc_C09A: ; CODE XREF: sub_C05D+17j + mov word ptr dword_1F498+2, seg seg001 + mov word ptr dword_1F498, offset sub_BF90 + +loc_C0A6: ; CODE XREF: sub_C05D+Cj + pop bp + retf +sub_C05D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C0A8 proc near ; CODE XREF: sub_BCB1+1Bp + push bp + mov bp, sp + cmp byte_1F46C, 0 + jz short loc_C108 + cmp byte_1F46C, 1 + jnz short loc_C0E6 + push large 180017h + push large 0D800C1h + call sub_1416 + push large 1A0017h + push ds + mov al, byte_1F46D + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+0B0h] + push 0E1h ; 'á' + call sub_26CA + +loc_C0E6: ; CODE XREF: sub_C0A8+Fj + inc byte_1F46C + cmp byte_1F46C, 0A0h ; ' ' + jb short loc_C108 + push large 180017h + push ds + push (offset asc_1DDF7+16h) + push 0E1h ; 'á' + call sub_26CA + mov byte_1F46C, 0 + +loc_C108: ; CODE XREF: sub_C0A8+8j sub_C0A8+47j + pop bp + retn +sub_C0A8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C10A proc near ; CODE XREF: sub_BCB1:loc_BD26p + ; sub_BCB1:loc_BE3Bp + push bp + mov bp, sp + call sub_74E + 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 + pop bp + retn +sub_C10A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C13E proc far ; CODE XREF: _main+63p + push bp + mov bp, sp + push 36B0h + call sub_2980 + mov word ptr dword_1F4A8+2, ax + mov word ptr dword_1F4A8, 0 + mov byte_1E516, 50h ; 'P' + mov word_20272, 0Ch + les bx, dword_2026C + mov dword ptr es:[bx+1Ch], 12h + cmp byte ptr es:[bx+27h], 1 + jnz short loc_C18A + mov byte_1E365, 3 + push ds + push offset aDemo1_rec ; "DEMO1.REC" + call sub_950 + les bx, dword_2026C + mov byte ptr es:[bx+26h], 0 + jmp short loc_C1D0 +; --------------------------------------------------------------------------- + +loc_C18A: ; CODE XREF: sub_C13E+31j + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 2 + jnz short loc_C1AE + mov byte_1E365, 2 + push ds + push offset aDemo2_rec ; "DEMO2.REC" + call sub_950 + les bx, dword_2026C + mov byte ptr es:[bx+26h], 2 + jmp short loc_C1D0 +; --------------------------------------------------------------------------- + +loc_C1AE: ; CODE XREF: sub_C13E+55j + les bx, dword_2026C + cmp byte ptr es:[bx+27h], 3 + jnz short loc_C1D0 + mov byte_1E365, 1 + push ds + push offset aDemo3_rec ; "DEMO3.REC" + call sub_950 + les bx, dword_2026C + mov byte ptr es:[bx+26h], 1 + +loc_C1D0: ; CODE XREF: sub_C13E+4Aj sub_C13E+6Ej ... + push large [dword_1F4A8] + push 36B0h + call sub_89C + call sub_870 + pop bp + retf +sub_C13E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C1E4 proc far ; CODE XREF: sub_BCB1+118p + push bp + mov bp, sp + cmp word_1FFA8, 0 + jnz short loc_C20B + mov ax, word_1DB86 + add ax, ax + les bx, dword_1F4A8 + add bx, ax + mov ax, es:[bx] + mov word_1FFA8, ax + inc word_1DB86 + cmp word_1DB86, 1B26h + jl short loc_C222 + +loc_C20B: ; CODE XREF: sub_C1E4+8j + mov word_1FFA8, 0 + push 0Ah + call sub_536 + mov byte_20607, 1 + call sub_FA46 + +loc_C222: ; CODE XREF: sub_C1E4+25j + pop bp + retf +sub_C1E4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C224 proc near ; CODE XREF: sub_B3DA+85p + push bp + mov bp, sp + push si + xor si, si + +loc_C22A: ; CODE XREF: sub_C224+14j + call sub_2164 + mov [si+26FAh], al + inc si + cmp si, 100h + jl short loc_C22A + pop si + pop bp + retn +sub_C224 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_C23D proc near ; CODE XREF: sub_D743+A5p + ; sub_D743:loc_D7FEp ... + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov al, [bx+26FAh] + retn +sub_C23D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C24C proc near ; CODE XREF: sub_CB2D+5Ap sub_CB2D+75p ... + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov al, [bx+26FAh] + and al, [bp+arg_0] + pop bp + retn 2 +sub_C24C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_C264 proc near ; CODE XREF: sub_D65A+34p + ; sub_E512:loc_E525p ... + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov ax, [bx+26FAh] + retn +sub_C264 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C273 proc near ; CODE XREF: _main+3p + +var_2 = word ptr -2 + + enter 2, 0 + push ds + push offset aHuuma_cfg ; "huuma.cfg" + call sub_950 + push large 5 + push 0 + call sub_98C + push ss + lea ax, [bp+var_2] + push ax + push 2 + call sub_89C + call sub_870 + cmp [bp+var_2], 0 + jz short loc_C2F0 + mov ax, [bp+var_2] + mov word ptr dword_2026C+2, ax + mov word ptr dword_2026C, 0 + les bx, dword_2026C + mov al, es:[bx+0Bh] + mov byte_1E365, al + mov al, es:[bx+1Ah] + mov byte_1E59C, al + mov al, es:[bx+19h] + mov byte_1E59D, al + mov al, es:[bx+16h] + mov byte_1E364, al + mov al, es:[bx+17h] + mov byte_1E516, al + cmp byte_1E516, 0 + jnz short loc_C2DF + inc byte_1E516 + +loc_C2DF: ; CODE XREF: sub_C273+66j + mov word_20272, 0 + mov word_1E51E, 0 + mov ax, 1 + leave + retn +; --------------------------------------------------------------------------- + +loc_C2F0: ; CODE XREF: sub_C273+2Cj + xor ax, ax + leave + retn +sub_C273 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C2F4 proc near ; CODE XREF: sub_C31F+127p + ; sub_C31F+196p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push large 18000Eh + push ds + push offset aO ; "®¼" + push [bp+arg_2] + call sub_145A + push large 19000Fh + push ds + push offset asc_1E473 ; "¶¸" + push [bp+arg_0] + call sub_145A + pop bp + retn 4 +sub_C2F4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C31F proc near ; CODE XREF: _main+10Ap + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov [bp+var_2], 0 + mov di, 1 + nop + push cs + call near ptr sub_E162 + mov word_1DF9A, 32h ; '2' + call far ptr loc_1EF6 + nop + push cs + call near ptr sub_E16D + mov si, 15h + jmp loc_C3E5 +; --------------------------------------------------------------------------- + +loc_C348: ; CODE XREF: sub_C31F+C9j + push 12h + lea ax, [si+1] + push ax + push ds + push offset asc_1E47E ; " " + push 0E1h ; 'á' + call sub_26CA + push 12h + push si + push ds + push offset aKOO_0 ; "°ª·®¸¿®»" + push 0E1h ; 'á' + call sub_145A + push 12h + mov ax, 17h + sub ax, si + push ax + push ds + push offset asc_1E47E ; " " + push 0E1h ; 'á' + call sub_26CA + push 12h + mov ax, 18h + sub ax, si + push ax + push ds + push offset aKOO_0 ; "°ª·®¸¿®»" + push 0E1h ; 'á' + call sub_145A + mov ax, 1Dh + sub ax, si + push ax + push 0Ch + push ds + push offset asc_1E47E ; " " + push 0E1h ; 'á' + call sub_26CA + mov ax, 1Eh + sub ax, si + push ax + push 0Ch + push ds + push offset aKOO_0 ; "°ª·®¸¿®»" + push 0E1h ; 'á' + call sub_145A + lea ax, [si+7] + push ax + push 0Ch + push ds + push offset asc_1E47E ; " " + push 0E1h ; 'á' + call sub_26CA + lea ax, [si+6] + push ax + push 0Ch + push ds + push offset aKOO_0 ; "°ª·®¸¿®»" + push 0E1h ; 'á' + call sub_145A + push 1 + call sub_F618 + dec si + +loc_C3E5: ; CODE XREF: sub_C31F+26j + cmp si, 0Ch + jge loc_C348 + push 1Eh + call sub_F618 + mov word_1FFA8, 0 + jmp short loc_C400 +; --------------------------------------------------------------------------- + +loc_C3FB: ; CODE XREF: sub_C31F+E6j + call sub_F62E + +loc_C400: ; CODE XREF: sub_C31F+DAj + cmp word_1FFA8, 0 + jz short loc_C3FB + call sub_FBE9 + call sub_1C9FE + call sub_FBE9 + les bx, dword_2026C + cmp word ptr es:[bx+12h], 3 + jnb loc_C4F5 + mov al, byte_1E364 + cbw + cmp ax, 4 + jge loc_C4F5 + push large 12000Ch + push ds + push offset aMO ; "¬¸¶½²¶¾®Ý" + push 0E1h ; 'á' + call sub_145A + push large 0E500E1h + call sub_C2F4 + push large 120014h + push ds + push offset aMOn ; "¬»®­²½" + push 81h ; '' + call sub_145A + les bx, dword_2026C + mov ax, 0A3h ; '£' + sub ax, es:[bx+12h] + mov si, ax + push large 200014h + push ax + push 81h ; '' + call sub_1416 + mov di, 1 + +loc_C47A: ; CODE XREF: sub_C31F+1CDj + call sub_F62E + cmp [bp+var_2], 0 + jnz short loc_C493 + cmp word_1FFA8, 0 + jnz short loc_C493 + mov [bp+var_2], 1 + jmp short loc_C4A5 +; --------------------------------------------------------------------------- + +loc_C493: ; CODE XREF: sub_C31F+164j + ; sub_C31F+16Bj + cmp [bp+var_2], 1 + jnz short loc_C4A5 + cmp word_1FFA8, 0 + jz short loc_C4A5 + mov [bp+var_2], 2 + +loc_C4A5: ; CODE XREF: sub_C31F+172j + ; sub_C31F+178j ... + test byte ptr word_1FFA8, 1 + jz short loc_C4B8 + mov di, 1 + push large 0E500E1h + call sub_C2F4 + +loc_C4B8: ; CODE XREF: sub_C31F+18Bj + test byte ptr word_1FFA8, 2 + jz short loc_C4CA + xor di, di + push large 0E100E5h + call sub_C2F4 + +loc_C4CA: ; CODE XREF: sub_C31F+19Ej + cmp [bp+var_2], 2 + jnz short loc_C4E5 + test byte ptr word_1FFA8, 10h + jnz short loc_C4EE + test byte ptr word_1FFA8, 80h + jnz short loc_C4EE + test byte ptr word_1FFA8, 40h + jnz short loc_C4EE + +loc_C4E5: ; CODE XREF: sub_C31F+1AFj + push 1 + call sub_F618 + jmp short loc_C47A +; --------------------------------------------------------------------------- + +loc_C4EE: ; CODE XREF: sub_C31F+1B6j + ; sub_C31F+1BDj ... + test byte ptr word_1FFA8, 40h + jz short loc_C4F7 + +loc_C4F5: ; CODE XREF: sub_C31F+100j + ; sub_C31F+10Bj + xor di, di + +loc_C4F7: ; CODE XREF: sub_C31F+1D4j + les bx, dword_2026C + mov eax, es:[bx+2Ch] + cmp eax, dword_1E598 + jnb short loc_C50D + mov eax, dword_1E598 + jmp short loc_C516 +; --------------------------------------------------------------------------- + +loc_C50D: ; CODE XREF: sub_C31F+1E6j + les bx, dword_2026C + mov eax, es:[bx+2Ch] + +loc_C516: ; CODE XREF: sub_C31F+1ECj + les bx, dword_2026C + mov es:[bx+2Ch], eax + mov al, es:[bx+1Ah] + mov byte_1E59C, al + mov al, es:[bx+19h] + mov byte_1E59D, al + mov byte_1E516, 1 + inc word ptr es:[bx+12h] + call sub_DD1B + mov al, byte_1E365 + cbw + mov bx, 5 + cwd + idiv bx + add dx, 2 + mov word_1E51E, dx + mov word_1E51C, 0Ah + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + call sub_FBE9 + mov ax, di + pop di + pop si + leave + retn +sub_C31F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_C566(char *arg0) +sub_C566 proc far ; CODE XREF: _main+13Dp sub_16A21+3BP ... + +_arg0 = dword ptr 6 + + push bp + mov bp, sp + push ds + push offset unk_1FD74 + push large [dword_1FD5C] + call sub_16C0 + call sub_E24A + call sub_F4EF + call sub_1C608 + call sub_2B50 + call sub_15DA + call sub_2628 + call sub_DC4B + call sub_F70E + push large 0 + push large [bp+_arg0] ; arg0 + push large [bp+_arg0] ; path + call _execl + add sp, 0Ch + pop bp + retf +sub_C566 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C5B0 proc near ; CODE XREF: sub_B3DA+241p + ; sub_B98E+1Dp + push bp + mov bp, sp + xor dx, dx + jmp short loc_C5C2 +; --------------------------------------------------------------------------- + +loc_C5B7: ; CODE XREF: sub_C5B0+15j + mov bx, dx + shl bx, 4 + mov byte ptr [bx+2908h], 0 + inc dx + +loc_C5C2: ; CODE XREF: sub_C5B0+5j + cmp dx, 26h ; '&' + jl short loc_C5B7 + mov byte_205DE, 0 + mov byte_20605, 0 + mov byte_20606, 0 + mov byte_20607, 0 + mov byte_20608, 0 + mov byte_20609, 0 + mov byte_205DF, 8 + mov byte_205E0, 0 + mov byte_20604, 0 + mov byte_1E517, 0 + mov byte_1E51B, 48h ; 'H' + mov word_205D8, 0FFFFh + mov word_205DC, 0FFFFh + mov word_205DA, 0FFFFh + mov byte_20610, 0 + mov byte_20611, 0 + les bx, dword_2026C + mov al, es:[bx+26h] + mov ah, 0 + or ax, ax + jz short loc_C634 + cmp ax, 1 + jz short loc_C655 + cmp ax, 2 + jz short loc_C67F + pop bp + retn +; --------------------------------------------------------------------------- + +loc_C634: ; CODE XREF: sub_C5B0+76j + mov word_20602, 19CDh + mov byte_2060A, 5 + mov byte_2060B, 5 + mov byte_2060C, 4 + mov byte_2060D, 4 + mov byte_2060E, 30h ; '0' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_C655: ; CODE XREF: sub_C5B0+7Bj + mov word_20602, 1BCAh + mov byte_2060A, 4 + mov byte_2060B, 4 + mov byte_2060C, 3 + mov byte_2060D, 3 + mov byte_2060E, 34h ; '4' + mov byte_2060F, 37h ; '7' + inc byte_1E51B + pop bp + retn +; --------------------------------------------------------------------------- + +loc_C67F: ; CODE XREF: sub_C5B0+80j + mov word_20602, 1F0Bh + mov byte_2060A, 3 + mov byte_2060B, 3 + mov byte_2060C, 3 + mov byte_2060D, 3 + mov byte_1E518, 3 + mov byte_2060E, 7Dh ; '}' + mov byte_2060F, 3Bh ; ';' + mov al, byte_1E51B + add al, 2 + mov byte_1E51B, al + pop bp + retn +sub_C5B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C6B2 proc near ; CODE XREF: sub_BCB1+4Cp + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + mov [bp+var_2], 2 + call sub_D38F + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2B76h + mov word_205EE, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2B7Ah + mov word_205F0, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, 2B8Ah + mov word_205F2, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, 2B8Ch + mov word_205F4, ax + mov bx, word_205EE + push word ptr [bx] + mov bx, word_205F0 + push word ptr [bx] + push large 200030h + call sub_45FC + mov bx, word_205F2 + mov si, [bx] + push si + mov bx, word_205F4 + push word ptr [bx] + push large 100010h + call sub_45FC + lea ax, [si+30h] + push ax + mov bx, word_205F4 + push word ptr [bx] + push large 100010h + call sub_45FC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + mov bx, word_205EE + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B7Ah] + mov bx, word_205F0 + mov [bx], ax + pop si + leave + retn +sub_C6B2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C764 proc near ; CODE XREF: sub_D629+26p + push bp + mov bp, sp + push si + xor si, si + jmp short loc_C772 +; --------------------------------------------------------------------------- + +loc_C76C: ; CODE XREF: sub_C764+11j + mov byte ptr [si+28A8h], 0 + inc si + +loc_C772: ; CODE XREF: sub_C764+6j + cmp si, 14h + jl short loc_C76C + mov byte_20276, 0Fh + mov al, byte_1E364 + cbw + mov bx, ax + cmp bx, 4 + ja short loc_C7BC + add bx, bx + jmp cs:off_C7C0[bx] + +loc_C78E: ; DATA XREF: seg001:off_C7C0o + ; seg001:1662o + mov byte_20340, 0Ch + mov byte_20341, 0Ch + jmp short loc_C7BC +; --------------------------------------------------------------------------- + +loc_C79A: ; CODE XREF: sub_C764+25j + ; DATA XREF: seg001:1664o + mov byte_20340, 0Ah + mov byte_20341, 2 + jmp short loc_C7BC +; --------------------------------------------------------------------------- + +loc_C7A6: ; CODE XREF: sub_C764+25j + ; DATA XREF: seg001:1666o + mov byte_20340, 0Ah + mov byte_20341, 4 + jmp short loc_C7BC +; --------------------------------------------------------------------------- + +loc_C7B2: ; CODE XREF: sub_C764+25j + ; DATA XREF: seg001:1668o + mov byte_20340, 0Ah + mov byte_20341, 8 + +loc_C7BC: ; CODE XREF: sub_C764+21j sub_C764+34j ... + pop si + pop bp + retn +sub_C764 endp + +; --------------------------------------------------------------------------- + db 0 +off_C7C0 dw offset loc_C78E ; DATA XREF: sub_C764+25r + dw offset loc_C78E + dw offset loc_C79A + dw offset loc_C7A6 + dw offset loc_C7B2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7CA proc near ; CODE XREF: sub_D906+91p sub_D906+E5p ... + +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 cx, [bp+arg_4] + mov dx, [bp+arg_2] + mov di, [bp+arg_0] + xor si, si + jmp short loc_C812 +; --------------------------------------------------------------------------- + +loc_C7DC: ; CODE XREF: sub_C7CA+4Bj + cmp byte ptr [si+28A8h], 0 + jnz short loc_C811 + mov byte ptr [si+28A8h], 1 + mov byte ptr [si+28BCh], 0 + mov bx, si + add bx, bx + mov [bx+2880h], di + mov bx, si + add bx, bx + mov [bx+2808h], cx + mov bx, si + shl bx, 2 + mov [bx+2830h], dx + mov bx, si + shl bx, 2 + mov [bx+2832h], dx + jmp short loc_C817 +; --------------------------------------------------------------------------- + +loc_C811: ; CODE XREF: sub_C7CA+17j + inc si + +loc_C812: ; CODE XREF: sub_C7CA+10j + cmp si, 14h + jl short loc_C7DC + +loc_C817: ; CODE XREF: sub_C7CA+45j + pop di + pop si + pop bp + retn 6 +sub_C7CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C81D proc near ; CODE XREF: sub_D874+8Bp + push bp + mov bp, sp + push si + xor si, si + jmp short loc_C885 +; --------------------------------------------------------------------------- + +loc_C825: ; CODE XREF: sub_C81D+6Bj + cmp byte ptr [si+28A8h], 0 + jz short loc_C884 + mov bx, si + add bx, bx + push word ptr [bx+2808h] + mov bx, si + shl bx, 2 + mov al, byte_20618 + mov ah, 0 + add ax, ax + add bx, ax + push word ptr [bx+2830h] + push large 400008h + call sub_45FC + cmp byte ptr [si+28A8h], 2 + jnz short loc_C85F + mov byte ptr [si+28A8h], 0 + jmp short loc_C884 +; --------------------------------------------------------------------------- + +loc_C85F: ; CODE XREF: sub_C81D+39j + mov bx, si + shl bx, 2 + mov al, byte_20619 + mov ah, 0 + add ax, ax + add bx, ax + mov ax, [bx+2830h] + mov bx, si + shl bx, 2 + mov dl, byte_20618 + mov dh, 0 + add dx, dx + add bx, dx + mov [bx+2830h], ax + +loc_C884: ; CODE XREF: sub_C81D+Dj sub_C81D+40j + inc si + +loc_C885: ; CODE XREF: sub_C81D+6j + cmp si, 14h + jl short loc_C825 + pop si + pop bp + retn +sub_C81D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C88D proc near ; CODE XREF: sub_C914+7Fp + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov di, [bp+arg_4] + mov [bp+var_1], 0 + xor si, si + jmp short loc_C8E0 +; --------------------------------------------------------------------------- + +loc_C8A0: ; CODE XREF: sub_C88D+56j + mov bx, si + add bx, bx + mov ax, [bp+arg_0] + xor dx, dx + div word ptr [bx+0A20h] + mov [bp+var_2], al + mov bx, si + add bx, bx + mov ax, [bp+arg_0] + xor dx, dx + div word ptr [bx+0A20h] + mov [bp+arg_0], dx + cmp [bp+var_2], 0 + jnz short loc_C8CC + cmp [bp+var_1], 0 + jz short loc_C8DC + +loc_C8CC: ; CODE XREF: sub_C88D+37j + mov [bp+var_1], 1 + push di + push [bp+arg_2] + mov al, [bp+var_2] + cbw + push ax + call sub_C9A6 + +loc_C8DC: ; CODE XREF: sub_C88D+3Dj + inc si + add di, 8 + +loc_C8E0: ; CODE XREF: sub_C88D+11j + cmp si, 4 + jl short loc_C8A0 + push di + push [bp+arg_2] + push 0 + call sub_C9A6 + lea ax, [di+8] + push ax + push [bp+arg_2] + mov al, byte_20340 + mov ah, 0 + push ax + call sub_C9A6 + lea ax, [di+10h] + push ax + push [bp+arg_2] + mov al, byte_20341 + mov ah, 0 + push ax + call sub_C9A6 + pop di + pop si + leave + retn 6 +sub_C88D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C914 proc near ; CODE XREF: sub_DAF0:loc_DC31p + push bp + mov bp, sp + push si + push di + push 0C0h ; 'À' + mov al, byte_20276 + mov ah, 0 + push ax + call sub_127E + mov ax, 0A800h + mov es, ax + assume es:nothing + xor si, si + jmp short loc_C997 +; --------------------------------------------------------------------------- + +loc_C930: ; CODE XREF: sub_C914+86j + cmp byte ptr [si+28A8h], 1 + jnz short loc_C996 + cmp byte ptr [si+28BCh], 6 + jbe short loc_C95E + mov bx, si + shl bx, 2 + mov al, byte_20618 + mov ah, 0 + add ax, ax + add bx, ax + dec word ptr [bx+2830h] + cmp byte ptr [si+28BCh], 18h + jbe short loc_C95E + mov byte ptr [si+28A8h], 2 + jmp short loc_C996 +; --------------------------------------------------------------------------- + +loc_C95E: ; CODE XREF: sub_C914+28j sub_C914+41j + inc byte ptr [si+28BCh] + mov bx, si + shl bx, 2 + mov al, byte_20618 + mov ah, 0 + add ax, ax + add bx, ax + mov di, [bx+2830h] + add di, word_20344 + cmp di, 190h + jl short loc_C982 + sub di, 190h + +loc_C982: ; CODE XREF: sub_C914+68j + mov bx, si + add bx, bx + push word ptr [bx+2808h] + push di + mov bx, si + add bx, bx + push word ptr [bx+2880h] + call sub_C88D + +loc_C996: ; CODE XREF: sub_C914+21j sub_C914+48j + inc si + +loc_C997: ; CODE XREF: sub_C914+1Aj + cmp si, 14h + jl short loc_C930 + call sub_12A8 + pop di + pop si + pop bp + retn +sub_C914 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C9A6 proc near ; CODE XREF: sub_C88D+4Cp sub_C88D+5Ep ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 0, 0 + push si + push di + mov ax, [bp+arg_4] + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov ax, [bp+arg_4] + and ax, 7 + mov dl, al + mov bl, 8 + sub bl, al + mov dh, bl + mov si, [bp+arg_0] + shl si, 3 + add si, 0A28h + mov cx, 8 + cmp ax, 0 + jnz short loc_C9F3 + +loc_C9E1: ; CODE XREF: sub_C9A6:loc_C9EFj + movsb + add di, 4Fh ; 'O' + cmp di, 7D00h + jl short loc_C9EF + sub di, 7D00h + +loc_C9EF: ; CODE XREF: sub_C9A6+43j + loop loc_C9E1 + jmp short loc_CA16 +; --------------------------------------------------------------------------- + +loc_C9F3: ; CODE XREF: sub_C9A6+39j sub_C9A6+6Ej + mov al, [si] + mov ah, al + mov bx, cx + mov cl, dl + shr al, cl + mov cl, dh + shl ah, cl + mov cx, bx + mov es:[di], ax + add di, 50h ; 'P' + cmp di, 7D00h + jl short loc_CA13 + sub di, 7D00h + +loc_CA13: ; CODE XREF: sub_C9A6+67j + inc si + loop loc_C9F3 + +loc_CA16: ; CODE XREF: sub_C9A6+4Bj + pop di + pop si + leave + retn 6 +sub_C9A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA1C proc far ; CODE XREF: sub_B3DA+82p + push bp + mov bp, sp + mov byte_20342, 1 + mov byte_20343, 0 + mov word_20344, 0 + mov word_20346, 0 + mov word_2034A, 0 + mov byte_1E500, 4 + mov byte_1E501, 0 + mov byte_2034E, 0 + mov byte_1E502, 0 + mov word_20348, 0 + mov word_2034C, 0 + mov byte_1E503, 0 + pop bp + retf +sub_CA1C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA62 proc near ; CODE XREF: sub_CB2D+50p sub_CB2D+60p ... + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + mov dl, [bp+arg_0] + mov ax, word_205E2 + shl ax, 4 + add ax, 2908h + mov si, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov cx, ax + mov word ptr [si], 1 + mov ax, word_205F6 + add ax, [bp+arg_2] + shl ax, 4 + mov bx, cx + add bx, bx + mov [bx+si+2], ax + mov bx, cx + add bx, bx + mov ax, word_205E4 + mov [bx+si+4], ax + mov al, dl + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+5ECh] + imul ax, 0Ch + sar ax, 4 + mov [si+0Ah], ax + mov al, dl + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+56Ch] + imul ax, 0Ch + sar ax, 4 + mov [si+0Ch], ax + mov al, byte_1E519 + mov ah, 0 + mov [si+0Eh], ax + pop si + pop bp + retn 4 +sub_CA62 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CAD2 proc near ; CODE XREF: sub_CD2A+218p + ; sub_CD2A:loc_CF7Ap ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov ax, word_205E2 + shl ax, 4 + add ax, 2908h + mov si, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov dx, ax + mov word ptr [si], 101h + mov bx, word_205F2 + mov ax, [bx] + add ax, [bp+arg_4] + shl ax, 4 + mov bx, dx + add bx, bx + mov [bx+si+2], ax + mov bx, word_205F4 + mov ax, [bx] + shl ax, 4 + mov bx, dx + add bx, bx + mov [bx+si+4], ax + mov ax, [bp+arg_2] + mov [si+0Ah], ax + mov ax, [bp+arg_0] + mov [si+0Ch], ax + mov al, byte_1E51A + mov ah, 0 + add ax, 100h + mov [si+0Eh], ax + pop si + pop bp + retn 6 +sub_CAD2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB2D proc near + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + xor si, si + xor di, di + mov [bp+var_2], 0 + mov ax, word_205F8 + add ax, 20h ; ' ' + shl ax, 4 + mov word_205E4, ax + mov word_205E2, 0 + jmp loc_CD04 +; --------------------------------------------------------------------------- + +loc_CB53: ; CODE XREF: sub_CB2D+1DCj + mov bx, word_205E2 + shl bx, 4 + cmp byte ptr [bx+2908h], 0 + jnz loc_CD00 + mov al, byte_218B2 + mov ah, 0 + mov bx, ax + cmp bx, 9 + ja loc_CCFB + add bx, bx + jmp cs:off_CD16[bx] + +loc_CB78: ; DATA XREF: seg001:off_CD16o + push 8 + push 0C0h ; 'À' + call sub_CA62 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CB83: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BB8o + push 8 + push 3 + call sub_C24C + add al, 0BEh ; '¾' + push ax + call sub_CA62 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CB93: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BBAo + cmp si, 1 + jnz short loc_CB9D + mov [bp+var_2], 10h + +loc_CB9D: ; CODE XREF: sub_CB2D+69j + push [bp+var_2] + push 7 + call sub_C24C + add al, 0BCh ; '¼' + push ax + +loc_CBA8: ; CODE XREF: sub_CB2D+94j + call sub_CA62 + mov di, 1 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CBB1: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BBCo + cmp si, 1 + jnz short loc_CBBB + mov [bp+var_2], 10h + +loc_CBBB: ; CODE XREF: sub_CB2D+87j + push [bp+var_2] + push 0C0h ; 'À' + jmp short loc_CBA8 +; --------------------------------------------------------------------------- + +loc_CBC3: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BC0o + mov [bp+var_2], 2 + +loc_CBC8: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BBEo + or si, si + jnz short loc_CBD3 + push 8 + push 0C0h ; 'À' + jmp short loc_CBE9 +; --------------------------------------------------------------------------- + +loc_CBD3: ; CODE XREF: sub_CB2D+9Dj + cmp si, 1 + jnz short loc_CBE1 + push 8 + mov al, 0BBh ; '»' + sub al, byte ptr [bp+var_2] + jmp short loc_CBE8 +; --------------------------------------------------------------------------- + +loc_CBE1: ; CODE XREF: sub_CB2D+A9j + push 8 + mov al, byte ptr [bp+var_2] + add al, 0C5h ; 'Å' + +loc_CBE8: ; CODE XREF: sub_CB2D+B2j + push ax + +loc_CBE9: ; CODE XREF: sub_CB2D+A4j + call sub_CA62 + mov di, 2 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CBF2: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BC2o + or si, si + jnz short loc_CBFD + push 0 + push 0C0h ; 'À' + jmp short loc_CC19 +; --------------------------------------------------------------------------- + +loc_CBFD: ; CODE XREF: sub_CB2D+C7j + cmp si, 1 + jnz short loc_CC09 + push 10h + push 0C0h ; 'À' + jmp short loc_CC19 +; --------------------------------------------------------------------------- + +loc_CC09: ; CODE XREF: sub_CB2D+D3j + push 1Fh + call sub_C24C + mov ah, 0 + add ax, 0B1h ; '±' + mov [bp+var_2], ax + push 8 + push ax + +loc_CC19: ; CODE XREF: sub_CB2D+CEj sub_CB2D+DAj + call sub_CA62 + mov di, 3 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CC22: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BC4o + or si, si + jnz short loc_CC2D + push 0 + push 0C0h ; 'À' + jmp short loc_CC4A +; --------------------------------------------------------------------------- + +loc_CC2D: ; CODE XREF: sub_CB2D+F7j + cmp si, 1 + jnz short loc_CC39 + push 10h + push 0C0h ; 'À' + jmp short loc_CC4A +; --------------------------------------------------------------------------- + +loc_CC39: ; CODE XREF: sub_CB2D+103j + cmp si, 2 + jnz short loc_CC45 + push 8 + push 0B8h ; '¸' + jmp short loc_CC4A +; --------------------------------------------------------------------------- + +loc_CC45: ; CODE XREF: sub_CB2D+10Fj + push 8 + push 0C8h ; 'È' + +loc_CC4A: ; CODE XREF: sub_CB2D+FEj + ; sub_CB2D+10Aj ... + call sub_CA62 + mov di, 3 + jmp loc_CCFB +; --------------------------------------------------------------------------- + +loc_CC53: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BC6o + or si, si + jnz short loc_CC5E + mov [bp+var_2], 0C0h ; 'À' + jmp short loc_CC87 +; --------------------------------------------------------------------------- + +loc_CC5E: ; CODE XREF: sub_CB2D+128j + cmp si, 1 + jnz short loc_CC6A + mov [bp+var_2], 0B8h ; '¸' + jmp short loc_CC87 +; --------------------------------------------------------------------------- + +loc_CC6A: ; CODE XREF: sub_CB2D+134j + cmp si, 2 + jnz short loc_CC76 + mov [bp+var_2], 0C8h ; 'È' + jmp short loc_CC87 +; --------------------------------------------------------------------------- + +loc_CC76: ; CODE XREF: sub_CB2D+140j + cmp si, 3 + jnz short loc_CC82 + mov [bp+var_2], 0B0h ; '°' + jmp short loc_CC87 +; --------------------------------------------------------------------------- + +loc_CC82: ; CODE XREF: sub_CB2D+14Cj + mov [bp+var_2], 0D0h ; 'Ð' + +loc_CC87: ; CODE XREF: sub_CB2D+12Fj + ; sub_CB2D+13Bj ... + push 8 + push [bp+var_2] + call sub_CA62 + mov di, 4 + jmp short loc_CCFB +; --------------------------------------------------------------------------- + +loc_CC94: ; CODE XREF: sub_CB2D+46j + ; DATA XREF: seg001:1BC8o + or si, si + jnz short loc_CC9F + push 0 + push 0C0h ; 'À' + jmp short loc_CCF5 +; --------------------------------------------------------------------------- + +loc_CC9F: ; CODE XREF: sub_CB2D+169j + cmp si, 1 + jnz short loc_CCAB + push 10h + push 0C0h ; 'À' + jmp short loc_CCF5 +; --------------------------------------------------------------------------- + +loc_CCAB: ; CODE XREF: sub_CB2D+175j + cmp si, 2 + jnz short loc_CCBE + mov byte_1E519, 34h ; '4' + mov [bp+var_2], 0B3h ; '³' + push 8 + jmp short loc_CCF2 +; --------------------------------------------------------------------------- + +loc_CCBE: ; CODE XREF: sub_CB2D+181j + cmp si, 3 + jnz short loc_CCCC + mov [bp+var_2], 0CDh ; 'Í' + push 8 + jmp short loc_CCF2 +; --------------------------------------------------------------------------- + +loc_CCCC: ; CODE XREF: sub_CB2D+194j + cmp si, 4 + jnz short loc_CCE6 + mov byte_1E519, 36h ; '6' + mov al, byte_20610 + cbw + mov dx, 0C0h ; 'À' + sub dx, ax + mov [bp+var_2], dx + push 0FFE8h + jmp short loc_CCF2 +; --------------------------------------------------------------------------- + +loc_CCE6: ; CODE XREF: sub_CB2D+1A2j + mov al, byte_20610 + cbw + add ax, 0C0h ; 'À' + mov [bp+var_2], ax + push 28h ; '(' + +loc_CCF2: ; CODE XREF: sub_CB2D+18Fj + ; sub_CB2D+19Dj ... + push [bp+var_2] + +loc_CCF5: ; CODE XREF: sub_CB2D+170j + ; sub_CB2D+17Cj + call sub_CA62 + mov di, 5 + +loc_CCFB: ; CODE XREF: sub_CB2D+40j sub_CB2D+53j ... + cmp si, di + jz short loc_CD0D + inc si + +loc_CD00: ; CODE XREF: sub_CB2D+32j + inc word_205E2 + +loc_CD04: ; CODE XREF: sub_CB2D+23j + cmp word_205E2, 26h ; '&' + jl loc_CB53 + +loc_CD0D: ; CODE XREF: sub_CB2D+1D0j + mov byte_205DE, 0 + pop di + pop si + leave + retn +sub_CB2D endp + +; --------------------------------------------------------------------------- +off_CD16 dw offset loc_CB78 ; DATA XREF: sub_CB2D+46r + dw offset loc_CB83 + dw offset loc_CB93 + dw offset loc_CBB1 + dw offset loc_CBC8 + dw offset loc_CBC3 + dw offset loc_CBF2 + dw offset loc_CC22 + dw offset loc_CC53 + dw offset loc_CC94 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CD2A proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + xor si, si + xor di, di + mov [bp+var_2], 0 + mov [bp+var_3], 0 + mov ax, word_205F8 + add ax, 20h ; ' ' + shl ax, 4 + mov word_205E4, ax + mov word_205E2, 0 + jmp loc_D039 +; --------------------------------------------------------------------------- + +loc_CD54: ; CODE XREF: sub_CD2A+314j + mov bx, word_205E2 + shl bx, 4 + cmp byte ptr [bx+2908h], 0 + jnz loc_D035 + cmp [bp+var_3], 0 + jnz loc_CEF7 + mov al, byte_218B2 + mov ah, 0 + mov bx, ax + cmp bx, 9 + ja loc_CEE8 + add bx, bx + jmp cs:off_D057[bx] + +loc_CD81: ; CODE XREF: sub_CD2A+207j + ; DATA XREF: seg001:off_D057o + push 8 + push 0C0h ; 'À' + call sub_CA62 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CD8C: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + push 8 + push 3 + call sub_C24C + add al, 0BEh ; '¾' + jmp short loc_CDA0 +; --------------------------------------------------------------------------- + +loc_CD97: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + push 8 + push 7 + call sub_C24C + add al, 0BCh ; '¼' + +loc_CDA0: ; CODE XREF: sub_CD2A+6Bj + push ax + call sub_CA62 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CDA7: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + or si, si + jnz short loc_CDAF + push 0 + jmp short loc_CDB1 +; --------------------------------------------------------------------------- + +loc_CDAF: ; CODE XREF: sub_CD2A+7Fj + push 10h + +loc_CDB1: ; CODE XREF: sub_CD2A+83j + push 7 + call sub_C24C + add al, 0BCh ; '¼' + push ax + call sub_CA62 + mov di, 1 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CDC2: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + cmp si, 1 + jnz short loc_CDCC + mov [bp+var_2], 10h + +loc_CDCC: ; CODE XREF: sub_CD2A+9Bj + push [bp+var_2] + push 0C0h ; 'À' + call sub_CA62 + mov di, 1 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CDDB: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + or si, si + jnz short loc_CDE6 + push 0 + push 0BEh ; '¾' + jmp short loc_CDEB +; --------------------------------------------------------------------------- + +loc_CDE6: ; CODE XREF: sub_CD2A+B3j + push 10h + push 0C2h ; 'Â' + +loc_CDEB: ; CODE XREF: sub_CD2A+BAj + call sub_CA62 + mov di, 1 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CDF4: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + mov [bp+var_2], 2 + +loc_CDF9: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + or si, si + jnz short loc_CE04 + push 8 + push 0C0h ; 'À' + jmp short loc_CE1A +; --------------------------------------------------------------------------- + +loc_CE04: ; CODE XREF: sub_CD2A+D1j + cmp si, 1 + jnz short loc_CE12 + push 8 + mov al, 0BBh ; '»' + sub al, byte ptr [bp+var_2] + jmp short loc_CE19 +; --------------------------------------------------------------------------- + +loc_CE12: ; CODE XREF: sub_CD2A+DDj + push 8 + mov al, byte ptr [bp+var_2] + add al, 0C5h ; 'Å' + +loc_CE19: ; CODE XREF: sub_CD2A+E6j + push ax + +loc_CE1A: ; CODE XREF: sub_CD2A+D8j + call sub_CA62 + mov di, 2 + jmp loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CE23: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + or si, si + jnz short loc_CE29 + jmp short loc_CE46 +; --------------------------------------------------------------------------- + +loc_CE29: ; CODE XREF: sub_CD2A+FBj + cmp si, 1 + jnz short loc_CE30 + jmp short loc_CE53 +; --------------------------------------------------------------------------- + +loc_CE30: ; CODE XREF: sub_CD2A+102j + push 1Fh + call sub_C24C + mov ah, 0 + add ax, 0B1h ; '±' + mov [bp+var_2], ax + push 8 + jmp loc_CEDF +; --------------------------------------------------------------------------- + +loc_CE42: ; CODE XREF: sub_CD2A+52j + ; sub_CD2A+207j + ; DATA XREF: ... + or si, si + jnz short loc_CE4E + +loc_CE46: ; CODE XREF: sub_CD2A+FDj + push 0 + push 0C0h ; 'À' + jmp loc_CEE2 +; --------------------------------------------------------------------------- + +loc_CE4E: ; CODE XREF: sub_CD2A+11Aj + cmp si, 1 + jnz short loc_CE5B + +loc_CE53: ; CODE XREF: sub_CD2A+104j + push 10h + push 0C0h ; 'À' + jmp loc_CEE2 +; --------------------------------------------------------------------------- + +loc_CE5B: ; CODE XREF: sub_CD2A+127j + cmp si, 2 + jnz short loc_CE9F + mov byte_1E519, 32h ; '2' + cmp word_205DA, 0 + jle short loc_CE96 + mov ax, word_205DA + sub ax, word_205F8 + add ax, 0FFE0h + push ax + mov ax, word_205D8 + sub ax, word_205F6 + push ax + call sub_1E78 + mov [bp+var_2], ax + push 7 + call sub_C24C + mov ah, 0 + add ax, 0FFFDh + add [bp+var_2], ax + jmp short loc_CE9B +; --------------------------------------------------------------------------- + +loc_CE96: ; CODE XREF: sub_CD2A+140j + mov [bp+var_2], 0B7h ; '·' + +loc_CE9B: ; CODE XREF: sub_CD2A+16Aj + push 0 + jmp short loc_CEDF +; --------------------------------------------------------------------------- + +loc_CE9F: ; CODE XREF: sub_CD2A+134j + cmp si, 3 + jnz short loc_CEE5 + cmp word_205DA, 0 + jle short loc_CED8 + mov ax, word_205DA + sub ax, word_205F8 + add ax, 0FFE0h + push ax + mov ax, word_205D8 + sub ax, word_205F6 + add ax, 0FFF0h + push ax + call sub_1E78 + mov [bp+var_2], ax + push 7 + call sub_C24C + mov ah, 0 + add ax, 0FFFDh + add [bp+var_2], ax + jmp short loc_CEDD +; --------------------------------------------------------------------------- + +loc_CED8: ; CODE XREF: sub_CD2A+17Fj + mov [bp+var_2], 0C9h ; 'É' + +loc_CEDD: ; CODE XREF: sub_CD2A+1ACj + push 10h + +loc_CEDF: ; CODE XREF: sub_CD2A+115j + ; sub_CD2A+173j + push [bp+var_2] + +loc_CEE2: ; CODE XREF: sub_CD2A+121j + ; sub_CD2A+12Ej + call sub_CA62 + +loc_CEE5: ; CODE XREF: sub_CD2A+178j + mov di, 3 + +loc_CEE8: ; CODE XREF: sub_CD2A+4Cj sub_CD2A+5Fj ... + cmp si, di + jnz loc_D034 + mov [bp+var_3], 1 + xor si, si + jmp loc_D035 +; --------------------------------------------------------------------------- + +loc_CEF7: ; CODE XREF: sub_CD2A+3Ej + cmp byte_218B2, 2 + jb loc_D042 + cmp byte_218B2, 9 + jnz short loc_CF0F + mov ax, word_205D8 + mov word_205DC, ax + jmp short loc_CF15 +; --------------------------------------------------------------------------- + +loc_CF0F: ; CODE XREF: sub_CD2A+1DBj + mov word_205DC, 0FFFFh + +loc_CF15: ; CODE XREF: sub_CD2A+1E3j + cmp byte_205DE, 0 + jnz loc_D042 + mov al, byte_218B2 + mov ah, 0 + sub ax, 2 + mov bx, ax + cmp bx, 7 + ja loc_D029 + add bx, bx + jmp cs:off_D047[bx] + +loc_CF36: ; DATA XREF: seg001:off_D047o + ; seg001:1EE9o ... + mov ax, si + imul ax, 30h + push ax + push large 0FFFCh + call sub_CAD2 + mov di, 1 + jmp loc_D029 +; --------------------------------------------------------------------------- + +loc_CF4B: ; CODE XREF: sub_CD2A+207j + ; DATA XREF: seg001:1EEDo ... + or si, si + jnz short loc_CF56 + push large 0 + push 0FFF0h + jmp short loc_CF7A +; --------------------------------------------------------------------------- + +loc_CF56: ; CODE XREF: sub_CD2A+223j + cmp si, 1 + jnz short loc_CF65 + push large 300000h + push 0FFF0h + jmp short loc_CF7A +; --------------------------------------------------------------------------- + +loc_CF65: ; CODE XREF: sub_CD2A+22Fj + cmp si, 2 + jnz short loc_CF72 + push large 0FFF8FFFDh + jmp short loc_CF78 +; --------------------------------------------------------------------------- + +loc_CF72: ; CODE XREF: sub_CD2A+23Ej + push large 380003h + +loc_CF78: ; CODE XREF: sub_CD2A+246j + push 0FFFAh + +loc_CF7A: ; CODE XREF: sub_CD2A+22Aj + ; sub_CD2A+239j + call sub_CAD2 + mov di, 3 + jmp loc_D029 +; --------------------------------------------------------------------------- + +loc_CF83: ; CODE XREF: sub_CD2A+207j + ; DATA XREF: seg001:1EF3o + or si, si + jnz short loc_CF8E + push large 0 + push 0FFDEh + jmp short loc_CFD0 +; --------------------------------------------------------------------------- + +loc_CF8E: ; CODE XREF: sub_CD2A+25Bj + cmp si, 1 + jnz short loc_CF9D + push large 300000h + push 0FFDEh + jmp short loc_CFD0 +; --------------------------------------------------------------------------- + +loc_CF9D: ; CODE XREF: sub_CD2A+267j + cmp si, 2 + jnz short loc_CFAC + push large 0FFF8FFFBh + push 0FFE4h + jmp short loc_CFD0 +; --------------------------------------------------------------------------- + +loc_CFAC: ; CODE XREF: sub_CD2A+276j + cmp si, 3 + jnz short loc_CFBB + push large 380005h + push 0FFE4h + jmp short loc_CFD0 +; --------------------------------------------------------------------------- + +loc_CFBB: ; CODE XREF: sub_CD2A+285j + cmp si, 4 + jnz short loc_CFC8 + push large 0FFF0FFF6h + jmp short loc_CFCE +; --------------------------------------------------------------------------- + +loc_CFC8: ; CODE XREF: sub_CD2A+294j + push large 40000Ah + +loc_CFCE: ; CODE XREF: sub_CD2A+29Cj + push 0FFE8h + +loc_CFD0: ; CODE XREF: sub_CD2A+262j + ; sub_CD2A+271j ... + call sub_CAD2 + mov di, 5 + +loc_CFD6: ; CODE XREF: sub_CD2A+207j + ; DATA XREF: seg001:1EF5o + or si, si + jnz short loc_CFE1 + push large 0 + push 0FFCAh + jmp short loc_D023 +; --------------------------------------------------------------------------- + +loc_CFE1: ; CODE XREF: sub_CD2A+2AEj + cmp si, 1 + jnz short loc_CFF0 + push large 300000h + push 0FFCAh + jmp short loc_D023 +; --------------------------------------------------------------------------- + +loc_CFF0: ; CODE XREF: sub_CD2A+2BAj + cmp si, 2 + jnz short loc_CFFF + push large 0FFF8FFF0h + push 0FFCEh + jmp short loc_D023 +; --------------------------------------------------------------------------- + +loc_CFFF: ; CODE XREF: sub_CD2A+2C9j + cmp si, 3 + jnz short loc_D00E + push large 380010h + push 0FFCEh + jmp short loc_D023 +; --------------------------------------------------------------------------- + +loc_D00E: ; CODE XREF: sub_CD2A+2D8j + cmp si, 4 + jnz short loc_D01B + push large 0FFF0FFE0h + jmp short loc_D021 +; --------------------------------------------------------------------------- + +loc_D01B: ; CODE XREF: sub_CD2A+2E7j + push large 400020h + +loc_D021: ; CODE XREF: sub_CD2A+2EFj + push 0FFD8h + +loc_D023: ; CODE XREF: sub_CD2A+2B5j + ; sub_CD2A+2C4j ... + call sub_CAD2 + mov di, 5 + +loc_D029: ; CODE XREF: sub_CD2A+201j + ; sub_CD2A+21Ej ... + cmp si, di + jnz short loc_D034 + mov byte_205DE, 1 + jmp short loc_D042 +; --------------------------------------------------------------------------- + +loc_D034: ; CODE XREF: sub_CD2A+1C0j + ; sub_CD2A+301j + inc si + +loc_D035: ; CODE XREF: sub_CD2A+36j + ; sub_CD2A+1CAj + inc word_205E2 + +loc_D039: ; CODE XREF: sub_CD2A+27j + cmp word_205E2, 26h ; '&' + jl loc_CD54 + +loc_D042: ; CODE XREF: sub_CD2A+1D2j + ; sub_CD2A+1F0j ... + pop di + pop si + leave + retn +sub_CD2A endp + +; --------------------------------------------------------------------------- + db 0 +off_D047 dw offset loc_CF36 ; DATA XREF: sub_CD2A+207r + dw offset loc_CF36 + dw offset loc_CF36 + dw offset loc_CF4B + dw offset loc_CF4B + dw offset loc_CF4B + dw offset loc_CF83 + dw offset loc_CFD6 +off_D057 dw offset loc_CD81 ; DATA XREF: sub_CD2A+52r + dw offset loc_CD8C + dw offset loc_CD97 + dw offset loc_CDA7 + dw offset loc_CDC2 + dw offset loc_CDDB + dw offset loc_CDF9 + dw offset loc_CDF4 + dw offset loc_CE23 + dw offset loc_CE42 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D06B proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + xor si, si + mov [bp+var_2], 0 + xor di, di + mov [bp+var_3], 0 + inc byte_20350 + mov ax, word_205F8 + add ax, 20h ; ' ' + shl ax, 4 + mov word_205E4, ax + cmp byte_218B2, 2 + jb short loc_D09C + mov byte_1E519, 7Ch ; '|' + +loc_D09C: ; CODE XREF: sub_D06B+2Aj + mov word_205E2, 0 + jmp loc_D345 +; --------------------------------------------------------------------------- + +loc_D0A5: ; CODE XREF: sub_D06B+2DFj + mov bx, word_205E2 + shl bx, 4 + cmp byte ptr [bx+2908h], 0 + jnz loc_D341 + cmp [bp+var_3], 0 + jnz loc_D17D + mov al, byte_218B2 + mov ah, 0 + mov bx, ax + cmp bx, 9 + ja loc_D16E + add bx, bx + jmp cs:off_D362[bx] + +loc_D0D2: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:off_D362o ... + push 8 + push 0C0h ; 'À' + call sub_CA62 + jmp loc_D16E +; --------------------------------------------------------------------------- + +loc_D0DD: ; CODE XREF: sub_D06B+62j + ; sub_D06B+18Bj + ; DATA XREF: ... + push 8 + push 3 + call sub_C24C + add al, 0BEh ; '¾' + jmp short loc_D0F1 +; --------------------------------------------------------------------------- + +loc_D0E8: ; CODE XREF: sub_D06B+62j + ; sub_D06B+18Bj + ; DATA XREF: ... + push 8 + push 7 + call sub_C24C + add al, 0BCh ; '¼' + +loc_D0F1: ; CODE XREF: sub_D06B+7Bj + push ax + call sub_CA62 + jmp short loc_D16E +; --------------------------------------------------------------------------- + +loc_D0F7: ; CODE XREF: sub_D06B+62j + ; sub_D06B+18Bj + ; DATA XREF: ... + or si, si + jnz short loc_D105 + push 8 + push 0C0h ; 'À' + call sub_CA62 + jmp short loc_D158 +; --------------------------------------------------------------------------- + +loc_D105: ; CODE XREF: sub_D06B+8Ej + cmp si, 1 + jnz short loc_D116 + mov [bp+var_2], 0FFF0h + mov byte_1E519, 31h ; '1' + jmp short loc_D133 +; --------------------------------------------------------------------------- + +loc_D116: ; CODE XREF: sub_D06B+9Dj + cmp si, 2 + jnz short loc_D11D + jmp short loc_D12E +; --------------------------------------------------------------------------- + +loc_D11D: ; CODE XREF: sub_D06B+AEj + cmp si, 3 + jnz short loc_D129 + mov [bp+var_2], 0FFF0h + jmp short loc_D133 +; --------------------------------------------------------------------------- + +loc_D129: ; CODE XREF: sub_D06B+B5j + cmp si, 4 + jnz short loc_D133 + +loc_D12E: ; CODE XREF: sub_D06B+B0j + mov [bp+var_2], 20h ; ' ' + +loc_D133: ; CODE XREF: sub_D06B+A9j sub_D06B+BCj ... + push [bp+var_2] + push 0C0h ; 'À' + call sub_CA62 + cmp si, 3 + jl short loc_D158 + mov bx, word_205E2 + shl bx, 4 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add bx, ax + sub word ptr [bx+290Ch], 100h + +loc_D158: ; CODE XREF: sub_D06B+98j sub_D06B+D4j + mov al, byte_20350 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_D16C + mov di, 4 + jmp short loc_D16E +; --------------------------------------------------------------------------- + +loc_D16C: ; CODE XREF: sub_D06B+FAj + xor di, di + +loc_D16E: ; CODE XREF: sub_D06B+5Cj sub_D06B+6Fj ... + cmp si, di + jnz loc_D340 + mov [bp+var_3], 1 + xor si, si + jmp loc_D341 +; --------------------------------------------------------------------------- + +loc_D17D: ; CODE XREF: sub_D06B+4Ej + cmp byte_218B2, 2 + jb loc_D34E + cmp byte_218B2, 3 + jnb short loc_D197 + cmp byte_205DE, 0 + jz short loc_D1E3 + jmp loc_D34E +; --------------------------------------------------------------------------- + +loc_D197: ; CODE XREF: sub_D06B+120j + cmp byte_218B2, 4 + jnb short loc_D1B0 + mov al, byte_20350 + mov ah, 0 + mov bx, 5 + cwd + idiv bx + or dx, dx + jz short loc_D1E3 + jmp loc_D34E +; --------------------------------------------------------------------------- + +loc_D1B0: ; CODE XREF: sub_D06B+131j + cmp byte_218B2, 6 + jnb short loc_D1C1 + test byte_20350, 3 + jz short loc_D1E3 + jmp loc_D34E +; --------------------------------------------------------------------------- + +loc_D1C1: ; CODE XREF: sub_D06B+14Aj + cmp byte_218B2, 9 + jnb short loc_D1DA + mov al, byte_20350 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + or dx, dx + jz short loc_D1E3 + jmp loc_D34E +; --------------------------------------------------------------------------- + +loc_D1DA: ; CODE XREF: sub_D06B+15Bj + test byte_20350, 1 + jnz loc_D34E + +loc_D1E3: ; CODE XREF: sub_D06B+127j + ; sub_D06B+140j ... + mov al, byte_218B2 + mov ah, 0 + sub ax, 2 + mov bx, ax + cmp bx, 7 + ja loc_D335 + add bx, bx + jmp cs:off_D352[bx] + +loc_D1FB: ; DATA XREF: seg001:off_D352o + ; seg001:21F4o + mov ax, si + imul ax, 30h + push ax + push large 0FFFCh + jmp short loc_D215 +; --------------------------------------------------------------------------- + +loc_D209: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:21F6o + mov ax, si + imul ax, 30h + push ax + push large 0FFF0h + +loc_D215: ; CODE XREF: sub_D06B+19Cj + call sub_CAD2 + mov di, 1 + jmp loc_D335 +; --------------------------------------------------------------------------- + +loc_D21E: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:21F8o + or si, si + jnz short loc_D227 + push large 4 + jmp short loc_D241 +; --------------------------------------------------------------------------- + +loc_D227: ; CODE XREF: sub_D06B+1B5j + cmp si, 1 + jnz short loc_D234 + push large 30FFFCh + jmp short loc_D241 +; --------------------------------------------------------------------------- + +loc_D234: ; CODE XREF: sub_D06B+1BFj + cmp si, 2 + jnz short loc_D23D + push 0FFF8h + jmp short loc_D23F +; --------------------------------------------------------------------------- + +loc_D23D: ; CODE XREF: sub_D06B+1CCj + push 38h ; '8' + +loc_D23F: ; CODE XREF: sub_D06B+1D0j + push 0 + +loc_D241: ; CODE XREF: sub_D06B+1BAj + ; sub_D06B+1C7j + push 0FFF0h + call sub_CAD2 + jmp loc_D332 +; --------------------------------------------------------------------------- + +loc_D249: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:21FAo + or si, si + jnz short loc_D252 + push large 6 + jmp short loc_D26C +; --------------------------------------------------------------------------- + +loc_D252: ; CODE XREF: sub_D06B+1E0j + cmp si, 1 + jnz short loc_D25F + push large 30FFFAh + jmp short loc_D26C +; --------------------------------------------------------------------------- + +loc_D25F: ; CODE XREF: sub_D06B+1EAj + cmp si, 2 + jnz short loc_D268 + push 0FFF8h + jmp short loc_D26A +; --------------------------------------------------------------------------- + +loc_D268: ; CODE XREF: sub_D06B+1F7j + push 38h ; '8' + +loc_D26A: ; CODE XREF: sub_D06B+1FBj + push 0 + +loc_D26C: ; CODE XREF: sub_D06B+1E5j + ; sub_D06B+1F2j + push 0FFE8h + call sub_CAD2 + jmp loc_D332 +; --------------------------------------------------------------------------- + +loc_D274: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:21FCo + or si, si + jnz short loc_D27D + push large 6 + jmp short loc_D297 +; --------------------------------------------------------------------------- + +loc_D27D: ; CODE XREF: sub_D06B+20Bj + cmp si, 1 + jnz short loc_D28A + push large 30FFFAh + jmp short loc_D297 +; --------------------------------------------------------------------------- + +loc_D28A: ; CODE XREF: sub_D06B+215j + cmp si, 2 + jnz short loc_D293 + push 0FFF8h + jmp short loc_D295 +; --------------------------------------------------------------------------- + +loc_D293: ; CODE XREF: sub_D06B+222j + push 38h ; '8' + +loc_D295: ; CODE XREF: sub_D06B+226j + push 0 + +loc_D297: ; CODE XREF: sub_D06B+210j + ; sub_D06B+21Dj + push 0FFE6h + call sub_CAD2 + jmp loc_D332 +; --------------------------------------------------------------------------- + +loc_D29F: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:21FEo + or si, si + jnz short loc_D2A8 + push large 0Ah + jmp short loc_D2C8 +; --------------------------------------------------------------------------- + +loc_D2A8: ; CODE XREF: sub_D06B+236j + cmp si, 1 + jnz short loc_D2B5 + push large 30FFF6h + jmp short loc_D2C8 +; --------------------------------------------------------------------------- + +loc_D2B5: ; CODE XREF: sub_D06B+240j + cmp si, 2 + jnz short loc_D2C2 + push large 0FFF8FFFCh + jmp short loc_D2C8 +; --------------------------------------------------------------------------- + +loc_D2C2: ; CODE XREF: sub_D06B+24Dj + push large 380004h + +loc_D2C8: ; CODE XREF: sub_D06B+23Bj + ; sub_D06B+248j ... + push 0FFD0h + call sub_CAD2 + jmp short loc_D332 +; --------------------------------------------------------------------------- + +loc_D2CF: ; CODE XREF: sub_D06B+18Bj + ; DATA XREF: seg001:2200o + or si, si + jnz short loc_D2DE + push large 0FFF6h + push 0FF60h + jmp short loc_D323 +; --------------------------------------------------------------------------- + +loc_D2DE: ; CODE XREF: sub_D06B+266j + cmp si, 1 + jnz short loc_D2EE + push large 30000Ah + push 0FF60h + jmp short loc_D323 +; --------------------------------------------------------------------------- + +loc_D2EE: ; CODE XREF: sub_D06B+276j + cmp si, 2 + jnz short loc_D2FE + push large 0FFF80014h + push 0FF74h + jmp short loc_D323 +; --------------------------------------------------------------------------- + +loc_D2FE: ; CODE XREF: sub_D06B+286j + cmp si, 3 + jnz short loc_D30E + push large 38FFECh + push 0FF74h + jmp short loc_D323 +; --------------------------------------------------------------------------- + +loc_D30E: ; CODE XREF: sub_D06B+296j + cmp si, 4 + jnz short loc_D31B + push large 0FFF0FFF9h + jmp short loc_D321 +; --------------------------------------------------------------------------- + +loc_D31B: ; CODE XREF: sub_D06B+2A6j + push large 400007h + +loc_D321: ; CODE XREF: sub_D06B+2AEj + push 0FF88h + +loc_D323: ; CODE XREF: sub_D06B+271j + ; sub_D06B+281j ... + call sub_CAD2 + test byte_20350, 3 + jnz short loc_D332 + mov di, 5 + jmp short loc_D335 +; --------------------------------------------------------------------------- + +loc_D332: ; CODE XREF: sub_D06B+1DBj + ; sub_D06B+206j ... + mov di, 3 + +loc_D335: ; CODE XREF: sub_D06B+185j + ; sub_D06B+1B0j ... + cmp si, di + jnz short loc_D340 + mov byte_205DE, 1 + jmp short loc_D34E +; --------------------------------------------------------------------------- + +loc_D340: ; CODE XREF: sub_D06B+105j + ; sub_D06B+2CCj + inc si + +loc_D341: ; CODE XREF: sub_D06B+46j + ; sub_D06B+10Fj + inc word_205E2 + +loc_D345: ; CODE XREF: sub_D06B+37j + cmp word_205E2, 26h ; '&' + jl loc_D0A5 + +loc_D34E: ; CODE XREF: sub_D06B+117j + ; sub_D06B+129j ... + pop di + pop si + leave + retn +sub_D06B endp + +; --------------------------------------------------------------------------- +off_D352 dw offset loc_D1FB ; DATA XREF: sub_D06B+18Br + dw offset loc_D1FB + dw offset loc_D209 + dw offset loc_D21E + dw offset loc_D249 + dw offset loc_D274 + dw offset loc_D29F + dw offset loc_D2CF +off_D362 dw offset loc_D0D2 ; DATA XREF: sub_D06B+62r + dw offset loc_D0D2 + dw offset loc_D0D2 + dw offset loc_D0DD + dw offset loc_D0DD + dw offset loc_D0DD + dw offset loc_D0E8 + dw offset loc_D0E8 + dw offset loc_D0E8 + dw offset loc_D0F7 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D376 proc far ; CODE XREF: sub_1696B+8AP + ; sub_199B3+198P ... + push bp + mov bp, sp + xor ax, ax + jmp short loc_D388 +; --------------------------------------------------------------------------- + +loc_D37D: ; CODE XREF: sub_D376+15j + mov bx, ax + shl bx, 4 + mov byte ptr [bx+2908h], 0 + inc ax + +loc_D388: ; CODE XREF: sub_D376+5j + cmp ax, 26h ; '&' + jl short loc_D37D + pop bp + retf +sub_D376 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D38F proc near ; CODE XREF: sub_C6B2+Cp + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov [bp+var_3], 0 + mov si, 2908h + xor di, di + jmp loc_D472 +; --------------------------------------------------------------------------- + +loc_D3A3: ; CODE XREF: sub_D38F+E6j + cmp byte ptr [si], 0 + jz loc_D46E + cmp byte_2066C, 0 + jz short loc_D3BF + mov al, byte_20618 + mov ah, 0 + mov dx, di + and dx, 1 + cmp ax, dx + jnz short loc_D419 + +loc_D3BF: ; CODE XREF: sub_D38F+20j + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + sar ax, 4 + mov [bp+var_2], ax + cmp byte ptr [si+0Eh], 7Ch ; '|' + jb short loc_D3DE + cmp byte ptr [si+1], 0 + jnz short loc_D3FA + +loc_D3DE: ; CODE XREF: sub_D38F+47j + push [bp+var_2] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+4] + sar ax, 4 + push ax + push large 100010h + jmp short loc_D414 +; --------------------------------------------------------------------------- + +loc_D3FA: ; CODE XREF: sub_D38F+4Dj + push [bp+var_2] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+4] + sar ax, 4 + push ax + push large 200020h + +loc_D414: ; CODE XREF: sub_D38F+69j + call sub_45FC + +loc_D419: ; CODE XREF: sub_D38F+2Ej + cmp byte ptr [si], 2 + jnz short loc_D423 + mov byte ptr [si], 0 + jmp short loc_D46E +; --------------------------------------------------------------------------- + +loc_D423: ; CODE XREF: sub_D38F+8Dj + mov bx, di + shl bx, 4 + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+290Ah] + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+si+2], ax + mov bx, di + shl bx, 4 + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+290Ch] + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+si+4], ax + cmp byte ptr [si+0Fh], 0 + jz short loc_D46E + inc [bp+var_3] + +loc_D46E: ; CODE XREF: sub_D38F+17j sub_D38F+92j ... + inc di + add si, 10h + +loc_D472: ; CODE XREF: sub_D38F+11j + cmp di, 26h ; '&' + jl loc_D3A3 + cmp [bp+var_3], 0 + jnz short loc_D484 + mov byte_205DE, 0 + +loc_D484: ; CODE XREF: sub_D38F+EEj + pop di + pop si + leave + retn +sub_D38F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D488 proc near ; CODE XREF: sub_EF36:loc_EF5Fp + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +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 + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov al, byte_2066C + mov cl, byte_20618 + shl al, cl + mov [bp+var_9], al + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov [bp+var_C], ax + mov si, 2908h + mov [bp+var_2], 0 + jmp loc_D61D +; --------------------------------------------------------------------------- + +loc_D4B2: ; CODE XREF: sub_D488+199j + cmp byte ptr [si], 1 + jnz loc_D613 + mov ax, si + add ax, [bp+var_C] + add ax, 2 + mov [bp+var_6], ax + mov ax, si + add ax, [bp+var_C] + add ax, 4 + mov [bp+var_8], ax + mov ax, [si+0Ah] + mov bx, [bp+var_6] + add [bx], ax + mov ax, [si+0Ch] + mov bx, [bp+var_8] + add [bx], ax + mov ax, [bx] + sar ax, 4 + mov di, ax + mov bx, [bp+var_6] + mov ax, [bx] + sar ax, 4 + mov [bp+var_4], ax + cmp word ptr [bx], 100h + jle short loc_D508 + cmp word ptr [bx], 1A20h + jge short loc_D508 + cmp di, 180h + jg short loc_D508 + cmp di, 8 + jge short loc_D50E + +loc_D508: ; CODE XREF: sub_D488+6Dj sub_D488+73j ... + mov byte ptr [si], 2 + jmp loc_D613 +; --------------------------------------------------------------------------- + +loc_D50E: ; CODE XREF: sub_D488+7Ej + add di, word_20344 + cmp di, 190h + jl short loc_D51C + sub di, 190h + +loc_D51C: ; CODE XREF: sub_D488+8Ej + cmp byte ptr [si+0Fh], 0 + jnz loc_D5B0 + mov bx, [bp+var_2] + inc byte ptr [bx+28E1h] + cmp byte ptr [si+1], 0 + jnz short loc_D55D + cmp [bp+var_9], 2 + jz loc_D613 + mov al, [si+0Eh] + mov ah, 0 + mov [bp+var_E], ax + cmp [bp+var_E], 32h ; '2' + jl short loc_D553 + mov al, [bx+28E1h] + mov ah, 0 + and ax, 1 + add [bp+var_E], ax + +loc_D553: ; CODE XREF: sub_D488+BDj + push [bp+var_4] + push di + push [bp+var_E] + jmp loc_D60E +; --------------------------------------------------------------------------- + +loc_D55D: ; CODE XREF: sub_D488+A7j + cmp byte ptr [si+1], 5 + jbe short loc_D569 + mov byte ptr [si], 2 + jmp loc_D613 +; --------------------------------------------------------------------------- + +loc_D569: ; CODE XREF: sub_D488+D9j + cmp [bp+var_9], 2 + jz short loc_D59F + cmp byte ptr [si+0Eh], 7Ch ; '|' + jnb short loc_D589 + push [bp+var_4] + push di + mov al, [si+1] + mov ah, 0 + add ax, 4Ah ; 'J' + push ax + call sub_3708 + jmp short loc_D59F +; --------------------------------------------------------------------------- + +loc_D589: ; CODE XREF: sub_D488+EBj + push [bp+var_4] + push di + mov al, [si+1] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+0A94h] + call sub_3146 + +loc_D59F: ; CODE XREF: sub_D488+E5j sub_D488+FFj + test byte ptr dword_20612, 3 + jnz short loc_D613 + mov al, [si+1] + inc al + mov [si+1], al + jmp short loc_D613 +; --------------------------------------------------------------------------- + +loc_D5B0: ; CODE XREF: sub_D488+98j + cmp byte ptr [si+1], 1 + jbe short loc_D5ED + mov al, byte_1E518 + cbw + movsx ebx, ax + mov eax, dword_20612 + xor edx, edx + div ebx + cmp edx, 0 + jnz short loc_D5E1 + mov al, [si+1] + inc al + mov [si+1], al + cmp byte ptr [si+1], 4 + jbe short loc_D5E1 + mov byte ptr [si], 2 + jmp short loc_D613 +; --------------------------------------------------------------------------- + +loc_D5E1: ; CODE XREF: sub_D488+144j + ; sub_D488+152j + test byte ptr dword_20612, 1 + jz short loc_D5F7 + sar word ptr [si+0Ch], 1 + jmp short loc_D5F7 +; --------------------------------------------------------------------------- + +loc_D5ED: ; CODE XREF: sub_D488+12Cj + cmp byte ptr [si+0Eh], 3Bh ; ';' + jz short loc_D5F7 + sub word ptr [si+0Ch], 4 + +loc_D5F7: ; CODE XREF: sub_D488+15Ej + ; sub_D488+163j ... + cmp [bp+var_9], 2 + jz short loc_D613 + push [bp+var_4] + push di + mov al, [si+0Eh] + mov ah, 0 + mov dl, [si+1] + mov dh, 0 + add ax, dx + push ax + +loc_D60E: ; CODE XREF: sub_D488+D2j + call sub_3708 + +loc_D613: ; CODE XREF: sub_D488+2Dj sub_D488+83j ... + inc [bp+var_2] + xor [bp+var_9], 3 + add si, 10h + +loc_D61D: ; CODE XREF: sub_D488+27j + cmp [bp+var_2], 26h ; '&' + jl loc_D4B2 + pop di + pop si + leave + retn +sub_D488 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D629 proc near ; CODE XREF: sub_B3DA:loc_B8AFp + push bp + mov bp, sp + push si + push 7 + call sub_C24C + mov byte_218A0, al + xor si, si + jmp short loc_D644 +; --------------------------------------------------------------------------- + +loc_D639: ; CODE XREF: sub_D629+1Ej + mov bx, si + shl bx, 4 + mov byte ptr [bx+3CE6h], 0 + inc si + +loc_D644: ; CODE XREF: sub_D629+Ej + cmp si, 14h + jl short loc_D639 + mov word_2189E, 0 + call sub_C764 + mov byte_218A1, 0 + pop si + pop bp + retn +sub_D629 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D65A proc far ; CODE XREF: sub_1766E+1F1P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + cmp word_1E51E, 0 + jz short loc_D67B + dec word_1E51E + push si + push di + push 3 + nop + push cs + call near ptr sub_D6CA + jmp short loc_D6C4 +; --------------------------------------------------------------------------- + +loc_D67B: ; CODE XREF: sub_D65A+10j + mov al, byte_218A2 + inc byte_218A2 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_D6C4 + call sub_C264 + and ax, 1FFh + cmp ax, 12h + jnz short loc_D69F + push si + push di + push 2 + jmp short loc_D6AF +; --------------------------------------------------------------------------- + +loc_D69F: ; CODE XREF: sub_D65A+3Dj + push si + push di + mov al, byte_218A0 + mov ah, 0 + mov bx, ax + mov al, [bx+0AB0h] + mov ah, 0 + push ax + +loc_D6AF: ; CODE XREF: sub_D65A+43j + nop + push cs + call near ptr sub_D6CA + inc byte_218A0 + cmp byte_218A0, 0Ah + jb short loc_D6C4 + mov byte_218A0, 0 + +loc_D6C4: ; CODE XREF: sub_D65A+1Fj sub_D65A+32j ... + pop di + pop si + pop bp + retf 4 +sub_D65A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6CA proc far ; CODE XREF: sub_D65A+1Cp sub_D65A+57p ... + +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] + mov cx, [bp+arg_2] + cmp word_1E51E, 0 + jz short loc_D6EB + cmp [bp+arg_0], 2 + jge short loc_D6EB + dec word_1E51E + mov [bp+arg_0], 3 + +loc_D6EB: ; CODE XREF: sub_D6CA+10j sub_D6CA+16j + mov si, 3CE6h + shl cx, 4 + mov al, byte_1E59C + cbw + cmp ax, 5 + jnz short loc_D705 + cmp [bp+arg_0], 4 + jnz short loc_D705 + mov [bp+arg_0], 2 + +loc_D705: ; CODE XREF: sub_D6CA+2Ej sub_D6CA+34j + xor dx, dx + jmp short loc_D738 +; --------------------------------------------------------------------------- + +loc_D709: ; CODE XREF: sub_D6CA+71j + cmp byte ptr [si], 0 + jnz short loc_D734 + mov byte ptr [si], 1 + mov al, byte ptr [bp+arg_0] + mov [si+1], al + mov [si+2], di + mov [si+4], cx + mov [si+6], di + mov [si+8], cx + mov word ptr [si+0Ah], 0FFD0h + mov word ptr [si+0Ch], 0 + mov word ptr [si+0Eh], 0 + jmp short loc_D73D +; --------------------------------------------------------------------------- + +loc_D734: ; CODE XREF: sub_D6CA+42j + inc dx + add si, 10h + +loc_D738: ; CODE XREF: sub_D6CA+3Dj + cmp dx, 14h + jl short loc_D709 + +loc_D73D: ; CODE XREF: sub_D6CA+68j + pop di + pop si + pop bp + retf 6 +sub_D6CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D743 proc near ; CODE XREF: sub_EFF2+105p + ; sub_EFF2+132p + +var_19 = byte ptr -19h +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = byte ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = byte ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = byte 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, 1Ah + push si + push di + xor di, di + mov [bp+var_4], 1 + mov ax, word_1E588 + mov [bp+var_C], ax + mov ax, word_1E58A + mov [bp+var_A], ax + mov al, byte_1E58C + mov [bp+var_8], al + mov ax, word_1E58D + mov [bp+var_12], ax + mov ax, word_1E58F + mov [bp+var_10], ax + mov al, byte_1E591 + mov [bp+var_E], al + mov ax, word_1E592 + mov [bp+var_18], ax + mov ax, word_1E594 + mov [bp+var_16], ax + mov al, byte_1E596 + mov [bp+var_14], al + cmp word_205F6, 80h ; '€' + jg short loc_D794 + mov al, 0FFh + jmp short loc_D7A2 +; --------------------------------------------------------------------------- + +loc_D794: ; CODE XREF: sub_D743+4Bj + cmp word_205F6, 100h + jg short loc_D7A0 + mov al, 0 + jmp short loc_D7A2 +; --------------------------------------------------------------------------- + +loc_D7A0: ; CODE XREF: sub_D743+57j + mov al, 1 + +loc_D7A2: ; CODE XREF: sub_D743+4Fj sub_D743+5Bj + mov [bp+var_19], al + mov si, 3CE6h + shl [bp+arg_0], 4 + mov [bp+var_2], 0 + jmp loc_D866 +; --------------------------------------------------------------------------- + +loc_D7B4: ; CODE XREF: sub_D743+127j + cmp byte ptr [si], 0 + jnz loc_D860 + mov byte ptr [si], 1 + mov ax, [bp+arg_2] + mov [si+2], ax + mov ax, [bp+arg_0] + mov [si+4], ax + mov ax, [bp+arg_2] + mov [si+6], ax + mov ax, [bp+arg_0] + mov [si+8], ax + mov word ptr [si+0Eh], 0 + cmp byte_218A1, 0 + jnz short loc_D82B + cmp [bp+var_4], 0 + jz short loc_D810 + call sub_C23D + mov ah, 0 + mov bx, 5 + sub bx, di + cwd + idiv bx + or dx, dx + jnz short loc_D7FE + mov ax, 3 + jmp short loc_D80B +; --------------------------------------------------------------------------- + +loc_D7FE: ; CODE XREF: sub_D743+B4j + call sub_C23D + mov ah, 0 + mov bx, 2 + cwd + idiv bx + mov ax, dx + +loc_D80B: ; CODE XREF: sub_D743+B9j + mov [bp+var_6], ax + jmp short loc_D81E +; --------------------------------------------------------------------------- + +loc_D810: ; CODE XREF: sub_D743+A3j + call sub_C23D + mov ah, 0 + mov bx, 2 + cwd + idiv bx + mov [bp+var_6], dx + +loc_D81E: ; CODE XREF: sub_D743+CBj + cmp [bp+var_6], 3 + jnz short loc_D830 + mov [bp+var_4], 0 + jmp short loc_D830 +; --------------------------------------------------------------------------- + +loc_D82B: ; CODE XREF: sub_D743+9Dj + mov [bp+var_6], 3 + +loc_D830: ; CODE XREF: sub_D743+DFj sub_D743+E6j + mov al, byte ptr [bp+var_6] + mov [si+1], al + cmp [bp+var_19], 0 + jz short loc_D84C + mov al, byte ptr [bp+di+var_C] + cbw + mov [si+0Ah], ax + mov al, [bp+var_19] + cbw + imul ax, -2 + jmp short loc_D857 +; --------------------------------------------------------------------------- + +loc_D84C: ; CODE XREF: sub_D743+F7j + mov al, byte ptr [bp+di+var_18] + cbw + mov [si+0Ah], ax + mov al, byte ptr [bp+di+var_12] + cbw + +loc_D857: ; CODE XREF: sub_D743+107j + mov [si+0Ch], ax + inc di + cmp di, 5 + jge short loc_D86E + +loc_D860: ; CODE XREF: sub_D743+74j + inc [bp+var_2] + add si, 10h + +loc_D866: ; CODE XREF: sub_D743+6Ej + cmp [bp+var_2], 14h + jl loc_D7B4 + +loc_D86E: ; CODE XREF: sub_D743+11Bj + pop di + pop si + leave + retn 4 +sub_D743 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D874 proc near ; CODE XREF: sub_BCB1+58p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + xor si, si + jmp short loc_D8FA +; --------------------------------------------------------------------------- + +loc_D880: ; CODE XREF: sub_D874+89j + mov bx, si + shl bx, 4 + cmp byte ptr [bx+3CE6h], 0 + jz short loc_D8F9 + mov ax, si + shl ax, 4 + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + add ax, dx + add ax, 3CE8h + mov di, ax + mov ax, [di+2] + sar ax, 4 + mov [bp+var_2], ax + push word ptr [di] + push ax + push large 100010h + call sub_45FC + mov bx, si + shl bx, 4 + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+3CE8h] + mov [di], ax + mov bx, si + shl bx, 4 + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+3CEAh] + mov [di+2], ax + mov bx, si + shl bx, 4 + cmp byte ptr [bx+3CE6h], 2 + jnz short loc_D8F9 + mov bx, si + shl bx, 4 + mov byte ptr [bx+3CE6h], 0 + +loc_D8F9: ; CODE XREF: sub_D874+16j sub_D874+79j + inc si + +loc_D8FA: ; CODE XREF: sub_D874+Aj + cmp si, 14h + jl short loc_D880 + call sub_C81D + pop di + pop si + leave + retn +sub_D874 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D906 proc near ; CODE XREF: sub_DAF0+D3p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, word_2189C + mov [bp+var_2], ax + cmp ax, word_205F8 + jl loc_DADE + mov ax, word_205F8 + add ax, 18h + cmp ax, [bp+var_2] + jl loc_DADE + mov ax, word_2189A + add ax, 0FFF4h + mov si, ax + mov bx, [bp+arg_0] + mov al, [bx+1] + mov ah, 0 + mov bx, ax + cmp bx, 4 + ja loc_DAB6 + add bx, bx + jmp cs:off_DAE6[bx] + +loc_D949: ; DATA XREF: seg001:off_DAE6o + cmp byte_1E516, 50h ; 'P' + jnb short loc_D964 + inc byte_1E516 + call sub_DEAD + mov word_1E51C, 0 + inc dword_218A4 + jmp short loc_D984 +; --------------------------------------------------------------------------- + +loc_D964: ; CODE XREF: sub_D906+48j + cmp word_1E51C, 2Ah ; '*' + jge short loc_D96F + inc word_1E51C + +loc_D96F: ; CODE XREF: sub_D906+63j + mov bx, word_1E51C + add bx, bx + movsx eax, word ptr [bx+0AC0h] + add dword_218A4, eax + inc byte_218A8 + +loc_D984: ; CODE XREF: sub_D906+5Cj + inc byte_218A8 + push si + push word_2189C + mov bx, word_1E51C + add bx, bx + push word ptr [bx+0AC0h] + call sub_C7CA + jmp loc_DAB6 +; --------------------------------------------------------------------------- + +loc_D99D: ; CODE XREF: sub_D906+3Ej + ; DATA XREF: seg001:2988o + inc word_2189E + cmp [bp+var_2], 40h ; '@' + jg short loc_D9B4 + mov al, byte_218A8 + add al, 8 + mov byte_218A8, al + mov di, 1400h + jmp short loc_D9E5 +; --------------------------------------------------------------------------- + +loc_D9B4: ; CODE XREF: sub_D906+9Fj + mov ax, [bp+var_2] + imul ax, 7 + mov dx, 0AF0h + sub dx, ax + mov di, dx + cmp di, 7D0h + jb short loc_D9D1 + mov al, byte_218A8 + add al, 4 + mov byte_218A8, al + jmp short loc_D9E5 +; --------------------------------------------------------------------------- + +loc_D9D1: ; CODE XREF: sub_D906+BFj + cmp di, 3E8h + jb short loc_D9E1 + mov al, byte_218A8 + add al, 2 + mov byte_218A8, al + jmp short loc_D9E5 +; --------------------------------------------------------------------------- + +loc_D9E1: ; CODE XREF: sub_D906+CFj + inc byte_218A8 + +loc_D9E5: ; CODE XREF: sub_D906+ACj sub_D906+C9j ... + push si + push word_2189C + push di + call sub_C7CA + movzx eax, di + add dword_218A4, eax + jmp loc_DAB6 +; --------------------------------------------------------------------------- + +loc_D9FA: ; CODE XREF: sub_D906+3Ej + ; DATA XREF: seg001:298Ao + mov al, byte_1E59D + cbw + cmp ax, 5 + jge short loc_DA21 + inc byte_1E59D + add dword_218A4, 3E8h + push si + push word_2189C + push 3E8h + call sub_C7CA + call sub_DFC4 + jmp loc_DAB6 +; --------------------------------------------------------------------------- + +loc_DA21: ; CODE XREF: sub_D906+FBj + add dword_218A4, 1999h + push si + push word_2189C + push 1999h + call sub_C7CA + mov al, byte_218A8 + add al, 10h + mov byte_218A8, al + jmp short loc_DAB6 +; --------------------------------------------------------------------------- + +loc_DA3F: ; CODE XREF: sub_D906+3Ej + ; DATA XREF: seg001:298Co + cmp byte_1E516, 46h ; 'F' + jnb short loc_DA5B + mov al, byte_1E516 + add al, 0Ah + mov byte_1E516, al + inc dword_218A4 + mov word_1E51C, 0 + jmp short loc_DA85 +; --------------------------------------------------------------------------- + +loc_DA5B: ; CODE XREF: sub_D906+13Ej + cmp word_1E51C, 26h ; '&' + jge short loc_DA69 + add word_1E51C, 5 + jmp short loc_DA6F +; --------------------------------------------------------------------------- + +loc_DA69: ; CODE XREF: sub_D906+15Aj + mov word_1E51C, 2Ah ; '*' + +loc_DA6F: ; CODE XREF: sub_D906+161j + mov byte_1E516, 50h ; 'P' + mov bx, word_1E51C + add bx, bx + movsx eax, word ptr [bx+0AC0h] + add dword_218A4, eax + +loc_DA85: ; CODE XREF: sub_D906+153j + push si + push word_2189C + mov bx, word_1E51C + add bx, bx + push word ptr [bx+0AC0h] + call sub_C7CA + call sub_DEAD + jmp short loc_DAB6 +; --------------------------------------------------------------------------- + +loc_DA9C: ; CODE XREF: sub_D906+3Ej + ; DATA XREF: seg001:298Eo + mov al, byte_1E59C + cbw + cmp ax, 5 + jge short loc_DAB6 + inc byte_1E59C + call sub_DF76 + push 8 + call sub_FA52 + add sp, 2 + +loc_DAB6: ; CODE XREF: sub_D906+38j sub_D906+94j ... + mov bx, [bp+arg_0] + mov byte ptr [bx], 2 + push 0Dh + call sub_FA52 + add sp, 2 + cmp byte_218A8, 20h ; ' ' + jb short loc_DAD9 + inc word_1E586 + mov al, byte_218A8 + add al, 0E0h ; 'à' + mov byte_218A8, al + +loc_DAD9: ; CODE XREF: sub_D906+1C5j + mov ax, 1 + jmp short loc_DAE0 +; --------------------------------------------------------------------------- + +loc_DADE: ; CODE XREF: sub_D906+12j sub_D906+1Fj + xor ax, ax + +loc_DAE0: ; CODE XREF: sub_D906+1D6j + pop di + pop si + leave + retn 2 +sub_D906 endp + +; --------------------------------------------------------------------------- +off_DAE6 dw offset loc_D949 ; DATA XREF: sub_D906+3Er + dw offset loc_D99D + dw offset loc_D9FA + dw offset loc_DA3F + dw offset loc_DA9C + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DAF0 proc near ; CODE XREF: sub_BCB1+13Ap + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov si, 3CE6h + inc word_218AA + mov dword_218A4, 0 + xor di, di + jmp loc_DBFE +; --------------------------------------------------------------------------- + +loc_DB0D: ; CODE XREF: sub_DAF0+111j + cmp byte ptr [si], 1 + jnz loc_DBFA + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, si + add ax, 2 + mov [bp+var_2], ax + mov word_21896, ax + add ax, 2 + mov word_21898, ax + cmp word ptr [si+0Ah], 0 + jg short loc_DB3C + mov ax, [si+0Ch] + mov bx, word_21896 + add [bx], ax + +loc_DB3C: ; CODE XREF: sub_DAF0+41j + mov ax, [si+0Ah] + mov bx, word_21898 + add [bx], ax + mov bx, word_21896 + mov ax, [bx] + mov word_2189A, ax + mov bx, word_21898 + mov ax, [bx] + sar ax, 4 + mov word_2189C, ax + cmp word_2189C, 0 + jge short loc_DB6D + mov word_2189C, 0 + mov word ptr [bx], 0 + jmp short loc_DB89 +; --------------------------------------------------------------------------- + +loc_DB6D: ; CODE XREF: sub_DAF0+6Fj + cmp word_2189C, 180h + jl short loc_DB89 + mov byte ptr [si], 2 + inc byte_1E597 + test byte_1E597, 0Fh + jnz short loc_DBFA + dec word_1E586 + jmp short loc_DBFA +; --------------------------------------------------------------------------- + +loc_DB89: ; CODE XREF: sub_DAF0+7Bj sub_DAF0+83j + cmp word_2189A, 10h + jle short loc_DB98 + cmp word_2189A, 1A0h + jl short loc_DB9D + +loc_DB98: ; CODE XREF: sub_DAF0+9Ej + mov byte ptr [si], 2 + jmp short loc_DBFA +; --------------------------------------------------------------------------- + +loc_DB9D: ; CODE XREF: sub_DAF0+A6j + inc word ptr [si+0Eh] + inc word ptr [si+0Ah] + cmp byte_20604, 0 + jnz short loc_DBCA + mov ax, word_205F6 + add ax, 0FFF8h + cmp ax, word_2189A + jg short loc_DBCA + mov ax, word_205F6 + add ax, 18h + cmp ax, word_2189A + jl short loc_DBCA + push si + call sub_D906 + or ax, ax + jnz short loc_DBFA + +loc_DBCA: ; CODE XREF: sub_DAF0+B8j sub_DAF0+C4j ... + mov ax, word_20344 + add word_2189C, ax + cmp word_2189C, 190h + jl short loc_DBDF + sub word_2189C, 190h + +loc_DBDF: ; CODE XREF: sub_DAF0+E7j + push word_2189A + push word_2189C + mov al, [si+1] + mov ah, 0 + mov bx, ax + mov al, [bx+0ABAh] + mov ah, 0 + push ax + call sub_3708 + +loc_DBFA: ; CODE XREF: sub_DAF0+20j sub_DAF0+91j ... + inc di + add si, 10h + +loc_DBFE: ; CODE XREF: sub_DAF0+1Aj + cmp di, 14h + jl loc_DB0D + cmp dword_218A4, 0 + jz short loc_DC31 + mov al, byte_1E364 + cbw + cmp ax, 2 + jl short loc_DC28 + mov cl, byte_1E364 + add cl, 0FFh + mov eax, dword_218A4 + shl eax, cl + mov dword_218A4, eax + +loc_DC28: ; CODE XREF: sub_DAF0+124j + mov eax, dword_218A4 + add dword_218AC, eax + +loc_DC31: ; CODE XREF: sub_DAF0+11Bj + call sub_C914 + pop di + pop si + leave + retn +sub_DAF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC38 proc near ; CODE XREF: sub_B2AB+50p + push bp + mov bp, sp + call sub_1340 + push ds + push offset aMikoft_bft ; "MIKOFT.bft" + call sub_1380 + pop bp + retn +sub_DC38 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC4B proc near ; CODE XREF: sub_C566+2Dp + push bp + mov bp, sp + call sub_1364 + pop bp + retn +sub_DC4B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC55 proc near ; CODE XREF: sub_DD41+A7p sub_DD41+BDp ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, 0B4Ch + mov di, 38h ; '8' + jmp short loc_DC9A +; --------------------------------------------------------------------------- + +loc_DC65: ; CODE XREF: sub_DC55+48j + mov eax, [bp+arg_0] + cdq + idiv dword ptr [si] + mov [bp+var_4], ax + movsx eax, [bp+var_4] + imul eax, [si] + sub [bp+arg_0], eax + add si, 4 + mov ax, [bp+var_4] + add ax, 0A0h ; ' ' + mov [bp+var_2], ax + push di + push [bp+arg_4] + push ax + push 0E1h ; 'á' + call sub_1416 + add di, 2 + +loc_DC9A: ; CODE XREF: sub_DC55+Ej + cmp di, 46h ; 'F' + jl short loc_DC65 + pop di + pop si + leave + retn 6 +sub_DC55 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DCA5 proc near ; CODE XREF: sub_E012+29p sub_E012+50p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + mov si, [bp+arg_0] + cmp si, 0Ah + jl short loc_DCB7 + mov si, 9 + +loc_DCB7: ; CODE XREF: sub_DCA5+Dj + lea ax, [si+0A0h] + mov [bp+var_2], ax + push 46h ; 'F' + push [bp+arg_2] + push ax + push 0E1h ; 'á' + call sub_1416 + pop si + leave + retn 4 +sub_DCA5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DCD1 proc near ; CODE XREF: sub_B3DA+4D8p + push bp + mov bp, sp + mov word_1E5B6, 0 + jmp short loc_DCE0 +; --------------------------------------------------------------------------- + +loc_DCDC: ; CODE XREF: sub_DCD1+20j + inc word_1E5B6 + +loc_DCE0: ; CODE XREF: sub_DCD1+9j + mov bx, word_1E5B6 + shl bx, 2 + mov eax, [bx+0B2Eh] + cmp eax, dword_1E598 + jle short loc_DCDC + mov dword_218AC, 0 + pop bp + retn +sub_DCD1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DCFE proc far ; CODE XREF: sub_BCB1+2BDp + ; sub_EFF2+23p + push bp + mov bp, sp + mov eax, dword_218AC + add dword_1E598, eax + mov dword_218AC, 0 + mov word_218B0, 0 + pop bp + retf +sub_DCFE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DD1B proc near ; CODE XREF: sub_C31F+217p + push bp + mov bp, sp + mov dword_1E598, 0 + mov dword_218AC, 0 + mov word_218B0, 0 + mov dword_1E5B8, 9C40h + pop bp + retn +sub_DD1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DD41 proc near ; CODE XREF: sub_BCB1:loc_BF60p + +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 4 + cmp dword_218AC, 0 + jz loc_DE46 + cmp byte_2066C, 0 + jnz short loc_DDA1 + mov eax, dword_218AC + mov [bp+var_4], eax + cmp [bp+var_4], 20h ; ' ' + jge short loc_DD6F + mov [bp+var_4], 20h ; ' ' + +loc_DD6F: ; CODE XREF: sub_DD41+24j + mov eax, [bp+var_4] + sar eax, 5 + mov [bp+var_4], eax + movzx eax, word_218B0 + cmp eax, [bp+var_4] + jge short loc_DDA7 + cmp [bp+var_4], 457h + jle short loc_DD99 + mov [bp+var_4], 457h + +loc_DD99: ; CODE XREF: sub_DD41+4Ej + mov ax, word ptr [bp+var_4] + mov word_218B0, ax + jmp short loc_DDA7 +; --------------------------------------------------------------------------- + +loc_DDA1: ; CODE XREF: sub_DD41+15j + mov word_218B0, 0C27h + +loc_DDA7: ; CODE XREF: sub_DD41+44j sub_DD41+5Ej + mov eax, dword_218AC + mov [bp+var_4], eax + movzx eax, word_218B0 + sub [bp+var_4], eax + cmp [bp+var_4], 0 + jge short loc_DDCE + mov ax, word ptr dword_218AC + mov word_218B0, ax + mov [bp+var_4], 0 + +loc_DDCE: ; CODE XREF: sub_DD41+7Dj + mov eax, [bp+var_4] + mov dword_218AC, eax + movzx eax, word_218B0 + add dword_1E598, eax + push 6 + push large [dword_1E598] + call sub_DC55 + mov eax, dword_1E598 + cmp eax, dword_252F8 + jle short loc_DE01 + mov dword_252F8, eax + push 4 + push eax + call sub_DC55 + +loc_DE01: ; CODE XREF: sub_DD41+B3j + mov bx, word_1E5B6 + shl bx, 2 + mov eax, [bx+0B2Eh] + cmp eax, dword_1E598 + jg short locret_DE4C + mov al, byte_1E59C + cbw + cmp ax, 5 + jge short loc_DE26 + inc byte_1E59C + call sub_DF76 + jmp short loc_DE36 +; --------------------------------------------------------------------------- + +loc_DE26: ; CODE XREF: sub_DD41+DAj + mov al, byte_1E59D + cbw + cmp ax, 5 + jge short loc_DE36 + inc byte_1E59D + call sub_DFC4 + +loc_DE36: ; CODE XREF: sub_DD41+E3j sub_DD41+ECj + push 8 + call sub_FA52 + add sp, 2 + inc word_1E5B6 + leave + retn +; --------------------------------------------------------------------------- + +loc_DE46: ; CODE XREF: sub_DD41+Cj + mov word_218B0, 0 + +locret_DE4C: ; CODE XREF: sub_DD41+D1j + leave + retn +sub_DD41 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DE4E proc far ; CODE XREF: sub_FC53+1A7P + ; sub_FE12+167P ... + push bp + mov bp, sp + mov eax, dword_218AC + add dword_1E598, eax + push 6 + push large [dword_1E598] + call sub_DC55 + mov eax, dword_1E598 + cmp eax, dword_252F8 + jle short loc_DE7A + mov dword_252F8, eax + push 4 + push eax + call sub_DC55 + +loc_DE7A: ; CODE XREF: sub_DE4E+1Fj + mov bx, word_1E5B6 + shl bx, 2 + mov eax, [bx+0B2Eh] + cmp eax, dword_1E598 + jg short loc_DEAB + mov al, byte_1E59C + cbw + cmp ax, 5 + jge short loc_DEA7 + inc byte_1E59C + call sub_DF76 + push 8 + call sub_FA52 + add sp, 2 + +loc_DEA7: ; CODE XREF: sub_DE4E+46j + inc word_1E5B6 + +loc_DEAB: ; CODE XREF: sub_DE4E+3Dj + pop bp + retf +sub_DE4E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DEAD proc near ; CODE XREF: sub_D906+4Ep + ; sub_D906+191p ... + +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 +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = byte 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, 18h + push si + xor si, si + mov ax, word_1E5D8 + mov [bp+var_8], ax + mov ax, word_1E5DA + mov [bp+var_6], ax + mov ax, word_1E5DC + mov [bp+var_4], ax + mov ax, word_1E5DE + mov [bp+var_12], ax + mov ax, word_1E5E0 + mov [bp+var_10], ax + mov ax, word_1E5E2 + mov [bp+var_E], ax + mov ax, word_1E5E4 + mov [bp+var_C], ax + mov al, byte_1E5E6 + mov [bp+var_A], al + mov ax, word_1E5E7 + mov [bp+var_18], ax + mov ax, word_1E5E9 + mov [bp+var_16], ax + mov ax, word_1E5EB + mov [bp+var_14], ax + mov al, byte_1E516 + mov ah, 0 + sar ax, 2 + mov bx, ax + mov al, [bx+0BC9h] + mov byte_218B2, al + cmp byte_218B2, 9 + jnz short loc_DF20 + push large 3E0014h + push ss + lea ax, [bp+var_8] + push ax + push 0E1h ; 'á' + jmp short loc_DF6E +; --------------------------------------------------------------------------- + +loc_DF20: ; CODE XREF: sub_DEAD+61j + mov al, byte_1E516 + mov ah, 0 + mov [bp+var_2], ax + sub [bp+var_2], 10h + jmp short loc_DF37 +; --------------------------------------------------------------------------- + +loc_DF2E: ; CODE XREF: sub_DEAD+8Ej + mov byte ptr [bp+si+var_18], 3Fh ; '?' + sub [bp+var_2], 10h + inc si + +loc_DF37: ; CODE XREF: sub_DEAD+7Fj + cmp [bp+var_2], 0 + jg short loc_DF2E + mov al, byte_1E516 + mov ah, 0 + dec ax + and ax, 0Fh + mov [bp+var_2], ax + mov al, byte ptr [bp+var_2] + add al, 30h ; '0' + mov byte ptr [bp+si+var_18], al + push large 3E0014h + push ss + lea ax, [bp+var_18] + push ax + mov al, byte_218B2 + mov ah, 0 + lea dx, [bp+var_12] + add ax, dx + mov bx, ax + mov al, ss:[bx] + mov ah, 0 + push ax + +loc_DF6E: ; CODE XREF: sub_DEAD+71j + call sub_145A + pop si + leave + retn +sub_DEAD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DF76 proc near ; CODE XREF: sub_D906+1A3p + ; sub_DD41+E0p ... + push bp + mov bp, sp + push si + xor si, si + jmp short loc_DF95 +; --------------------------------------------------------------------------- + +loc_DF7E: ; CODE XREF: sub_DF76+25j + mov ax, si + add ax, ax + add ax, 3Eh ; '>' + push ax + push large 110002h + push 0E1h ; 'á' + call sub_1416 + inc si + +loc_DF95: ; CODE XREF: sub_DF76+6j + mov al, byte_1E59C + cbw + cmp ax, si + jg short loc_DF7E + mov al, byte_1E59C + cbw + mov si, ax + jmp short loc_DFBC +; --------------------------------------------------------------------------- + +loc_DFA5: ; CODE XREF: sub_DF76+49j + mov ax, si + add ax, ax + add ax, 3Eh ; '>' + push ax + push large 1100CFh + push 0E1h ; 'á' + call sub_1416 + inc si + +loc_DFBC: ; CODE XREF: sub_DF76+2Dj + cmp si, 5 + jl short loc_DFA5 + pop si + pop bp + retn +sub_DF76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DFC4 proc near ; CODE XREF: sub_D906+115p + ; sub_DD41+F2p ... + push bp + mov bp, sp + push si + xor si, si + jmp short loc_DFE3 +; --------------------------------------------------------------------------- + +loc_DFCC: ; CODE XREF: sub_DFC4+25j + mov ax, si + add ax, ax + add ax, 3Eh ; '>' + push ax + push large 0F0003h + push 0E1h ; 'á' + call sub_1416 + inc si + +loc_DFE3: ; CODE XREF: sub_DFC4+6j + mov al, byte_1E59D + cbw + cmp ax, si + jg short loc_DFCC + mov al, byte_1E59D + cbw + mov si, ax + jmp short loc_E00A +; --------------------------------------------------------------------------- + +loc_DFF3: ; CODE XREF: sub_DFC4+49j + mov ax, si + add ax, ax + add ax, 3Eh ; '>' + push ax + push large 0F00CFh + push 0E1h ; 'á' + call sub_1416 + inc si + +loc_E00A: ; CODE XREF: sub_DFC4+2Dj + cmp si, 5 + jl short loc_DFF3 + pop si + pop bp + retn +sub_DFC4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E012 proc near ; CODE XREF: sub_B3DA+39p sub_B98E+3p + push bp + mov bp, sp + push large 3D0005h + push ds + push offset asc_1E615 ; "ÄÅÆ" + push 0C1h ; 'Á' + call sub_145A + push 6 + push large [dword_1E598] + call sub_DC55 + push 6 + les bx, dword_2026C + assume es:nothing + push word ptr es:[bx+12h] + call sub_DCA5 + push large 3C0003h + push ds + push offset asc_1E61A ; "ÎÄÅÆ" + push 0C1h ; 'Á' + call sub_145A + push 4 + push large [dword_252F8] + call sub_DC55 + push 4 + mov al, byte_252FC + mov ah, 0 + push ax + call sub_DCA5 + push large 390011h + push ds + push offset asc_1E61F ; "ÉÊ" + push 0C1h ; 'Á' + call sub_145A + call sub_DF76 + push large 39000Fh + push ds + push offset asc_1E624 ; "ÌÍ" + push 0C1h ; 'Á' + call sub_145A + call sub_DFC4 + push large 390014h + push ds + push offset asc_1E629 ; "ÇÈ" + push 0C1h ; 'Á' + call sub_145A + call sub_DEAD + push large 390016h + push ds + mov al, byte_1E364 + cbw + shl ax, 3 + add ax, 0B7Dh + push ax + cmp byte_1E364, 0 + jnz short loc_E0C2 + mov ax, 81h ; '' + jmp short loc_E0E1 +; --------------------------------------------------------------------------- + +loc_E0C2: ; CODE XREF: sub_E012+A9j + mov al, byte_1E364 + cbw + cmp ax, 1 + jnz short loc_E0D0 + mov ax, 0A1h ; '¡' + jmp short loc_E0E1 +; --------------------------------------------------------------------------- + +loc_E0D0: ; CODE XREF: sub_E012+B7j + mov al, byte_1E364 + cbw + cmp ax, 2 + jnz short loc_E0DE + mov ax, 61h ; 'a' + jmp short loc_E0E1 +; --------------------------------------------------------------------------- + +loc_E0DE: ; CODE XREF: sub_E012+C5j + mov ax, 41h ; 'A' + +loc_E0E1: ; CODE XREF: sub_E012+AEj sub_E012+BCj ... + push ax + call sub_145A + pop bp + retn +sub_E012 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0E9 proc near ; CODE XREF: sub_E162+6p sub_E16D+6p + +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 + push di + mov ax, [bp+arg_0] + add ax, 8 + mov [bp+var_6], ax + mov [bp+var_4], 0 + jmp short loc_E156 +; --------------------------------------------------------------------------- + +loc_E0FF: ; CODE XREF: sub_E0E9+71j + xor si, si + jmp short loc_E147 +; --------------------------------------------------------------------------- + +loc_E103: ; CODE XREF: sub_E0E9+61j + mov [bp+var_2], 1 + jmp short loc_E140 +; --------------------------------------------------------------------------- + +loc_E10A: ; CODE XREF: sub_E0E9+5Bj + mov ax, si + sar ax, 1 + mov dx, [bp+arg_0] + add dx, [bp+var_4] + sub dx, ax + mov di, dx + cmp di, [bp+arg_0] + jge short loc_E122 + mov di, [bp+arg_0] + jmp short loc_E12A +; --------------------------------------------------------------------------- + +loc_E122: ; CODE XREF: sub_E0E9+32j + cmp di, [bp+var_6] + jle short loc_E12A + mov di, [bp+var_6] + +loc_E12A: ; CODE XREF: sub_E0E9+37j sub_E0E9+3Cj + mov ax, si + add ax, ax + add ax, 4 + push ax + push [bp+var_2] + push di + push 1 + call sub_1416 + inc [bp+var_2] + +loc_E140: ; CODE XREF: sub_E0E9+1Fj + cmp [bp+var_2], 17h + jle short loc_E10A + inc si + +loc_E147: ; CODE XREF: sub_E0E9+18j + cmp si, 18h + jl short loc_E103 + push 2 + call sub_F618 + inc [bp+var_4] + +loc_E156: ; CODE XREF: sub_E0E9+14j + cmp [bp+var_4], 15h + jl short loc_E0FF + pop di + pop si + leave + retn 2 +sub_E0E9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E162 proc far ; CODE XREF: sub_B98E+8p sub_C31F+10p ... + push bp + mov bp, sp + push 0CFh ; 'Ï' + call sub_E0E9 + pop bp + retf +sub_E162 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E16D proc far ; CODE XREF: _main+7Bp sub_B98E+4Fp ... + push bp + mov bp, sp + push 0F1h ; 'ñ' + call sub_E0E9 + pop bp + retf +sub_E16D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E178 proc near ; CODE XREF: sub_B2AB+53p + push bp + mov bp, sp + push ds + push offset aBombs_bft ; "bombs.bft" + call sub_950 + push large 20h ; ' ' + push 0 + call sub_98C + push 438h + call sub_2980 + mov word_218C0, ax + mov word_218BE, 0 + push ax + push word_218BE + push 438h + call sub_89C + call sub_870 + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 0 + jnz short loc_E1D2 + push ds + push offset aBomb1_pi ; "bomb1.pi" + push 1 + call sub_F537 + add sp, 6 + mov word_219CA, 34B8h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_E1D2: ; CODE XREF: sub_E178+42j + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 2 + jnz short loc_E1F3 + push ds + push offset aBomb3_pi ; "bomb3.pi" + push 1 + call sub_F537 + add sp, 6 + mov word_219CA, 373Ch + pop bp + retn +; --------------------------------------------------------------------------- + +loc_E1F3: ; CODE XREF: sub_E178+63j + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 1 + jnz short loc_E248 + push ds + push offset aBomb2_pi ; "bomb2.pi" + push 1 + call sub_F537 + add sp, 6 + push ds + push offset aBomb1_bft ; "bomb1.bft" + call sub_950 + push large 50h ; 'P' + push 0 + call sub_98C + push 1440h + call sub_2980 + mov word ptr dword_218BA+2, ax + mov word ptr dword_218BA, 0 + push ax + push word ptr dword_218BA + push 1440h + call sub_89C + call sub_870 + mov word_219CA, 398Bh + +loc_E248: ; CODE XREF: sub_E178+84j + pop bp + retn +sub_E178 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E24A proc near ; CODE XREF: sub_C566+11p + push bp + mov bp, sp + push ds + push offset unk_1FDBC + push large [dword_1FD60] + call sub_16C0 + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 1 + jnz short loc_E26F + push word ptr dword_218BA+2 + call sub_2A84 + +loc_E26F: ; CODE XREF: sub_E24A+1Aj + pop bp + retn +sub_E24A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E271 proc near ; CODE XREF: sub_B3DA+73p + push bp + mov bp, sp + mov byte_218C2, 0 + mov byte_218B4, 0 + pop bp + retn +sub_E271 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E280 proc near ; CODE XREF: sub_F1D8+263p + push bp + mov bp, sp + cmp byte_218B4, 0 + jnz short loc_E2D7 + cmp byte_1E59D, 0 + jz short loc_E2D7 + mov byte_218B4, 1 + mov byte_20606, 1 + dec byte_1E59D + call sub_DFC4 + mov word_218B6, 0 + inc byte_218C2 + inc byte_1E64E + push 9 + call sub_FA52 + add sp, 2 + mov word_218C4, 0DCh ; 'Ü' + mov word_218C6, 0C4h ; 'Ä' + mov word_218C8, 0 + mov word_218CA, 0 + call sub_10E0A + +loc_E2D7: ; CODE XREF: sub_E280+8j sub_E280+Fj + pop bp + retn +sub_E280 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E2D9 proc near ; CODE XREF: sub_BCB1+60p + +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 + cmp byte_218B4, 0 + jz loc_E3EA + cmp word_218C8, 1 + jle loc_E38A + dec word_218B6 + mov ax, word_218B6 + shl ax, 3 + mov dx, 100h + sub dx, ax + mov [bp+var_2], dx + xor di, di + mov al, byte ptr word_218B6 + jmp short loc_E371 +; --------------------------------------------------------------------------- + +loc_E30C: ; CODE XREF: sub_E2D9+9Ej + movsx eax, [bp+var_2] + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_218C4 + mov [bp+var_4], ax + movsx eax, [bp+var_2] + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_218C6 + mov si, ax + cmp si, 8 + jle short loc_E36B + cmp si, 180h + jge short loc_E36B + push [bp+var_4] + push si + push large 80008h + call sub_45FC + +loc_E36B: ; CODE XREF: sub_E2D9+7Bj sub_E2D9+81j + inc di + mov al, [bp+var_5] + add al, 4 + +loc_E371: ; CODE XREF: sub_E2D9+31j + mov [bp+var_5], al + cmp di, 40h ; '@' + jl short loc_E30C + cmp word_218B6, 20h ; ' ' + jl short loc_E386 + mov word_218C8, 0 + +loc_E386: ; CODE XREF: sub_E2D9+A5j + inc word_218B6 + +loc_E38A: ; CODE XREF: sub_E2D9+16j + cmp word_218CA, 1 + jnz short loc_E39D + cmp word_218B6, 20h ; ' ' + jg short loc_E39D + mov byte_22D48, 1 + +loc_E39D: ; CODE XREF: sub_E2D9+B6j sub_E2D9+BDj + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 0 + jnz short loc_E3BA + cmp word_218B6, 88h ; 'ˆ' + jz short loc_E3E5 + cmp word_218B6, 89h ; '‰' + jnz short loc_E3EA + jmp short loc_E3E5 +; --------------------------------------------------------------------------- + +loc_E3BA: ; CODE XREF: sub_E2D9+CDj + les bx, dword_2026C + cmp byte ptr es:[bx+26h], 1 + jnz short loc_E3D7 + cmp word_218B6, 0A4h ; '¤' + jz short loc_E3E5 + cmp word_218B6, 0A5h ; '¥' + jnz short loc_E3EA + jmp short loc_E3E5 +; --------------------------------------------------------------------------- + +loc_E3D7: ; CODE XREF: sub_E2D9+EAj + cmp word_218B6, 70h ; 'p' + jz short loc_E3E5 + cmp word_218B6, 71h ; 'q' + jnz short loc_E3EA + +loc_E3E5: ; CODE XREF: sub_E2D9+D5j sub_E2D9+DFj ... + mov byte_22D48, 1 + +loc_E3EA: ; CODE XREF: sub_E2D9+Dj sub_E2D9+DDj ... + pop di + pop si + leave + retn +sub_E2D9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E3EE proc near ; CODE XREF: sub_ECAC+1Fp + +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 + inc word_218C8 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov dx, word_20344 + mov bx, ax + mov [bx+3E5Ch], dx + push large 0C0000Fh + call sub_127E + mov ax, word_218B6 + shl ax, 3 + mov dx, 100h + sub dx, ax + mov di, dx + xor si, si + mov al, byte ptr word_218B6 + jmp short loc_E47B +; --------------------------------------------------------------------------- + +loc_E42A: ; CODE XREF: sub_E3EE+93j + movsx eax, di + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_218C4 + mov [bp+var_2], ax + movsx eax, di + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_218C6 + mov [bp+var_4], ax + push [bp+var_2] + push ax + call sub_ED11 + inc si + mov al, [bp+var_5] + add al, 4 + +loc_E47B: ; CODE XREF: sub_E3EE+3Aj + mov [bp+var_5], al + cmp si, 40h ; '@' + jl short loc_E42A + call sub_12A8 + pop di + pop si + leave + retn +sub_E3EE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E48C proc near ; CODE XREF: sub_EAEB+14Cp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + push large 0C0000Eh + call sub_127E + mov ax, [bp+arg_0] + shl ax, 5 + mov di, ax + xor si, si + mov al, byte ptr [bp+arg_0] + jmp short loc_E4FF +; --------------------------------------------------------------------------- + +loc_E4AE: ; CODE XREF: sub_E48C+79j + movsx eax, di + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_218C4 + mov [bp+var_2], ax + movsx eax, di + mov dl, [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_218C6 + mov [bp+var_4], ax + push [bp+var_2] + push ax + call sub_ED11 + inc si + mov al, [bp+var_5] + add al, 4 + +loc_E4FF: ; CODE XREF: sub_E48C+20j + mov [bp+var_5], al + cmp si, 40h ; '@' + jl short loc_E4AE + call sub_12A8 + pop di + pop si + leave + retn 2 +sub_E48C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E512 proc near ; CODE XREF: sub_E618:loc_E80Bp + ; sub_E89C+BBp ... + push bp + mov bp, sp + push si + push di + mov ax, word_218B6 + and ax, 0Fh + add ax, ax + mov di, ax + xor si, si + jmp short loc_E55D +; --------------------------------------------------------------------------- + +loc_E525: ; CODE XREF: sub_E512+4Ej + call sub_C264 + mov bx, 180h + xor dx, dx + div bx + add dx, 20h ; ' ' + mov bx, di + add bx, si + shl bx, 2 + mov [bx+3F5Ch], dx + call sub_C264 + mov bx, 170h + xor dx, dx + div bx + add dx, 10h + mov bx, di + add bx, si + shl bx, 2 + mov [bx+3F5Eh], dx + mov bx, si + mov byte ptr [bx+di+3F28h], 1 + inc si + +loc_E55D: ; CODE XREF: sub_E512+11j + cmp si, 2 + jl short loc_E525 + xor si, si + jmp short loc_E5AC +; --------------------------------------------------------------------------- + +loc_E566: ; CODE XREF: sub_E512+9Dj + cmp byte ptr [si+3F28h], 0 + jz short loc_E5AB + mov ax, word_218B6 + and ax, 3 + mov dx, si + and dx, 3 + cmp ax, dx + jnz short loc_E58E + inc byte ptr [si+3F28h] + cmp byte ptr [si+3F28h], 5 + jb short loc_E58E + mov byte ptr [si+3F28h], 0 + jmp short loc_E5AB +; --------------------------------------------------------------------------- + +loc_E58E: ; CODE XREF: sub_E512+68j sub_E512+73j + mov bx, si + shl bx, 2 + push word ptr [bx+3F5Ch] + mov bx, si + shl bx, 2 + push word ptr [bx+3F5Eh] + mov al, [si+3F28h] + mov ah, 0 + dec ax + push ax + call sub_ED9F + +loc_E5AB: ; CODE XREF: sub_E512+59j sub_E512+7Aj + inc si + +loc_E5AC: ; CODE XREF: sub_E512+52j + cmp si, 20h ; ' ' + jl short loc_E566 + pop di + pop si + pop bp + retn +sub_E512 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E5B5 proc near ; CODE XREF: sub_E618+62p sub_E89C+27p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 6 + push si + mov ax, word_218B6 + dec ax + sar ax, 1 + mov [bp+var_6], ax + imul ax, 48h + mov dx, word_218C0 + mov bx, word_218BE + add bx, ax + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], bx + mov si, 10h + jmp short loc_E60F +; --------------------------------------------------------------------------- + +loc_E5DD: ; CODE XREF: sub_E5B5+5Ej + push 20h ; ' ' + push si + les bx, [bp+var_4] + mov al, es:[bx] + push ax + call sub_EE76 + push 0A0h ; ' ' + push si + les bx, [bp+var_4] + mov al, es:[bx+1] + push ax + call sub_EE76 + push 120h + push si + les bx, [bp+var_4] + mov al, es:[bx+2] + push ax + call sub_EE76 + add word ptr [bp+var_4], 3 + add si, 10h + +loc_E60F: ; CODE XREF: sub_E5B5+26j + cmp si, 190h + jl short loc_E5DD + pop si + leave + retn +sub_E5B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E618 proc near + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push large 0C00000h + call sub_127E + cmp word_218B6, 1 + jnz short loc_E668 + mov [bp+var_2], 0 + jmp short loc_E64E +; --------------------------------------------------------------------------- + +loc_E638: ; CODE XREF: sub_E618+3Aj + mov bx, [bp+var_2] + mov al, [bx+1A98h] + mov [bx+3FDDh], al + mov al, [bx+1AA1h] + mov [bx+3FE0h], al + inc [bp+var_2] + +loc_E64E: ; CODE XREF: sub_E618+1Ej + cmp [bp+var_2], 3 + jl short loc_E638 + mov byte_1F511, 40h ; '@' + mov byte_1F512, 10h + mov byte_1F513, 40h ; '@' + call far ptr loc_1EF6 + +loc_E668: ; CODE XREF: sub_E618+17j + cmp word_218B6, 20h ; ' ' + jge short loc_E680 + push large 0C00003h + call sub_127E + call sub_E5B5 + jmp loc_E892 +; --------------------------------------------------------------------------- + +loc_E680: ; CODE XREF: sub_E618+55j + cmp word_218B6, 20h ; ' ' + jnz short loc_E6CC + mov al, byte_21A50 + mov byte_1F511, al + mov al, byte_21A51 + mov byte_1F512, al + mov al, byte_21A52 + mov byte_1F513, al + mov byte_1F508, 80h ; '€' + mov byte_1F509, 0 + mov byte_1F50A, 80h ; '€' + call far ptr loc_1EF6 + mov al, byte_2287E + mov byte_21A4C, al + mov byte_2287E, 2 + push large 200000h + push large 19F018Fh + call sub_AB8 + jmp loc_E892 +; --------------------------------------------------------------------------- + +loc_E6CC: ; CODE XREF: sub_E618+6Dj + cmp word_218B6, 88h ; 'ˆ' + jge loc_E821 + cmp word_218B6, 40h ; '@' + jle short loc_E6E8 + push large 0C0000Bh + call sub_127E + +loc_E6E8: ; CODE XREF: sub_E618+C3j + push large 200000h + push large 19F018Fh + call sub_AB8 + call sub_12A8 + cmp word_218B6, 40h ; '@' + jg short loc_E74D + mov ax, word_218B6 + shl ax, 2 + add ax, 0FF80h + mov dx, 80h ; '€' + sub dx, ax + mov [bp+var_2], dx + mov al, byte ptr [bp+var_2] + mov byte_1F508, al + mov byte_1F509, 0 + mov byte_1F50A, al + cmp word_218B6, 40h ; '@' + jnz short loc_E745 + mov word_1DF9A, 0C8h ; 'È' + call far ptr loc_1EF6 + mov byte_1F508, 0FFh + mov byte_1F509, 0FFh + mov byte_1F50A, 0FFh + +loc_E745: ; CODE XREF: sub_E618+111j + call far ptr loc_1EF6 + jmp loc_E7E8 +; --------------------------------------------------------------------------- + +loc_E74D: ; CODE XREF: sub_E618+EBj + push large 0D400BEh + push large 320001h + push 0 + call sub_4090 + cmp word_218B6, 46h ; 'F' + jnz short loc_E774 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + jmp short loc_E7A0 +; --------------------------------------------------------------------------- + +loc_E774: ; CODE XREF: sub_E618+14Dj + cmp byte_2066C, 0 + jz short loc_E782 + test byte ptr word_218B6, 1 + jz short loc_E7A0 + +loc_E782: ; CODE XREF: sub_E618+161j + mov si, 5Ah ; 'Z' + add si, word_20344 + cmp si, 190h + jl short loc_E793 + sub si, 190h + +loc_E793: ; CODE XREF: sub_E618+175j + push 1 + push si + push 70h ; 'p' + call sub_F970 + add sp, 6 + +loc_E7A0: ; CODE XREF: sub_E618+15Aj + ; sub_E618+168j + cmp word_218B6, 56h ; 'V' + jl short loc_E7E8 + mov ax, word_218B6 + mov bx, 3 + cwd + idiv bx + or dx, dx + jz short loc_E7BB + mov [bp+var_2], 0FFh + jmp short loc_E7C0 +; --------------------------------------------------------------------------- + +loc_E7BB: ; CODE XREF: sub_E618+19Aj + mov [bp+var_2], 0A0h ; ' ' + +loc_E7C0: ; CODE XREF: sub_E618+1A1j + mov al, byte ptr [bp+var_2] + mov byte_1F508, al + mov byte_1F509, al + mov byte_1F50A, al + mov ax, word_218B6 + add ax, ax + add ax, 0FFB8h + mov word_1DF9A, ax + call far ptr loc_1EF6 + cmp word_218B6, 6Fh ; 'o' + jle short loc_E7E8 + mov byte_2066D, 2 + +loc_E7E8: ; CODE XREF: sub_E618+132j + ; sub_E618+18Dj ... + cmp word_218B6, 56h ; 'V' + jge short loc_E80E + push large 0C0000Fh + call sub_127E + test byte ptr word_218B6, 3 + jnz short loc_E80B + push 0Fh + call sub_FA52 + add sp, 2 + +loc_E80B: ; CODE XREF: sub_E618+1E7j + call sub_E512 + +loc_E80E: ; CODE XREF: sub_E618+1D5j + cmp word_218B6, 56h ; 'V' + jnz short loc_E892 + push 11h + call sub_FA52 + add sp, 2 + jmp short loc_E892 +; --------------------------------------------------------------------------- + +loc_E821: ; CODE XREF: sub_E618+BAj + cmp word_218B6, 88h ; 'ˆ' + jnz short loc_E867 + mov al, byte_21A4D + mov byte_1F508, al + mov al, byte_21A4E + mov byte_1F509, al + mov al, byte_21A4F + mov byte_1F50A, al + call far ptr loc_1EF6 + push 10h + call sub_FA52 + add sp, 2 + mov al, byte_21A4C + mov byte_2287E, al + mov byte_2066D, 1 + mov word_1DF9A, 0C8h ; 'È' + call far ptr loc_1EF6 + call sub_10E0A + jmp short loc_E892 +; --------------------------------------------------------------------------- + +loc_E867: ; CODE XREF: sub_E618+20Fj + cmp word_218B6, 9Ch ; 'œ' + jge short loc_E888 + mov ax, word_218B6 + imul ax, 5 + add ax, 0FD58h + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_1DF9A, dx + call far ptr loc_1EF6 + jmp short loc_E892 +; --------------------------------------------------------------------------- + +loc_E888: ; CODE XREF: sub_E618+255j + call sub_12A8 + mov ax, 1 + jmp short loc_E899 +; --------------------------------------------------------------------------- + +loc_E892: ; CODE XREF: sub_E618+65j sub_E618+B1j ... + call sub_12A8 + xor ax, ax + +loc_E899: ; CODE XREF: sub_E618+278j + pop si + leave + retn +sub_E618 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E89C proc near + +var_64 = byte ptr -64h +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 64h + push si + push di + mov si, 0BE0h + lea di, [bp+var_64] + push ss + pop es + mov cx, 30h ; '0' + rep movsw + push large 0C00002h + call sub_127E + cmp word_218B6, 20h ; ' ' + jge short loc_E8C9 + call sub_E5B5 + jmp loc_EA60 +; --------------------------------------------------------------------------- + +loc_E8C9: ; CODE XREF: sub_E89C+25j + cmp word_218B6, 20h ; ' ' + jnz short loc_E915 + mov al, byte_2287E + mov byte_21A53, al + mov byte_2287E, 2 + push large 200000h + push large 19F018Fh + call sub_AB8 + mov [bp+var_4], 0 + jmp short loc_E902 +; --------------------------------------------------------------------------- + +loc_E8F3: ; CODE XREF: sub_E89C+6Aj + mov bx, [bp+var_4] + shl bx, 2 + mov word ptr [bx+3E62h], 14h + inc [bp+var_4] + +loc_E902: ; CODE XREF: sub_E89C+55j + cmp [bp+var_4], 30h ; '0' + jl short loc_E8F3 + push 11h + call sub_FA52 + add sp, 2 + jmp loc_EA60 +; --------------------------------------------------------------------------- + +loc_E915: ; CODE XREF: sub_E89C+32j + cmp word_218B6, 64h ; 'd' + jge loc_E9A6 + push large 200000h + push large 19F018Fh + call sub_AB8 + cmp word_218B6, 50h ; 'P' + jl short loc_E94C + mov ax, word_218B6 + imul ax, 5 + add ax, 0FED4h + mov word_1DF9A, ax + call far ptr loc_1EF6 + mov byte_2066D, 2 + +loc_E94C: ; CODE XREF: sub_E89C+98j + push large 0C0000Eh + call sub_127E + call sub_E512 + push large 0C00001h + call sub_127E + mov [bp+var_4], 0 + jmp short loc_E99D +; --------------------------------------------------------------------------- + +loc_E96C: ; CODE XREF: sub_E89C+105j + mov bx, [bp+var_4] + add bx, bx + lea ax, [bp+var_64] + add bx, ax + mov ax, ss:[bx] + mov bx, [bp+var_4] + shl bx, 2 + add [bx+3E62h], ax + mov ax, [bp+var_4] + shl ax, 3 + add ax, 20h ; ' ' + push ax + mov bx, [bp+var_4] + shl bx, 2 + push word ptr [bx+3E62h] + call sub_EDF0 + inc [bp+var_4] + +loc_E99D: ; CODE XREF: sub_E89C+CEj + cmp [bp+var_4], 30h ; '0' + jl short loc_E96C + jmp loc_EA60 +; --------------------------------------------------------------------------- + +loc_E9A6: ; CODE XREF: sub_E89C+7Ej + cmp word_218B6, 70h ; 'p' + jge short loc_EA11 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + test byte ptr word_218B6, 1 + jz short loc_E9F3 + call sub_12A8 + mov [bp+var_2], 10h + mov ax, word_20344 + add [bp+var_2], ax + cmp [bp+var_2], 190h + jl short loc_E9DB + sub [bp+var_2], 190h + +loc_E9DB: ; CODE XREF: sub_E89C+138j + push 1 + push [bp+var_2] + push 20h ; ' ' + call sub_F970 + push 10h + call sub_FA52 + add sp, 8 + jmp short loc_EA60 +; --------------------------------------------------------------------------- + +loc_E9F3: ; CODE XREF: sub_E89C+121j + push large 0C0000Fh + call sub_127E + push large 200000h + push large 19F018Fh + call sub_AB8 + jmp short loc_EA60 +; --------------------------------------------------------------------------- + +loc_EA11: ; CODE XREF: sub_E89C+10Fj + cmp word_218B6, 70h ; 'p' + jnz short loc_EA35 + mov al, byte_21A53 + mov byte_2287E, al + mov byte_2066D, 1 + mov word_1DF9A, 0C8h ; 'È' + call far ptr loc_1EF6 + call sub_10E0A + jmp short loc_EA60 +; --------------------------------------------------------------------------- + +loc_EA35: ; CODE XREF: sub_E89C+17Aj + cmp word_218B6, 80h ; '€' + jge short loc_EA56 + mov ax, word_218B6 + imul ax, 5 + add ax, 0FDE4h + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_1DF9A, dx + call far ptr loc_1EF6 + jmp short loc_EA60 +; --------------------------------------------------------------------------- + +loc_EA56: ; CODE XREF: sub_E89C+19Fj + call sub_12A8 + mov ax, 1 + jmp short loc_EA67 +; --------------------------------------------------------------------------- + +loc_EA60: ; CODE XREF: sub_E89C+2Aj sub_E89C+76j ... + call sub_12A8 + xor ax, ax + +loc_EA67: ; CODE XREF: sub_E89C+1C2j + pop di + pop si + leave + retn +sub_E89C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EA6B proc near ; CODE XREF: sub_EAEB+78p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, 120h + imul [bp+arg_0] + mov [bp+arg_0], ax + mov [bp+var_2], 1 + jmp short loc_EADF +; --------------------------------------------------------------------------- + +loc_EA83: ; CODE XREF: sub_EA6B+78j + mov si, 4 + jmp short loc_EAD7 +; --------------------------------------------------------------------------- + +loc_EA88: ; CODE XREF: sub_EA6B+6Fj + les bx, dword_218BA + add bx, [bp+arg_0] + test byte ptr es:[bx], 0F0h + jz short loc_EA9A + mov di, 45h ; 'E' + jmp short loc_EA9D +; --------------------------------------------------------------------------- + +loc_EA9A: ; CODE XREF: sub_EA6B+28j + mov di, 0E1h ; 'á' + +loc_EA9D: ; CODE XREF: sub_EA6B+2Dj + push si + push [bp+var_2] + push ds + push offset asc_1E6DF ; " " + push di + call sub_26CA + add si, 2 + les bx, dword_218BA + add bx, [bp+arg_0] + test byte ptr es:[bx], 0Fh + jz short loc_EAC0 + mov di, 45h ; 'E' + jmp short loc_EAC3 +; --------------------------------------------------------------------------- + +loc_EAC0: ; CODE XREF: sub_EA6B+4Ej + mov di, 0E1h ; 'á' + +loc_EAC3: ; CODE XREF: sub_EA6B+53j + push si + push [bp+var_2] + push ds + push offset asc_1E6DF ; " " + push di + call sub_26CA + add si, 2 + inc [bp+arg_0] + +loc_EAD7: ; CODE XREF: sub_EA6B+1Bj + cmp si, 34h ; '4' + jl short loc_EA88 + inc [bp+var_2] + +loc_EADF: ; CODE XREF: sub_EA6B+16j + cmp [bp+var_2], 17h + jle short loc_EA83 + pop di + pop si + leave + retn 2 +sub_EA6B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EAEB proc near + push bp + mov bp, sp + push si + push large 0C0000Fh + call sub_127E + cmp word_218B6, 20h ; ' ' + jge short loc_EB07 + call sub_E5B5 + jmp loc_ECA2 +; --------------------------------------------------------------------------- + +loc_EB07: ; CODE XREF: sub_EAEB+14j + cmp word_218B6, 20h ; ' ' + jnz short loc_EB32 + mov byte_21A55, 0 + mov al, byte_2287E + mov byte_21A54, al + mov byte_2287E, 2 + push large 200000h + push large 19F018Fh + call sub_AB8 + jmp loc_ECA2 +; --------------------------------------------------------------------------- + +loc_EB32: ; CODE XREF: sub_EAEB+21j + cmp word_218B6, 84h ; '„' + jge short loc_EB9E + cmp word_218B6, 20h ; ' ' + jle short loc_EB7C + test byte ptr word_218B6, 3 + jnz short loc_EB7C + mov ax, word_218B6 + and ax, 7 + cmp ax, 4 + jnz short loc_EB5D + push 10h + call sub_FA52 + add sp, 2 + +loc_EB5D: ; CODE XREF: sub_EAEB+66j + mov al, byte_21A55 + mov ah, 0 + push ax + call sub_EA6B + inc byte_21A55 + cmp byte_21A55, 12h + jb short loc_EB7C + call sub_FBE9 + mov word_218B6, 84h ; '„' + +loc_EB7C: ; CODE XREF: sub_EAEB+54j sub_EAEB+5Bj ... + push large 200000h + push large 19F018Fh + call sub_AB8 + push large 0C00004h + call sub_127E + call sub_E512 + jmp loc_ECA2 +; --------------------------------------------------------------------------- + +loc_EB9E: ; CODE XREF: sub_EAEB+4Dj + cmp word_218B6, 0A4h ; '¤' + jge loc_EC56 + push large 200000h + push large 19F018Fh + call sub_AB8 + mov byte_2066D, 2 + cmp byte_2066C, 0 + jz short loc_EBCC + test byte ptr word_218B6, 1 + jz short loc_EBEF + +loc_EBCC: ; CODE XREF: sub_EAEB+D8j + call sub_12A8 + mov si, 54h ; 'T' + add si, word_20344 + cmp si, 190h + jl short loc_EBE2 + sub si, 190h + +loc_EBE2: ; CODE XREF: sub_EAEB+F1j + push 1 + push si + push 20h ; ' ' + call sub_F970 + add sp, 6 + +loc_EBEF: ; CODE XREF: sub_EAEB+DFj + test byte ptr word_218B6, 3 + jnz short loc_EC00 + push 0Fh + call sub_FA52 + add sp, 2 + +loc_EC00: ; CODE XREF: sub_EAEB+109j + cmp word_218B6, 8Ch ; 'Œ' + jg short loc_EC10 + mov ax, word_218B6 + add ax, 0FF7Ch + jmp short loc_EC36 +; --------------------------------------------------------------------------- + +loc_EC10: ; CODE XREF: sub_EAEB+11Bj + cmp word_218B6, 94h ; '”' + jg short loc_EC20 + mov ax, word_218B6 + add ax, 0FF74h + jmp short loc_EC36 +; --------------------------------------------------------------------------- + +loc_EC20: ; CODE XREF: sub_EAEB+12Bj + cmp word_218B6, 9Ch ; 'œ' + jg short loc_EC30 + mov ax, word_218B6 + add ax, 0FF6Ch + jmp short loc_EC36 +; --------------------------------------------------------------------------- + +loc_EC30: ; CODE XREF: sub_EAEB+13Bj + mov ax, word_218B6 + add ax, 0FF64h + +loc_EC36: ; CODE XREF: sub_EAEB+123j + ; sub_EAEB+133j ... + push ax + call sub_E48C + mov ax, word_218B6 + add ax, ax + add ax, word_218B6 + add ax, 0FE74h + +loc_EC46: ; CODE XREF: sub_EAEB+1ABj + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_1DF9A, dx + call far ptr loc_1EF6 + jmp short loc_ECA2 +; --------------------------------------------------------------------------- + +loc_EC56: ; CODE XREF: sub_EAEB+B9j + cmp word_218B6, 0A4h ; '¤' + jnz short loc_EC85 + push 10h + call sub_FA52 + add sp, 2 + mov al, byte_21A54 + mov byte_2287E, al + mov byte_2066D, 1 + mov word_1DF9A, 0C8h ; 'È' + call far ptr loc_1EF6 + call sub_10E0A + jmp short loc_ECA2 +; --------------------------------------------------------------------------- + +loc_EC85: ; CODE XREF: sub_EAEB+171j + cmp word_218B6, 0B8h ; '¸' + jge short loc_EC98 + mov ax, word_218B6 + imul ax, 5 + add ax, 0FCCCh + jmp short loc_EC46 +; --------------------------------------------------------------------------- + +loc_EC98: ; CODE XREF: sub_EAEB+1A0j + call sub_12A8 + mov ax, 1 + jmp short loc_ECA9 +; --------------------------------------------------------------------------- + +loc_ECA2: ; CODE XREF: sub_EAEB+19j sub_EAEB+44j ... + call sub_12A8 + xor ax, ax + +loc_ECA9: ; CODE XREF: sub_EAEB+1B5j + pop si + pop bp + retn +sub_EAEB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ECAC proc near ; CODE XREF: sub_BCB1+11Ep + push bp + mov bp, sp + push si + xor si, si + cmp byte_218B4, 0 + jz short loc_ED0E + inc word_218B6 + cmp word_218CA, 0 + jnz short loc_ECE3 + cmp word_218B6, 20h ; ' ' + jg short loc_ECD0 + call sub_E3EE + jmp short loc_ECF0 +; --------------------------------------------------------------------------- + +loc_ECD0: ; CODE XREF: sub_ECAC+1Dj + cmp word_218C8, 0 + jnz short loc_ECF0 + mov word_218B6, 0 + inc word_218CA + jmp short loc_ECF0 +; --------------------------------------------------------------------------- + +loc_ECE3: ; CODE XREF: sub_ECAC+16j + cmp word_218CA, 1 + jnz short loc_ECF0 + call word_219CA + mov si, ax + +loc_ECF0: ; CODE XREF: sub_ECAC+22j sub_ECAC+29j ... + or si, si + jz short loc_ED0E + mov byte_218B4, 0 + mov byte_20606, 0 + mov byte_20605, 46h ; 'F' + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + +loc_ED0E: ; CODE XREF: sub_ECAC+Bj sub_ECAC+46j + pop si + pop bp + retn +sub_ECAC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED11 proc near ; CODE XREF: sub_E3EE+84p sub_E48C+6Ap + +var_4 = word ptr -4 +var_1 = byte ptr -1 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + push di + cmp [bp+arg_2], 18h + jle short loc_ED99 + cmp [bp+arg_2], 1A0h + jge short loc_ED99 + cmp [bp+arg_0], 8 + jle short loc_ED99 + cmp [bp+arg_0], 180h + jge short loc_ED99 + mov ax, 0A800h + mov es, ax + assume es:nothing + mov dx, [bp+arg_0] + add dx, word_20344 + cmp dx, 190h + jl short loc_ED47 + sub dx, 190h + +loc_ED47: ; CODE XREF: sub_ED11+30j + mov bx, [bp+arg_2] + mov ax, bx + sar ax, 3 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + ; Hack (and bx, 7) + db 081h + db 0e3h + db 007h + db 000h + mov [bp+var_4], bx + mov dx, 10h + sub dx, bx + mov si, 0C92h + mov [bp+var_1], 0 + +loc_ED6E: ; CODE XREF: sub_ED11+86j + xor ax, ax + mov al, [si] + mov bx, ax + mov cx, [bp+var_4] + shr bx, cl + mov cx, dx + shl ax, cl + add ax, bx + mov es:[di], ax + add di, 50h ; 'P' + cmp di, 7D00h + jl short loc_ED8F + sub di, 7D00h + +loc_ED8F: ; CODE XREF: sub_ED11+78j + inc si + inc [bp+var_1] + cmp [bp+var_1], 8 + jl short loc_ED6E + +loc_ED99: ; CODE XREF: sub_ED11+Aj sub_ED11+11j ... + pop di + pop si + leave + retn 4 +sub_ED11 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ED9F proc near ; CODE XREF: sub_E512+96p + +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 ax, 0A800h + mov es, ax + mov dx, [bp+arg_2] + add dx, word_20344 + cmp dx, 190h + jl short loc_EDBA + sub dx, 190h + +loc_EDBA: ; CODE XREF: sub_ED9F+15j + mov ax, [bp+arg_4] + sar ax, 3 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov si, 0C72h + mov ax, [bp+arg_0] + shl ax, 3 + add si, ax + mov cx, 8 + +loc_EDDA: ; CODE XREF: sub_ED9F:loc_EDE8j + movsb + add di, 4Fh ; 'O' + cmp di, 7D00h + jl short loc_EDE8 + sub di, 7D00h + +loc_EDE8: ; CODE XREF: sub_ED9F+43j + loop loc_EDDA + pop di + pop si + pop bp + retn 6 +sub_ED9F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EDF0 proc near ; CODE XREF: sub_E89C+FBp + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, 0A800h + mov es, ax + mov dx, 10h + add dx, word_20344 + cmp dx, 190h + jl short loc_EE0B + sub dx, 190h + +loc_EE0B: ; CODE XREF: sub_EDF0+15j + mov ax, [bp+arg_2] + sar ax, 3 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov si, 0C92h + add si, 4 + mov cx, 4 + mov dx, 10h + mov bx, [bp+arg_0] + mov al, 0FFh + +loc_EE2E: ; CODE XREF: sub_EDF0+5Aj + mov es:[di], al + add di, 50h ; 'P' + cmp di, 7D00h + jl short loc_EE3E + sub di, 7D00h + +loc_EE3E: ; CODE XREF: sub_EDF0+48j + inc dx + cmp dx, bx + jl short loc_EE47 + mov al, [si] + inc si + dec cx + +loc_EE47: ; CODE XREF: sub_EDF0+51j + cmp cx, 0 + ja short loc_EE2E + pop di + pop si + pop bp + retn 4 +sub_EDF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EE52 proc near ; CODE XREF: sub_EE76+39p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push di + mov cx, 10h + mov di, [bp+arg_0] + mov bx, 0FFFFh + +loc_EE5F: ; CODE XREF: sub_EE52:loc_EE6Fj + mov es:[di], bx + add di, 50h ; 'P' + cmp di, 7D00h + jl short loc_EE6F + sub di, 7D00h + +loc_EE6F: ; CODE XREF: sub_EE52+17j + loop loc_EE5F + pop di + pop bp + retn 2 +sub_EE52 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EE76 proc near ; CODE XREF: sub_E5B5+32p sub_E5B5+41p ... + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ax, 0A800h + mov es, ax + mov dx, [bp+arg_2] + add dx, word_20344 + cmp dx, 190h + jl short loc_EE91 + sub dx, 190h + +loc_EE91: ; CODE XREF: sub_EE76+15j + mov ax, [bp+arg_4] + sar ax, 3 + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov al, 80h ; '€' + mov ah, [bp+arg_0] + xor si, si + +loc_EEAA: ; CODE XREF: sub_EE76+45j + test al, ah + jz short loc_EEB2 + push di + call sub_EE52 + +loc_EEB2: ; CODE XREF: sub_EE76+36j + shr al, 1 + add di, 2 + inc si + cmp si, 8 + jl short loc_EEAA + pop di + pop si + pop bp + retn 6 +sub_EE76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EEC3 proc near ; CODE XREF: sub_F1D8+125p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + mov bx, word_205F0 + mov ax, [bx] + mov word_205F8, ax + mov ax, [bp+arg_0] + add word_205F8, ax + cmp word_205F8, 10h + jge short loc_EEE5 + mov word_205F8, 10h + jmp short loc_EEF3 +; --------------------------------------------------------------------------- + +loc_EEE5: ; CODE XREF: sub_EEC3+18j + cmp word_205F8, 158h + jle short loc_EEF3 + mov word_205F8, 158h + +loc_EEF3: ; CODE XREF: sub_EEC3+20j sub_EEC3+28j + mov bx, word_205F0 + mov ax, word_205F8 + mov [bx], ax + mov bx, word_205EE + mov ax, [bx] + mov word_205F6, ax + mov ax, [bp+arg_2] + add word_205F6, ax + cmp word_205F6, 186h + jl short loc_EF1C + mov word_205F6, 186h + jmp short loc_EF29 +; --------------------------------------------------------------------------- + +loc_EF1C: ; CODE XREF: sub_EEC3+4Fj + cmp word_205F6, 1Ch + jg short loc_EF29 + mov word_205F6, 1Ch + +loc_EF29: ; CODE XREF: sub_EEC3+57j sub_EEC3+5Ej + mov bx, word_205EE + mov ax, word_205F6 + mov [bx], ax + pop bp + retn 4 +sub_EEC3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EF36 proc near ; CODE XREF: sub_BCB1:loc_BDE8p + push bp + mov bp, sp + push si + cmp byte_20606, 0 + jnz short loc_EF4F + cmp byte_20605, 0 + jz short loc_EF54 + cmp byte_1E517, 0 + jnz short loc_EF54 + +loc_EF4F: ; CODE XREF: sub_EF36+9j + mov byte_20604, 0 + +loc_EF54: ; CODE XREF: sub_EF36+10j sub_EF36+17j + cmp byte_20605, 0 + jbe short loc_EF5F + dec byte_20605 + +loc_EF5F: ; CODE XREF: sub_EF36+23j + call sub_D488 + cmp byte_20604, 0 + jz short loc_EF7F + call sub_EFF2 + cmp byte_20604, 0FFh + jnz short loc_EFEF + mov byte_20607, 1 + mov byte_20604, 0 + jmp short loc_EFEF +; --------------------------------------------------------------------------- + +loc_EF7F: ; CODE XREF: sub_EF36+31j + mov al, byte_20605 + mov ah, 0 + and ax, 3 + cmp ax, 3 + jge short loc_EFAC + mov si, word_205F8 + add si, word_20344 + cmp si, 190h + jl short loc_EF9E + sub si, 190h + +loc_EF9E: ; CODE XREF: sub_EF36+62j + push word_205F6 + push si + push word_1E512 + call sub_3146 + +loc_EFAC: ; CODE XREF: sub_EF36+54j + cmp byte_1E516, 8 + jb short loc_EFEF + mov bx, word_205F4 + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_EFC7 + sub si, 190h + +loc_EFC7: ; CODE XREF: sub_EF36+8Bj + mov bx, word_205F2 + push word ptr [bx] + push si + mov al, byte_1E51B + mov ah, 0 + push ax + call sub_3708 + mov bx, word_205F2 + mov ax, [bx] + add ax, 30h ; '0' + push ax + push si + mov al, byte_1E51B + mov ah, 0 + push ax + call sub_3708 + +loc_EFEF: ; CODE XREF: sub_EF36+3Bj sub_EF36+47j ... + pop si + pop bp + retn +sub_EF36 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EFF2 proc near ; CODE XREF: sub_EF36+33p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + cmp byte_20609, 0 + jnz short loc_F03D + push 2 + call sub_FA52 + add sp, 2 + mov byte_1E517, 1 + inc byte_20608 + nop + push cs + call near ptr sub_DCFE + inc byte_1EB0C + mov bx, word_205EE + mov ax, [bx] + add ax, 10h + push ax + mov bx, word_205F0 + mov ax, [bx] + add ax, 18h + push ax + push large 800010h + push 1 + call sub_4090 + +loc_F03D: ; CODE XREF: sub_EFF2+Cj + mov bx, word_205EE + mov ax, [bx] + mov word_205F6, ax + mov bx, word_205F0 + mov ax, [bx] + mov word_205F8, ax + inc byte_20609 + cmp byte_20609, 18h + jnb short loc_F08A + mov al, byte_20609 + mov ah, 0 + sar ax, 2 + add ax, 4 + mov [bp+var_2], ax + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_F078 + sub si, 190h + +loc_F078: ; CODE XREF: sub_EFF2+80j + mov bx, word_205EE + push word ptr [bx] + push si + push [bp+var_2] + call sub_3146 + jmp loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F08A: ; CODE XREF: sub_EFF2+66j + cmp byte_20609, 18h + jnz loc_F12A + mov byte_20605, 0DCh ; 'Ü' + cmp word_20272, 2 + jle short loc_F0A7 + mov word_20272, 0 + jmp short loc_F0B9 +; --------------------------------------------------------------------------- + +loc_F0A7: ; CODE XREF: sub_EFF2+ABj + sub word_20272, 2 + cmp word_20272, 0FFFAh + jge short loc_F0B9 + mov word_20272, 0FFFAh + +loc_F0B9: ; CODE XREF: sub_EFF2+B3j sub_EFF2+BFj + mov bx, word_205EE + mov ax, [bx] + add ax, 10h + push ax + mov bx, word_205F0 + mov ax, [bx] + add ax, 18h + push ax + push large 800020h + push 1 + call sub_4090 + cmp byte_1E59C, 0 + jnz short loc_F107 + mov byte_20609, 0 + mov byte_218A1, 1 + mov bx, word_205EE + push word ptr [bx] + mov bx, word_205F0 + push word ptr [bx] + call sub_D743 + mov byte_218A1, 0 + mov byte_20604, 0FFh + jmp loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F107: ; CODE XREF: sub_EFF2+EDj + mov al, byte_218B2 + mov ah, 0 + mov bx, ax + mov al, [bx+109Fh] + mov byte_1E516, al + call sub_DEAD + mov bx, word_205EE + push word ptr [bx] + mov bx, word_205F0 + push word ptr [bx] + call sub_D743 + jmp loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F12A: ; CODE XREF: sub_EFF2+9Dj + cmp byte_20609, 2Bh ; '+' + jnb short loc_F13B + mov bx, word_205F0 + add word ptr [bx], 4 + jmp loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F13B: ; CODE XREF: sub_EFF2+13Dj + cmp byte_20609, 2Bh ; '+' + jnz short loc_F198 + dec byte_1E59C + call sub_DF76 + les bx, dword_2026C + assume es:nothing + mov al, es:[bx+19h] + mov byte_1E59D, al + cmp byte_1E59C, 0 + jnz short loc_F160 + add al, 2 + mov byte_1E59D, al + +loc_F160: ; CODE XREF: sub_EFF2+167j + call sub_DFC4 + mov bx, word_205EE + mov ax, [bx] + add ax, 10h + push ax + mov bx, word_205F0 + mov ax, [bx] + add ax, 18h + push ax + push large 800010h + push 1 + call sub_4090 + mov ax, 0D0h ; 'Ð' + mov word_205E6, ax + mov word_205E8, ax + mov ax, 16Eh + mov word_205EA, ax + mov word_205EC, ax + jmp short loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F198: ; CODE XREF: sub_EFF2+14Ej + cmp byte_20609, 44h ; 'D' + jnb short loc_F1C6 + mov bx, word_205F0 + sub word ptr [bx], 2 + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_F1B6 + sub si, 190h + +loc_F1B6: ; CODE XREF: sub_EFF2+1BEj + mov bx, word_205EE + push word ptr [bx] + push si + push 0 + call sub_3146 + jmp short loc_F1D5 +; --------------------------------------------------------------------------- + +loc_F1C6: ; CODE XREF: sub_EFF2+1ABj + mov byte_20609, 0 + mov byte_1E517, 0 + mov byte_20604, 0 + +loc_F1D5: ; CODE XREF: sub_EFF2+95j + ; sub_EFF2+112j ... + pop si + leave + retn +sub_EFF2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F1D8 proc near ; CODE XREF: sub_BCB1:loc_BDCCp + push bp + mov bp, sp + push si + push di + cmp byte_20606, 0 + jnz short loc_F1F2 + cmp byte_20605, 0 + jz short loc_F1F7 + cmp byte_1E517, 0 + jnz short loc_F1F7 + +loc_F1F2: ; CODE XREF: sub_F1D8+Aj + mov byte_20604, 0 + +loc_F1F7: ; CODE XREF: sub_F1D8+11j sub_F1D8+18j + cmp byte_20604, 0 + jnz loc_F43E + mov ax, word_1FFA8 + and ax, 0F000h + cmp ax, 4000h + jz loc_F29E + ja short loc_F21B + cmp ax, 1000h + jz short loc_F270 + cmp ax, 2000h + jz short loc_F288 + jmp short loc_F222 +; --------------------------------------------------------------------------- + +loc_F21B: ; CODE XREF: sub_F1D8+35j + cmp ax, 8000h + jz loc_F2A4 + +loc_F222: ; CODE XREF: sub_F1D8+41j + mov bx, word_1FFA8 + and bx, 0Fh + dec bx + cmp bx, 9 + ja loc_F2B8 + add bx, bx + jmp cs:off_F443[bx] + +loc_F238: ; DATA XREF: seg001:off_F443o + mov al, byte_2060B + cbw + neg ax + mov di, ax + xor si, si + jmp short loc_F2BC +; --------------------------------------------------------------------------- + +loc_F244: ; CODE XREF: sub_F1D8+5Bj + ; DATA XREF: seg001:42E5o + mov al, byte_2060B + cbw + mov di, ax + xor si, si + jmp short loc_F2BC +; --------------------------------------------------------------------------- + +loc_F24E: ; CODE XREF: sub_F1D8+5Bj + ; DATA XREF: seg001:42E9o + mov al, byte_2060A + cbw + neg ax + mov si, ax + xor di, di + mov word_1E512, 2 + jmp short loc_F2C2 +; --------------------------------------------------------------------------- + mov al, byte_2060A + cbw + mov si, ax + xor di, di + mov word_1E512, 3 + jmp short loc_F2C2 +; --------------------------------------------------------------------------- + +loc_F270: ; CODE XREF: sub_F1D8+3Aj sub_F1D8+5Bj + ; DATA XREF: ... + mov al, byte_2060D + cbw + neg ax + +loc_F276: ; CODE XREF: sub_F1D8+CAj + mov di, ax + mov al, byte_2060C + cbw + neg ax + mov si, ax + mov word_1E512, 2 + jmp short loc_F2C2 +; --------------------------------------------------------------------------- + +loc_F288: ; CODE XREF: sub_F1D8+3Fj + mov al, byte_2060D + cbw + neg ax + mov di, ax + mov al, byte_2060C + cbw + mov si, ax + mov word_1E512, 3 + jmp short loc_F2C2 +; --------------------------------------------------------------------------- + +loc_F29E: ; CODE XREF: sub_F1D8+31j sub_F1D8+5Bj + ; DATA XREF: ... + mov al, byte_2060D + cbw + jmp short loc_F276 +; --------------------------------------------------------------------------- + +loc_F2A4: ; CODE XREF: sub_F1D8+46j + mov al, byte_2060D + cbw + mov di, ax + mov al, byte_2060C + cbw + mov si, ax + mov word_1E512, 3 + jmp short loc_F2C2 +; --------------------------------------------------------------------------- + +loc_F2B8: ; CODE XREF: sub_F1D8+55j sub_F1D8+5Bj + ; DATA XREF: ... + xor si, si + xor di, di + +loc_F2BC: ; CODE XREF: sub_F1D8+6Aj sub_F1D8+74j + mov word_1E512, 0 + +loc_F2C2: ; CODE XREF: sub_F1D8+86j sub_F1D8+96j ... + mov al, byte_2060A + cbw + cmp ax, 5 + jnz short loc_F2FB + or si, si + jge short loc_F2D8 + mov al, byte_20618 + mov ah, 0 + add si, ax + jmp short loc_F2E3 +; --------------------------------------------------------------------------- + +loc_F2D8: ; CODE XREF: sub_F1D8+F5j + or si, si + jle short loc_F2E3 + mov al, byte_20618 + mov ah, 0 + sub si, ax + +loc_F2E3: ; CODE XREF: sub_F1D8+FEj + ; sub_F1D8+102j + or di, di + jge short loc_F2F0 + mov al, byte_20618 + mov ah, 0 + add di, ax + jmp short loc_F2FB +; --------------------------------------------------------------------------- + +loc_F2F0: ; CODE XREF: sub_F1D8+10Dj + or di, di + jle short loc_F2FB + mov al, byte_20618 + mov ah, 0 + sub di, ax + +loc_F2FB: ; CODE XREF: sub_F1D8+F1j + ; sub_F1D8+116j ... + push si + push di + call sub_EEC3 + mov ax, word_205F6 + add ax, 0FFF0h + sub ax, si + mov bx, word_205F2 + mov [bx], ax + mov ax, word_205F8 + add ax, 10h + sub ax, di + mov bx, word_205F4 + mov [bx], ax + test byte ptr word_1FFA8, 10h + jz short loc_F349 + cmp byte_1EB0D, 0FFh + jnz short loc_F336 + mov byte_1EB0D, 0 + mov byte_22D4A, 0 + jmp short loc_F368 +; --------------------------------------------------------------------------- + +loc_F336: ; CODE XREF: sub_F1D8+150j + cmp byte_1EB0E, 0FFh + jnz short loc_F368 + mov byte_1EB0E, 0 + mov byte_22D4B, 0 + jmp short loc_F368 +; --------------------------------------------------------------------------- + +loc_F349: ; CODE XREF: sub_F1D8+149j + cmp byte_1EB0D, 3 + jb short loc_F35C + mov byte_1EB0D, 0FFh + mov byte_1EB0E, 4 + jmp short loc_F368 +; --------------------------------------------------------------------------- + +loc_F35C: ; CODE XREF: sub_F1D8+176j + cmp byte_1EB0E, 2 + jb short loc_F368 + mov byte_1EB0E, 0FFh + +loc_F368: ; CODE XREF: sub_F1D8+15Cj + ; sub_F1D8+163j ... + cmp byte_1EB0D, 0FFh + jz short loc_F3B3 + cmp byte_22D4A, 0 + jnz short loc_F3AF + cmp byte_218B2, 9 + jnz short loc_F38B + mov al, byte_2060E + mov byte_1E519, al + mov al, byte_2060F + mov byte_1E51A, al + jmp short loc_F395 +; --------------------------------------------------------------------------- + +loc_F38B: ; CODE XREF: sub_F1D8+1A3j + mov byte_1E519, 34h ; '4' + mov byte_1E51A, 3Fh ; '?' + +loc_F395: ; CODE XREF: sub_F1D8+1B1j + call word_20602 + push 1 + call sub_FA52 + add sp, 2 + mov byte_22D4A, 8 + inc byte_1EB0D + jmp loc_F434 +; --------------------------------------------------------------------------- + +loc_F3AF: ; CODE XREF: sub_F1D8+19Cj + dec byte_22D4A + +loc_F3B3: ; CODE XREF: sub_F1D8+195j + cmp byte_1EB0E, 2 + jnb short loc_F434 + cmp byte_22D4B, 0 + jnz short loc_F426 + cmp byte_218B2, 9 + jnz short loc_F40D + mov al, byte_2060E + mov byte_1E519, al + mov al, byte_2060F + mov byte_1E51A, al + test word_1FFA8, 0C002h + jz short loc_F3F1 + mov al, byte_20610 + add al, 5 + mov byte_20610, al + cbw + cmp ax, 1Ah + jle short loc_F417 + mov byte_20610, 1Ah + jmp short loc_F417 +; --------------------------------------------------------------------------- + +loc_F3F1: ; CODE XREF: sub_F1D8+202j + test word_1FFA8, 0F00Fh + jnz short loc_F417 + mov al, byte_20610 + add al, 0FBh ; 'û' + mov byte_20610, al + cbw + or ax, ax + jge short loc_F417 + mov byte_20610, 0 + jmp short loc_F417 +; --------------------------------------------------------------------------- + +loc_F40D: ; CODE XREF: sub_F1D8+1EEj + mov byte_1E519, 34h ; '4' + mov byte_1E51A, 3Fh ; '?' + +loc_F417: ; CODE XREF: sub_F1D8+210j + ; sub_F1D8+217j ... + call word_20602 + mov byte_22D4B, 8 + inc byte_1EB0E + jmp short loc_F434 +; --------------------------------------------------------------------------- + +loc_F426: ; CODE XREF: sub_F1D8+1E7j + push 1 + call sub_FA52 + add sp, 2 + dec byte_22D4B + +loc_F434: ; CODE XREF: sub_F1D8+1D4j + ; sub_F1D8+1E0j ... + test byte ptr word_1FFA8, 20h + jz short loc_F43E + call sub_E280 + +loc_F43E: ; CODE XREF: sub_F1D8+24j + ; sub_F1D8+261j + pop di + pop si + pop bp + retn +sub_F1D8 endp + +; --------------------------------------------------------------------------- + db 0 +off_F443 dw offset loc_F238 ; DATA XREF: sub_F1D8+5Br + dw offset loc_F244 + dw offset loc_F2B8 + dw offset loc_F24E + dw offset loc_F270 + dw offset loc_F29E +byte_F44F db 58h, 41h, 0, 41h, 28h, 41h, 44h, 41h, 0 +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_F458 proc far ; CODE XREF: _main+15P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov ax, [bp+arg_0] + int 59h ; GSS Computer Graphics Interface (GSS*CGI) + ; DS:DX -> block of 5 array pointers + ; Return: CF set on error, AX = error code + ; CF clear if successful, AX = return code + pop bp + retf 2 +sub_F458 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F464 proc far ; CODE XREF: sub_F4BC+4p sub_F4BC+Cp + push bp + mov bp, sp + push si + mov al, byte_1E300 + cbw + push ax + call sub_1EE4 + mov si, ax + mov al, byte_1E301 + cbw + push ax + call sub_1EE4 + or si, ax + mov al, byte_1E302 + cbw + push ax + call sub_1EE4 + or si, ax + push 2 + nop + push cs + call near ptr sub_F618 + mov al, byte_1E300 + cbw + push ax + call sub_1EE4 + or si, ax + mov al, byte_1E301 + cbw + push ax + call sub_1EE4 + or si, ax + mov al, byte_1E302 + cbw + push ax + call sub_1EE4 + or si, ax + mov ax, si + pop si + pop bp + retf +sub_F464 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F4BC proc far ; CODE XREF: sub_FC53+1B7P + ; sub_FE12+177P ... + push bp + mov bp, sp + +loc_F4BF: ; CODE XREF: sub_F4BC+9j + push cs + call near ptr sub_F464 + or ax, ax + jnz short loc_F4BF + +loc_F4C7: ; CODE XREF: sub_F4BC+11j + push cs + call near ptr sub_F464 + or ax, ax + jz short loc_F4C7 + pop bp + retf +sub_F4BC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F4D1 proc far ; CODE XREF: sub_B3DA+197P + ; sub_B3DA+52BP + +var_2 = word ptr -2 +arg_0 = dword ptr 6 + + enter 2, 0 + mov byte_1E30C, 0 + push large [bp+arg_0] + nop + push cs + call near ptr sub_F886 + mov [bp+var_2], ax + mov byte_1E30C, 1 + leave + retf 4 +sub_F4D1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F4EF proc far ; CODE XREF: sub_B3DA+522P + ; sub_C566+14P ... + push bp + mov bp, sp + cmp dword_1FFBC, 0 + jz short loc_F503 + push word ptr dword_1FFBC+2 + call sub_2A84 + +loc_F503: ; CODE XREF: sub_F4EF+9j + mov dword_1FFBC, 0 + pop bp + retf +sub_F4EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F50E proc far ; CODE XREF: sub_F913+16p + push bp + mov bp, sp + mov dword_1FD4C, 0A8000000h + mov dword_1FD50, 0B0000000h + mov dword_1FD54, 0B8000000h + mov dword_1FD58, 0E0000000h + pop bp + retf +sub_F50E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F537 proc far ; CODE XREF: sub_B2AB+1BP sub_E178+4AP ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + enter 2, 0 + push si + mov si, [bp+arg_0] + push large [bp+arg_2] + mov ax, si + imul ax, 48h + add ax, 2304h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 22ECh + push ds + push ax + call sub_1718 + mov [bp+var_2], ax + pop si + leave + retf +sub_F537 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F562 proc far ; CODE XREF: sub_103B3+2E5P + ; sub_10865+F7P ... + +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 cl, [bp+arg_2] + mov si, [bp+arg_0] + movsx eax, si + mov dl, cl + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_8] + mov es:[bx], ax + movsx eax, si + mov dl, cl + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_4] + mov es:[bx], ax + pop si + pop bp + retf 0Ch +sub_F562 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F5B1 proc far ; CODE XREF: sub_103B3+2CAP + ; sub_1099B+B4P ... + +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_1E78 + add al, [bp+arg_A] + mov [bp+arg_A], al + movsx eax, si + mov dl, [bp+arg_A] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_6] + mov es:[bx], ax + movsx eax, si + mov dl, [bp+arg_A] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_2] + mov es:[bx], ax + pop si + pop bp + retf 14h +sub_F5B1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F618 proc far ; CODE XREF: sub_B9E2+2C4P + ; sub_C31F+C0P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_1F538, 0 + +loc_F621: ; CODE XREF: sub_F618+Fj + mov ax, word_1F538 + cmp ax, [bp+arg_0] + jb short loc_F621 + pop bp + retf 2 +sub_F618 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_F62E proc far ; CODE XREF: sub_B9E2+63P + ; sub_BCB1+106P ... + mov word_1FFA8, 0 + mov al, 7 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov bh, ah + mov al, 8 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 4 + jnz short loc_F64C + test ah, 8 + jz short loc_F651 + +loc_F64C: ; CODE XREF: sub_F62E+17j + or word_1FFA8, 1 + +loc_F651: ; CODE XREF: sub_F62E+1Cj + test bh, 8 + jnz short loc_F65B + test ah, 40h + jz short loc_F660 + +loc_F65B: ; CODE XREF: sub_F62E+26j + or word_1FFA8, 4 + +loc_F660: ; CODE XREF: sub_F62E+2Bj + test ah, 4 + jz short loc_F66B + or word_1FFA8, 1000h + +loc_F66B: ; CODE XREF: sub_F62E+35j + test ah, 10h + jz short loc_F676 + or word_1FFA8, 2000h + +loc_F676: ; CODE XREF: sub_F62E+40j + mov al, 9 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 20h + jnz short loc_F686 + test ah, 8 + jz short loc_F68B + +loc_F686: ; CODE XREF: sub_F62E+51j + or word_1FFA8, 2 + +loc_F68B: ; CODE XREF: sub_F62E+56j + test bh, 10h + jnz short loc_F695 + test ah, 1 + jz short loc_F69A + +loc_F695: ; CODE XREF: sub_F62E+60j + or word_1FFA8, 8 + +loc_F69A: ; CODE XREF: sub_F62E+65j + test ah, 4 + jz short loc_F6A5 + or word_1FFA8, 4000h + +loc_F6A5: ; CODE XREF: sub_F62E+6Fj + test ah, 10h + jz short loc_F6B0 + or word_1FFA8, 8000h + +loc_F6B0: ; CODE XREF: sub_F62E+7Aj + mov al, 5 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 2 + jz short loc_F6C0 + or word_1FFA8, 10h + +loc_F6C0: ; CODE XREF: sub_F62E+8Bj + test ah, 4 + jz short loc_F6CA + or word_1FFA8, 20h + +loc_F6CA: ; CODE XREF: sub_F62E+95j + mov al, 0 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_F6DA + or word_1FFA8, 40h + +loc_F6DA: ; CODE XREF: sub_F62E+A5j + mov al, 3 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short loc_F6EB + or word_1FFA8, 80h + +loc_F6EB: ; CODE XREF: sub_F62E+B5j + mov al, 2 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_F6FC + or word_1FFA8, 100h + +loc_F6FC: ; CODE XREF: sub_F62E+C6j + mov al, 6 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short locret_F70C + or word_1FFA8, 10h + +locret_F70C: ; CODE XREF: sub_F62E+D7j + retf +sub_F62E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F70E proc far ; CODE XREF: sub_C566+30P + push bp + mov bp, sp + call sub_3A6C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + 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_27EE + call sub_2B2C + call sub_2628 + call sub_784 + pop bp + retf +sub_F70E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_F74C proc far ; CODE XREF: _main+46P + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_182+2 + assume es:nothing + cmp byte ptr es:[bx+2], 4Dh ; 'M' + jnz short loc_F77D + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_F77D + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_F77D + mov byte_1FFAC, 61h ; 'a' + mov byte_1FFAB, 1 + mov byte_1FFAD, 1 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_F77D: ; CODE XREF: sub_F74C+Ej sub_F74C+15j ... + mov byte_1FFAD, 0 + xor ax, ax + retf +sub_F74C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F786 proc far ; CODE XREF: _main:loc_B1B5P + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_F798 + inc bx + mov byte_1FFAA, 1 + jmp short loc_F79C +; --------------------------------------------------------------------------- + +loc_F798: ; CODE XREF: sub_F786+8j + mov bl, byte_1FFAB + +loc_F79C: ; CODE XREF: sub_F786+10j + mov byte_1E30A, bl + mov ax, bx + retf +sub_F786 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F7A4 proc far ; CODE XREF: _main+2AP _main+41P + mov byte_1FFAC, 60h ; '`' + mov byte_1FFAB, 0 + mov byte_1FFAA, 0 + mov byte_1FFAD, 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_F7DA + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_F7DA + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_F7DA + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_F7DA: ; CODE XREF: sub_F7A4+22j sub_F7A4+29j ... + xor ax, ax + retf +sub_F7A4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F7DE proc far ; CODE XREF: sub_B3DA+4C3P + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + +loc_F7E1: ; CODE XREF: sub_F7DE+17j + mov ah, 8 + cmp byte_1FFAB, 1 + jz short loc_F7EE + int 60h + jmp short loc_F7F0 +; --------------------------------------------------------------------------- + +loc_F7EE: ; CODE XREF: sub_F7DE+Aj + int 61h ; reserved for user interrupt + +loc_F7F0: ; CODE XREF: sub_F7DE+Ej + cmp al, [bp+arg_0] + jz short loc_F7F7 + jmp short loc_F7E1 +; --------------------------------------------------------------------------- + +loc_F7F7: ; CODE XREF: sub_F7DE+15j + pop bp + retf +sub_F7DE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F7FA proc far ; CODE XREF: sub_B2AB+BP sub_13ABB+12P + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push ds + mov cx, 0Dh + xor si, si + +loc_F804: ; CODE XREF: sub_F7FA+17j + les bx, [bp+arg_0] + add bx, si + mov al, es:[bx] + mov [si+253Eh], al + inc si + loop loc_F804 + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_F83B + cmp byte_1FFAB, 0 + jz short loc_F83B + xor bx, bx + +loc_F824: ; CODE XREF: sub_F7FA+30j + inc bx + cmp byte ptr [bx+253Eh], 0 + jnz short loc_F824 + mov byte ptr [bx+253Eh], 6Dh ; 'm' + mov byte ptr [bx+253Fh], 64h ; 'd' + mov byte ptr [bx+2540h], 0 + +loc_F83B: ; CODE XREF: sub_F7FA+1Fj sub_F7FA+26j + mov dx, 253Eh + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + mov bx, ax + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_F858 + cmp byte_1FFAB, 0 + jz short loc_F858 + int 61h ; reserved for user interrupt + jmp short loc_F85A +; --------------------------------------------------------------------------- + +loc_F858: ; CODE XREF: sub_F7FA+51j sub_F7FA+58j + int 60h + +loc_F85A: ; CODE XREF: sub_F7FA+5Cj + mov ax, 3F00h + mov cx, 5000h + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop si + pop bp + retf +sub_F7FA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F86A proc far ; CODE XREF: sub_F886+32p + push bp + mov bp, sp + push 30h ; '0' ; n + push ds + push offset unk_1FFC0 ; src + push ds + push offset byte_1F508 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1EF6 + pop bp + retf +sub_F86A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F886 proc far ; CODE XREF: sub_F4D1+Fp + +var_6 = byte ptr -6 +var_2 = byte ptr -2 +arg_0 = dword ptr 6 + + enter 6, 0 + push large [bp+arg_0] + call sub_950 + push ss + lea ax, [bp+var_6] + push ax + push 6 + call sub_89C + mov al, [bp+var_2] + mov byte_1E30D, al + push ds + push offset unk_1FFC0 + push 30h ; '0' + call sub_89C + cmp byte_1E30C, 0 + jz short loc_F8BB + push cs + call near ptr sub_F86A + +loc_F8BB: ; CODE XREF: sub_F886+2Fj + cmp dword_1FFBC, 0 + jz short loc_F8C8 + nop + push cs + call near ptr sub_F4EF + +loc_F8C8: ; CODE XREF: sub_F886+3Bj + mov al, byte_1E30D + mov ah, 0 + inc ax + shl ax, 7 + push ax + call sub_2980 + mov word ptr dword_1FFBC+2, ax + mov word ptr dword_1FFBC, 0 + cmp dword_1FFBC, 0 + jnz short loc_F8F4 + call sub_870 + mov ax, 0FFFFh + leave + retf 4 +; --------------------------------------------------------------------------- + +loc_F8F4: ; CODE XREF: sub_F886+60j + push large [dword_1FFBC] + mov al, byte_1E30D + mov ah, 0 + inc ax + shl ax, 7 + push ax + call sub_89C + call sub_870 + xor ax, ax + leave + retf 4 +sub_F886 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F913 proc far ; CODE XREF: _main+AP + push bp + mov bp, sp + push 4650h + call sub_2910 + or ax, ax + jz short loc_F927 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_F927: ; CODE XREF: sub_F913+Dj + nop + push cs + call near ptr sub_F50E + call sub_2740 + call sub_784 + call sub_158C + mov byte_1DFD6, 12h + push ds + push offset aUmx ; "“Œ•û••–‚.˜^" + call sub_3A0C + xor ax, ax + pop bp + retf +sub_F913 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F94D proc far ; CODE XREF: sub_B3DA+43P sub_B3DA+4AP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push 30h ; '0' ; n + push ds + mov ax, [bp+arg_0] + imul ax, 48h + add ax, 231Ch + push ax ; src + push ds + push offset byte_1F508 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1EF6 + pop bp + retf +sub_F94D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F970 proc far ; CODE XREF: sub_B3DA+57P + ; sub_E618+180P ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 6, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_4] + mov bx, di + shl bx, 2 + mov ax, [bx+22EEh] + mov dx, [bx+22ECh] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_F9E4 +; --------------------------------------------------------------------------- + +loc_F996: ; CODE XREF: sub_F970+80j + push [bp+arg_0] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+2318h] + call sub_1D06 + inc si + cmp si, 190h + jl short loc_F9B7 + sub si, 190h + +loc_F9B7: ; CODE XREF: sub_F970+41j + mov bx, di + imul bx, 48h + mov ax, [bx+2318h] + shr ax, 1 + add word ptr [bp+var_4], ax + mov eax, [bp+var_4] + shr eax, 10h + mov dx, word ptr [bp+var_4] + shr dx, 4 + add ax, dx + mov dx, word ptr [bp+var_4] + and dx, 0Fh + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + inc [bp+var_6] + +loc_F9E4: ; CODE XREF: sub_F970+24j + mov bx, di + imul bx, 48h + mov ax, [bx+231Ah] + cmp ax, [bp+var_6] + ja short loc_F996 + pop di + pop si + leave + retf +sub_F970 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F9F6 proc far ; CODE XREF: _main+F6P sub_13439+BP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_1E30A, 0 + jz short loc_FA10 + mov ax, [bp+arg_0] + cmp byte_1FFAB, 1 + jz short loc_FA0E + int 60h + jmp short loc_FA10 +; --------------------------------------------------------------------------- + +loc_FA0E: ; CODE XREF: sub_F9F6+12j + int 61h ; reserved for user interrupt + +loc_FA10: ; CODE XREF: sub_F9F6+8j sub_F9F6+16j + pop bp + retf +sub_F9F6 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + cmp byte_1E30A, 0 + jnz short loc_FA25 + push 64h ; 'd' + nop + push cs + call near ptr sub_F618 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_FA25: ; CODE XREF: seg002:05CAj seg002:05F1j + push 1 + nop + push cs + call near ptr sub_F618 + mov ah, 5 + cmp byte_1FFAB, 1 + jz short loc_FA39 + int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE + ; BX = handle + ; Return: CF set on error, DH = error code + ; CF clear if successful + jmp short loc_FA3E +; --------------------------------------------------------------------------- + +loc_FA39: ; CODE XREF: seg002:05E3j + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_FA3E: ; CODE XREF: seg002:05E7j + cmp ax, [bp+6] + jb short loc_FA25 + pop bp + retf +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_FA46 proc far ; CODE XREF: sub_B3DA+76P sub_C1E4+39P ... + mov byte_1E35D, 0 + mov byte_1E31A, 0FFh + retf +sub_FA46 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FA52 proc far ; CODE XREF: sub_D906+1A8P + ; sub_D906+1B8P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov dx, [bp+arg_0] + cmp byte_1FFAA, 0 + jz short loc_FA88 + cmp byte_1E31A, 0FFh + jnz short loc_FA6C + mov byte_1E31A, dl + pop bp + retf +; --------------------------------------------------------------------------- + +loc_FA6C: ; CODE XREF: sub_FA52+12j + mov al, byte_1E31A + mov ah, 0 + mov bx, ax + mov al, [bx+8ABh] + mov bx, dx + cmp al, [bx+8ABh] + ja short loc_FA88 + mov byte_1E31A, dl + mov byte_1E35D, 0 + +loc_FA88: ; CODE XREF: sub_FA52+Bj sub_FA52+2Bj + pop bp + retf +sub_FA52 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_FA8A proc far ; CODE XREF: sub_BCB1:loc_BCC3P + ; sub_FC53+1ACP ... + cmp byte_1FFAA, 0 + jz short locret_FAC5 + cmp byte_1E31A, 0FFh + jz short locret_FAC5 + cmp byte_1E35D, 0 + jnz short loc_FAA6 + mov ah, 0Ch + mov al, byte_1E31A + 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_FAA6: ; CODE XREF: sub_FA8A+13j + inc byte_1E35D + mov al, byte_1E31A + mov ah, 0 + mov bx, ax + mov al, [bx+8CCh] + cmp al, byte_1E35D + jnb short locret_FAC5 + mov byte_1E35D, 0 + mov byte_1E31A, 0FFh + +locret_FAC5: ; CODE XREF: sub_FA8A+5j sub_FA8A+Cj ... + retf +sub_FA8A endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 6 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + + +sub_FAC6 proc near ; CODE XREF: sub_103B3:loc_10618p + ; sub_103B3:loc_10625p ... + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov al, [bx+26FAh] + retn +sub_FAC6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FAD5 proc near ; CODE XREF: sub_103B3+293p + ; sub_11877+10Fp ... + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov al, [bx+26FAh] + and al, [bp+arg_0] + pop bp + retn 2 +sub_FAD5 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_FAED proc near ; CODE XREF: sub_13671+E7p + ; sub_1403E+61p ... + mov bl, byte_2026A + inc byte_2026A + mov bh, 0 + mov ax, [bx+26FAh] + retn +sub_FAED endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FAFC proc near ; CODE XREF: sub_10BC6+148p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ax, [bp+arg_2] + sar ax, 3 + mov dx, [bp+arg_0] + shl dx, 6 + add ax, dx + shr dx, 2 + add ax, dx + mov di, ax + mov ax, [bp+arg_2] + and ax, 7 + shl ax, 4 + add ax, 900h + mov si, ax + mov cx, 8 + +loc_FB2C: ; CODE XREF: sub_FAFC:loc_FB3Aj + movsw + add di, 4Eh ; 'N' + cmp di, 7D00h + jl short loc_FB3A + sub di, 7D00h + +loc_FB3A: ; CODE XREF: sub_FAFC+38j + loop loc_FB2C + pop di + pop si + pop bp + retn 4 +sub_FAFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FB42 proc near ; CODE XREF: sub_FC15+25p + ; sub_FC53+129p ... + +var_B = byte ptr -0Bh +var_A = dword ptr -0Ah +var_6 = dword ptr -6 +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 + + enter 0Ch, 0 + push si + push di + mov di, [bp+arg_4] + mov [bp+var_2], 0A0h ; ' ' + mov [bp+var_6], 989680h + mov [bp+var_B], 0 + mov si, 8 + jmp short loc_FB75 +; --------------------------------------------------------------------------- + +loc_FB61: ; CODE XREF: sub_FB42+35j + mov ebx, 0Ah + mov eax, [bp+var_6] + cdq + idiv ebx + mov [bp+var_6], eax + dec si + +loc_FB75: ; CODE XREF: sub_FB42+1Dj + cmp si, di + jg short loc_FB61 + xor si, si + jmp short loc_FBDF +; --------------------------------------------------------------------------- + +loc_FB7D: ; CODE XREF: sub_FB42+9Fj + mov eax, [bp+arg_0] + cdq + idiv [bp+var_6] + mov ebx, 0Ah + cdq + idiv ebx + mov [bp+var_A], edx + mov eax, [bp+var_6] + cdq + idiv ebx + mov [bp+var_6], eax + mov ax, word ptr [bp+var_A] + add ax, 0A0h ; ' ' + mov [bp+var_2], ax + cmp [bp+var_A], 0 + jz short loc_FBB7 + mov [bp+var_B], 1 + +loc_FBB7: ; CODE XREF: sub_FB42+6Fj + lea ax, [di-1] + cmp ax, si + jnz short loc_FBC2 + mov [bp+var_B], 1 + +loc_FBC2: ; CODE XREF: sub_FB42+7Aj + cmp [bp+var_B], 0 + jz short loc_FBDE + mov ax, si + add ax, ax + add ax, [bp+arg_8] + push ax + push [bp+arg_6] + push [bp+var_2] + push 0E1h ; 'á' + call sub_1416 + +loc_FBDE: ; CODE XREF: sub_FB42+84j + inc si + +loc_FBDF: ; CODE XREF: sub_FB42+39j + cmp si, di + jl short loc_FB7D + pop di + pop si + leave + retn 0Ah +sub_FB42 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FBE9 proc far ; CODE XREF: sub_B3DA+3CP sub_C31F+E8P ... + push bp + mov bp, sp + push si + push di + mov si, 1 + jmp short loc_FC0C +; --------------------------------------------------------------------------- + +loc_FBF3: ; CODE XREF: sub_FBE9+26j + mov di, 4 + jmp short loc_FC06 +; --------------------------------------------------------------------------- + +loc_FBF8: ; CODE XREF: sub_FBE9+20j + push di + push si + push large 2000E1h + call sub_2672 + inc di + +loc_FC06: ; CODE XREF: sub_FBE9+Dj + cmp di, 34h ; '4' + jl short loc_FBF8 + inc si + +loc_FC0C: ; CODE XREF: sub_FBE9+8j + cmp si, 18h + jl short loc_FBF3 + pop di + pop si + pop bp + retf +sub_FBE9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FC15 proc near ; CODE XREF: sub_FC53+51p sub_FC53+6Ap ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = dword ptr 0Ah +arg_A = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_A] + mov si, [bp+arg_0] + push 8 + push di + push large [bp+arg_6] + push 0E1h ; 'á' + call sub_26CA + push 16h + push di + push 5 + movsx eax, si + push eax + call sub_FB42 + mov bx, 0Ah + mov ax, si + cwd + idiv bx + mov si, ax + les bx, [bp+arg_2] + assume es:nothing + add es:[bx], si + pop di + pop si + pop bp + retn 0Ch +sub_FC15 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FC53 proc near ; CODE XREF: sub_1273B+Bp sub_13B8B+Bp ... + +var_C = byte ptr -0Ch +var_6 = word ptr -6 +var_4 = dword ptr -4 + + enter 0Ch, 0 + push si + mov [bp+var_6], 0 + lea ax, [bp+var_C] + push ss + push ax + push ds + push offset asc_1E3F0 ; "«¸¶¾¼" + mov cx, 6 + call SCOPY@ + push cs + call near ptr sub_FBE9 + mov word_1DF9A, 3Eh ; '>' + call far ptr loc_1EF6 + push large 180004h + push ss + lea ax, [bp+var_C] + push ax + push 0E1h ; 'á' + call sub_145A + push 6 + push ds + push offset aUqiUx ; " “ïˆÕ“x" + push ss + lea ax, [bp+var_6] + push ax + mov al, byte_1E364 + cbw + imul ax, 7D0h + push ax + call sub_FC15 + push 8 + push ds + push offset aGxgebGw ; "ƒXƒe[ƒW" + push ss + lea ax, [bp+var_6] + push ax + mov ax, word_20272 + add ax, 10h + imul ax, 0C8h + push ax + call sub_FC15 + mov al, byte_218C2 + mov ah, 0 + imul ax, 1F4h + mov dx, 9C4h + sub dx, ax + mov si, dx + or si, si + jge short loc_FCD6 + xor si, si + +loc_FCD6: ; CODE XREF: sub_FC53+7Fj + push 0Ah + push ds + push offset aGGa ; "ƒ{ƒ€" + push ss + lea ax, [bp+var_6] + push ax + push si + call sub_FC15 + mov al, byte_20608 + mov ah, 0 + imul ax, 3E8h + mov dx, 0BB8h + sub dx, ax + mov si, dx + or si, si + jge short loc_FCFB + xor si, si + +loc_FCFB: ; CODE XREF: sub_FC53+A4j + push 0Ch + push ds + push offset aGGx ; "ƒ~ƒX" + push ss + lea ax, [bp+var_6] + push ax + push si + call sub_FC15 + push 0Eh + push ds + push offset aSMvpik ; "èËŒ‚‰Šú”" + push ss + lea ax, [bp+var_6] + push ax + les bx, dword_2026C + mov al, es:[bx+19h] + mov ah, 0 + mov dx, 4 + sub dx, ax + imul dx, 320h + push dx + call sub_FC15 + push 10h + push ds + push offset aSCPik ; "èË–²‰Šú”" + push ss + lea ax, [bp+var_6] + push ax + les bx, dword_2026C + mov al, es:[bx+1Ah] + mov ah, 0 + mov dx, 4 + sub dx, ax + imul dx, 3E8h + push dx + call sub_FC15 + cmp [bp+var_6], 6400h + jle short loc_FD5A + mov [bp+var_6], 6400h + +loc_FD5A: ; CODE XREF: sub_FC53+100j + push large 60012h + push ds + push offset aU_ ; "“_" + push 0E1h ; 'á' + call sub_26CA + push large 0A0012h + push 3 + movsx eax, word_2189E + push eax + call sub_FB42 + push large 120012h + push ds + push offset aB ; "~" + push 0E1h ; 'á' + call sub_26CA + movsx eax, [bp+var_6] + mov [bp+var_4], eax + imul eax, 0Ah + mov [bp+var_4], eax + push large 160012h + push 5 + push eax + call sub_FB42 + push large 220012h + push ds + push offset aBb ; "" + push 0E1h ; 'á' + call sub_26CA + movsx eax, word_2189E + imul eax, [bp+var_4] + mov [bp+var_4], eax + push large 260012h + push 6 + push eax + call sub_FB42 + mov ebx, 0Ah + mov eax, [bp+var_4] + cdq + idiv ebx + mov [bp+var_4], eax + add dword_218AC, eax + call sub_FA46 + call sub_DE4E + call sub_FA8A + mov word_1FFA8, 1 + call sub_F4BC + pop si + leave + retn +sub_FC53 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FE12 proc near ; CODE XREF: sub_16A21+Bp + +var_C = byte ptr -0Ch +var_6 = word ptr -6 +var_4 = dword ptr -4 + + enter 0Ch, 0 + push si + mov [bp+var_6], 0 + lea ax, [bp+var_C] + push ss + push ax + push ds + push offset asc_1E3F6 ; "«¸¶¾¼" + mov cx, 6 + call SCOPY@ + push cs + call near ptr sub_FBE9 + mov word_1DF9A, 3Eh ; '>' + call far ptr loc_1EF6 + push large 180004h + push ss + lea ax, [bp+var_C] + push ax + push 0E1h ; 'á' + call sub_145A + push 6 + push ds + push offset aGngkga ; "ƒNƒŠƒA" + push ss + lea ax, [bp+var_6] + push ax + push 2710h + call sub_FC15 + mov al, byte_20608 + mov ah, 0 + imul ax, 0FA0h + mov dx, 4E20h + sub dx, ax + mov si, dx + or si, si + jge short loc_FE76 + xor si, si + +loc_FE76: ; CODE XREF: sub_FE12+60j + push 8 + push ds + push offset aGGxi ; "ƒ~ƒX‰ñ”" + push ss + lea ax, [bp+var_6] + push ax + push si + call sub_FC15 + mov al, byte_218C2 + mov ah, 0 + imul ax, 0FA0h + mov dx, 4E20h + sub dx, ax + mov si, dx + or si, si + jge short loc_FE9B + xor si, si + +loc_FE9B: ; CODE XREF: sub_FE12+85j + push 0Ah + push ds + push offset aGGai ; "ƒ{ƒ€‰ñ”" + push ss + lea ax, [bp+var_6] + push ax + push si + call sub_FC15 + mov ax, 4E20h + sub ax, word ptr dword_20682 + mov si, ax + or si, si + jge short loc_FEB9 + xor si, si + +loc_FEB9: ; CODE XREF: sub_FE12+A3j + mov bx, 0Ah + mov ax, si + cwd + idiv bx + mov si, ax + mov ax, 0Ah + imul si + mov si, ax + push 0Ch + push ds + push offset aGngkgagGcga ; "ƒNƒŠƒAƒ^ƒCƒ€" + push ss + lea ax, [bp+var_6] + push ax + push si + call sub_FC15 + push large 60012h + push ds + push offset aU_ ; "“_" + push 0E1h ; 'á' + call sub_26CA + push large 0A0012h + push 3 + movsx eax, word_2189E + push eax + call sub_FB42 + push large 120012h + push ds + push offset aB ; "~" + push 0E1h ; 'á' + call sub_26CA + movsx eax, [bp+var_6] + mov [bp+var_4], eax + imul eax, 0Ah + mov [bp+var_4], eax + push large 160012h + push 5 + push eax + call sub_FB42 + push large 220012h + push ds + push offset aBb ; "" + push 0E1h ; 'á' + call sub_26CA + movsx eax, word_2189E + imul eax, [bp+var_4] + mov [bp+var_4], eax + push large 240012h + push 7 + push eax + call sub_FB42 + mov ebx, 0Ah + mov eax, [bp+var_4] + cdq + idiv ebx + mov [bp+var_4], eax + add dword_218AC, eax + call sub_FA46 + call sub_DE4E + call sub_FA8A + mov word_1FFA8, 1 + call sub_F4BC + pop si + leave + retn +sub_FE12 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FF91 proc near ; CODE XREF: sub_FFF8+14p + push bp + mov bp, sp + push large 0C00000h + call sub_127E + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + push large 20000h + push large 3018Fh + call sub_B88 + push large 340000h + push large 35018Fh + call sub_B88 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + push large 20000h + push large 3018Fh + call sub_B88 + push large 340000h + push large 35018Fh + call sub_B88 + call sub_12A8 + pop bp + retn +sub_FF91 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FFF8 proc near ; CODE XREF: sub_11766+6Bp + ; sub_11766+8Ap ... + +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 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 0Ah, 0 + push si + push di + cmp [bp+arg_0], 0 + jl loc_10286 + cmp [bp+arg_0], 0 + jnz short loc_1000F + call sub_FF91 + +loc_1000F: ; CODE XREF: sub_FFF8+12j + cmp [bp+arg_0], 20h ; ' ' + jge loc_100A0 + cmp [bp+arg_0], 1 + jnz short loc_10025 + push 12h + call sub_FA52 + pop cx + +loc_10025: ; CODE XREF: sub_FFF8+23j + add [bp+arg_4], 7 + cmp [bp+arg_0], 2 + jl short loc_1005C + call sub_43B0 + sub [bp+arg_0], 2 + mov ax, [bp+arg_0] + shl ax, 3 + mov dx, 0F0h ; 'ð' + sub dx, ax + mov si, dx + push [bp+arg_4] + push [bp+arg_2] + push dx + push 2 + call sub_1C341 + add [bp+arg_0], 2 + call sub_764 + +loc_1005C: ; CODE XREF: sub_FFF8+35j + cmp [bp+arg_0], 1Eh + jge loc_10286 + mov ax, [bp+arg_0] + and ax, 1 + imul ax, 0Bh + add al, 4 + mov [bp+var_A], al + push 0C0h ; 'À' + mov ah, 0 + push ax + call sub_127E + mov ax, [bp+arg_0] + shl ax, 3 + mov dx, 0F0h ; 'ð' + sub dx, ax + mov si, dx + push [bp+arg_4] + push [bp+arg_2] + push dx + push 2 + call sub_1C287 + call sub_12A8 + jmp loc_10286 +; --------------------------------------------------------------------------- + +loc_100A0: ; CODE XREF: sub_FFF8+1Bj + sub [bp+arg_0], 20h ; ' ' + cmp [bp+arg_0], 1Ah + jge loc_10286 + cmp [bp+arg_0], 0 + jnz short loc_100BA + push 0Eh + call sub_FA52 + pop cx + +loc_100BA: ; CODE XREF: sub_FFF8+B8j + cmp [bp+arg_0], 2 + jl loc_10171 + sub [bp+arg_0], 2 + mov ax, [bp+arg_0] + shl ax, 4 + mov si, ax + call sub_43B0 + mov [bp+var_8], 0 + jmp loc_1015A +; --------------------------------------------------------------------------- + +loc_100DB: ; CODE XREF: sub_FFF8+167j + mov al, byte ptr [bp+var_8] + add al, byte ptr [bp+arg_0] + mov [bp+var_9], al + movsx eax, si + mov dl, [bp+var_9] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_4] + mov di, ax + movsx eax, si + mov dl, [bp+var_9] + mov dh, 0 + mov bl, byte_1E510 + mov bh, 0 + add dx, bx + and dx, 0FFh + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_2] + mov [bp+var_2], ax + cmp di, 10h + jl short loc_10156 + cmp di, 1A0h + jge short loc_10156 + cmp [bp+var_2], 0 + jle short loc_10156 + cmp [bp+var_2], 180h + jge short loc_10156 + push di + push ax + push large 100010h + call sub_45FC + +loc_10156: ; CODE XREF: sub_FFF8+13Cj + ; sub_FFF8+142j ... + add [bp+var_8], 4 + +loc_1015A: ; CODE XREF: sub_FFF8+E0j + cmp [bp+var_8], 100h + jl loc_100DB + add [bp+arg_0], 2 + call sub_4692 + call sub_764 + +loc_10171: ; CODE XREF: sub_FFF8+C6j + mov byte_2066D, 1 + cmp [bp+arg_0], 18h + jge loc_10286 + mov ax, [bp+arg_0] + mov bx, 6 + cwd + idiv bx + add ax, 58h ; 'X' + mov [bp+var_4], ax + mov ax, [bp+arg_0] + shl ax, 4 + mov si, ax + mov [bp+var_8], 0 + jmp loc_10230 +; --------------------------------------------------------------------------- + +loc_1019D: ; CODE XREF: sub_FFF8+23Dj + mov al, byte ptr [bp+var_8] + add al, byte ptr [bp+arg_0] + mov [bp+var_9], al + movsx eax, si + mov dl, [bp+var_9] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_4] + mov di, ax + movsx eax, si + mov dl, [bp+var_9] + mov dh, 0 + mov bl, byte_1E510 + mov bh, 0 + add dx, bx + and dx, 0FFh + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_2] + mov [bp+var_2], ax + mov [bp+var_6], ax + mov ax, word_20344 + add [bp+var_6], ax + cmp [bp+var_6], 190h + jl short loc_10208 + sub [bp+var_6], 190h + +loc_10208: ; CODE XREF: sub_FFF8+209j + cmp di, 10h + jle short loc_1022C + cmp di, 1A0h + jge short loc_1022C + cmp [bp+var_2], 0 + jle short loc_1022C + cmp [bp+var_2], 180h + jge short loc_1022C + push di + push [bp+var_6] + push [bp+var_4] + call sub_3708 + +loc_1022C: ; CODE XREF: sub_FFF8+213j + ; sub_FFF8+219j ... + add [bp+var_8], 4 + +loc_10230: ; CODE XREF: sub_FFF8+1A2j + cmp [bp+var_8], 100h + jl loc_1019D + mov byte_2066D, 2 + cmp [bp+arg_0], 8 + jg short loc_10258 + mov ax, [bp+arg_0] + and ax, 1 + imul ax, 46h + add ax, 64h ; 'd' + mov word_1DF9A, ax + call far ptr loc_1EF6 + +loc_10258: ; CODE XREF: sub_FFF8+24Aj + cmp [bp+arg_0], 14h + jg short loc_10286 + mov ax, [bp+arg_0] + and ax, 1 + mov [bp+var_8], ax + mov ax, 190h + sub ax, word_20344 + push ax + mov ax, word_20344 + imul ax, 28h + add ax, [bp+var_8] + push ax + push [bp+var_8] + call sub_1E2C + mov byte_2066D, 3 + +loc_10286: ; CODE XREF: sub_FFF8+Aj sub_FFF8+68j ... + pop di + pop si + leave + retn 6 +sub_FFF8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1028C proc far ; CODE XREF: sub_B3DA+7BP + push bp + mov bp, sp + push si + xor si, si + jmp short loc_102A9 +; --------------------------------------------------------------------------- + +loc_10294: ; CODE XREF: sub_1028C+20j + mov bx, si + add bx, bx + mov word ptr [bx+2BD4h], 0 + mov byte ptr [si+2BF0h], 0 + mov byte ptr [si+2BF5h], 0 + inc si + +loc_102A9: ; CODE XREF: sub_1028C+6j + cmp si, 5 + jl short loc_10294 + mov word_20650, 0 + mov byte_2066A, 0 + mov word_2065A, 0 + mov byte_2066B, 0 + mov dword_20682, 0 + mov word_20686, 0 + pop si + pop bp + retf +sub_1028C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_102D6 proc far ; CODE XREF: sub_B3DA+5FP + push bp + mov bp, sp + push si + push di + cmp byte_2066C, 0 + jnz short loc_102EE + mov byte_2174B, 1 + mov byte_2174C, 30h ; '0' + jmp short loc_102F8 +; --------------------------------------------------------------------------- + +loc_102EE: ; CODE XREF: sub_102D6+Aj + mov byte_2174B, 7 + mov byte_2174C, 18h + +loc_102F8: ; CODE XREF: sub_102D6+16j + mov si, 2C18h + xor di, di + jmp short loc_10306 +; --------------------------------------------------------------------------- + +loc_102FF: ; CODE XREF: sub_102D6+34j + mov byte ptr [si], 0 + inc di + add si, 14h + +loc_10306: ; CODE XREF: sub_102D6+27j + cmp di, 96h ; '–' + jl short loc_102FF + mov si, 37D0h + xor di, di + jmp short loc_1033F +; --------------------------------------------------------------------------- + +loc_10313: ; CODE XREF: sub_102D6+6Cj + mov byte ptr [si], 0 + call sub_2164 + mov [si+10h], al + call sub_2164 + and al, 3Fh + mov [si+11h], al + mov al, byte_2174B + mov ah, 0 + test ax, di + jnz short loc_10337 + mov byte ptr [si+13h], 0Eh + jmp short loc_1033B +; --------------------------------------------------------------------------- + +loc_10337: ; CODE XREF: sub_102D6+59j + mov byte ptr [si+13h], 0 + +loc_1033B: ; CODE XREF: sub_102D6+5Fj + inc di + add si, 14h + +loc_1033F: ; CODE XREF: sub_102D6+3Bj + cmp di, 40h ; '@' + jl short loc_10313 + mov word_21744, 1 + mov word_21746, 40h ; '@' + mov word_21748, 1 + cmp byte_1E364, 0 + jnz short loc_10361 + mov al, 0F6h ; 'ö' + jmp short loc_1038A +; --------------------------------------------------------------------------- + +loc_10361: ; CODE XREF: sub_102D6+85j + mov al, byte_1E364 + cbw + cmp ax, 1 + jnz short loc_1036E + mov al, 0 + jmp short loc_1038A +; --------------------------------------------------------------------------- + +loc_1036E: ; CODE XREF: sub_102D6+92j + mov al, byte_1E364 + cbw + cmp ax, 2 + jnz short loc_1037B + mov al, 0 + jmp short loc_1038A +; --------------------------------------------------------------------------- + +loc_1037B: ; CODE XREF: sub_102D6+9Fj + mov al, byte_1E364 + cbw + cmp ax, 3 + jnz short loc_10388 + mov al, 0Ch + jmp short loc_1038A +; --------------------------------------------------------------------------- + +loc_10388: ; CODE XREF: sub_102D6+ACj + mov al, 0 + +loc_1038A: ; CODE XREF: sub_102D6+89j + ; sub_102D6+96j ... + mov byte_2174A, al + mov byte_21752, 0 + mov al, byte_1E364 + cbw + cmp ax, 2 + jz short loc_103A4 + mov al, byte_1E364 + cbw + cmp ax, 3 + jnz short loc_103A9 + +loc_103A4: ; CODE XREF: sub_102D6+C3j + mov byte_21752, 1 + +loc_103A9: ; CODE XREF: sub_102D6+CCj + mov al, byte_21752 + mov byte_21754, al + pop di + pop si + pop bp + retf +sub_102D6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_103B3 proc near ; CODE XREF: sub_1078E+9Ap + ; sub_10865+B6p + +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov si, [bp+arg_2] + mov [bp+var_2], 0 + xor di, di + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+4] + mov [bp+var_4], ax + mov ax, word_205F8 + add ax, 14h + mov [bp+var_6], ax + mov ax, word_205F6 + add ax, 0Ch + mov [bp+var_8], ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+si+2] + mov [bp+var_A], ax + mov bx, [bp+arg_4] + dec bx + cmp bx, 26h ; '&' + ja loc_1065D + add bx, bx + jmp cs:off_106C8[bx] + +loc_10409: ; DATA XREF: seg003:0C38o + mov di, 1 + jmp loc_1065D +; --------------------------------------------------------------------------- + +loc_1040F: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C52o + add [bp+var_2], 5 + +loc_10413: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C0Co ... + add [bp+var_2], 3 + +loc_10417: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C0Ao ... + add [bp+var_2], 3 + +loc_1041B: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:off_106C8o ... + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_1042F + mov ax, [bp+var_2] + add ax, 3 + mov [bp+var_2], ax + jmp short loc_10444 +; --------------------------------------------------------------------------- + +loc_1042F: ; CODE XREF: sub_103B3+6Fj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 1 + jnz short loc_10444 + mov ax, 0FFFDh + sub ax, [bp+var_2] + mov [bp+var_2], ax + mov di, 1 + +loc_10444: ; CODE XREF: sub_103B3+7Aj + ; sub_103B3+83j + cmp [bp+arg_4], 3 + jg loc_1065D + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_1044F: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C18o ... + add [bp+var_2], 8 + +loc_10453: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C16o ... + add [bp+var_2], 8 + +loc_10457: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C14o ... + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_10467 + mov [bp+var_2], 0 + jmp short loc_10490 +; --------------------------------------------------------------------------- + +loc_10467: ; CODE XREF: sub_103B3+ABj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 1 + jnz short loc_1047B + mov ax, [bp+var_2] + add ax, 8 + mov [bp+var_2], ax + jmp short loc_10490 +; --------------------------------------------------------------------------- + +loc_1047B: ; CODE XREF: sub_103B3+BBj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 2 + jnz short loc_10490 + mov ax, 0FFF8h + sub ax, [bp+var_2] + mov [bp+var_2], ax + mov di, 1 + +loc_10490: ; CODE XREF: sub_103B3+B2j + ; sub_103B3+C6j ... + cmp [bp+arg_4], 9 + jg loc_1065D + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_1049B: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C24o ... + add [bp+var_2], 6 + +loc_1049F: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C22o ... + add [bp+var_2], 6 + +loc_104A3: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C20o ... + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_104B7 + mov ax, [bp+var_2] + add ax, 3 + mov [bp+var_2], ax + jmp short loc_10500 +; --------------------------------------------------------------------------- + +loc_104B7: ; CODE XREF: sub_103B3+F7j + les bx, [bp+arg_6] + cmp word ptr es:[bx], 1 + jnz short loc_104CB + mov ax, 0FFFDh + sub ax, [bp+var_2] + mov [bp+var_2], ax + jmp short loc_10500 +; --------------------------------------------------------------------------- + +loc_104CB: ; CODE XREF: sub_103B3+10Bj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 2 + jnz short loc_104E4 + mov ax, [bp+var_2] + add ax, ax + add ax, [bp+var_2] + add ax, 9 + mov [bp+var_2], ax + jmp short loc_10500 +; --------------------------------------------------------------------------- + +loc_104E4: ; CODE XREF: sub_103B3+11Fj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 3 + jnz short loc_10500 + 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_10500: ; CODE XREF: sub_103B3+102j + ; sub_103B3+116j ... + cmp [bp+arg_4], 0Fh + jg loc_1065D + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_1050B: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C30o ... + add [bp+var_2], 6 + +loc_1050F: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C2Eo ... + add [bp+var_2], 6 + +loc_10513: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C2Co ... + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_10523 + mov [bp+var_2], 0 + jmp short loc_1057A +; --------------------------------------------------------------------------- + +loc_10523: ; CODE XREF: sub_103B3+167j + les bx, [bp+arg_6] + cmp word ptr es:[bx], 1 + jnz short loc_10537 + mov ax, [bp+var_2] + add ax, 6 + mov [bp+var_2], ax + jmp short loc_1057A +; --------------------------------------------------------------------------- + +loc_10537: ; CODE XREF: sub_103B3+177j + les bx, [bp+arg_6] + cmp word ptr es:[bx], 2 + jnz short loc_1054B + mov ax, 0FFFAh + sub ax, [bp+var_2] + mov [bp+var_2], ax + jmp short loc_1057A +; --------------------------------------------------------------------------- + +loc_1054B: ; CODE XREF: sub_103B3+18Bj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 3 + jnz short loc_10561 + mov ax, [bp+var_2] + add ax, ax + add ax, 0Ch + mov [bp+var_2], ax + jmp short loc_1057A +; --------------------------------------------------------------------------- + +loc_10561: ; CODE XREF: sub_103B3+19Fj + les bx, [bp+arg_6] + cmp word ptr es:[bx], 4 + jnz short loc_1057A + mov ax, [bp+var_2] + add ax, ax + mov dx, 0FFF4h + sub dx, ax + mov [bp+var_2], dx + mov di, 1 + +loc_1057A: ; CODE XREF: sub_103B3+16Ej + ; sub_103B3+182j ... + cmp [bp+arg_4], 15h + jg loc_1065D + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_10585: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C4Ao + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_10590 + jmp short loc_105FC +; --------------------------------------------------------------------------- + +loc_10590: ; CODE XREF: sub_103B3+1D9j + mov [bp+var_2], 80h ; '€' + mov di, 1 + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_1059B: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C48o + les bx, [bp+arg_6] + mov ax, es:[bx] + shl ax, 6 + mov [bp+var_2], ax + cmp word ptr es:[bx], 3 + jl loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_105B1: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C4Eo + les bx, [bp+arg_6] + mov ax, es:[bx] + shl ax, 5 + mov [bp+var_2], ax + cmp word ptr es:[bx], 7 + jl loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_105C7: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C50o + les bx, [bp+arg_6] + mov ax, es:[bx] + shl ax, 4 + mov [bp+var_2], ax + cmp word ptr es:[bx], 0Fh + jl loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_105DD: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C54o + les bx, [bp+arg_6] + mov ax, es:[bx] + shl ax, 3 + mov [bp+var_2], ax + cmp word ptr es:[bx], 1Fh + jl loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_105F3: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C4Co + les bx, [bp+arg_6] + cmp word ptr es:[bx], 0 + jnz short loc_10604 + +loc_105FC: ; CODE XREF: sub_103B3+1DBj + mov [bp+var_2], 0 + jmp loc_10684 +; --------------------------------------------------------------------------- + +loc_10604: ; CODE XREF: sub_103B3+247j + mov al, [si+10h] + mov ah, 0 + add ax, ax + mov dx, 80h ; '€' + sub dx, ax + mov [bp+var_2], dx + +loc_10613: ; CODE XREF: sub_103B3+51j + ; sub_103B3+1FCj ... + mov di, 1 + jmp short loc_10684 +; --------------------------------------------------------------------------- + +loc_10618: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C3Ao + call sub_FAC6 + mov ah, 0 + mov [bp+var_2], ax + mov di, 1 + jmp short loc_10684 +; --------------------------------------------------------------------------- + +loc_10625: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C3Co + call sub_FAC6 + mov ah, 0 + mov [bp+var_2], ax + mov al, [si+10h] + mov ah, 0 + les bx, [bp+arg_6] + cmp ax, es:[bx] + jg short loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_1063C: ; CODE XREF: sub_103B3+51j + ; DATA XREF: seg003:0C3Eo + call sub_FAC6 + mov ah, 0 + mov [bp+var_2], ax + push 1Fh + call sub_FAD5 + mov ah, 0 + add [bp+arg_0], ax + mov al, [si+10h] + mov ah, 0 + les bx, [bp+arg_6] + cmp ax, es:[bx] + jg short loc_10684 + jmp short loc_10613 +; --------------------------------------------------------------------------- + +loc_1065D: ; CODE XREF: sub_103B3+4Bj + ; sub_103B3+51j ... + push [bp+var_A] + push [bp+var_4] + push [bp+var_8] + push [bp+var_6] + mov al, [si+10h] + add al, byte ptr [bp+var_2] + push ax + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push [bp+arg_0] + call sub_F5B1 + jmp short loc_1069D +; --------------------------------------------------------------------------- + +loc_10684: ; CODE XREF: sub_103B3+99j + ; sub_103B3+E5j ... + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + mov al, [si+10h] + add al, byte ptr [bp+var_2] + push ax + push [bp+arg_0] + call sub_F562 + +loc_1069D: ; CODE XREF: sub_103B3+2CFj + les bx, [bp+arg_6] + inc word ptr es:[bx] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + shl word ptr [bx+si+2], 4 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + shl word ptr [bx+si+4], 4 + mov ax, di + pop di + pop si + leave + retn 0Ah +sub_103B3 endp + +; --------------------------------------------------------------------------- + db 0 +off_106C8 dw offset loc_1041B ; DATA XREF: sub_103B3+51r + dw offset loc_10417 + dw offset loc_10413 + dw offset loc_1041B + dw offset loc_10417 + dw offset loc_10413 + dw offset loc_10457 + dw offset loc_10453 + dw offset loc_1044F + dw offset loc_10457 + dw offset loc_10453 + dw offset loc_1044F + dw offset loc_104A3 + dw offset loc_1049F + dw offset loc_1049B + dw offset loc_104A3 + dw offset loc_1049F + dw offset loc_1049B + dw offset loc_10513 + dw offset loc_1050F + dw offset loc_1050B + dw offset loc_10513 + dw offset loc_1050F + dw offset loc_1050B + dw offset loc_10409 + dw offset loc_10618 + dw offset loc_10625 + dw offset loc_1063C + dw offset loc_1065D + dw offset loc_1065D + dw offset loc_1065D + dw offset loc_10613 + dw offset loc_1059B + dw offset loc_10585 + dw offset loc_105F3 + dw offset loc_105B1 + dw offset loc_105C7 + dw offset loc_1040F + dw offset loc_105DD + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10716 proc near ; CODE XREF: sub_1078E+2Fp + ; sub_10865+35p + +arg_0 = dword ptr 4 + + push bp + mov bp, sp + les bx, [bp+arg_0] + mov ax, es:[bx] + imul word_20272 + mov bx, 30h ; '0' + cwd + idiv bx + mov bx, word ptr [bp+arg_0] + add es:[bx], ax + mov al, byte_2174A + cbw + add es:[bx], ax + cmp word ptr es:[bx], 10h + jge short loc_1075D + inc byte_21753 + cmp byte_1E364, 0 + jnz short loc_10755 + test byte_21753, 1 + jz short loc_10755 + mov ax, 1 + pop bp + retn 4 +; --------------------------------------------------------------------------- + +loc_10755: ; CODE XREF: sub_10716+2Fj + ; sub_10716+36j + les bx, [bp+arg_0] + mov word ptr es:[bx], 10h + +loc_1075D: ; CODE XREF: sub_10716+24j + xor ax, ax + pop bp + retn 4 +sub_10716 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10763 proc near ; CODE XREF: sub_1078E+18p + ; sub_10865+18p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + mov dx, [bp+arg_2] + mov bx, [bp+arg_0] + cmp dx, 18h + jl short loc_10781 + cmp dx, 1A0h + jg short loc_10781 + or bx, bx + jl short loc_10781 + cmp bx, 17Fh + jle short loc_10788 + +loc_10781: ; CODE XREF: sub_10763+Cj + ; sub_10763+12j ... + mov ax, 1 + pop bp + retn 4 +; --------------------------------------------------------------------------- + +loc_10788: ; CODE XREF: sub_10763+1Cj + xor ax, ax + pop bp + retn 4 +sub_10763 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1078E proc near ; CODE XREF: sub_11308+73p + ; sub_11308+166p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = byte ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov [bp+var_2], 0 + mov [bp+var_4], 0 + push [bp+arg_8] + push [bp+arg_6] + call sub_10763 + or ax, ax + jnz loc_1085F + cmp byte_218B4, 0 + jnz loc_1085F + push ss + lea ax, [bp+arg_0] + push ax + call sub_10716 + or ax, ax + jnz loc_1085F + xor di, di + jmp short loc_1082F +; --------------------------------------------------------------------------- + +loc_107CA: ; CODE XREF: sub_1078E+A5j + mov bx, di + imul bx, 14h + cmp byte ptr [bx+2C18h], 0 + jz short loc_107D9 + inc di + jmp short loc_1082F +; --------------------------------------------------------------------------- + +loc_107D9: ; CODE XREF: sub_1078E+46j + mov ax, di + imul ax, 14h + add ax, 2C18h + mov si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, [bp+arg_8] + mov bx, ax + mov [bx+si+2], dx + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, [bp+arg_6] + mov bx, ax + mov [bx+si+4], dx + mov byte ptr [si+0Fh], 0 + mov byte ptr [si], 1 + mov byte ptr [si+1], 1 + mov byte ptr [si+12h], 0 + mov al, [bp+arg_4] + mov [si+10h], al + inc di + push ss + lea ax, [bp+var_2] + push ax + mov al, [bp+arg_2] + mov ah, 0 + push ax + push si + push [bp+arg_0] + call sub_103B3 + or ax, ax + jnz short loc_10835 + +loc_1082F: ; CODE XREF: sub_1078E+3Aj + ; sub_1078E+49j ... + cmp di, 96h ; '–' + jl short loc_107CA + +loc_10835: ; CODE XREF: sub_1078E+9Fj + mov al, byte_21754 + mov ah, 0 + cmp ax, [bp+var_4] + jle short loc_1085F + sar [bp+arg_0], 1 + mov al, byte_1E364 + cbw + cmp ax, 3 + jnz short loc_1084F + add [bp+arg_0], 8 + +loc_1084F: ; CODE XREF: sub_1078E+BBj + cmp [bp+arg_0], 10h + jl short loc_1085F + inc [bp+var_4] + mov [bp+var_2], 0 + jmp short loc_1082F +; --------------------------------------------------------------------------- + +loc_1085F: ; CODE XREF: sub_1078E+1Dj + ; sub_1078E+26j ... + pop di + pop si + leave + retn 0Ah +sub_1078E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10865 proc near ; CODE XREF: sub_119CD+9Ep + ; sub_11A87+64p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = byte ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov [bp+var_2], 0 + mov [bp+var_4], 0 + push [bp+arg_A] + push [bp+arg_8] + call sub_10763 + or ax, ax + jnz loc_10995 + cmp byte_218B4, 0 + jnz loc_10995 + cmp [bp+arg_4], 83h ; 'ƒ' + jz short loc_108A3 + push ss + lea ax, [bp+arg_0] + push ax + call sub_10716 + or ax, ax + jnz loc_10995 + +loc_108A3: ; CODE XREF: sub_10865+2Ej + xor di, di + jmp loc_10963 +; --------------------------------------------------------------------------- + +loc_108A8: ; CODE XREF: sub_10865+102j + mov bx, di + imul bx, 14h + cmp byte ptr [bx+2C18h], 0 + jz short loc_108B8 + inc di + jmp loc_10963 +; --------------------------------------------------------------------------- + +loc_108B8: ; CODE XREF: sub_10865+4Dj + mov ax, di + imul ax, 14h + add ax, 2C18h + mov si, ax + mov al, [bp+arg_4] + mov [si+0Fh], al + mov byte ptr [si+1], 2 + mov byte ptr [si], 1 + mov al, [bp+arg_2] + mov [si+0Eh], al + mov byte ptr [si+12h], 0 + mov al, byte ptr [bp+arg_0] + mov [si+11h], al + mov al, byte ptr [bp+arg_6] + mov [si+10h], al + inc di + cmp [bp+arg_4], 80h ; '€' + jnb short loc_10924 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, [bp+arg_A] + mov bx, ax + mov [bx+si+2], dx + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, [bp+arg_8] + mov bx, ax + mov [bx+si+4], dx + push ss + lea ax, [bp+var_2] + push ax + mov al, [bp+arg_4] + mov ah, 0 + push ax + push si + push [bp+arg_0] + call sub_103B3 + or ax, ax + jnz short loc_1096B + jmp short loc_10963 +; --------------------------------------------------------------------------- + +loc_10924: ; CODE XREF: sub_10865+85j + mov ax, [bp+arg_A] + shl ax, 4 + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+si+2], ax + mov ax, [bp+arg_8] + shl ax, 4 + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+si+4], ax + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push [bp+arg_6] + push [bp+arg_0] + call sub_F562 + jmp short loc_1096B +; --------------------------------------------------------------------------- + +loc_10963: ; CODE XREF: sub_10865+40j + ; sub_10865+50j ... + cmp di, 96h ; '–' + jl loc_108A8 + +loc_1096B: ; CODE XREF: sub_10865+BBj + ; sub_10865+FCj + mov al, byte_21754 + mov ah, 0 + cmp ax, [bp+var_4] + jle short loc_10995 + sar [bp+arg_0], 1 + mov al, byte_1E364 + cbw + cmp ax, 3 + jnz short loc_10985 + add [bp+arg_0], 8 + +loc_10985: ; CODE XREF: sub_10865+11Aj + cmp [bp+arg_0], 10h + jl short loc_10995 + inc [bp+var_4] + mov [bp+var_2], 0 + jmp short loc_10963 +; --------------------------------------------------------------------------- + +loc_10995: ; CODE XREF: sub_10865+1Dj + ; sub_10865+26j ... + pop di + pop si + leave + retn 0Ch +sub_10865 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1099B proc near ; CODE XREF: sub_10BC6+6Ep + +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, 6 + push si + push di + mov si, [bp+arg_0] + mov bx, word_21750 + mov ax, [bx] + sar ax, 4 + mov di, ax + mov ax, word_205F8 + add ax, 8 + mov [bp+var_2], ax + mov bx, word_2174E + mov ax, [bx] + sar ax, 4 + mov [bp+var_4], ax + mov ax, word_205F6 + add ax, 8 + mov [bp+var_6], ax + mov al, [si+0Fh] + mov ah, 0 + sub ax, 80h ; '€' + mov bx, ax + cmp bx, 8 + ja loc_10BAD + add bx, bx + jmp cs:off_10BB4[bx] + +loc_109E7: ; DATA XREF: seg003:off_10BB4o + mov ax, [bp+var_4] + cmp ax, [bp+var_6] + jge short loc_109F7 + mov ax, word_21744 + add [si+0Ah], ax + jmp short loc_10A05 +; --------------------------------------------------------------------------- + +loc_109F7: ; CODE XREF: sub_1099B+52j + mov ax, [bp+var_4] + cmp ax, [bp+var_6] + jle short loc_10A05 + mov ax, word_21744 + sub [si+0Ah], ax + +loc_10A05: ; CODE XREF: sub_1099B+5Aj + ; sub_1099B+62j + cmp di, [bp+var_2] + jge short loc_10A13 + mov ax, word_21744 + add [si+0Ch], ax + jmp loc_10BAD +; --------------------------------------------------------------------------- + +loc_10A13: ; CODE XREF: sub_1099B+6Dj + cmp di, [bp+var_2] + jle loc_10BAD + mov ax, word_21744 + sub [si+0Ch], ax + jmp loc_10BAD +; --------------------------------------------------------------------------- + +loc_10A23: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:10F6o + inc byte ptr [si+12h] + mov al, [si+12h] + mov ah, 0 + cmp ax, word_21746 + jge loc_10BA9 + push [bp+var_4] + push di + push [bp+var_6] + push [bp+var_2] + push 0 + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + mov al, [si+11h] + mov ah, 0 + push ax + call sub_F5B1 + jmp loc_10BAD +; --------------------------------------------------------------------------- + +loc_10A57: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:10F8o + test byte ptr dword_20612, 7 + jnz loc_10BAD + mov ax, [si+0Ah] + cwd + sub ax, dx + sar ax, 1 + mov [si+0Ah], ax + mov ax, [si+0Ch] + cwd + sub ax, dx + sar ax, 1 + mov [si+0Ch], ax + cmp word ptr [si+0Ah], 0 + jnz loc_10BAD + cmp word ptr [si+0Ch], 0 + jnz loc_10BAD + push [bp+var_4] + push di + push [bp+var_6] + push [bp+var_2] + push 0 + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + mov al, [si+11h] + mov ah, 0 + push ax + call sub_F5B1 + inc byte ptr [si+12h] + mov al, [si+12h] + mov ah, 0 + cmp ax, word_21748 + jl loc_10BAD + jmp loc_10BA9 +; --------------------------------------------------------------------------- + +loc_10ABA: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:10FAo + mov ax, word_21744 + add [si+0Ch], ax + jmp loc_10BAD +; --------------------------------------------------------------------------- + +loc_10AC3: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:10FCo + mov al, [si+10h] + add al, byte ptr word_21744 + mov [si+10h], al + mov al, [si+11h] + add al, byte ptr word_21746 + mov [si+11h], al + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push word ptr [si+10h] + mov al, [si+11h] + mov ah, 0 + push ax + call sub_F562 + inc byte ptr [si+12h] + mov al, [si+12h] + mov ah, 0 + cmp ax, word_21748 + jle loc_10BAD + jmp loc_10BA9 +; --------------------------------------------------------------------------- + +loc_10B02: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:10FEo + mov al, [si+10h] + add al, byte ptr word_21744 + mov [si+10h], al + push ds + lea ax, [si+0Ah] + push ax + push ds + lea ax, [si+0Ch] + push ax + push word ptr [si+10h] + mov al, [si+11h] + mov ah, 0 + push ax + call sub_F562 + mov ax, [bp+var_4] + cmp ax, [bp+var_6] + jge short loc_10B34 + mov ax, word_21746 + add [si+0Ah], ax + jmp short loc_10B42 +; --------------------------------------------------------------------------- + +loc_10B34: ; CODE XREF: sub_1099B+18Fj + mov ax, [bp+var_4] + cmp ax, [bp+var_6] + jle short loc_10B42 + mov ax, word_21746 + sub [si+0Ah], ax + +loc_10B42: ; CODE XREF: sub_1099B+197j + ; sub_1099B+19Fj + cmp di, [bp+var_2] + jge short loc_10B4F + mov ax, word_21746 + add [si+0Ch], ax + jmp short loc_10B5A +; --------------------------------------------------------------------------- + +loc_10B4F: ; CODE XREF: sub_1099B+1AAj + cmp di, [bp+var_2] + jle short loc_10B5A + mov ax, word_21746 + sub [si+0Ch], ax + +loc_10B5A: ; CODE XREF: sub_1099B+1B2j + ; sub_1099B+1B7j + inc byte ptr [si+12h] + mov al, [si+12h] + mov ah, 0 + cmp ax, word_21748 + jle short loc_10BAD + jmp short loc_10BA9 +; --------------------------------------------------------------------------- + +loc_10B6A: ; CODE XREF: sub_1099B+47j + ; DATA XREF: seg003:1102o + cmp [bp+var_4], 28h ; '(' + jl short loc_10B77 + cmp [bp+var_4], 188h + jle short loc_10B85 + +loc_10B77: ; CODE XREF: sub_1099B+1D3j + mov dx, 0FFFFh + mov ax, [si+0Ah] + imul dx + mov [si+0Ah], ax + inc byte ptr [si+12h] + +loc_10B85: ; CODE XREF: sub_1099B+47j + ; sub_1099B+1DAj + ; DATA XREF: ... + cmp di, 18h + jl short loc_10B90 + cmp di, 168h + jle short loc_10B9E + +loc_10B90: ; CODE XREF: sub_1099B+1EDj + mov dx, 0FFFFh + mov ax, [si+0Ch] + imul dx + mov [si+0Ch], ax + inc byte ptr [si+12h] + +loc_10B9E: ; CODE XREF: sub_1099B+1F3j + mov al, [si+12h] + mov ah, 0 + cmp ax, word_21748 + jle short loc_10BAD + +loc_10BA9: ; CODE XREF: sub_1099B+94j + ; sub_1099B+11Cj ... + mov byte ptr [si+0Fh], 0 + +loc_10BAD: ; CODE XREF: sub_1099B+41j + ; sub_1099B+47j ... + pop di + pop si + leave + retn 2 +sub_1099B endp + +; --------------------------------------------------------------------------- + db 0 +off_10BB4 dw offset loc_109E7 ; DATA XREF: sub_1099B+47r + dw offset loc_10A23 + dw offset loc_10A57 + dw offset loc_10ABA + dw offset loc_10AC3 + dw offset loc_10B02 + dw offset loc_10BAD + dw offset loc_10B6A + dw offset loc_10B85 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10BC6 proc far ; CODE XREF: sub_BCB1+141P + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov [bp+var_4], 1 + mov [bp+var_2], 0 + jmp loc_10D30 +; --------------------------------------------------------------------------- + +loc_10BDB: ; CODE XREF: sub_10BC6+16Fj + mov bx, [bp+var_2] + imul bx, 14h + mov al, [bx+2C18h] + cbw + cmp ax, 1 + jnz loc_10D2D + mov ax, [bp+var_2] + imul ax, 14h + add ax, 2C18h + mov si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, si + add ax, 2 + mov word_2174E, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, si + add ax, 4 + mov word_21750, ax + mov ax, [si+0Ah] + mov bx, word_2174E + add [bx], ax + mov ax, [si+0Ch] + mov bx, word_21750 + add [bx], ax + mov al, [si+1] + cbw + cmp ax, 2 + jnz short loc_10C37 + push si + call sub_1099B + +loc_10C37: ; CODE XREF: sub_10BC6+6Bj + mov bx, word_2174E + mov ax, [bx] + sar ax, 4 + mov word_21740, ax + mov bx, word_21750 + mov ax, [bx] + sar ax, 4 + mov word_21742, ax + mov di, word_21742 + cmp word_21740, 14h + jle short loc_10C6C + cmp word_21740, 1A0h + jge short loc_10C6C + cmp di, 180h + jge short loc_10C6C + or di, di + jg short loc_10C72 + +loc_10C6C: ; CODE XREF: sub_10BC6+92j + ; sub_10BC6+9Aj ... + mov byte ptr [si], 2 + jmp loc_10D2D +; --------------------------------------------------------------------------- + +loc_10C72: ; CODE XREF: sub_10BC6+A4j + mov al, [si+1] + cbw + cmp ax, 1 + jnz short loc_10CA9 + mov ax, word_205F6 + add ax, 7 + cmp ax, word_21740 + jg short loc_10CDC + mov ax, word_205F6 + add ax, 11h + cmp ax, word_21740 + jle short loc_10CDC + mov ax, word_205F8 + add ax, 0Ch + cmp ax, di + jg short loc_10CDC + mov ax, word_205F8 + add ax, 16h + cmp ax, di + jl short loc_10CDC + jmp short loc_10CD5 +; --------------------------------------------------------------------------- + +loc_10CA9: ; CODE XREF: sub_10BC6+B3j + mov ax, word_205F6 + add ax, 0FFFDh + cmp ax, word_21740 + jg short loc_10CDC + mov ax, word_205F6 + add ax, 13h + cmp ax, word_21740 + jle short loc_10CDC + mov ax, word_205F8 + add ax, 4 + cmp ax, di + jg short loc_10CDC + mov ax, word_205F8 + add ax, 18h + cmp ax, di + jl short loc_10CDC + +loc_10CD5: ; CODE XREF: sub_10BC6+E1j + mov byte_20604, 1 + jmp short loc_10C6C +; --------------------------------------------------------------------------- + +loc_10CDC: ; CODE XREF: sub_10BC6+BFj + ; sub_10BC6+CBj ... + add di, word_20344 + cmp di, 190h + jl short loc_10CEA + sub di, 190h + +loc_10CEA: ; CODE XREF: sub_10BC6+11Ej + mov al, [si+1] + cbw + cmp ax, 1 + jnz short loc_10D13 + cmp [bp+var_4], 0 + jz short loc_10D09 + push large 0C0000Fh + call sub_127E + mov [bp+var_4], 0 + +loc_10D09: ; CODE XREF: sub_10BC6+131j + push word_21740 + push di + call sub_FAFC + jmp short loc_10D2D +; --------------------------------------------------------------------------- + +loc_10D13: ; CODE XREF: sub_10BC6+12Bj + call sub_12A8 + push word_21740 + push di + mov al, [si+0Eh] + mov ah, 0 + push ax + call sub_3708 + mov [bp+var_4], 1 + +loc_10D2D: ; CODE XREF: sub_10BC6+23j + ; sub_10BC6+A9j ... + inc [bp+var_2] + +loc_10D30: ; CODE XREF: sub_10BC6+12j + cmp [bp+var_2], 96h ; '–' + jl loc_10BDB + call sub_12A8 + pop di + pop si + leave + retf +sub_10BC6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10D42 proc far ; CODE XREF: sub_BCB1+4FP sub_10E0A+5p + push bp + mov bp, sp + push si + push di + xor si, si + jmp loc_10DFE +; --------------------------------------------------------------------------- + +loc_10D4C: ; CODE XREF: sub_10D42+C0j + mov bx, si + imul bx, 14h + cmp byte ptr [bx+2C18h], 0 + jz loc_10DFD + mov ax, si + imul ax, 14h + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + add ax, dx + add ax, 2C1Ah + mov word_2174E, ax + mov ax, si + imul ax, 14h + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + add ax, dx + add ax, 2C1Ch + mov word_21750, ax + mov bx, si + imul bx, 14h + mov al, [bx+2C19h] + cbw + shl ax, 3 + mov di, ax + mov bx, word_2174E + mov ax, [bx] + sar ax, 4 + push ax + mov bx, word_21750 + mov ax, [bx] + sar ax, 4 + push ax + push di + push di + call sub_45FC + mov bx, si + imul bx, 14h + mov al, [bx+2C18h] + cbw + cmp ax, 2 + jnz short loc_10DCB + mov bx, si + imul bx, 14h + mov byte ptr [bx+2C18h], 0 + jmp short loc_10DFD +; --------------------------------------------------------------------------- + +loc_10DCB: ; CODE XREF: sub_10D42+7Bj + mov bx, si + imul bx, 14h + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+2C1Ah] + mov bx, word_2174E + mov [bx], ax + mov bx, si + imul bx, 14h + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+2C1Ch] + mov bx, word_21750 + mov [bx], ax + +loc_10DFD: ; CODE XREF: sub_10D42+14j + ; sub_10D42+87j + inc si + +loc_10DFE: ; CODE XREF: sub_10D42+7j + cmp si, 96h ; '–' + jl loc_10D4C + pop di + pop si + pop bp + retf +sub_10D42 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10E0A proc far ; CODE XREF: sub_B98E+3DP sub_E280+52P ... + push bp + mov bp, sp + push si + push cs + call near ptr sub_10D42 + xor si, si + jmp short loc_10E30 +; --------------------------------------------------------------------------- + +loc_10E16: ; CODE XREF: sub_10E0A+2Aj + mov bx, si + imul bx, 14h + mov al, [bx+2C18h] + cbw + cmp ax, 1 + jnz short loc_10E2F + mov bx, si + imul bx, 14h + mov byte ptr [bx+2C18h], 2 + +loc_10E2F: ; CODE XREF: sub_10E0A+19j + inc si + +loc_10E30: ; CODE XREF: sub_10E0A+Aj + cmp si, 96h ; '–' + jl short loc_10E16 + pop si + pop bp + retf +sub_10E0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10E39 proc near ; CODE XREF: sub_1200F+94p + ; sub_1200F+E2p ... + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + mov al, byte_21752 + mov ah, 0 + mov dl, [bp+arg_0] + mov dh, 0 + imul dx + mov byte_21754, al + pop bp + retn 2 +sub_10E39 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10E4F proc far ; DATA XREF: sub_B3DA+387o + push bp + mov bp, sp + push si + xor si, si + jmp short loc_10E8D +; --------------------------------------------------------------------------- + +loc_10E57: ; CODE XREF: sub_10E4F+41j + mov al, byte_20618 + mov ah, 0 + shl ax, 8 + mov dx, si + shl dx, 2 + add ax, dx + mov bx, ax + push word ptr [bx+5336h] + mov al, byte_20618 + mov ah, 0 + shl ax, 8 + mov dx, si + shl dx, 2 + add ax, dx + mov bx, ax + push word ptr [bx+5338h] + push large 10002h + call sub_45FC + inc si + +loc_10E8D: ; CODE XREF: sub_10E4F+6j + cmp si, 40h ; '@' + jl short loc_10E57 + pop si + pop bp + retf +sub_10E4F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10E95 proc far ; DATA XREF: sub_B3DA+37Bo + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + inc word_20686 + cmp word_20686, 0A8h ; '¨' + jb loc_110B3 + cmp word_20686, 0A8h ; '¨' + jnz short loc_10EC0 + push 0Eh + call sub_FA52 + add sp, 2 + jmp loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10EC0: ; CODE XREF: sub_10E95+1Cj + cmp word_20686, 0C8h ; 'È' + jnb short loc_10F22 + cmp word_20686, 0B4h ; '´' + ja short loc_10EE4 + mov ax, word_20686 + and ax, 1 + imul ax, 46h + add ax, 64h ; 'd' + mov word_1DF9A, ax + call far ptr loc_1EF6 + +loc_10EE4: ; CODE XREF: sub_10E95+39j + mov ax, word_20686 + and ax, 1 + mov di, ax + mov ax, 190h + sub ax, word_20344 + push ax + mov ax, word_20344 + imul ax, 28h + add ax, di + push ax + push di + call sub_1E2C + mov byte_2066D, 3 + mov word_22DA0, 0E0h ; 'à' + mov word_22DA2, 0C8h ; 'È' + mov word_22D9E, 0 + mov byte_22DA4, 0 + jmp loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10F22: ; CODE XREF: sub_10E95+31j + cmp word_20686, 190h + jnb short loc_10F5E + cmp word_20686, 0C8h ; 'È' + jnz short loc_10F37 + mov byte_2066D, 1 + +loc_10F37: ; CODE XREF: sub_10E95+9Bj + mov ax, word_20686 + shr ax, 1 + mov dl, 0C8h ; 'È' + sub dl, al + mov byte_1F508, dl + mov byte_1F509, 0 + mov byte_1F50A, 0 + mov ax, word_20686 + sub ax, 0C8h ; 'È' + mov word_22D9E, ax + inc byte_22DA4 + jmp loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10F5E: ; CODE XREF: sub_10E95+93j + cmp word_20686, 258h + jnb short loc_10F8C + mov byte_1F508, 0 + mov ax, word_20686 + shr ax, 1 + mov dl, 2Ch ; ',' + sub dl, al + mov byte_1F509, dl + mov byte_1F50A, 0 + mov ax, word_20686 + sub ax, 190h + mov word_22D9E, ax + dec byte_22DA4 + jmp short loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10F8C: ; CODE XREF: sub_10E95+CFj + cmp word_20686, 320h + jnb short loc_10FBA + mov byte_1F508, 0 + mov byte_1F509, 0 + mov ax, word_20686 + shr ax, 1 + mov dl, 90h ; '' + sub dl, al + mov byte_1F50A, dl + mov ax, word_20686 + sub ax, 258h + mov word_22D9E, ax + inc byte_22DA4 + jmp short loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10FBA: ; CODE XREF: sub_10E95+FDj + cmp word_20686, 3E8h + jnb short loc_10FF0 + mov ax, word_20686 + shr ax, 1 + mov dl, 0F4h ; 'ô' + sub dl, al + mov byte_1F508, dl + mov byte_1F509, 0 + mov ax, word_20686 + shr ax, 1 + mov dl, 0F4h ; 'ô' + sub dl, al + mov byte_1F50A, dl + mov ax, word_20686 + sub ax, 320h + mov word_22D9E, ax + dec byte_22DA4 + jmp short loc_10FF6 +; --------------------------------------------------------------------------- + +loc_10FF0: ; CODE XREF: sub_10E95+12Bj + mov word_20686, 0C8h ; 'È' + +loc_10FF6: ; CODE XREF: sub_10E95+28j + ; sub_10E95+8Aj ... + call far ptr loc_1EF6 + call sub_764 + push large 0C00007h + call sub_127E + xor di, di + mov al, byte_22DA4 + jmp loc_110A4 +; --------------------------------------------------------------------------- + +loc_11013: ; CODE XREF: sub_10E95+215j + movsx eax, word_22D9E + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_22DA0 + mov [bp+var_2], ax + movsx eax, word_22D9E + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_22DA2 + mov si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 8 + mov dx, di + shl dx, 2 + add ax, dx + mov dx, [bp+var_2] + mov bx, ax + mov [bx+5336h], dx + mov al, byte_20618 + mov ah, 0 + shl ax, 8 + mov dx, di + shl dx, 2 + add ax, dx + mov bx, ax + mov [bx+5338h], si + add si, word_20344 + cmp si, 190h + jl short loc_11095 + sub si, 190h + +loc_11095: ; CODE XREF: sub_10E95+1FAj + push [bp+var_2] + push si + call sub_123A + inc di + mov al, [bp+var_3] + add al, 4 + +loc_110A4: ; CODE XREF: sub_10E95+17Bj + mov [bp+var_3], al + cmp di, 40h ; '@' + jl loc_11013 + call sub_12A8 + +loc_110B3: ; CODE XREF: sub_10E95+12j + pop di + pop si + leave + retf +sub_10E95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_110B7 proc far ; DATA XREF: sub_B3DA+333o + push bp + mov bp, sp + push si + push di + xor di, di + xor si, si + jmp loc_1116C +; --------------------------------------------------------------------------- + +loc_110C3: ; CODE XREF: sub_110B7+B8j + cmp byte ptr [si+2BF0h], 2 + jnz short loc_110CE + inc di + jmp loc_1116B +; --------------------------------------------------------------------------- + +loc_110CE: ; CODE XREF: sub_110B7+11j + mov ax, si + shl ax, 2 + mov dl, byte_20618 + mov dh, 0 + add dx, dx + add ax, dx + add ax, 2BACh + mov bx, si + shl bx, 2 + mov word ptr [bx+52EEh], ds + mov [bx+52ECh], ax + mov ax, si + shl ax, 2 + mov dl, byte_20618 + mov dh, 0 + add dx, dx + add ax, dx + add ax, 2BC0h + mov bx, si + shl bx, 2 + mov word ptr [bx+5302h], ds + mov [bx+5300h], ax + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + push word ptr es:[bx] + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + push word ptr es:[bx] + push large 400020h + call sub_45FC + mov bx, si + shl bx, 2 + mov al, byte_20619 + mov ah, 0 + add ax, ax + add bx, ax + mov ax, [bx+2BACh] + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov es:[bx], ax + mov bx, si + shl bx, 2 + mov al, byte_20619 + mov ah, 0 + add ax, ax + add bx, ax + mov ax, [bx+2BC0h] + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + mov es:[bx], ax + +loc_1116B: ; CODE XREF: sub_110B7+14j + inc si + +loc_1116C: ; CODE XREF: sub_110B7+9j + cmp si, 2 + jl loc_110C3 + cmp di, 2 + jnz short loc_1117C + xor ax, ax + jmp short loc_1117F +; --------------------------------------------------------------------------- + +loc_1117C: ; CODE XREF: sub_110B7+BFj + mov ax, 1 + +loc_1117F: ; CODE XREF: sub_110B7+C3j + pop di + pop si + pop bp + retf +sub_110B7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11183 proc near ; CODE XREF: sub_114D6+108p + ; sub_114D6+190p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_0] + push 4 + call sub_FA52 + add sp, 2 + mov bx, di + shl bx, 2 + les bx, [bx+5300h] + mov si, es:[bx] + add si, word_20344 + cmp si, 190h + jl short loc_111AF + sub si, 190h + +loc_111AF: ; CODE XREF: sub_11183+26j + mov bx, di + shl bx, 2 + les bx, [bx+52ECh] + push word ptr es:[bx] + push si + push word_22D4C + push large 0FFC0h + call far ptr loc_2F80 + pop di + pop si + pop bp + retn 2 +sub_11183 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_111D1 proc near ; CODE XREF: sub_114D6+10Ep + ; sub_114D6+1B0p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_0] + mov bx, di + shl bx, 2 + les bx, [bx+5300h] + mov si, es:[bx] + add si, word_20344 + cmp si, 190h + jl short loc_111F3 + sub si, 190h + +loc_111F3: ; CODE XREF: sub_111D1+1Cj + mov bx, di + shl bx, 2 + les bx, [bx+52ECh] + push word ptr es:[bx] + push si + push word_22D4C + call sub_3146 + pop di + pop si + pop bp + retn 2 +sub_111D1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1120F proc near ; CODE XREF: sub_114D6+13Fp + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov si, [bp+arg_0] + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 20h ; ' ' + push ax + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + mov ax, es:[bx] + add ax, 10h + push ax + push large 3C0001h + push 0 + call sub_4090 + mov [bp+var_2], 0Ah + mov bx, si + add bx, bx + mov ax, [bx+10AAh] + mov bx, 6 + cwd + idiv bx + add [bp+var_2], ax + mov bx, si + add bx, bx + inc word ptr [bx+10AAh] + mov bx, si + add bx, bx + cmp word ptr [bx+10AAh], 30h ; '0' + jl short loc_112BA + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 20h ; ' ' + push ax + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + mov ax, es:[bx] + add ax, 10h + push ax + push large 800020h + push 1 + call sub_4090 + mov bx, si + add bx, bx + mov word ptr [bx+10AAh], 0 + mov byte ptr [si+2BF0h], 2 + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + jmp short loc_11302 +; --------------------------------------------------------------------------- + +loc_112BA: ; CODE XREF: sub_1120F+5Fj + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + mov di, es:[bx] + add di, word_20344 + cmp di, 190h + jl short loc_112D4 + sub di, 190h + +loc_112D4: ; CODE XREF: sub_1120F+BFj + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + push word ptr es:[bx] + push di + push [bp+var_2] + call sub_3146 + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 20h ; ' ' + push ax + push di + push [bp+var_2] + call sub_3146 + +loc_11302: ; CODE XREF: sub_1120F+A9j + pop di + pop si + leave + retn 2 +sub_1120F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11308 proc near ; CODE XREF: sub_114D6+14Dp + +var_3 = word ptr -3 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, [bp+arg_0] + or si, si + jnz short loc_1131C + mov ax, 8 + jmp short loc_1131F +; --------------------------------------------------------------------------- + +loc_1131C: ; CODE XREF: sub_11308+Dj + mov ax, 0FFF8h + +loc_1131F: ; CODE XREF: sub_11308+12j + mov [bp+var_3+1], ax + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + mov ax, es:[bx] + add ax, 0Ch + mov di, ax + cmp word_20650, 98h ; '˜' + jge short loc_11381 + cmp word_20650, 80h ; '€' + jnz short loc_1134D + mov byte_22FA6, 0 + mov byte_22FA7, 80h ; '€' + +loc_1134D: ; CODE XREF: sub_11308+39j + test byte ptr word_20650, 3 + jnz loc_114D0 + mov al, [si+5536h] + add al, byte ptr [bp+var_3+1] + mov [si+5536h], al + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 1Ch + push ax + push di + mov al, [si+5536h] + push ax + push 20h ; ' ' + +loc_11379: ; CODE XREF: sub_11308+D4j + ; sub_11308+1BFj + push 28h ; '(' + call sub_1078E + jmp loc_114D0 +; --------------------------------------------------------------------------- + +loc_11381: ; CODE XREF: sub_11308+31j + cmp word_20650, 0C0h ; 'À' + jge short loc_113DE + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, [bp+var_3+1] + add es:[bx], ax + test byte ptr word_20650, 7 + jnz loc_114D0 + mov al, [si+5536h] + mov dl, byte ptr [bp+var_3+1] + add dl, dl + add al, dl + mov [si+5536h], al + cmp byte_1E364, 0 + jz short loc_113BD + mov byte ptr [bp+var_3], 0Eh + jmp short loc_113C1 +; --------------------------------------------------------------------------- + +loc_113BD: ; CODE XREF: sub_11308+ADj + mov byte ptr [bp+var_3], 2 + +loc_113C1: ; CODE XREF: sub_11308+B3j + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 1Ch + push ax + push di + mov al, 80h ; '€' + sub al, [si+5536h] + push ax + push [bp+var_3] + jmp short loc_11379 +; --------------------------------------------------------------------------- + +loc_113DE: ; CODE XREF: sub_11308+7Fj + cmp word_20650, 160h + jge short loc_11416 + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + add word ptr es:[bx], 2 + mov bx, si + shl bx, 2 + mov bx, [bx+5300h] + cmp word ptr es:[bx], 190h + jl loc_114D0 + mov bx, si + shl bx, 2 + mov bx, [bx+5300h] + sub word ptr es:[bx], 190h + jmp loc_114D0 +; --------------------------------------------------------------------------- + +loc_11416: ; CODE XREF: sub_11308+DCj + cmp word_20650, 178h + jge short loc_11429 + test byte ptr word_20650, 3 + jnz loc_114D0 + jmp short loc_11449 +; --------------------------------------------------------------------------- + +loc_11429: ; CODE XREF: sub_11308+114j + cmp word_20650, 1A0h + jge short loc_11473 + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, [bp+var_3+1] + sub es:[bx], ax + test byte ptr word_20650, 3 + jnz loc_114D0 + +loc_11449: ; CODE XREF: sub_11308+11Fj + mov al, [si+5536h] + sub al, byte ptr [bp+var_3+1] + mov [si+5536h], al + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 1Ch + push ax + push di + mov al, [si+5536h] + push ax + push 20h ; ' ' + push 32h ; '2' + call sub_1078E + jmp short loc_114D0 +; --------------------------------------------------------------------------- + +loc_11473: ; CODE XREF: sub_11308+127j + cmp word_20650, 240h + jge short loc_114CA + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + sub word ptr es:[bx], 2 + mov bx, si + shl bx, 2 + mov bx, [bx+5300h] + cmp word ptr es:[bx], 0 + jge short loc_114A5 + mov bx, si + shl bx, 2 + mov bx, [bx+5300h] + add word ptr es:[bx], 190h + +loc_114A5: ; CODE XREF: sub_11308+18Dj + mov ax, word_20650 + mov bx, 3Ch ; '<' + cwd + idiv bx + or dx, dx + jnz short loc_114D0 + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 1Ch + push ax + push di + push 0 + push 19h + jmp loc_11379 +; --------------------------------------------------------------------------- + +loc_114CA: ; CODE XREF: sub_11308+171j + mov word_20650, 7Fh ; '' + +loc_114D0: ; CODE XREF: sub_11308+4Aj + ; sub_11308+76j ... + pop di + pop si + leave + retn 2 +sub_11308 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_114D6 proc far ; DATA XREF: sub_B3DA+33Fo + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov [bp+var_2], 0 + cmp byte_20660, 0 + jnz short loc_1150C + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BACh] + add ax, 18h + mov word_205D8, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BC0h] + jmp short loc_1152C +; --------------------------------------------------------------------------- + +loc_1150C: ; CODE XREF: sub_114D6+12j + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BB0h] + add ax, 18h + mov word_205D8, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BC4h] + +loc_1152C: ; CODE XREF: sub_114D6+34j + add ax, 10h + mov word_205DA, ax + inc word_20650 + cmp word_20650, 1 + jnz short loc_11581 + mov word_2061C, 20h ; ' ' + mov word_2061E, 20h ; ' ' + mov word_20630, 0FFF0h + mov word_20632, 0FFF0h + mov word_20644, 0 + mov word_20620, 160h + mov word_20622, 160h + mov ax, word_20630 + mov word_20634, ax + mov ax, word_20630 + mov word_20636, ax + mov word_20646, 0 + mov byte_22FA8, 0 + jmp loc_116A9 +; --------------------------------------------------------------------------- + +loc_11581: ; CODE XREF: sub_114D6+65j + cmp word_20650, 80h ; '€' + jge short loc_115F0 + mov ax, word_20344 + and ax, 3 + add ax, 90h ; '' + mov word_22D4C, ax + xor si, si + jmp short loc_115E8 +; --------------------------------------------------------------------------- + +loc_11599: ; CODE XREF: sub_114D6+115j + mov al, byte_1E503 + mov ah, 0 + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + add es:[bx], ax + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 0Ch + push ax + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + push word ptr es:[bx] + push large 28001Eh + call sub_1283C + mov di, ax + or ax, ax + jz short loc_115E3 + mov bx, si + add bx, bx + add [bx+2BD4h], di + push si + call sub_11183 + jmp short loc_115E7 +; --------------------------------------------------------------------------- + +loc_115E3: ; CODE XREF: sub_114D6+FDj + push si + call sub_111D1 + +loc_115E7: ; CODE XREF: sub_114D6+10Bj + inc si + +loc_115E8: ; CODE XREF: sub_114D6+C1j + cmp si, 2 + jl short loc_11599 + jmp loc_116A9 +; --------------------------------------------------------------------------- + +loc_115F0: ; CODE XREF: sub_114D6+B1j + mov ax, word_20344 + and ax, 3 + add ax, 90h ; '' + mov word_22D4C, ax + cmp word_20650, 80h ; '€' + jnz short loc_11608 + inc byte_22FA8 + +loc_11608: ; CODE XREF: sub_114D6+12Cj + xor si, si + jmp loc_116A2 +; --------------------------------------------------------------------------- + +loc_1160D: ; CODE XREF: sub_114D6+1CFj + cmp byte ptr [si+2BF0h], 1 + jnz short loc_1161B + push si + call sub_1120F + jmp loc_116A1 +; --------------------------------------------------------------------------- + +loc_1161B: ; CODE XREF: sub_114D6+13Cj + cmp byte ptr [si+2BF0h], 0 + jnz short loc_11697 + push si + call sub_11308 + mov bx, si + shl bx, 2 + les bx, [bx+52ECh] + mov ax, es:[bx] + add ax, 0Ch + push ax + mov bx, si + shl bx, 2 + les bx, [bx+5300h] + push word ptr es:[bx] + push large 28001Eh + call sub_1283C + mov di, ax + or ax, ax + jz short loc_11685 + mov bx, si + add bx, bx + add [bx+2BD4h], di + mov bx, si + add bx, bx + cmp word ptr [bx+2BD4h], 118h + jg short loc_1166B + push si + call sub_11183 + jmp short loc_11689 +; --------------------------------------------------------------------------- + +loc_1166B: ; CODE XREF: sub_114D6+18Dj + push 2 + call sub_FA52 + add sp, 2 + mov byte ptr [si+2BF0h], 1 + add dword_218AC, 4E20h + jmp short loc_11689 +; --------------------------------------------------------------------------- + +loc_11685: ; CODE XREF: sub_114D6+179j + push si + call sub_111D1 + +loc_11689: ; CODE XREF: sub_114D6+193j + ; sub_114D6+1ADj + cmp byte_22FA8, 4 + jb short loc_116A1 + mov byte ptr [si+2BF0h], 1 + jmp short loc_116A1 +; --------------------------------------------------------------------------- + +loc_11697: ; CODE XREF: sub_114D6+14Aj + cmp byte ptr [si+2BF0h], 2 + jnz short loc_116A1 + inc [bp+var_2] + +loc_116A1: ; CODE XREF: sub_114D6+142j + ; sub_114D6+1B8j ... + inc si + +loc_116A2: ; CODE XREF: sub_114D6+134j + cmp si, 2 + jl loc_1160D + +loc_116A9: ; CODE XREF: sub_114D6+A8j + ; sub_114D6+117j + pop di + pop si + leave + retf +sub_114D6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_116AD proc far ; DATA XREF: sub_B3DA+363o + push bp + mov bp, sp + push si + xor si, si + jmp short loc_116E4 +; --------------------------------------------------------------------------- + +loc_116B5: ; CODE XREF: sub_116AD+3Aj + cmp byte ptr [si+2BF0h], 4 + jnb short loc_116E3 + mov bx, si + add bx, bx + push word ptr [bx+5314h] + mov bx, si + add bx, bx + push word ptr [bx+531Eh] + push large 200020h + call sub_45FC + cmp byte ptr [si+2BF0h], 3 + jnz short loc_116E3 + mov byte ptr [si+2BF0h], 4 + +loc_116E3: ; CODE XREF: sub_116AD+Dj + ; sub_116AD+2Fj + inc si + +loc_116E4: ; CODE XREF: sub_116AD+6j + cmp si, 5 + jl short loc_116B5 + pop si + pop bp + retf +sub_116AD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_116EC proc near ; CODE XREF: sub_123A9+13p + push bp + mov bp, sp + push si + push di + xor si, si + jmp short loc_1175D +; --------------------------------------------------------------------------- + +loc_116F5: ; CODE XREF: sub_116EC+74j + cmp byte ptr [si+2BF0h], 2 + jnb short loc_1175C + mov bx, si + add bx, bx + mov di, [bx+531Eh] + add di, word_20344 + cmp di, 190h + jl short loc_11712 + sub di, 190h + +loc_11712: ; CODE XREF: sub_116EC+20j + cmp byte ptr [si+2BF5h], 0 + jz short loc_11746 + push 4 + call sub_FA52 + add sp, 2 + mov bx, si + add bx, bx + push word ptr [bx+5314h] + push di + mov bx, si + add bx, bx + push word ptr [bx+52DCh] + push large 0FFC0h + call far ptr loc_2F80 + mov byte ptr [si+2BF5h], 0 + jmp short loc_1175C +; --------------------------------------------------------------------------- + +loc_11746: ; CODE XREF: sub_116EC+2Bj + mov bx, si + add bx, bx + push word ptr [bx+5314h] + push di + mov bx, si + add bx, bx + push word ptr [bx+52DCh] + call sub_3146 + +loc_1175C: ; CODE XREF: sub_116EC+Ej + ; sub_116EC+58j + inc si + +loc_1175D: ; CODE XREF: sub_116EC+7j + cmp si, 5 + jl short loc_116F5 + pop di + pop si + pop bp + retn +sub_116EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11766 proc near ; CODE XREF: sub_123A9+22p + +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] + mov [bp+var_4], 40h ; '@' + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 10h + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 0Ch + push ax + push large 500002h + push 0 + call sub_4090 + mov [bp+var_2], 0Ah + mov bx, si + add bx, bx + mov di, [bx+531Eh] + add di, word_20344 + cmp di, 190h + jl short loc_117B6 + sub di, 190h + +loc_117B6: ; CODE XREF: sub_11766+4Aj + cmp si, 4 + jnz short loc_11824 + add [bp+var_4], 20h ; ' ' + mov ax, word_22D8C + add ax, 8 + push ax + mov ax, word_22D96 + add ax, 8 + push ax + push word_1EB26 + call sub_FFF8 + cmp word_1EB26, 18h + jl short loc_117F3 + mov ax, word_22D8C + add ax, 8 + push ax + mov ax, word_22D96 + add ax, 8 + push ax + mov ax, word_1EB26 + add ax, 0FFE8h + push ax + call sub_FFF8 + +loc_117F3: ; CODE XREF: sub_11766+73j + cmp word_1EB26, 20h ; ' ' + jge short loc_11810 + push word_22D8C + push di + push word_22D54 + call sub_3146 + inc word_1EB26 + xor ax, ax + jmp short loc_11871 +; --------------------------------------------------------------------------- + +loc_11810: ; CODE XREF: sub_11766+92j + cmp word_1EB26, 38h ; '8' + jnz short loc_1181C + mov byte_1E510, 0E0h ; 'à' + +loc_1181C: ; CODE XREF: sub_11766+AFj + mov ax, word_1EB26 + add ax, 0FFE0h + jmp short loc_1182C +; --------------------------------------------------------------------------- + +loc_11824: ; CODE XREF: sub_11766+53j + mov bx, si + add bx, bx + mov ax, [bx+10AEh] + +loc_1182C: ; CODE XREF: sub_11766+BCj + mov bx, 8 + cwd + idiv bx + add [bp+var_2], ax + mov bx, si + add bx, bx + inc word ptr [bx+10AEh] + mov bx, si + add bx, bx + mov ax, [bx+10AEh] + cmp ax, [bp+var_4] + jl short loc_1185E + mov bx, si + add bx, bx + mov word ptr [bx+10AEh], 0 + mov byte ptr [si+2BF0h], 3 + mov ax, 1 + jmp short loc_11871 +; --------------------------------------------------------------------------- + +loc_1185E: ; CODE XREF: sub_11766+E2j + mov bx, si + add bx, bx + push word ptr [bx+5314h] + push di + push [bp+var_2] + call sub_3556 + xor ax, ax + +loc_11871: ; CODE XREF: sub_11766+A8j + ; sub_11766+F6j + pop di + pop si + leave + retn 2 +sub_11766 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11877 proc near ; CODE XREF: sub_123A9+10p + push bp + mov bp, sp + push si + push di + inc word_22FAA + xor si, si + jmp loc_1193F +; --------------------------------------------------------------------------- + +loc_11885: ; CODE XREF: sub_11877+CBj + cmp byte ptr [si+2BF0h], 1 + ja loc_1193E + mov bx, si + add bx, bx + push word ptr [bx+5314h] + mov bx, si + add bx, bx + push word ptr [bx+531Eh] + push large 200028h + call sub_1283C + mov di, ax + or ax, ax + jz loc_1193E + cmp byte ptr [si+2BF0h], 1 + jnz loc_1193E + mov byte ptr [si+2BF5h], 1 + mov bx, si + add bx, bx + add [bx+2BD4h], di + cmp si, 4 + jnz short loc_118CF + mov ax, 3A2h + jmp short loc_118DC +; --------------------------------------------------------------------------- + +loc_118CF: ; CODE XREF: sub_11877+51j + cmp si, 1 + jg short loc_118D9 + mov ax, 8Ch ; 'Œ' + jmp short loc_118DC +; --------------------------------------------------------------------------- + +loc_118D9: ; CODE XREF: sub_11877+5Bj + mov ax, 78h ; 'x' + +loc_118DC: ; CODE XREF: sub_11877+56j + ; sub_11877+60j + mov bx, si + add bx, bx + cmp ax, [bx+2BD4h] + jg short loc_1193E + mov byte ptr [si+2BF0h], 2 + add dword_218AC, 7530h + cmp si, 3 + jg short loc_11939 + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 8 + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 0Ch + push ax + or si, si + jnz short loc_1191A + mov ax, 2 + jmp short loc_11927 +; --------------------------------------------------------------------------- + +loc_1191A: ; CODE XREF: sub_11877+9Cj + cmp si, 2 + jg short loc_11924 + mov ax, 3 + jmp short loc_11927 +; --------------------------------------------------------------------------- + +loc_11924: ; CODE XREF: sub_11877+A6j + mov ax, 2 + +loc_11927: ; CODE XREF: sub_11877+A1j + ; sub_11877+ABj + push ax + call sub_D6CA + push 2 + call sub_FA52 + add sp, 2 + jmp short loc_1193E +; --------------------------------------------------------------------------- + +loc_11939: ; CODE XREF: sub_11877+80j + mov byte_20605, 0C8h ; 'È' + +loc_1193E: ; CODE XREF: sub_11877+13j + ; sub_11877+34j ... + inc si + +loc_1193F: ; CODE XREF: sub_11877+Bj + cmp si, 5 + jl loc_11885 + xor si, si + jmp short loc_11970 +; --------------------------------------------------------------------------- + +loc_1194A: ; CODE XREF: sub_11877+FCj + cmp byte ptr [si+2BF0h], 1 + jnz short loc_1196F + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 8 + mov word_205D8, ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + mov word_205DA, ax + jmp short loc_11975 +; --------------------------------------------------------------------------- + +loc_1196F: ; CODE XREF: sub_11877+D8j + inc si + +loc_11970: ; CODE XREF: sub_11877+D1j + cmp si, 5 + jl short loc_1194A + +loc_11975: ; CODE XREF: sub_11877+F6j + cmp word_205F8, 60h ; '`' + jge short loc_11993 + push word_22D98 + push word_22D9A + push 0Fh + call sub_FAD5 + add al, 0F9h ; 'ù' + push ax + push 19h + push 4Dh ; 'M' + call sub_1078E + +loc_11993: ; CODE XREF: sub_11877+103j + pop di + pop si + pop bp + retn +sub_11877 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11997 proc near ; CODE XREF: sub_12778:loc_12835p + push bp + mov bp, sp + cmp byte_1E364, 0 + jz short loc_119B7 + mov byte ptr word_2066E, 18h + mov byte ptr word_2066E+1, 0 + mov byte ptr word_20670, 24h ; '$' + mov byte ptr word_20670+1, 21h ; '!' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_119B7: ; CODE XREF: sub_11997+8j + mov byte ptr word_2066E, 0Ch + mov byte ptr word_2066E+1, 2 + mov byte ptr word_20670, 21h ; '!' + mov byte ptr word_20670+1, 22h ; '"' + pop bp + retn +sub_11997 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_119CD proc near ; CODE XREF: sub_123A9+B2p + push bp + mov bp, sp + push si + cmp word_20650, 1Eh + jl loc_11A84 + cmp word_20650, 0B4h ; '´' + jge short loc_11A27 + mov ax, word_20650 + mov bx, 18h + cwd + idiv bx + or dx, dx + jnz loc_11A84 + xor si, si + jmp short loc_11A20 +; --------------------------------------------------------------------------- + +loc_119F5: ; CODE XREF: sub_119CD+56j + cmp byte ptr [si+2BF0h], 1 + jnz short loc_11A1F + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 0Ch + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + push ax + push 0 + push word_2066E + push 26h ; '&' + call sub_1078E + +loc_11A1F: ; CODE XREF: sub_119CD+2Dj + inc si + +loc_11A20: ; CODE XREF: sub_119CD+26j + cmp si, 2 + jl short loc_119F5 + jmp short loc_11A84 +; --------------------------------------------------------------------------- + +loc_11A27: ; CODE XREF: sub_119CD+13j + cmp word_20650, 0C8h ; 'È' + jl short loc_11A84 + cmp word_20650, 136h + jge short loc_11A76 + test byte ptr word_20650, 0Fh + jnz short loc_11A84 + xor si, si + jmp short loc_11A6F +; --------------------------------------------------------------------------- + +loc_11A42: ; CODE XREF: sub_119CD+A5j + cmp byte ptr [si+2BF0h], 1 + jnz short loc_11A6E + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 0Ch + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + push ax + push 0 + push 19h + push large 510050h + call sub_10865 + +loc_11A6E: ; CODE XREF: sub_119CD+7Aj + inc si + +loc_11A6F: ; CODE XREF: sub_119CD+73j + cmp si, 2 + jl short loc_11A42 + jmp short loc_11A84 +; --------------------------------------------------------------------------- + +loc_11A76: ; CODE XREF: sub_119CD+68j + cmp word_20650, 15Eh + jle short loc_11A84 + mov word_20650, 0 + +loc_11A84: ; CODE XREF: sub_119CD+9j + ; sub_119CD+20j ... + pop si + pop bp + retn +sub_119CD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11A87 proc near ; CODE XREF: sub_123A9+171p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + cmp word_20650, 1Eh + jl loc_11B57 + cmp word_20650, 0C8h ; 'È' + jge short loc_11AFC + mov ax, [bp+arg_0] + imul ax, 14h + mov bx, 6Eh ; 'n' + sub bx, ax + mov ax, word_20650 + cwd + idiv bx + or dx, dx + jnz loc_11B57 + mov di, 2 + jmp short loc_11AF5 +; --------------------------------------------------------------------------- + +loc_11AB9: ; CODE XREF: sub_11A87+71j + cmp byte ptr [di+2BF0h], 1 + jnz short loc_11AF4 + xor si, si + jmp short loc_11AEF +; --------------------------------------------------------------------------- + +loc_11AC4: ; CODE XREF: sub_11A87+6Bj + mov bx, di + add bx, bx + mov ax, [bx+5314h] + add ax, 0Ch + push ax + mov bx, di + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + push ax + mov ax, si + imul ax, 2Ah + push ax + push 82h ; '‚' + push large 520038h + call sub_10865 + inc si + +loc_11AEF: ; CODE XREF: sub_11A87+3Bj + cmp si, 6 + jl short loc_11AC4 + +loc_11AF4: ; CODE XREF: sub_11A87+37j + inc di + +loc_11AF5: ; CODE XREF: sub_11A87+30j + cmp di, 4 + jl short loc_11AB9 + jmp short loc_11B57 +; --------------------------------------------------------------------------- + +loc_11AFC: ; CODE XREF: sub_11A87+14j + mov ax, [bp+arg_0] + imul ax, 14h + mov bx, 5Ah ; 'Z' + sub bx, ax + mov ax, word_20650 + cwd + idiv bx + or dx, dx + jnz short loc_11B57 + mov di, 2 + jmp short loc_11B52 +; --------------------------------------------------------------------------- + +loc_11B16: ; CODE XREF: sub_11A87+CEj + cmp byte ptr [di+2BF0h], 1 + jnz short loc_11B51 + xor si, si + jmp short loc_11B4C +; --------------------------------------------------------------------------- + +loc_11B21: ; CODE XREF: sub_11A87+C8j + mov bx, di + add bx, bx + mov ax, [bx+5314h] + add ax, 0Ch + push ax + mov bx, di + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + push ax + mov ax, si + imul ax, 2Ah + push ax + push 82h ; '‚' + push large 520038h + call sub_10865 + inc si + +loc_11B4C: ; CODE XREF: sub_11A87+98j + cmp si, 6 + jl short loc_11B21 + +loc_11B51: ; CODE XREF: sub_11A87+94j + inc di + +loc_11B52: ; CODE XREF: sub_11A87+8Dj + cmp di, 4 + jl short loc_11B16 + +loc_11B57: ; CODE XREF: sub_11A87+Aj + ; sub_11A87+29j ... + pop di + pop si + pop bp + retn 2 +sub_11A87 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11B5D proc near ; CODE XREF: sub_123A9+1CCp + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_11BFC + cmp word_20650, 32h ; '2' + jnz short loc_11BB3 + mov byte_23A70, 24h ; '$' + push large 300060h + push large 100067h + call sub_12A19 + push large 0C00060h + push large 100067h + call sub_12A19 + push large 0F00060h + push large 100067h + call sub_12A19 + push large 1800060h + push large 100067h + call sub_12A19 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_11BB3: ; CODE XREF: sub_11B5D+11j + cmp word_20650, 50h ; 'P' + jnz short loc_11BFC + push large 500060h + push large 100067h + call sub_12A19 + push large 0A00060h + push large 100067h + call sub_12A19 + push large 1100060h + push large 100067h + call sub_12A19 + push large 1600060h + push large 100067h + call sub_12A19 + mov word_20650, 0 + +loc_11BFC: ; CODE XREF: sub_11B5D+8j + ; sub_11B5D+5Bj + pop bp + retn +sub_11B5D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11BFE proc near ; CODE XREF: sub_123A9+1D8p + ; sub_123A9+32Bp + push bp + mov bp, sp + test byte ptr word_20650, 3 + jnz short loc_11C35 + push word_22D98 + push word_22D9A + push word_1EB28 + push 23h ; '#' + push 46h ; 'F' + call sub_1078E + mov al, byte ptr word_1EB28 + add al, 8 + mov byte ptr word_1EB28, al + cmp byte ptr word_1EB28, 82h ; '‚' + jbe short loc_11C35 + mov word_20650, 0 + mov byte ptr word_1EB28, 0 + +loc_11C35: ; CODE XREF: sub_11BFE+8j + ; sub_11BFE+2Aj + pop bp + retn +sub_11BFE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11C37 proc near ; CODE XREF: sub_123A9+1E4p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + cmp word_20650, 18h + jl short locret_11C88 + mov al, byte_1E364 + cbw + mov dx, ax + add dx, dx + add dx, ax + mov bx, 1Ch + sub bx, dx + mov ax, word_20650 + cwd + idiv bx + or dx, dx + jnz short loc_11C7A + mov byte_23A70, 1Eh + mov ax, word_205F6 + add ax, 10h + and ax, 0FFF0h + mov [bp+var_2], ax + push ax + push large 600010h + push 67h ; 'g' + call sub_12A19 + +loc_11C7A: ; CODE XREF: sub_11C37+24j + cmp word_20650, 8Ch ; 'Œ' + jl short locret_11C88 + mov word_20650, 0 + +locret_11C88: ; CODE XREF: sub_11C37+Bj + ; sub_11C37+49j + leave + retn +sub_11C37 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11C8A proc near ; CODE XREF: sub_123A9+337p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + cmp word_20650, 28h ; '(' + jge short loc_11CF5 + mov ax, word_20650 + mov bx, 6 + cwd + idiv bx + or dx, dx + jnz locret_11D2E + mov ax, word_205F8 + add ax, 0FFE0h + push ax + mov ax, word_205F6 + sub ax, word_22D8C + push ax + call sub_1E78 + mov [bp+var_1], al + push 1Fh + call sub_FAD5 + add al, 10h + +loc_11CC4: ; CODE XREF: sub_11C8A+9Cj + mov [bp+var_2], al + push word_22D98 + push word_22D9A + mov al, [bp+var_1] + add al, [bp+var_2] + push ax + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + push word_22D98 + push word_22D9A + mov al, [bp+var_1] + sub al, [bp+var_2] + push ax + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + leave + retn +; --------------------------------------------------------------------------- + +loc_11CF5: ; CODE XREF: sub_11C8A+Bj + cmp word_20650, 66h ; 'f' + jge short loc_11D28 + mov ax, word_20650 + mov bx, 6 + cwd + idiv bx + or dx, dx + jnz short locret_11D2E + mov ax, word_205F8 + add ax, 0FFE0h + push ax + mov ax, word_205F6 + sub ax, word_22D8C + push ax + call sub_1E78 + mov [bp+var_1], al + mov al, 5Fh ; '_' + sub al, byte ptr word_20650 + jmp short loc_11CC4 +; --------------------------------------------------------------------------- + +loc_11D28: ; CODE XREF: sub_11C8A+70j + mov word_20650, 0 + +locret_11D2E: ; CODE XREF: sub_11C8A+18j + ; sub_11C8A+7Dj + leave + retn +sub_11C8A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11D30 proc near ; CODE XREF: sub_123A9+31Fp + push bp + mov bp, sp + cmp word_20650, 10h + jl loc_11DF4 + cmp word_20650, 10h + jnz short loc_11D4E + mov word_22FAC, 20h ; ' ' + mov byte_22FAE, 0 + +loc_11D4E: ; CODE XREF: sub_11D30+11j + cmp byte_22FAE, 0 + jnz short loc_11D9A + test byte ptr word_20650, 7 + jnz short loc_11D9A + mov byte_23A70, 10h + push word_22FAC + push large 600003h + push 6Fh ; 'o' + call sub_12A19 + mov ax, 1B0h + sub ax, word_22FAC + push ax + push large 600003h + push 6Fh ; 'o' + call sub_12A19 + add word_22FAC, 10h + cmp word_22FAC, 0B0h ; '°' + jle short loc_11D9A + mov byte_22FAE, 1 + add word_22FAC, 10h + +loc_11D9A: ; CODE XREF: sub_11D30+23j + ; sub_11D30+2Aj ... + cmp byte_22FAE, 24h ; '$' + jbe short loc_11DE9 + test byte ptr word_20650, 7 + jnz short loc_11DF4 + push word_22FAC + push large 600001h + push 6Fh ; 'o' + call sub_12A19 + mov ax, 1B0h + sub ax, word_22FAC + push ax + push large 600001h + push 6Fh ; 'o' + call sub_12A19 + sub word_22FAC, 10h + cmp word_22FAC, 40h ; '@' + jge short loc_11DF4 + mov byte_22FAE, 0 + mov word_20650, 0 + mov word_22FAC, 20h ; ' ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_11DE9: ; CODE XREF: sub_11D30+6Fj + cmp byte_22FAE, 0 + jz short loc_11DF4 + inc byte_22FAE + +loc_11DF4: ; CODE XREF: sub_11D30+8j + ; sub_11D30+76j ... + pop bp + retn +sub_11D30 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11DF6 proc near ; CODE XREF: sub_123A9+1F0p + ; sub_123A9+343p + push bp + mov bp, sp + push si + test byte ptr word_20650, 0Fh + jnz short loc_11E30 + mov al, byte ptr word_2066E+1 + mov ah, 0 + mov si, ax + jmp short loc_11E2B +; --------------------------------------------------------------------------- + +loc_11E0A: ; CODE XREF: sub_11DF6+38j + mov bx, si + add bx, bx + push word ptr [bx+5314h] + mov bx, si + add bx, bx + push word ptr [bx+531Eh] + call sub_FAC6 + push ax + push 83h ; 'ƒ' + push large 520020h + call sub_10865 + inc si + +loc_11E2B: ; CODE XREF: sub_11DF6+12j + cmp si, 4 + jl short loc_11E0A + +loc_11E30: ; CODE XREF: sub_11DF6+9j + cmp word_20650, 6Eh ; 'n' + jle short loc_11E3D + mov word_20650, 0 + +loc_11E3D: ; CODE XREF: sub_11DF6+3Fj + pop si + pop bp + retn +sub_11DF6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11E40 proc near ; CODE XREF: sub_123A9+1FCp + ; sub_123A9+34Fp + push bp + mov bp, sp + test byte ptr word_20650, 3 + jnz short loc_11E66 + push word_22D98 + push word_22D9A + call sub_FAC6 + push ax + push word_20670+1 + mov ax, word_20650 + sar ax, 1 + add ax, 1Eh + push ax + call sub_1078E + +loc_11E66: ; CODE XREF: sub_11E40+8j + cmp word_20650, 82h ; '‚' + jle short loc_11E74 + mov word_20650, 0 + +loc_11E74: ; CODE XREF: sub_11E40+2Cj + pop bp + retn +sub_11E40 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11E76 proc near ; CODE XREF: sub_123A9+208p + ; sub_123A9+35Bp + push bp + mov bp, sp + push si + push di + cmp word_20650, 10h + jl loc_11F2B + cmp word_20650, 50h ; 'P' + jge short loc_11EE5 + mov ax, word_20650 + mov bx, 24h ; '$' + cwd + idiv bx + or dx, dx + jnz short loc_11EBE + mov byte_23A70, 1Eh + call sub_FAC6 + mov ah, 0 + mov bx, 18h + cwd + idiv bx + add dx, 2 + mov di, dx + mov ax, di + shl ax, 4 + push ax + push large 60000Ch + push 6Fh ; 'o' + call sub_12A19 + +loc_11EBE: ; CODE XREF: sub_11E76+20j + mov ax, word_20650 + mov bx, 28h ; '(' + cwd + idiv bx + or dx, dx + jnz short loc_11F2B + cmp byte_1E364, 0 + jz short loc_11F2B + push word_22D98 + push word_22D9A + push 0 + push 19h + push 46h ; 'F' + call sub_1078E + jmp short loc_11F2B +; --------------------------------------------------------------------------- + +loc_11EE5: ; CODE XREF: sub_11E76+13j + cmp word_20650, 78h ; 'x' + jge short loc_11F25 + cmp word_20650, 64h ; 'd' + jnz short loc_11F2B + mov byte_23A70, 1Eh + xor si, si + jmp short loc_11F1E +; --------------------------------------------------------------------------- + +loc_11EFC: ; CODE XREF: sub_11E76+ABj + call sub_FAC6 + mov ah, 0 + mov bx, 18h + cwd + idiv bx + add dx, 2 + mov di, dx + mov ax, di + shl ax, 4 + push ax + push large 60000Ch + push 6Fh ; 'o' + call sub_12A19 + inc si + +loc_11F1E: ; CODE XREF: sub_11E76+84j + cmp si, 3 + jl short loc_11EFC + jmp short loc_11F2B +; --------------------------------------------------------------------------- + +loc_11F25: ; CODE XREF: sub_11E76+74j + mov word_20650, 0 + +loc_11F2B: ; CODE XREF: sub_11E76+Aj + ; sub_11E76+53j ... + pop di + pop si + pop bp + retn +sub_11E76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11F2F proc near ; CODE XREF: sub_123A9+287p + push bp + mov bp, sp + push si + cmp word_20650, 10h + jl short loc_11FB2 + cmp word_20650, 10h + jnz short loc_11F46 + mov byte ptr word_22FAF, 29h ; ')' + +loc_11F46: ; CODE XREF: sub_11F2F+10j + mov ax, word_20650 + mov bx, 1Eh + cwd + idiv bx + or dx, dx + jnz short loc_11FA5 + xor si, si + jmp short loc_11F98 +; --------------------------------------------------------------------------- + +loc_11F57: ; CODE XREF: sub_11F2F+6Cj + mov bx, si + add bx, bx + push word ptr [bx+5314h] + mov bx, si + add bx, bx + push word ptr [bx+531Eh] + push word_22FAF + push 19h + push large 52003Ch + call sub_10865 + mov bx, si + add bx, bx + push word ptr [bx+5314h] + mov bx, si + add bx, bx + push word ptr [bx+531Eh] + mov al, byte ptr word_22FAF + neg al + push ax + push 19h + push large 52003Ch + call sub_10865 + inc si + +loc_11F98: ; CODE XREF: sub_11F2F+26j + cmp si, 4 + jl short loc_11F57 + mov al, byte ptr word_22FAF + add al, 0FDh ; 'ý' + mov byte ptr word_22FAF, al + +loc_11FA5: ; CODE XREF: sub_11F2F+22j + cmp byte ptr word_22FAF, 0C8h ; 'È' + jb short loc_11FB2 + mov word_20650, 0 + +loc_11FB2: ; CODE XREF: sub_11F2F+9j + ; sub_11F2F+7Bj + pop si + pop bp + retn +sub_11F2F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_11FB5 proc near ; CODE XREF: sub_123A9:loc_1263Cp + push bp + mov bp, sp + cmp word_20650, 2 + jnz short loc_11FC4 + mov byte ptr word_22FAF+1, 3Eh ; '>' + +loc_11FC4: ; CODE XREF: sub_11FB5+8j + test byte ptr word_20650, 7 + jnz short loc_1200D + push word_22D98 + push word_22D9A + mov al, 0 + sub al, byte ptr word_22FAF+1 + push ax + push word_20670 + push 40h ; '@' + call sub_1078E + push word_22D98 + push word_22D9A + push word_22FAF+1 + push word_20670 + push 40h ; '@' + call sub_1078E + mov al, byte ptr word_22FAF+1 + add al, 0FDh ; 'ý' + mov byte ptr word_22FAF+1, al + cmp byte ptr word_22FAF+1, 0C8h ; 'È' + jbe short loc_1200D + mov word_20650, 0 + +loc_1200D: ; CODE XREF: sub_11FB5+14j + ; sub_11FB5+50j + pop bp + retn +sub_11FB5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1200F proc near ; CODE XREF: sub_123A9+29Fp + push bp + mov bp, sp + push si + cmp word_20650, 3Ch ; '<' + jl loc_120F4 + mov ax, word_20650 + mov bx, 40h ; '@' + cwd + idiv bx + or dx, dx + jnz short loc_1204F + xor si, si + jmp short loc_1204A +; --------------------------------------------------------------------------- + +loc_1202D: ; CODE XREF: sub_1200F+3Ej + mov ax, word_205F8 + add ax, 0FFE0h + push ax + mov bx, si + add bx, bx + mov ax, word_205F6 + sub ax, [bx+5314h] + push ax + call sub_1E78 + mov [si+5541h], al + inc si + +loc_1204A: ; CODE XREF: sub_1200F+1Cj + cmp si, 5 + jl short loc_1202D + +loc_1204F: ; CODE XREF: sub_1200F+18j + test byte ptr word_20650, 3 + jnz loc_120E1 + cmp word_20650, 180h + jge short loc_120A1 + mov ax, word_20650 + mov bx, 40h ; '@' + cwd + idiv bx + sar dx, 2 + cmp dx, 8 + jg short loc_120E1 + xor si, si + jmp short loc_1209A +; --------------------------------------------------------------------------- + +loc_12075: ; CODE XREF: sub_1200F+8Ej + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 0Ch + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 0Ch + push ax + mov al, [si+5541h] + push ax + push 20h ; ' ' + push 70h ; 'p' + call sub_1078E + inc si + +loc_1209A: ; CODE XREF: sub_1200F+64j + cmp si, 5 + jl short loc_12075 + jmp short loc_120D7 +; --------------------------------------------------------------------------- + +loc_120A1: ; CODE XREF: sub_1200F+4Fj + push 0 + call sub_10E39 + xor si, si + jmp short loc_120D2 +; --------------------------------------------------------------------------- + +loc_120AA: ; CODE XREF: sub_1200F+C6j + mov bx, si + add bx, bx + mov ax, [bx+5314h] + add ax, 8 + push ax + mov bx, si + add bx, bx + mov ax, [bx+531Eh] + add ax, 8 + push ax + push word_22FB5 + push 21h ; '!' + push large 560070h + call sub_10865 + inc si + +loc_120D2: ; CODE XREF: sub_1200F+99j + cmp si, 5 + jl short loc_120AA + +loc_120D7: ; CODE XREF: sub_1200F+90j + push 3 + call sub_FA52 + add sp, 2 + +loc_120E1: ; CODE XREF: sub_1200F+45j + ; sub_1200F+60j + cmp word_20650, 1BFh + jl short loc_120F4 + mov word_20650, 0 + push 1 + call sub_10E39 + +loc_120F4: ; CODE XREF: sub_1200F+9j + ; sub_1200F+D8j + pop si + pop bp + retn +sub_1200F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_120F7 proc near ; CODE XREF: sub_123A9+F0p + ; sub_123A9+F5p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + or si, si + jz short loc_12107 + cmp si, 1 + jnz short loc_12128 + +loc_12107: ; CODE XREF: sub_120F7+9j + mov bx, si + add bx, bx + inc word ptr [bx+52DCh] + mov bx, si + add bx, bx + cmp word ptr [bx+52DCh], 9Bh ; '›' + jl loc_121B3 + mov byte ptr [si+2BF0h], 1 + mov ax, 1 + jmp loc_121B5 +; --------------------------------------------------------------------------- + +loc_12128: ; CODE XREF: sub_120F7+Ej + cmp si, 2 + jz short loc_12132 + cmp si, 3 + jnz short loc_1217C + +loc_12132: ; CODE XREF: sub_120F7+34j + mov bx, si + add bx, bx + cmp word ptr [bx+52DCh], 98h ; '˜' + jge short loc_12146 + mov bx, si + add bx, bx + inc word ptr [bx+52DCh] + +loc_12146: ; CODE XREF: sub_120F7+45j + mov bx, si + add bx, bx + cmp word ptr [bx+52DCh], 98h ; '˜' + jnz short loc_1215E + mov bx, si + add bx, bx + mov word ptr [bx+52DCh], 9Ch ; 'œ' + jmp short loc_12166 +; --------------------------------------------------------------------------- + +loc_1215E: ; CODE XREF: sub_120F7+59j + mov bx, si + add bx, bx + inc word ptr [bx+52DCh] + +loc_12166: ; CODE XREF: sub_120F7+65j + mov bx, si + add bx, bx + cmp word ptr [bx+52DCh], 9Fh ; 'Ÿ' + jl short loc_121B3 + mov byte ptr [si+2BF0h], 1 + mov ax, 1 + jmp short loc_121B5 +; --------------------------------------------------------------------------- + +loc_1217C: ; CODE XREF: sub_120F7+39j + cmp si, 4 + jnz short loc_121B3 + cmp word_22D54, 98h ; '˜' + jge short loc_1218D + inc word_22D54 + +loc_1218D: ; CODE XREF: sub_120F7+90j + cmp word_22D54, 98h ; '˜' + jnz short loc_1219D + mov word_22D54, 0A0h ; ' ' + jmp short loc_121A1 +; --------------------------------------------------------------------------- + +loc_1219D: ; CODE XREF: sub_120F7+9Cj + inc word_22D54 + +loc_121A1: ; CODE XREF: sub_120F7+A4j + cmp word_22D54, 0A3h ; '£' + jl short loc_121B3 + mov byte_20664, 1 + mov ax, 1 + jmp short loc_121B5 +; --------------------------------------------------------------------------- + +loc_121B3: ; CODE XREF: sub_120F7+22j + ; sub_120F7+79j ... + xor ax, ax + +loc_121B5: ; CODE XREF: sub_120F7+2Ej + ; sub_120F7+83j ... + pop si + pop bp + retn 2 +sub_120F7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_121BA proc near ; CODE XREF: sub_123A9+25Bp + push bp + mov bp, sp + cmp word_22D54, 0A0h ; ' ' + jl short loc_121C9 + dec word_22D54 + +loc_121C9: ; CODE XREF: sub_121BA+9j + cmp word_22D54, 9Fh ; 'Ÿ' + jnz short loc_121DE + mov byte_20664, 0 + mov word_22D54, 97h ; '—' + jmp short loc_121E2 +; --------------------------------------------------------------------------- + +loc_121DE: ; CODE XREF: sub_121BA+15j + dec word_22D54 + +loc_121E2: ; CODE XREF: sub_121BA+22j + cmp word_22D54, 94h ; '”' + jg short loc_121EF + mov ax, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_121EF: ; CODE XREF: sub_121BA+2Ej + xor ax, ax + pop bp + retn +sub_121BA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_121F3 proc near ; CODE XREF: sub_122B5:loc_12318p + ; sub_1232F:loc_12392p + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + mov cl, [bp+arg_0] + test byte ptr word_20650, 1 + jz short loc_1223A + mov al, byte_22FCF + mov ah, 0 + mov bx, ax + mov al, [bx+10B9h] + mov ah, 0 + mov bx, ax + mov [bx+5546h], cl + mov al, byte_22FCF + mov ah, 0 + mov bx, ax + mov al, [bx+10C5h] + mov ah, 0 + mov bx, ax + mov [bx+5546h], cl + inc byte_22FCF + cmp byte_22FCF, 0Ch + jb short loc_1223A + inc byte_22FCE + mov byte_22FCF, 0 + +loc_1223A: ; CODE XREF: sub_121F3+Bj + ; sub_121F3+3Cj + pop bp + retn 2 +sub_121F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1223E proc near ; CODE XREF: sub_122B5:loc_1231Bp + ; sub_1232F:loc_12395p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov si, 5546h + call sub_43B0 + xor di, di + mov [bp+var_2], 20h ; ' ' + jmp short loc_122A7 +; --------------------------------------------------------------------------- + +loc_12257: ; CODE XREF: sub_1223E+6Cj + cmp byte ptr [si], 1 + jnz short loc_12269 + push [bp+var_2] + push word_22D9C + push word_22FD2 + jmp short loc_12279 +; --------------------------------------------------------------------------- + +loc_12269: ; CODE XREF: sub_1223E+1Cj + cmp byte ptr [si], 2 + jnz short loc_12283 + push [bp+var_2] + push word_22D9C + push word_22FD4 + +loc_12279: ; CODE XREF: sub_1223E+29j + call sub_480C + mov byte ptr [si], 0 + jmp short loc_122A1 +; --------------------------------------------------------------------------- + +loc_12283: ; CODE XREF: sub_1223E+2Ej + cmp byte ptr [di+5546h], 3 + jnz short loc_122A1 + push [bp+var_2] + push word_22D9C + push word_22FD6 + call sub_480C + mov byte ptr [si], 0 + inc byte_22FD0 + +loc_122A1: ; CODE XREF: sub_1223E+43j + ; sub_1223E+4Aj + inc di + add [bp+var_2], 10h + inc si + +loc_122A7: ; CODE XREF: sub_1223E+17j + cmp di, 18h + jl short loc_12257 + call sub_764 + pop di + pop si + leave + retn +sub_1223E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_122B5 proc near ; CODE XREF: sub_123A9+17Ep + ; sub_123A9+2CDp + push bp + mov bp, sp + push si + cmp word_20650, 31h ; '1' + jl short loc_1232A + cmp word_20650, 31h ; '1' + jnz short loc_122F9 + xor si, si + jmp short loc_122D1 +; --------------------------------------------------------------------------- + +loc_122CB: ; CODE XREF: sub_122B5+1Fj + mov byte ptr [si+5546h], 0 + inc si + +loc_122D1: ; CODE XREF: sub_122B5+14j + cmp si, 18h + jl short loc_122CB + mov byte_22FCF, 0 + mov byte_22FCE, 0 + mov byte_22FD0, 0 + mov word_22FD2, 29h ; ')' + mov word_22FD4, 2Ah ; '*' + mov word_22FD6, 2Bh ; '+' + jmp short loc_1231B +; --------------------------------------------------------------------------- + +loc_122F9: ; CODE XREF: sub_122B5+10j + cmp byte_22FCE, 0 + jnz short loc_12304 + push 1 + jmp short loc_12318 +; --------------------------------------------------------------------------- + +loc_12304: ; CODE XREF: sub_122B5+49j + cmp byte_22FCE, 1 + jnz short loc_1230F + push 2 + jmp short loc_12318 +; --------------------------------------------------------------------------- + +loc_1230F: ; CODE XREF: sub_122B5+54j + cmp byte_22FCE, 2 + jnz short loc_1231B + push 3 + +loc_12318: ; CODE XREF: sub_122B5+4Dj + ; sub_122B5+58j + call sub_121F3 + +loc_1231B: ; CODE XREF: sub_122B5+42j + ; sub_122B5+5Fj + call sub_1223E + cmp byte_22FD0, 18h + jb short loc_1232A + mov ax, 1 + jmp short loc_1232C +; --------------------------------------------------------------------------- + +loc_1232A: ; CODE XREF: sub_122B5+9j + ; sub_122B5+6Ej + xor ax, ax + +loc_1232C: ; CODE XREF: sub_122B5+73j + pop si + pop bp + retn +sub_122B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1232F proc near ; CODE XREF: sub_123A9:loc_1260Ap + push bp + mov bp, sp + push si + cmp word_20650, 31h ; '1' + jl short loc_123A4 + cmp word_20650, 31h ; '1' + jnz short loc_12373 + xor si, si + jmp short loc_1234B +; --------------------------------------------------------------------------- + +loc_12345: ; CODE XREF: sub_1232F+1Fj + mov byte ptr [si+5546h], 0 + inc si + +loc_1234B: ; CODE XREF: sub_1232F+14j + cmp si, 18h + jl short loc_12345 + mov byte_22FCF, 0 + mov byte_22FCE, 0 + mov byte_22FD0, 0 + mov word_22FD2, 2Ah ; '*' + mov word_22FD4, 29h ; ')' + mov word_22FD6, 28h ; '(' + jmp short loc_12395 +; --------------------------------------------------------------------------- + +loc_12373: ; CODE XREF: sub_1232F+10j + cmp byte_22FCE, 0 + jnz short loc_1237E + push 1 + jmp short loc_12392 +; --------------------------------------------------------------------------- + +loc_1237E: ; CODE XREF: sub_1232F+49j + cmp byte_22FCE, 1 + jnz short loc_12389 + push 2 + jmp short loc_12392 +; --------------------------------------------------------------------------- + +loc_12389: ; CODE XREF: sub_1232F+54j + cmp byte_22FCE, 2 + jnz short loc_12395 + push 3 + +loc_12392: ; CODE XREF: sub_1232F+4Dj + ; sub_1232F+58j + call sub_121F3 + +loc_12395: ; CODE XREF: sub_1232F+42j + ; sub_1232F+5Fj + call sub_1223E + cmp byte_22FD0, 18h + jb short loc_123A4 + mov ax, 1 + jmp short loc_123A6 +; --------------------------------------------------------------------------- + +loc_123A4: ; CODE XREF: sub_1232F+9j + ; sub_1232F+6Ej + xor ax, ax + +loc_123A6: ; CODE XREF: sub_1232F+73j + pop si + pop bp + retn +sub_1232F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_123A9 proc far ; DATA XREF: sub_B3DA+36Fo + push bp + mov bp, sp + push si + push di + xor di, di + inc word_20650 + inc dword_22D58 + call sub_11877 + call sub_116EC + xor si, si + jmp short loc_123D9 +; --------------------------------------------------------------------------- + +loc_123C3: ; CODE XREF: sub_123A9+33j + cmp byte ptr [si+2BF0h], 2 + jnz short loc_123D0 + push si + call sub_11766 + jmp short loc_123D8 +; --------------------------------------------------------------------------- + +loc_123D0: ; CODE XREF: sub_123A9+1Fj + cmp byte ptr [si+2BF0h], 4 + jnz short loc_123D8 + inc di + +loc_123D8: ; CODE XREF: sub_123A9+25j + ; sub_123A9+2Cj + inc si + +loc_123D9: ; CODE XREF: sub_123A9+18j + cmp si, 5 + jl short loc_123C3 + cmp di, 5 + jl short loc_123E9 + mov ax, 2 + jmp loc_12737 +; --------------------------------------------------------------------------- + +loc_123E9: ; CODE XREF: sub_123A9+38j + cmp byte_22D56, 0 + jnz short loc_12454 + cmp word_20650, 32h ; '2' + jz short loc_1241A + cmp word_20650, 34h ; '4' + jz short loc_1241A + cmp word_20650, 36h ; '6' + jz short loc_1241A + cmp word_20650, 3Ah ; ':' + jz short loc_1241A + cmp word_20650, 3Ch ; '<' + jz short loc_1241A + cmp word_20650, 3Eh ; '>' + jnz short loc_12425 + +loc_1241A: ; CODE XREF: sub_123A9+4Cj + ; sub_123A9+53j ... + inc word_22D4C + inc word_22D4E + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_12425: ; CODE XREF: sub_123A9+6Fj + cmp word_20650, 40h ; '@' + jnz loc_12734 + inc word_22D4C + inc word_22D4E + mov word_20650, 0 + mov byte_20660, 1 + mov byte_20661, 1 + mov byte_22D56, 1 + mov word_22FAA, 0 + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_12454: ; CODE XREF: sub_123A9+45j + cmp byte_22D56, 1 + jnz short loc_124C2 + call sub_119CD + cmp dword_22D58, 514h + jle short loc_12481 + cmp byte_20660, 1 + jnz short loc_12475 + mov byte_20660, 2 + +loc_12475: ; CODE XREF: sub_123A9+C5j + cmp byte_20661, 1 + jnz short loc_12481 + mov byte_20661, 2 + +loc_12481: ; CODE XREF: sub_123A9+BEj + ; sub_123A9+D1j + cmp di, 2 + jl loc_12734 + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz loc_12734 + push 2 + call sub_120F7 + push 3 + call sub_120F7 + or ax, ax + jz short loc_124B6 + mov byte_22D56, 2 + mov word_20650, 0 + mov word_22FAA, 0 + +loc_124B6: ; CODE XREF: sub_123A9+FAj + mov dword_22D58, 0 + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_124C2: ; CODE XREF: sub_123A9+B0j + cmp byte_22D56, 2 + jnz short loc_12520 + cmp dword_22D58, 514h + jle short loc_124EC + cmp byte_20662, 1 + jnz short loc_124E0 + mov byte_20662, 2 + +loc_124E0: ; CODE XREF: sub_123A9+130j + cmp byte_20663, 1 + jnz short loc_124EC + mov byte_20663, 2 + +loc_124EC: ; CODE XREF: sub_123A9+129j + ; sub_123A9+13Cj + cmp di, 4 + jl short loc_12519 + mov byte_22D56, 3 + mov word_20650, 0 + mov byte_22D57, 0 + mov word_22FAA, 0 + mov ax, word_22D8C + add ax, 8 + mov word_205D8, ax + mov word_205DA, 20h ; ' ' + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_12519: ; CODE XREF: sub_123A9+146j + push di + call sub_11A87 + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_12520: ; CODE XREF: sub_123A9+11Ej + cmp byte_22D56, 3 + jnz short loc_12567 + call sub_122B5 + or ax, ax + jz loc_12734 + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz loc_12734 + push 4 + call sub_120F7 + or ax, ax + jz loc_12734 + mov byte_22D56, 4 + mov word_20650, 0 + mov word_22FAA, 0 + mov dword_22D58, 0 + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_12567: ; CODE XREF: sub_123A9+17Cj + cmp byte_22D56, 4 + jnz short loc_125E9 + cmp byte_22D57, 0 + jnz short loc_1257A + call sub_11B5D + jmp short loc_125B4 +; --------------------------------------------------------------------------- + +loc_1257A: ; CODE XREF: sub_123A9+1CAj + cmp byte_22D57, 1 + jnz short loc_12586 + call sub_11BFE + jmp short loc_125B4 +; --------------------------------------------------------------------------- + +loc_12586: ; CODE XREF: sub_123A9+1D6j + cmp byte_22D57, 2 + jnz short loc_12592 + call sub_11C37 + jmp short loc_125B4 +; --------------------------------------------------------------------------- + +loc_12592: ; CODE XREF: sub_123A9+1E2j + cmp byte_22D57, 3 + jnz short loc_1259E + call sub_11DF6 + jmp short loc_125B4 +; --------------------------------------------------------------------------- + +loc_1259E: ; CODE XREF: sub_123A9+1EEj + cmp byte_22D57, 4 + jnz short loc_125AA + call sub_11E40 + jmp short loc_125B4 +; --------------------------------------------------------------------------- + +loc_125AA: ; CODE XREF: sub_123A9+1FAj + cmp byte_22D57, 5 + jnz short loc_125B4 + call sub_11E76 + +loc_125B4: ; CODE XREF: sub_123A9+1CFj + ; sub_123A9+1DBj ... + cmp word_20650, 0 + jnz short loc_125D6 + inc byte_22D57 + mov word_22FAA, 0 + cmp byte_22D57, 5 + jbe short loc_125D6 + mov byte_22D56, 5 + mov byte_22D57, 0 + +loc_125D6: ; CODE XREF: sub_123A9+210j + ; sub_123A9+221j + cmp word_2064C, 1F4h + jl loc_12734 + mov word_2064C, 1F4h + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_125E9: ; CODE XREF: sub_123A9+1C3j + cmp byte_22D56, 5 + jnz short loc_1261B + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_1260A + cmp byte_22D57, 0 + jnz short loc_1260A + call sub_121BA + mov byte_22D57, al + +loc_1260A: ; CODE XREF: sub_123A9+252j + ; sub_123A9+259j + call sub_1232F + or ax, ax + jz loc_12734 + mov byte_22D56, 6 + jmp loc_1269E +; --------------------------------------------------------------------------- + +loc_1261B: ; CODE XREF: sub_123A9+245j + cmp byte_22D56, 6 + jnz short loc_1266F + cmp byte_22D57, 0 + jz short loc_1263C + cmp byte_22D57, 1 + jnz short loc_12635 + call sub_11F2F + jmp short loc_1264B +; --------------------------------------------------------------------------- + +loc_12635: ; CODE XREF: sub_123A9+285j + cmp byte_22D57, 2 + jnz short loc_12641 + +loc_1263C: ; CODE XREF: sub_123A9+27Ej + call sub_11FB5 + jmp short loc_1264B +; --------------------------------------------------------------------------- + +loc_12641: ; CODE XREF: sub_123A9+291j + cmp byte_22D57, 3 + jnz short loc_1264B + call sub_1200F + +loc_1264B: ; CODE XREF: sub_123A9+28Aj + ; sub_123A9+296j ... + cmp word_20650, 0 + jnz loc_12734 + inc byte_22D57 + mov word_22FAA, 0 + cmp byte_22D57, 3 + jbe loc_12734 + mov byte_22D56, 7 + jmp loc_12734 +; --------------------------------------------------------------------------- + +loc_1266F: ; CODE XREF: sub_123A9+277j + cmp byte_22D56, 7 + jnz short loc_126BA + call sub_122B5 + or ax, ax + jz loc_12734 + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz loc_12734 + push 4 + call sub_120F7 + or ax, ax + jz loc_12734 + mov byte_22D56, 8 + +loc_1269E: ; CODE XREF: sub_123A9+26Fj + mov word_20650, 0 + mov word_22FAA, 0 + mov dword_22D58, 0 + mov byte_22D57, 0 + jmp short loc_12734 +; --------------------------------------------------------------------------- + +loc_126BA: ; CODE XREF: sub_123A9+2CBj + cmp byte_22D56, 8 + jnz short loc_12734 + cmp byte_22D57, 0 + jnz short loc_126CD + call sub_11D30 + jmp short loc_12707 +; --------------------------------------------------------------------------- + +loc_126CD: ; CODE XREF: sub_123A9+31Dj + cmp byte_22D57, 1 + jnz short loc_126D9 + call sub_11BFE + jmp short loc_12707 +; --------------------------------------------------------------------------- + +loc_126D9: ; CODE XREF: sub_123A9+329j + cmp byte_22D57, 2 + jnz short loc_126E5 + call sub_11C8A + jmp short loc_12707 +; --------------------------------------------------------------------------- + +loc_126E5: ; CODE XREF: sub_123A9+335j + cmp byte_22D57, 3 + jnz short loc_126F1 + call sub_11DF6 + jmp short loc_12707 +; --------------------------------------------------------------------------- + +loc_126F1: ; CODE XREF: sub_123A9+341j + cmp byte_22D57, 4 + jnz short loc_126FD + call sub_11E40 + jmp short loc_12707 +; --------------------------------------------------------------------------- + +loc_126FD: ; CODE XREF: sub_123A9+34Dj + cmp byte_22D57, 5 + jnz short loc_12707 + call sub_11E76 + +loc_12707: ; CODE XREF: sub_123A9+322j + ; sub_123A9+32Ej ... + cmp word_20650, 0 + jnz short loc_12734 + inc byte_22D57 + mov word_22FAA, 0 + cmp byte_22D57, 5 + jbe short loc_12724 + mov byte_22D57, 1 + +loc_12724: ; CODE XREF: sub_123A9+374j + cmp dword_22D58, 7D0h + jle short loc_12734 + mov byte_20664, 2 + +loc_12734: ; CODE XREF: sub_123A9+79j + ; sub_123A9+81j ... + mov ax, 1 + +loc_12737: ; CODE XREF: sub_123A9+3Dj + pop di + pop si + pop bp + retf +sub_123A9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1273B proc far ; DATA XREF: sub_B3DA+357o + push bp + mov bp, sp + call sub_12DE0 + push 1 + call sub_1310B + call sub_FC53 + call sub_E162 + inc byte_1E365 + pop bp + retf +sub_1273B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12754 proc far ; DATA XREF: sub_B3DA+34Bo + push bp + mov bp, sp + call sub_12DE0 + push 0 + call sub_1310B + call sub_12E95 + push ds + push offset aBoss2_m ; "boss2.m" + nop + push cs + call near ptr sub_13ABB + add sp, 4 + call sub_12778 + nop + push cs + call near ptr sub_129FC + pop bp + retf +sub_12754 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12778 proc near ; CODE XREF: sub_12754+1Ap + push bp + mov bp, sp + push si + mov word_20650, 0 + xor si, si + jmp short loc_127A5 +; --------------------------------------------------------------------------- + +loc_12786: ; CODE XREF: sub_12778+30j + mov byte ptr [si+2BF0h], 0 + mov bx, si + add bx, bx + mov word ptr [bx+2BD4h], 0 + mov bx, si + add bx, bx + mov word ptr [bx+52DCh], 94h ; '”' + mov byte ptr [si+2BF5h], 0 + inc si + +loc_127A5: ; CODE XREF: sub_12778+Cj + cmp si, 5 + jl short loc_12786 + mov word_22D84, 80h ; '€' + mov word_22D8E, 20h ; ' ' + mov word_22D86, 120h + mov word_22D90, 20h ; ' ' + mov word_22D88, 30h ; '0' + mov word_22D92, 30h ; '0' + mov word_22D8A, 170h + mov word_22D94, 30h ; '0' + mov word_22D8C, 0D0h ; 'Ð' + mov word_22D96, 20h ; ' ' + mov word_22D9A, 28h ; '(' + mov word_22D98, 0DCh ; 'Ü' + nop + push cs + call near ptr sub_17A55 + mov byte_23A70, 0Ch + mov word_22FAA, 0 + mov dword_22D58, 0 + mov byte_22D56, 0 + mov byte_22D57, 0 + mov byte_1E510, 20h ; ' ' + mov word_22D9C, 60h ; '`' + mov ax, word_20344 + add word_22D9C, ax + cmp word_22D9C, 190h + jl short loc_12835 + sub word_22D9C, 190h + +loc_12835: ; CODE XREF: sub_12778+B5j + call sub_11997 + pop si + pop bp + retn +sub_12778 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1283C proc near ; CODE XREF: sub_114D6+F6p + ; sub_114D6+172p ... + +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +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 +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 + sub sp, 12h + push si + push di + mov bl, byte_218B2 + mov bh, 0 + add bx, bx + mov ax, [bx+10DAh] + mov [bp+var_E], ax + mov ax, [bx+10EEh] + mov [bp+var_10], ax + mov ax, [bx+1102h] + mov [bp+var_12], ax + mov [bp+var_8], 0 + mov ax, [bp+arg_6] + add ax, [bp+arg_2] + mov [bp+var_A], ax + mov al, byte_20618 + shl al, 2 + add al, 4 + mov [bp+var_B], al + mov ax, [bp+arg_4] + add ax, 0FFF8h + mov [bp+var_6], ax + sub [bp+arg_6], 8 + mov si, 2908h + mov [bp+var_2], 0 + +loc_1288F: ; CODE XREF: sub_1283C+17Bj + cmp byte ptr [si], 1 + jz short loc_12897 + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_12897: ; CODE XREF: sub_1283C+56j + cmp byte ptr [si+0Fh], 0 + jz short loc_128A0 + jmp loc_12943 +; --------------------------------------------------------------------------- + +loc_128A0: ; CODE XREF: sub_1283C+5Fj + cmp byte ptr [si+1], 0 + jz short loc_128A9 + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_128A9: ; CODE XREF: sub_1283C+68j + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si-2] + sar ax, 4 + mov [bp+var_4], ax + cmp ax, [bp+arg_6] + jg short loc_128C1 + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_128C1: ; CODE XREF: sub_1283C+80j + cmp ax, [bp+var_A] + jl short loc_128C9 + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_128C9: ; CODE XREF: sub_1283C+88j + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si] + sar ax, 4 + mov di, ax + cmp di, [bp+var_6] + jg short loc_128DF + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_128DF: ; CODE XREF: sub_1283C+9Ej + mov ax, [bp+var_6] + add ax, [bp+arg_0] + cmp ax, di + jg short loc_128EC + jmp loc_129AB +; --------------------------------------------------------------------------- + +loc_128EC: ; CODE XREF: sub_1283C+ABj + inc [bp+var_8] + cmp word ptr [si+0Eh], 32h ; '2' + jl short loc_12926 + sar word ptr [si+0Ah], 3 + sar word ptr [si+0Ch], 3 + cmp word ptr [si+0Eh], 78h ; 'x' + jl short loc_1291C + mov byte ptr [si+1], 1 + mov ax, [bx+si-2] + sub ax, 80h ; '€' + mov [bx+si-2], ax + mov ax, [bx+si] + sub ax, 80h ; '€' + mov [bx+si], ax + mov ax, [bp+var_12] + jmp short loc_12923 +; --------------------------------------------------------------------------- + +loc_1291C: ; CODE XREF: sub_1283C+C5j + mov byte ptr [si+1], 2 + mov ax, [bp+var_E] + +loc_12923: ; CODE XREF: sub_1283C+DEj + add [bp+var_8], ax + +loc_12926: ; CODE XREF: sub_1283C+B7j + push [bp+var_4] + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si] + sar ax, 4 + push ax + push 1Eh + push 1 + push 0 + call sub_4090 + jmp short loc_129AB +; --------------------------------------------------------------------------- + +loc_12943: ; CODE XREF: sub_1283C+61j + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si-2] + sar ax, 4 + mov [bp+var_4], ax + cmp ax, [bp+arg_6] + jle short loc_129AB + mov ax, [bp+arg_6] + add ax, [bp+arg_2] + cmp ax, [bp+var_4] + jle short loc_129AB + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si] + sar ax, 4 + mov di, ax + cmp di, [bp+var_6] + jle short loc_129AB + mov ax, [bp+var_6] + add ax, [bp+arg_0] + cmp ax, di + jle short loc_129AB + cmp byte ptr [si+1], 1 + jnz short loc_129A5 + push [bp+var_4] + mov al, [bp+var_B] + mov ah, 0 + mov bx, ax + mov ax, [bx+si] + sar ax, 4 + push ax + push 28h ; '(' + push 1 + push 0 + call sub_4090 + mov byte ptr [si+1], 2 + +loc_129A5: ; CODE XREF: sub_1283C+148j + mov ax, [bp+var_10] + add [bp+var_8], ax + +loc_129AB: ; CODE XREF: sub_1283C+58j + ; sub_1283C+6Aj ... + inc [bp+var_2] + add si, 10h + cmp [bp+var_2], 23h ; '#' + jge short loc_129BA + jmp loc_1288F +; --------------------------------------------------------------------------- + +loc_129BA: ; CODE XREF: sub_1283C+179j + cmp byte_218B4, 0 + jz short loc_129CD + mov al, byte_1EB88 + test byte ptr dword_20612, al + jnz short loc_129CD + inc [bp+var_8] + +loc_129CD: ; CODE XREF: sub_1283C+183j + ; sub_1283C+18Cj + mov ax, [bp+var_8] + add word ptr dword_218AC, ax + mov ax, [bp+var_8] + pop di + pop si + leave + retn 8 +sub_1283C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_129DD proc far ; CODE XREF: sub_B3DA+6EP + push bp + mov bp, sp + push si + mov si, 5F6Ch + xor ax, ax + jmp short loc_129EF +; --------------------------------------------------------------------------- + +loc_129E8: ; CODE XREF: sub_129DD+15j + mov byte ptr [si], 0 + inc ax + add si, 0Ch + +loc_129EF: ; CODE XREF: sub_129DD+9j + cmp ax, 0Ch + jl short loc_129E8 + mov byte_23A70, 10h + pop si + pop bp + retf +sub_129DD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_129FC proc far ; CODE XREF: sub_B3DA:loc_B7CBP + ; sub_B3DA+4A6P ... + push bp + mov bp, sp + mov word ptr dword_23A72+2, seg seg003 + mov word ptr dword_23A72, offset sub_12A7D + mov word ptr dword_23A76+2, seg seg003 + mov word ptr dword_23A76, offset sub_12B9E + pop bp + retf +sub_129FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12A19 proc near ; CODE XREF: sub_11B5D+24p + ; sub_11B5D+33p ... + +arg_0 = byte 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 + mov si, 5F6Ch + cmp [bp+arg_6], 20h ; ' ' + jl short loc_12A77 + cmp [bp+arg_6], 1A0h + jge short loc_12A77 + xor di, di + jmp short loc_12A72 +; --------------------------------------------------------------------------- + +loc_12A32: ; CODE XREF: sub_12A19+5Cj + cmp byte ptr [si], 0 + jnz short loc_12A6E + mov byte ptr [si], 1 + mov byte ptr [si+1], 1 + mov ax, [bp+arg_6] + mov [si+2], ax + mov ax, [bp+arg_4] + mov [si+4], ax + mov al, byte_23A70 + mov ah, 0 + mov [si+6], ax + mov ax, [bp+arg_2] + mov [si+8], ax + mov byte ptr [si+0Ah], 0 + mov al, [bp+arg_0] + mov [si+0Bh], al + push 6 + call sub_FA52 + add sp, 2 + jmp short loc_12A77 +; --------------------------------------------------------------------------- + +loc_12A6E: ; CODE XREF: sub_12A19+1Cj + inc di + add si, 0Ch + +loc_12A72: ; CODE XREF: sub_12A19+17j + cmp di, 0Ch + jl short loc_12A32 + +loc_12A77: ; CODE XREF: sub_12A19+Cj + ; sub_12A19+13j ... + pop di + pop si + pop bp + retn 8 +sub_12A19 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12A7D proc far ; DATA XREF: sub_129FC+9o + push bp + mov bp, sp + push si + push di + mov si, 5F6Ch + xor di, di + jmp short loc_12AD9 +; --------------------------------------------------------------------------- + +loc_12A89: ; CODE XREF: sub_12A7D+5Fj + cmp byte ptr [si], 0 + jz short loc_12AD5 + cmp byte ptr [si+0Ah], 4 + ja short loc_12AB9 + mov ax, [si+2] + add ax, 0FFF8h + push ax + mov ax, [si+4] + add ax, 0FFF8h + push ax + push large 200020h + call sub_45FC + test byte ptr dword_20612, 3 + jnz short loc_12ACD + inc byte ptr [si+0Ah] + jmp short loc_12ACD +; --------------------------------------------------------------------------- + +loc_12AB9: ; CODE XREF: sub_12A7D+15j + push word ptr [si+2] + push word ptr [si+4] + push 10h + mov ax, 190h + sub ax, [si+4] + push ax + call sub_45FC + +loc_12ACD: ; CODE XREF: sub_12A7D+35j + ; sub_12A7D+3Aj + cmp byte ptr [si], 2 + jnz short loc_12AD5 + mov byte ptr [si], 0 + +loc_12AD5: ; CODE XREF: sub_12A7D+Fj + ; sub_12A7D+53j + inc di + add si, 0Ch + +loc_12AD9: ; CODE XREF: sub_12A7D+Aj + cmp di, 0Ch + jl short loc_12A89 + pop di + pop si + pop bp + retf +sub_12A7D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12AE2 proc near ; CODE XREF: sub_12B9E+BFp + +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 di, [bp+arg_0] + mov si, word_20344 + mov ax, word_23A6E + mov [bp+var_2], ax + add si, word_23A6E + cmp si, 190h + jl short loc_12B05 + sub si, 190h + +loc_12B05: ; CODE XREF: sub_12AE2+1Dj + cmp byte ptr [di+1], 5 + jnb short loc_12B1E + push word_23A6C + push si + mov al, [di+1] + mov ah, 0 + add ax, 5Bh ; '[' + push ax + call sub_3708 + +loc_12B1E: ; CODE XREF: sub_12AE2+27j + add si, 8 + cmp si, 190h + jl short loc_12B2B + sub si, 190h + +loc_12B2B: ; CODE XREF: sub_12AE2+43j + add [bp+var_2], 8 + mov al, [di+0Bh] + mov ah, 0 + mov dl, [di+1] + mov dh, 0 + add ax, dx + mov [bp+var_4], ax + jmp short loc_12B5E +; --------------------------------------------------------------------------- + +loc_12B40: ; CODE XREF: sub_12AE2+81j + push word_23A6C + push si + push [bp+var_4] + call sub_3708 + add si, 10h + cmp si, 190h + jl short loc_12B5A + sub si, 190h + +loc_12B5A: ; CODE XREF: sub_12AE2+72j + add [bp+var_2], 10h + +loc_12B5E: ; CODE XREF: sub_12AE2+5Cj + cmp [bp+var_2], 180h + jl short loc_12B40 + cmp byte ptr [di+1], 4 + jnz short loc_12B98 + mov ax, word_23A6C + add ax, 0FFE8h + cmp ax, word_205F6 + jge short loc_12B98 + mov ax, word_23A6C + add ax, 8 + cmp ax, word_205F6 + jle short loc_12B98 + mov ax, word_205F8 + cmp ax, word_23A6E + jl short loc_12B98 + cmp byte_20604, 0 + jnz short loc_12B98 + mov byte_20604, 1 + +loc_12B98: ; CODE XREF: sub_12AE2+87j + ; sub_12AE2+93j ... + pop di + pop si + leave + retn 2 +sub_12AE2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12B9E proc far ; DATA XREF: sub_129FC+15o + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov si, 5F6Ch + mov [bp+var_4], 0 + jmp loc_12C66 +; --------------------------------------------------------------------------- + +loc_12BB1: ; CODE XREF: sub_12B9E+CCj + cmp byte ptr [si], 1 + jnz loc_12C60 + mov ax, [si+2] + mov word_23A6C, ax + mov ax, [si+4] + mov word_23A6E, ax + cmp byte ptr [si+0Ah], 4 + jnb short loc_12C00 + add ax, 0FFF8h + mov di, ax + add di, word_20344 + cmp di, 190h + jl short loc_12BDD + sub di, 190h + +loc_12BDD: ; CODE XREF: sub_12B9E+39j + mov ax, word_23A6C + add ax, 0FFF8h + mov [bp+var_2], ax + mov al, [si+0Ah] + mov ah, 0 + add ax, 1Eh + mov [bp+var_6], ax + push [bp+var_2] + push di + push ax + call sub_3146 + dec word ptr [si+6] + jmp short loc_12C60 +; --------------------------------------------------------------------------- + +loc_12C00: ; CODE XREF: sub_12B9E+2Aj + cmp byte ptr [si+1], 1 + jnz short loc_12C11 + dec word ptr [si+6] + cmp word ptr [si+6], 0 + jg short loc_12C5C + jmp short loc_12C42 +; --------------------------------------------------------------------------- + +loc_12C11: ; CODE XREF: sub_12B9E+66j + cmp byte ptr [si+1], 4 + jnb short loc_12C33 + test byte ptr dword_20612, 7 + jnz short loc_12C21 + inc byte ptr [si+1] + +loc_12C21: ; CODE XREF: sub_12B9E+7Ej + cmp byte ptr [si+1], 4 + jnz short loc_12C5C + push 7 + call sub_FA52 + add sp, 2 + jmp short loc_12C5C +; --------------------------------------------------------------------------- + +loc_12C33: ; CODE XREF: sub_12B9E+77j + cmp byte ptr [si+1], 4 + jnz short loc_12C47 + dec word ptr [si+8] + cmp word ptr [si+8], 0 + jnz short loc_12C5C + +loc_12C42: ; CODE XREF: sub_12B9E+71j + inc byte ptr [si+1] + jmp short loc_12C5C +; --------------------------------------------------------------------------- + +loc_12C47: ; CODE XREF: sub_12B9E+99j + test byte ptr dword_20612, 3 + jnz short loc_12C51 + inc byte ptr [si+1] + +loc_12C51: ; CODE XREF: sub_12B9E+AEj + cmp byte ptr [si+1], 9 + jnz short loc_12C5C + mov byte ptr [si], 2 + jmp short loc_12C60 +; --------------------------------------------------------------------------- + +loc_12C5C: ; CODE XREF: sub_12B9E+6Fj + ; sub_12B9E+87j ... + push si + call sub_12AE2 + +loc_12C60: ; CODE XREF: sub_12B9E+16j + ; sub_12B9E+60j ... + inc [bp+var_4] + add si, 0Ch + +loc_12C66: ; CODE XREF: sub_12B9E+10j + cmp [bp+var_4], 0Ch + jl loc_12BB1 + pop di + pop si + leave + retf +sub_12B9E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12C72 proc far ; CODE XREF: sub_B3DA+1B8P + +var_6 = word ptr -6 +var_4 = dword ptr -4 + + enter 6, 0 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 12FBh + les bx, [bp+var_4] + mov al, byte_1E365 + add al, 30h ; '0' + mov es:[bx+5], al + push word ptr [bp+var_4+2] + push bx + call sub_950 + call sub_9CE + mov [bp+var_6], ax + push ds + push offset unk_23A7A + push ax + call sub_89C + call sub_870 + mov byte_24E7A, 0 + leave + retf +sub_12C72 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12CB1 proc near ; CODE XREF: sub_12DE0+80p + ; sub_12E95+41p + push bp + mov bp, sp + call sub_74E + 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 + pop bp + retn +sub_12CB1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12CE5 proc near ; CODE XREF: sub_12DE0+9Ep + ; sub_12E95+5Fp + push bp + mov bp, sp + push si + mov si, word_205F8 + add si, word_20344 + cmp si, 190h + jl short loc_12CFB + sub si, 190h + +loc_12CFB: ; CODE XREF: sub_12CE5+10j + push word_205F6 + push si + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov si, [bx+2B8Ch] + add si, word_20344 + cmp si, 190h + jl short loc_12D23 + sub si, 190h + +loc_12D23: ; CODE XREF: sub_12CE5+38j + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + push si + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + push si + push 48h ; 'H' + call sub_3708 + pop si + pop bp + retn +sub_12CE5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12D56 proc near ; CODE XREF: sub_12D97+16p + ; sub_12D97+2Dp ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = dword ptr 0Ah + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + les bx, [bp+arg_6] + cmp word ptr es:[bx], 10h + jl short loc_12D8B + cmp word ptr es:[bx], 190h + jg short loc_12D8B + push word ptr es:[bx] + push [bp+arg_4] + push si + call sub_3146 + les bx, [bp+arg_6] + push word ptr es:[bx] + push [bp+arg_2] + lea ax, [si+8] + push ax + call sub_3146 + +loc_12D8B: ; CODE XREF: sub_12D56+Ej + ; sub_12D56+15j + les bx, [bp+arg_6] + add word ptr es:[bx], 20h ; ' ' + pop si + pop bp + retn 0Ah +sub_12D56 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12D97 proc near ; CODE XREF: sub_12DE0+A8p + ; sub_12E95+69p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_2] + mov si, 22h ; '"' + jmp short loc_12DB1 +; --------------------------------------------------------------------------- + +loc_12DA4: ; CODE XREF: sub_12D97+1Dj + push large [bp+arg_4] + push di + push [bp+arg_0] + push si + call sub_12D56 + inc si + +loc_12DB1: ; CODE XREF: sub_12D97+Bj + cmp si, 25h ; '%' + jl short loc_12DA4 + xor si, si + jmp short loc_12DC8 +; --------------------------------------------------------------------------- + +loc_12DBA: ; CODE XREF: sub_12D97+34j + push large [bp+arg_4] + push di + push [bp+arg_0] + push 25h ; '%' + call sub_12D56 + inc si + +loc_12DC8: ; CODE XREF: sub_12D97+21j + cmp si, 8 + jl short loc_12DBA + push large [bp+arg_4] + push di + push [bp+arg_0] + push 26h ; '&' + call sub_12D56 + pop di + pop si + pop bp + retn 8 +sub_12D97 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12DE0 proc near ; CODE XREF: sub_1273B+3p sub_12754+3p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov di, 20h ; ' ' + nop + push cs + call near ptr sub_FBE9 + call sub_DE4E + push word_20344 + call sub_1DD4 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + nop + push cs + call near ptr sub_FBE9 + mov si, 140h + add si, word_20344 + cmp si, 190h + jl short loc_12E24 + sub si, 190h + +loc_12E24: ; CODE XREF: sub_12DE0+3Ej + add di, si + cmp di, 190h + jl short loc_12E30 + sub di, 190h + +loc_12E30: ; CODE XREF: sub_12DE0+4Aj + mov [bp+var_4], 190h + cmp byte_2287E, 2 + jnz short loc_12E48 + mov byte_24E7B, 1 + mov byte_2287E, 0 + jmp short loc_12E8B +; --------------------------------------------------------------------------- + +loc_12E48: ; CODE XREF: sub_12DE0+5Aj + mov byte_24E7B, 0 + jmp short loc_12E8B +; --------------------------------------------------------------------------- + +loc_12E4F: ; CODE XREF: sub_12DE0+AFj + sub [bp+var_4], 10h + mov ax, [bp+var_4] + mov [bp+var_2], ax + push 1 + call sub_F618 + call sub_12CB1 + push large 200140h + push large 1800050h + call sub_45FC + call sub_4692 + call sub_764 + call sub_12CE5 + push ss + lea ax, [bp+var_2] + push ax + push si + push di + call sub_12D97 + +loc_12E8B: ; CODE XREF: sub_12DE0+66j + ; sub_12DE0+6Dj + cmp [bp+var_4], 20h ; ' ' + jg short loc_12E4F + pop di + pop si + leave + retn +sub_12DE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12E95 proc near ; CODE XREF: sub_12754+Bp + ; sub_13ADE+16p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov di, 20h ; ' ' + nop + push cs + call near ptr sub_FBE9 + mov si, 140h + add si, word_20344 + cmp si, 190h + jl short loc_12EB4 + sub si, 190h + +loc_12EB4: ; CODE XREF: sub_12E95+19j + add di, si + cmp di, 190h + jl short loc_12EC0 + sub di, 190h + +loc_12EC0: ; CODE XREF: sub_12E95+25j + mov [bp+var_4], 20h ; ' ' + +loc_12EC5: ; CODE XREF: sub_12E95+70j + sub [bp+var_4], 10h + mov ax, [bp+var_4] + mov [bp+var_2], ax + push 1 + call sub_F618 + call sub_12CB1 + push large 200140h + push large 1800050h + call sub_45FC + call sub_4692 + call sub_764 + call sub_12CE5 + push ss + lea ax, [bp+var_2] + push ax + push si + push di + call sub_12D97 + cmp [bp+var_2], 30h ; '0' + jge short loc_12EC5 + cmp byte_24E7B, 1 + jnz short loc_12F18 + mov byte_24E7B, 0 + mov byte_2287E, 2 + +loc_12F18: ; CODE XREF: sub_12E95+77j + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + pop di + pop si + leave + retn +sub_12E95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12F23 proc near ; CODE XREF: sub_13055+43p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov di, [bp+arg_0] + mov [bp+var_2], 0 + mov [bp+var_4], 0 + mov si, 148h + add si, word_20344 + cmp si, 190h + jl short loc_12F47 + sub si, 190h + +loc_12F47: ; CODE XREF: sub_12F23+1Ej + lea ax, [si+10h] + add [bp+var_2], ax + cmp [bp+var_2], 190h + jl short loc_12F59 + sub [bp+var_2], 190h + +loc_12F59: ; CODE XREF: sub_12F23+2Fj + mov ax, [bp+var_2] + add ax, 10h + add [bp+var_4], ax + cmp [bp+var_4], 190h + jl short loc_12F6E + sub [bp+var_4], 190h + +loc_12F6E: ; CODE XREF: sub_12F23+44j + cmp di, 0FFh + jnz short loc_12F94 + push large 0C00000h + call sub_127E + push 28h ; '(' + push si + push 57h ; 'W' + lea ax, [si+2Fh] + push ax + call sub_AB8 + call sub_12A8 + jmp short loc_13009 +; --------------------------------------------------------------------------- + +loc_12F94: ; CODE XREF: sub_12F23+4Fj + push 28h ; '(' + push si + push di + call sub_3998 + push 38h ; '8' + push si + lea ax, [di+1] + push ax + call sub_3998 + push 48h ; 'H' + push si + lea ax, [di+2] + push ax + call sub_3998 + push 28h ; '(' + push [bp+var_2] + lea ax, [di+10h] + push ax + call sub_3998 + push 38h ; '8' + push [bp+var_2] + lea ax, [di+11h] + push ax + call sub_3998 + push 48h ; 'H' + push [bp+var_2] + lea ax, [di+12h] + push ax + call sub_3998 + push 28h ; '(' + push [bp+var_4] + lea ax, [di+20h] + push ax + call sub_3998 + push 38h ; '8' + push [bp+var_4] + lea ax, [di+21h] + push ax + call sub_3998 + push 48h ; 'H' + push [bp+var_4] + lea ax, [di+22h] + push ax + call sub_3998 + +loc_13009: ; CODE XREF: sub_12F23+6Fj + pop di + pop si + leave + retn 2 +sub_12F23 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1300F proc near ; CODE XREF: sub_13055:loc_130CCp + +var_28 = byte ptr -28h +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch + + enter 28h, 0 + push si + lea ax, [bp+var_28] + push ss + push ax + push ds + push offset unk_1EB98 + mov cx, 28h ; '(' + call SCOPY@ + xor si, si + jmp short loc_13035 +; --------------------------------------------------------------------------- + +loc_13029: ; CODE XREF: sub_1300F+29j + les bx, [bp+arg_4] + add bx, si + mov al, es:[bx] + mov [bp+si+var_28], al + inc si + +loc_13035: ; CODE XREF: sub_1300F+18j + cmp si, [bp+arg_0] + jl short loc_13029 + push 0Eh + mov ax, [bp+arg_8] + add ax, 15h + push ax + push ss + lea ax, [bp+var_28] + push ax + push [bp+arg_2] + call sub_26CA + pop si + leave + retn 0Ah +sub_1300F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13055 proc near ; CODE XREF: sub_1310B+25p + ; sub_1314C+5p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + push large 0E0015h + push ds + push word_1EB96 + push 0E1h ; 'á' + call sub_26CA + push large 0E0016h + push ds + push word_1EB96 + push 0E1h ; 'á' + call sub_26CA + mov si, 6 + xor di, di + mov al, byte_24E7A + mov ah, 0 + mov [bp+var_4], ax + jmp short loc_130F7 +; --------------------------------------------------------------------------- + +loc_13090: ; CODE XREF: sub_13055+A5j + call sub_F62E + push [bp+arg_0] + call sub_12F23 + cmp si, 24h ; '$' + jg short loc_130B3 + push 0 + push ds + mov ax, [bp+var_4] + imul ax, 50h + add ax, 600Ah + push ax + push 0E1h ; 'á' + push si + jmp short loc_130CC +; --------------------------------------------------------------------------- + +loc_130B3: ; CODE XREF: sub_13055+49j + cmp si, 48h ; 'H' + jg short loc_130CF + push 1 + push ds + mov ax, [bp+var_4] + imul ax, 50h + add ax, 6032h + push ax + push 0E1h ; 'á' + lea ax, [si-24h] + push ax + +loc_130CC: ; CODE XREF: sub_13055+5Cj + call sub_1300F + +loc_130CF: ; CODE XREF: sub_13055+61j + inc di + cmp word_1FFA8, 0 + jz short loc_130DE + mov [bp+var_2], 1 + jmp short loc_130EA +; --------------------------------------------------------------------------- + +loc_130DE: ; CODE XREF: sub_13055+80j + mov [bp+var_2], 3 + push 1 + call sub_F618 + +loc_130EA: ; CODE XREF: sub_13055+87j + mov ax, di + cwd + idiv [bp+var_2] + or dx, dx + jnz short loc_130F7 + add si, 2 + +loc_130F7: ; CODE XREF: sub_13055+39j + ; sub_13055+9Dj + cmp si, 50h ; 'P' + jle short loc_13090 + call sub_F4BC + inc byte_24E7A + pop di + pop si + leave + retn 2 +sub_13055 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1310B proc near ; CODE XREF: sub_1273B+8p sub_12754+8p ... + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 2, 0 + push si + push di + mov di, [bp+arg_0] + mov al, byte_1E365 + cbw + add ax, ax + add ax, di + mov [bp+var_2], ax + xor si, si + jmp short loc_13134 +; --------------------------------------------------------------------------- + +loc_13123: ; CODE XREF: sub_1310B+39j + mov bx, [bp+var_2] + imul bx, 16h + mov al, [bx+si+115Ch] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_13134: ; CODE XREF: sub_1310B+16j + mov al, byte_1E365 + cbw + add ax, ax + mov bx, ax + mov al, [bx+di+1150h] + mov ah, 0 + cmp ax, si + jg short loc_13123 + pop di + pop si + leave + retn 2 +sub_1310B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1314C proc near ; CODE XREF: sub_1523C+Dp + push bp + mov bp, sp + push 0 + call sub_13055 + push 60h ; '`' + call sub_13055 + pop bp + retn +sub_1314C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1315B proc near ; CODE XREF: sub_1A7D5+24p + +var_8 = byte ptr -8 + + enter 8, 0 + push si + lea ax, [bp+var_8] + push ss + push ax + push ds + push offset unk_1ECD4 + mov cx, 8 + call SCOPY@ + xor si, si + jmp short loc_1317F +; --------------------------------------------------------------------------- + +loc_13175: ; CODE XREF: sub_1315B+27j + mov al, [bp+si+var_8] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_1317F: ; CODE XREF: sub_1315B+18j + cmp si, 8 + jl short loc_13175 + pop si + leave + retn +sub_1315B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13187 proc near ; CODE XREF: sub_1A7D5+157p + +var_C = byte ptr -0Ch + + enter 0Ch, 0 + push si + lea ax, [bp+var_C] + push ss + push ax + push ds + push offset unk_1ECDC + mov cx, 0Bh + call SCOPY@ + xor si, si + jmp short loc_131AB +; --------------------------------------------------------------------------- + +loc_131A1: ; CODE XREF: sub_13187+27j + mov al, [bp+si+var_C] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_131AB: ; CODE XREF: sub_13187+18j + cmp si, 0Bh + jl short loc_131A1 + push large 0E0015h + push ds + push word_1EB96 + push 0E1h ; 'á' + call sub_26CA + push large 0E0016h + push ds + push word_1EB96 + push 0E1h ; 'á' + call sub_26CA + pop si + leave + retn +sub_13187 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_131D9 proc near ; CODE XREF: sub_1C270+6p + +var_2E = byte ptr -2Eh +var_1A = byte ptr -1Ah +var_10 = byte ptr -10h +var_6 = byte ptr -6 + + enter 2Eh, 0 + push si + lea ax, [bp+var_2E] + push ss + push ax + push ds + push offset unk_1ECE8 + mov cx, 14h + call SCOPY@ + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_1ECFC + mov cx, 6 + call SCOPY@ + lea ax, [bp+var_10] + push ss + push ax + push ds + push offset unk_1ED02 + mov cx, 0Ah + call SCOPY@ + lea ax, [bp+var_1A] + push ss + push ax + push ds + push offset unk_1ED0C + mov cx, 0Ah + call SCOPY@ + push 1 + call sub_1310B + les bx, dword_2026C + cmp word ptr es:[bx+12h], 0 + jz loc_13304 + xor si, si + jmp short loc_13248 +; --------------------------------------------------------------------------- + +loc_13238: ; CODE XREF: sub_131D9+72j + mov bx, si + add bx, bx + lea ax, [bp+var_6] + add bx, ax + push word ptr ss:[bx] + call sub_13055 + inc si + +loc_13248: ; CODE XREF: sub_131D9+5Dj + cmp si, 3 + jl short loc_13238 + les bx, dword_2026C + mov ax, es:[bx+12h] + mov bx, 0Ah + xor dx, dx + div bx + mov si, ax + or si, si + jz short loc_1329D + mov bx, si + add bx, bx + lea ax, [bp+var_2E] + add bx, ax + mov bx, ss:[bx] + mov al, [bx] + mov dl, byte_24E7A + mov dh, 0 + imul dx, 50h + mov bx, dx + mov [bx+6012h], al + mov bx, si + add bx, bx + lea ax, [bp+var_2E] + add bx, ax + mov bx, ss:[bx] + mov al, [bx+1] + mov dl, byte_24E7A + mov dh, 0 + imul dx, 50h + mov bx, dx + mov [bx+6013h], al + +loc_1329D: ; CODE XREF: sub_131D9+87j + les bx, dword_2026C + mov ax, es:[bx+12h] + mov bx, 0Ah + xor dx, dx + div bx + mov si, dx + mov bx, si + add bx, bx + lea ax, [bp+var_2E] + add bx, ax + mov bx, ss:[bx] + mov al, [bx] + mov dl, byte_24E7A + mov dh, 0 + imul dx, 50h + mov bx, dx + mov [bx+6014h], al + mov bx, si + add bx, bx + lea ax, [bp+var_2E] + add bx, ax + mov bx, ss:[bx] + mov al, [bx+1] + mov dl, byte_24E7A + mov dh, 0 + imul dx, 50h + mov bx, dx + mov [bx+6015h], al + xor si, si + jmp short loc_132FD +; --------------------------------------------------------------------------- + +loc_132ED: ; CODE XREF: sub_131D9+127j + mov bx, si + add bx, bx + lea ax, [bp+var_10] + add bx, ax + push word ptr ss:[bx] + call sub_13055 + inc si + +loc_132FD: ; CODE XREF: sub_131D9+112j + cmp si, 5 + jl short loc_132ED + jmp short loc_13325 +; --------------------------------------------------------------------------- + +loc_13304: ; CODE XREF: sub_131D9+57j + mov al, byte_24E7A + add al, 8 + mov byte_24E7A, al + xor si, si + jmp short loc_13320 +; --------------------------------------------------------------------------- + +loc_13310: ; CODE XREF: sub_131D9+14Aj + mov bx, si + add bx, bx + lea ax, [bp+var_1A] + add bx, ax + push word ptr ss:[bx] + call sub_13055 + inc si + +loc_13320: ; CODE XREF: sub_131D9+135j + cmp si, 5 + jl short loc_13310 + +loc_13325: ; CODE XREF: sub_131D9+129j + pop si + leave + retn +sub_131D9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13328 proc near ; CODE XREF: sub_199B3+1Ep + push bp + mov bp, sp + push 6 + call sub_13055 + push 69h ; 'i' + call sub_13055 + pop bp + retn +sub_13328 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13337 proc near ; CODE XREF: sub_199B3+72p + +var_28 = byte ptr -28h +var_16 = byte ptr -16h + + enter 28h, 0 + push si + lea ax, [bp+var_16] + push ss + push ax + push ds + push offset unk_1ED16 + mov cx, 16h + call SCOPY@ + lea ax, [bp+var_28] + push ss + push ax + push ds + push offset unk_1ED2C + mov cx, 11h + call SCOPY@ + push 6 + call sub_13055 + push 69h ; 'i' + call sub_13055 + les bx, dword_2026C + cmp word ptr es:[bx+12h], 0 + jz short loc_13390 + xor si, si + jmp short loc_13381 +; --------------------------------------------------------------------------- + +loc_13377: ; CODE XREF: sub_13337+4Dj + mov al, [bp+si+var_16] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_13381: ; CODE XREF: sub_13337+3Ej + cmp si, 16h + jl short loc_13377 + mov al, byte_24E7A + add al, 11h + mov byte_24E7A, al + jmp short loc_133AB +; --------------------------------------------------------------------------- + +loc_13390: ; CODE XREF: sub_13337+3Aj + mov al, byte_24E7A + add al, 16h + mov byte_24E7A, al + xor si, si + jmp short loc_133A6 +; --------------------------------------------------------------------------- + +loc_1339C: ; CODE XREF: sub_13337+72j + mov al, [bp+si+var_28] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_133A6: ; CODE XREF: sub_13337+63j + cmp si, 11h + jl short loc_1339C + +loc_133AB: ; CODE XREF: sub_13337+57j + pop si + leave + retn +sub_13337 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_133AE proc near ; CODE XREF: sub_199B3+192p + push bp + mov bp, sp + push 69h ; 'i' + call sub_13055 + pop bp + retn +sub_133AE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_133B8 proc near ; CODE XREF: sub_19C8D+85p + +var_A = dword ptr -0Ah +var_6 = byte ptr -6 + + enter 0Ah, 0 + push si + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_1ED3D + mov cx, 5 + call SCOPY@ + mov eax, dword_1ED42 + mov [bp+var_A], eax + les bx, dword_2026C + cmp word ptr es:[bx+12h], 0 + jz short loc_133F6 + xor si, si + jmp short loc_133EF +; --------------------------------------------------------------------------- + +loc_133E5: ; CODE XREF: sub_133B8+3Aj + mov al, [bp+si+var_6] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_133EF: ; CODE XREF: sub_133B8+2Bj + cmp si, 5 + jl short loc_133E5 + jmp short loc_13411 +; --------------------------------------------------------------------------- + +loc_133F6: ; CODE XREF: sub_133B8+27j + mov al, byte_24E7A + add al, 5 + mov byte_24E7A, al + xor si, si + jmp short loc_1340C +; --------------------------------------------------------------------------- + +loc_13402: ; CODE XREF: sub_133B8+57j + mov al, byte ptr [bp+si+var_A] + mov ah, 0 + push ax + call sub_13055 + inc si + +loc_1340C: ; CODE XREF: sub_133B8+48j + cmp si, 4 + jl short loc_13402 + +loc_13411: ; CODE XREF: sub_133B8+3Cj + pop si + leave + retn +sub_133B8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13414 proc near ; CODE XREF: sub_13439+16p + ; sub_13439+2Cp ... + push bp + mov bp, sp + push 0 + call sub_289C + call sub_FA46 + push 5 + call sub_FA52 + pop cx + call sub_FA8A + push 0 + call sub_285C + pop bp + retn +sub_13414 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13439 proc near ; CODE XREF: sub_19D96+78p + push bp + mov bp, sp + nop + push cs + call near ptr sub_FBE9 + push 100h + call sub_F9F6 + pop cx + push 69h ; 'i' + call sub_13055 + call sub_13414 + push 0Ah + call sub_F618 + push 69h ; 'i' + call sub_13055 + push 1Eh + call sub_F618 + call sub_13414 + push 14h + call sub_F618 + push 69h ; 'i' + call sub_13055 + push 14h + call sub_F618 + push 69h ; 'i' + call sub_13055 + call sub_13414 + push 14h + call sub_F618 + call sub_13414 + push 14h + call sub_F618 + call sub_13414 + push 3 + call sub_289C + pop bp + retn +sub_13439 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_134A0 proc near ; CODE XREF: sub_1696B+42p + push bp + mov bp, sp + push 0FFh + call sub_13055 + push 0 + call sub_13055 + push 0FFh + call sub_13055 + pop bp + retn +sub_134A0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_134B6 proc near ; CODE XREF: sub_13671+F7p + ; sub_140AE+41p + +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov di, [bp+arg_2] + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 7416h + xor si, si + jmp short loc_13508 +; --------------------------------------------------------------------------- + +loc_134CD: ; CODE XREF: sub_134B6+55j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_13503 + les bx, [bp+var_4] + mov byte ptr es:[bx], 1 + mov es:[bx+2], di + mov ax, [bp+arg_0] + mov es:[bx+6], ax + mov es:[bx+4], di + mov es:[bx+8], ax + push 3 + call sub_FAD5 + mov ah, 0 + add ax, 3 + les bx, [bp+var_4] + mov es:[bx+0Ah], ax + jmp short loc_1350D +; --------------------------------------------------------------------------- + +loc_13503: ; CODE XREF: sub_134B6+1Ej + inc si + add word ptr [bp+var_4], 0Ch + +loc_13508: ; CODE XREF: sub_134B6+15j + cmp si, 32h ; '2' + jl short loc_134CD + +loc_1350D: ; CODE XREF: sub_134B6+4Bj + pop di + pop si + leave + retn 4 +sub_134B6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13513 proc far ; DATA XREF: sub_B3DA+31Eo + +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 4 + push si + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 7416h + xor si, si + jmp loc_135B1 +; --------------------------------------------------------------------------- + +loc_13527: ; CODE XREF: sub_13513+A1j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jz short loc_135AC + mov al, byte_20618 + mov ah, 0 + add ax, ax + les bx, [bp+var_4] + add bx, ax + push word ptr es:[bx+2] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, word ptr [bp+var_4] + add bx, ax + push word ptr es:[bx+6] + push large 20003h + call sub_45FC + les bx, [bp+var_4] + cmp byte ptr es:[bx], 2 + jnz short loc_1356A + mov byte ptr es:[bx], 0 + jmp short loc_135AC +; --------------------------------------------------------------------------- + +loc_1356A: ; CODE XREF: sub_13513+4Fj + mov al, byte_20619 + mov ah, 0 + add ax, ax + les bx, [bp+var_4] + add bx, ax + mov ax, es:[bx+2] + mov dl, byte_20618 + mov dh, 0 + add dx, dx + mov bx, word ptr [bp+var_4] + add bx, dx + mov es:[bx+2], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, word ptr [bp+var_4] + add bx, ax + mov ax, es:[bx+6] + mov dl, byte_20618 + mov dh, 0 + add dx, dx + mov bx, word ptr [bp+var_4] + add bx, dx + mov es:[bx+6], ax + +loc_135AC: ; CODE XREF: sub_13513+1Bj + ; sub_13513+55j + inc si + add word ptr [bp+var_4], 0Ch + +loc_135B1: ; CODE XREF: sub_13513+11j + cmp si, 32h ; '2' + jl loc_13527 + pop si + leave + retf +sub_13513 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_135BB proc near ; CODE XREF: sub_13671+110p + ; sub_140AE+57p + +var_6 = dword ptr -6 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov word ptr [bp+var_6+2], ds + mov word ptr [bp+var_6], 7416h + mov [bp+var_2], 0 + jmp loc_13660 +; --------------------------------------------------------------------------- + +loc_135D3: ; CODE XREF: sub_135BB+A9j + les bx, [bp+var_6] + cmp byte ptr es:[bx], 1 + jnz short loc_13659 + les bx, [bp+var_6] + mov ax, es:[bx+0Ah] + mov dl, byte_20618 + mov dh, 0 + add dx, dx + add bx, dx + sub es:[bx+2], ax + mov bx, word ptr [bp+var_6] + mov dl, byte_20618 + mov dh, 0 + add dx, dx + add bx, dx + add es:[bx+6], ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, word ptr [bp+var_6] + add bx, ax + mov di, es:[bx+2] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, word ptr [bp+var_6] + add bx, ax + mov si, es:[bx+6] + cmp di, 20h ; ' ' + jge short loc_13630 + mov bx, word ptr [bp+var_6] + mov byte ptr es:[bx], 2 + jmp short loc_13659 +; --------------------------------------------------------------------------- + +loc_13630: ; CODE XREF: sub_135BB+6Aj + cmp si, 180h + jge short loc_13659 + cmp di, 1A0h + jge short loc_13659 + add si, word_20344 + cmp si, 190h + jl short loc_1364A + sub si, 190h + +loc_1364A: ; CODE XREF: sub_135BB+89j + mov word_20164, di + mov word_20166, si + push 2 + call sub_3E6A + +loc_13659: ; CODE XREF: sub_135BB+1Fj + ; sub_135BB+73j ... + inc [bp+var_2] + add word ptr [bp+var_6], 0Ch + +loc_13660: ; CODE XREF: sub_135BB+15j + cmp [bp+var_2], 32h ; '2' + jl loc_135D3 + call sub_12A8 + pop di + pop si + leave + retn +sub_135BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13671 proc far ; DATA XREF: sub_B3DA+2B6o + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = byte ptr -2 + + push bp + mov bp, sp + sub sp, 4 + cmp word_1ED94, 3E7h + jge loc_13739 + cmp word_1ED94, 0 + jz loc_13739 + inc word_1ED94 + mov ax, word_1ED94 + mov bx, 10h + cwd + idiv bx + add al, 90h ; '' + mov [bp+var_3], al + mov ax, word_1ED94 + mov bx, 8 + cwd + idiv bx + add al, 90h ; '' + mov [bp+var_2], al + mov byte_1F520, 0B0h ; '°' + mov al, [bp+var_3] + mov byte_1F521, al + mov al, [bp+var_2] + mov byte_1F522, al + mov ax, word_1ED94 + mov bx, 10h + cwd + idiv bx + mov dl, 0A0h ; ' ' + sub dl, al + mov [bp+var_4], dl + mov ax, word_1ED94 + cwd + idiv bx + mov dl, 0A0h ; ' ' + sub dl, al + mov [bp+var_3], dl + mov ax, word_1ED94 + mov bx, 4 + cwd + idiv bx + mov dl, 0FFh + sub dl, al + mov [bp+var_2], dl + mov al, [bp+var_4] + mov byte_1F52F, al + mov al, [bp+var_3] + mov byte_1F530, al + mov al, [bp+var_2] + mov byte_1F531, al + cmp [bp+var_4], 80h ; '€' + ja short loc_13732 + mov word_1ED94, 3E8h + push large 200000h + push large 1A0018Fh + call sub_F1E + mov byte_1F532, 0E0h ; 'à' + mov byte_1F533, 0C0h ; 'À' + mov byte_1F534, 0B0h ; '°' + mov word_1EB0A, 0FFFFh + mov word_1EDA4, 1 + +loc_13732: ; CODE XREF: sub_13671+8Dj + call far ptr loc_1EF6 + leave + retf +; --------------------------------------------------------------------------- + +loc_13739: ; CODE XREF: sub_13671+Cj + ; sub_13671+15j + cmp word_1ED94, 3E8h + jl short locret_13784 + call sub_1403E + inc word_1ED94 + mov al, byte_2066C + mov ah, 0 + add ax, ax + add ax, 3EAh + cmp ax, word_1ED94 + jge short loc_13771 + call sub_FAED + mov bx, 280h + xor dx, dx + div bx + add dx, 30h ; '0' + push dx + push 10h + call sub_134B6 + mov word_1ED94, 3E8h + +loc_13771: ; CODE XREF: sub_13671+E5j + call sub_764 + push large 0C00008h + call sub_127E + call sub_135BB + +locret_13784: ; CODE XREF: sub_13671+CEj + leave + retf +sub_13671 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13786 proc far ; DATA XREF: sub_B3DA+26Eo + push bp + mov bp, sp + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + cmp byte_2066A, 0 + jz short loc_137BE + mov bx, word_2065C + mov ax, [bx] + add ax, 0FFF0h + push ax + mov bx, word_2065E + push word ptr [bx] + push 60h ; '`' + jmp short loc_137CC +; --------------------------------------------------------------------------- + +loc_137BE: ; CODE XREF: sub_13786+22j + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push 40h ; '@' + +loc_137CC: ; CODE XREF: sub_13786+36j + push 60h ; '`' + call sub_45FC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + mov ax, word_24E82 + pop bp + retf +sub_13786 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_137FE proc near ; CODE XREF: sub_13909+9Bp + push bp + mov bp, sp + push si + push di + mov di, 0Ah + mov ax, word_1ED96 + sar ax, 3 + add di, ax + inc word_1ED96 + mov bx, word_2065C + mov ax, [bx] + add ax, 20h ; ' ' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 30h ; '0' + push ax + push large 3C0001h + push 0 + call sub_4090 + cmp word_1ED96, 40h ; '@' + jl short loc_1387B + mov bx, word_2065C + mov ax, [bx] + add ax, 20h ; ' ' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 30h ; '0' + push ax + push large 800030h + push 1 + call sub_4090 + mov word_1ED96, 0 + mov word_20650, 0 + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + mov word_24E82, 0 + jmp short loc_138AF +; --------------------------------------------------------------------------- + +loc_1387B: ; CODE XREF: sub_137FE+3Aj + test byte ptr word_1ED96, 3 + jnz short loc_13888 + mov bx, word_2065E + inc word ptr [bx] + +loc_13888: ; CODE XREF: sub_137FE+82j + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_1389C + sub si, 190h + +loc_1389C: ; CODE XREF: sub_137FE+98j + mov bx, word_2065C + mov ax, [bx] + add ax, 0FFF0h + push ax + push si + push di + push 3 + call sub_38BC + +loc_138AF: ; CODE XREF: sub_137FE+7Bj + pop di + pop si + pop bp + retn +sub_137FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_138B3 proc near ; CODE XREF: sub_13909:loc_139AAp + push bp + mov bp, sp + push si + mov bx, word_2065E + mov ax, [bx] + add ax, 58h ; 'X' + mov si, ax + test byte ptr word_20650, 7Fh + jz short loc_138F2 + mov ax, word_20650 + and ax, 7Fh + cmp ax, 30h ; '0' + jnz short loc_138E7 + mov bx, word_2065C + mov ax, [bx] + add ax, 1Ch + push ax + push si + push 0 + push 0Bh + push 1Eh + jmp short loc_13903 +; --------------------------------------------------------------------------- + +loc_138E7: ; CODE XREF: sub_138B3+1Fj + mov ax, word_20650 + and ax, 7Fh + cmp ax, 60h ; '`' + jnz short loc_13906 + +loc_138F2: ; CODE XREF: sub_138B3+14j + mov bx, word_2065C + mov ax, [bx] + add ax, 1Ch + push ax + push si + push 0 + push 12h + push 32h ; '2' + +loc_13903: ; CODE XREF: sub_138B3+32j + call sub_1078E + +loc_13906: ; CODE XREF: sub_138B3+3Dj + pop si + pop bp + retn +sub_138B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13909 proc far ; DATA XREF: sub_B3DA+27Ao + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + mov word_205D8, 0D8h ; 'Ø' + mov word_205DA, 40h ; '@' + inc word_20650 + cmp word_20650, 1 + jnz short loc_1395A + mov word_20652, 0C0h ; 'À' + mov word_20654, 0C0h ; 'À' + mov word_20656, 0FFF0h + mov word_20658, 0FFF0h + mov word_2065A, 0 + mov word_24E84, 94h ; '”' + mov word_24E82, 1 + mov word_1ED94, 1 + jmp loc_13AB8 +; --------------------------------------------------------------------------- + +loc_1395A: ; CODE XREF: sub_13909+1Cj + cmp word_20650, 12h + jge short loc_13988 + mov bx, word_2065E + add word ptr [bx], 2 + mov si, [bx] + add si, word_20344 + or si, si + jge short loc_13979 + add si, 190h + jmp loc_13AA8 +; --------------------------------------------------------------------------- + +loc_13979: ; CODE XREF: sub_13909+67j + cmp si, 190h + jl loc_13AA8 + sub si, 190h + jmp loc_13AA8 +; --------------------------------------------------------------------------- + +loc_13988: ; CODE XREF: sub_13909+56j + test byte ptr word_20344, 1 + jz short loc_13997 + mov word_24E84, 95h ; '•' + jmp short loc_1399D +; --------------------------------------------------------------------------- + +loc_13997: ; CODE XREF: sub_13909+84j + mov word_24E84, 94h ; '”' + +loc_1399D: ; CODE XREF: sub_13909+8Cj + cmp byte_2066A, 0 + jz short loc_139AA + call sub_137FE + jmp loc_13AB8 +; --------------------------------------------------------------------------- + +loc_139AA: ; CODE XREF: sub_13909+99j + call sub_138B3 + test byte ptr word_20344, 0Fh + jnz short loc_13A09 + mov si, 30h ; '0' + add si, word_20344 + cmp si, 190h + jl short loc_139C5 + sub si, 190h + +loc_139C5: ; CODE XREF: sub_13909+B6j + mov bx, word_2065C + push word ptr [bx] + push si + push 3Ch ; '<' + call sub_480C + mov bx, word_2065C + mov ax, [bx] + add ax, 10h + push ax + push si + push 3Dh ; '=' + call sub_480C + mov bx, word_2065C + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push si + push 3Eh ; '>' + call sub_480C + mov bx, word_2065C + mov ax, [bx] + add ax, 30h ; '0' + push ax + push si + push 3Fh ; '?' + call sub_480C + +loc_13A09: ; CODE XREF: sub_13909+A9j + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_13A1D + sub si, 190h + +loc_13A1D: ; CODE XREF: sub_13909+10Ej + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 400060h + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_13A85 + add word_2065A, ax + cmp word_2065A, 12Ch + jle short loc_13A4B + cmp si, 130h + jl short loc_13A6B + +loc_13A4B: ; CODE XREF: sub_13909+13Aj + push 4 + call sub_FA52 + add sp, 2 + mov bx, word_2065C + push word ptr [bx] + push si + push large 940000h + push 0FFC0h + call far ptr loc_2F80 + jmp short loc_13AB8 +; --------------------------------------------------------------------------- + +loc_13A6B: ; CODE XREF: sub_13909+140j + push 2 + call sub_FA52 + add sp, 2 + mov byte_2066A, 1 + add dword_218AC, 2710h + jmp short loc_13AB8 +; --------------------------------------------------------------------------- + +loc_13A85: ; CODE XREF: sub_13909+12Ej + cmp word_2034A, 0B8h ; '¸' + jl short loc_13AA8 + mov bx, word_2065E + cmp word ptr [bx], 130h + jg short loc_13AA8 + push 2 + call sub_FA52 + add sp, 2 + mov byte_2066A, 1 + jmp short loc_13AB8 +; --------------------------------------------------------------------------- + +loc_13AA8: ; CODE XREF: sub_13909+6Dj + ; sub_13909+74j ... + mov bx, word_2065C + push word ptr [bx] + push si + push word_24E84 + call sub_3146 + +loc_13AB8: ; CODE XREF: sub_13909+4Ej + ; sub_13909+9Ej ... + pop si + leave + retf +sub_13909 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13ABB proc far ; CODE XREF: sub_B3DA+540P + ; sub_12754+14p ... + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push 100h + call sub_F9F6 + push 600h + push large [bp+arg_0] + call sub_F7FA + push 0 + call sub_F9F6 + add sp, 0Ah + pop bp + retf +sub_13ABB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13ADE proc far ; DATA XREF: sub_B3DA+286o + push bp + mov bp, sp + push ds + push offset aBoss1_m ; "boss1.m" + push cs + call near ptr sub_13ABB + add sp, 4 + call sub_12DE0 + push 0 + call sub_1310B + call sub_12E95 + mov byte_1E510, 20h ; ' ' + mov word_20652, 0C0h ; 'À' + mov word_20654, 0C0h ; 'À' + mov word_2065A, 0 + mov byte_2066A, 0 + mov word_2064E, 96h ; '–' + mov dword_20612, 0 + mov word_24E80, 0 + nop + push cs + call near ptr sub_129FC + mov word_2064E, 96h ; '–' + mov word_24E7E, 30h ; '0' + mov ax, word_20344 + add word_24E7E, ax + cmp word_24E7E, 190h + jl short loc_13B4E + sub word_24E7E, 190h + +loc_13B4E: ; CODE XREF: sub_13ADE+68j + cmp byte_1E364, 0 + jz short loc_13B70 + mov byte ptr word_2066E, 0Bh + mov byte ptr word_2066E+1, 15h + mov byte ptr word_20670, 20h ; ' ' + mov byte ptr word_20670+1, 2 + mov byte_20672, 3 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_13B70: ; CODE XREF: sub_13ADE+75j + mov byte ptr word_2066E, 19h + mov byte ptr word_2066E+1, 15h + mov byte ptr word_20670, 20h ; ' ' + mov byte ptr word_20670+1, 20h ; ' ' + mov byte_20672, 7 + pop bp + retf +sub_13ADE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13B8B proc far ; DATA XREF: sub_B3DA+292o + push bp + mov bp, sp + call sub_12DE0 + push 1 + call sub_1310B + call sub_FC53 + call sub_F4BC + call sub_E162 + inc byte_1E365 + mov word_1EB0A, 0 + mov word_1EDA4, 0 + pop bp + retf +sub_13B8B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13BB5 proc far ; DATA XREF: sub_B3DA+29Eo + push bp + mov bp, sp + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov bx, word_2065C + push word ptr [bx] + push large 300040h + push 60h ; '`' + call sub_45FC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + cmp word_24E80, 0 + jnz short loc_13C0A + cmp word_20650, 3 + jge short loc_13C0A + push large 0D00010h + push large 200020h + call sub_45FC + +loc_13C0A: ; CODE XREF: sub_13BB5+3Bj + ; sub_13BB5+42j + pop bp + retf +sub_13BB5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13C0C proc near ; CODE XREF: seg003:loc_1402Dp + push bp + mov bp, sp + push si + mov ax, word_24E7C + add ax, 20h ; ' ' + push ax + push large 800032h + push large 20000h + call sub_4090 + mov si, 0Ah + mov ax, word_1ED98 + add ax, 0FFE0h + mov bx, 8 + cwd + idiv bx + add si, ax + inc word_1ED98 + cmp word_1ED98, 50h ; 'P' + jl short loc_13C4F + mov word_1ED98, 0 + mov ax, 1 + jmp short loc_13C8E +; --------------------------------------------------------------------------- + +loc_13C4F: ; CODE XREF: sub_13C0C+36j + cmp word_20650, 20h ; ' ' + jge short loc_13C69 + push word_24E7C + push word_24E7E + push word_2064E + call sub_3146 + jmp short loc_13C7C +; --------------------------------------------------------------------------- + +loc_13C69: ; CODE XREF: sub_13C0C+48j + push word_24E7C + mov ax, word_24E7E + add ax, 10h + push ax + push si + push 2 + call sub_38BC + +loc_13C7C: ; CODE XREF: sub_13C0C+5Bj + mov ax, word_24E7C + add ax, 18h + push ax + push 70h ; 'p' + push word_1ED98 + call sub_FFF8 + xor ax, ax + +loc_13C8E: ; CODE XREF: sub_13C0C+41j + pop si + pop bp + retn +sub_13C0C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13C91 proc near ; CODE XREF: seg003:loc_14028p + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + mov ax, word_24E7C + add ax, 1Ch + mov si, ax + cmp word_2065A, 2BCh + jge short loc_13CE0 + mov word_24E80, 0 + test byte ptr word_20650, 3Fh + jnz loc_13ECA + push 3 + call sub_FA52 + add sp, 2 + push si + push 70h ; 'p' + push 0 + push word_2066E + push 32h ; '2' + call sub_1078E + push si + push 70h ; 'p' + push 40h ; '@' + push word_2066E+1 + push 1Eh + call sub_1078E + jmp loc_13ECA +; --------------------------------------------------------------------------- + +loc_13CE0: ; CODE XREF: sub_13C91+15j + cmp word_2065A, 578h + jge short loc_13D63 + test byte ptr dword_20612, 1Fh + jnz loc_13ECA + mov al, byte ptr word_250DE + add al, 18h + mov byte ptr word_250DE, al + mov ah, 0 + mov bx, 80h ; '€' + cwd + idiv bx + mov byte ptr word_250DE, dl + mov ax, word_24E7C + add ax, 8 + mov si, ax + push 3 + call sub_FA52 + add sp, 2 + push si + push 70h ; 'p' + push word_250DE + push word_20670 + push 36h ; '6' + call sub_1078E + push si + push 70h ; 'p' + push word_250DE + push word_20670+1 + push 2Ch ; ',' + call sub_1078E + add si, 2Ch ; ',' + push si + push 70h ; 'p' + mov al, 80h ; '€' + sub al, byte ptr word_250DE + push ax + push word_20670 + push 36h ; '6' + call sub_1078E + push si + push 70h ; 'p' + mov al, 80h ; '€' + sub al, byte ptr word_250DE + push ax + push word_20670+1 + push 2Ch ; ',' + call sub_1078E + jmp loc_13ECA +; --------------------------------------------------------------------------- + +loc_13D63: ; CODE XREF: sub_13C91+55j + cmp word_24E80, 0 + jnz short loc_13D7B + mov word_24E80, 1 + mov word_250E0, 0 + mov byte ptr word_250DE, 0 + +loc_13D7B: ; CODE XREF: sub_13C91+D7j + inc word_250E0 + cmp word_250E0, 64h ; 'd' + jnb short loc_13DB5 + mov ax, word_250E0 + and ax, 7 + cmp ax, 4 + jnb short loc_13D99 + mov word_2064E, 96h ; '–' + jmp short loc_13D9F +; --------------------------------------------------------------------------- + +loc_13D99: ; CODE XREF: sub_13C91+FEj + mov word_2064E, 97h ; '—' + +loc_13D9F: ; CODE XREF: sub_13C91+106j + test byte ptr word_250E0, 1Fh + jnz loc_13ECA + push 9 + call sub_FA52 + add sp, 2 + jmp loc_13ECA +; --------------------------------------------------------------------------- + +loc_13DB5: ; CODE XREF: sub_13C91+F3j + cmp word_250E0, 64h ; 'd' + jnz short loc_13DF9 + test byte ptr word_250E0, 1Fh + jnz short loc_13DCD + push 9 + call sub_FA52 + add sp, 2 + +loc_13DCD: ; CODE XREF: sub_13C91+130j + mov byte_23A70, 40h ; '@' + mov ax, word_24E7C + add ax, 2 + push ax + push large 7000A0h + push 6Fh ; 'o' + call sub_12A19 + mov ax, word_24E7C + add ax, 2Eh ; '.' + push ax + push large 7000A0h + push 6Fh ; 'o' + call sub_12A19 + jmp loc_13ECA +; --------------------------------------------------------------------------- + +loc_13DF9: ; CODE XREF: sub_13C91+129j + cmp word_250E0, 0A4h ; '¤' + jbe loc_13EA7 + cmp word_250E0, 118h + jnb loc_13EA7 + cmp word_250E0, 0FAh ; 'ú' + jnb short loc_13E30 + mov ax, word_250E0 + and ax, 7 + cmp ax, 4 + jnb short loc_13E28 + mov word_2064E, 96h ; '–' + jmp short loc_13E4E +; --------------------------------------------------------------------------- + +loc_13E28: ; CODE XREF: sub_13C91+18Dj + mov word_2064E, 97h ; '—' + jmp short loc_13E4E +; --------------------------------------------------------------------------- + +loc_13E30: ; CODE XREF: sub_13C91+182j + cmp word_250E0, 104h + jnz short loc_13E40 + mov word_2064E, 98h ; '˜' + jmp short loc_13E4E +; --------------------------------------------------------------------------- + +loc_13E40: ; CODE XREF: sub_13C91+1A5j + cmp word_250E0, 10Eh + jnz short loc_13E4E + mov word_2064E, 99h ; '™' + +loc_13E4E: ; CODE XREF: sub_13C91+195j + ; sub_13C91+19Dj ... + test byte ptr word_250E0, 0Fh + jnz short loc_13E5F + push 6 + call sub_FA52 + add sp, 2 + +loc_13E5F: ; CODE XREF: sub_13C91+1C2j + test byte ptr word_250E0, 0Fh + jnz short loc_13ECA + test byte ptr word_250E0, 3Fh + jz short loc_13E83 + mov ax, word_250E0 + and ax, 3Fh + cmp ax, 10h + jz short loc_13E94 + mov ax, word_250E0 + and ax, 3Fh + cmp ax, 20h ; ' ' + jnz short loc_13E89 + +loc_13E83: ; CODE XREF: sub_13C91+1DAj + mov [bp+var_1], 0Fh + jmp short loc_13E98 +; --------------------------------------------------------------------------- + +loc_13E89: ; CODE XREF: sub_13C91+1F0j + mov ax, word_250E0 + and ax, 3Fh + cmp ax, 30h ; '0' + jnz short loc_13E98 + +loc_13E94: ; CODE XREF: sub_13C91+1E5j + mov [bp+var_1], 0Eh + +loc_13E98: ; CODE XREF: sub_13C91+1F6j + ; sub_13C91+201j + push si + push 70h ; 'p' + push 40h ; '@' + push word ptr [bp+var_1] + push 3Ah ; ':' + call sub_1078E + jmp short loc_13ECA +; --------------------------------------------------------------------------- + +loc_13EA7: ; CODE XREF: sub_13C91+16Ej + ; sub_13C91+178j + cmp word_250E0, 118h + jb short loc_13ECA + mov al, byte_20672 + mov ah, 0 + test word_250E0, ax + jnz short loc_13ECA + push si + push 48h ; 'H' + push 1 + push 1Ch + push large 50002Ch + call sub_10865 + +loc_13ECA: ; CODE XREF: sub_13C91+22j + ; sub_13C91+4Cj ... + pop si + leave + retn +sub_13C91 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13ECD proc far ; CODE XREF: seg003:4550p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push word_24E7C + push large 300040h + push 60h ; '`' + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_13F30 + add word_2065A, ax + cmp word_2065A, 8D4h + jg short loc_13F18 + push 4 + call sub_FA52 + add sp, 2 + push word_24E7C + push word_24E7E + push word_2064E + push large 0FFC0h + call far ptr loc_2F80 + jmp short loc_13F2B +; --------------------------------------------------------------------------- + +loc_13F18: ; CODE XREF: sub_13ECD+26j + mov byte_2066A, 1 + add dword_218AC, 4E20h + mov byte_20605, 0C8h ; 'È' + +loc_13F2B: ; CODE XREF: sub_13ECD+49j + mov ax, 1 + leave + retf +; --------------------------------------------------------------------------- + +loc_13F30: ; CODE XREF: sub_13ECD+1Aj + xor ax, ax + leave + retf +sub_13ECD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13F34 proc far ; CODE XREF: seg003:4543p + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + cmp word_24E80, 0 + jnz short loc_13FA5 + cmp word_20650, 10h + jge short loc_13F80 + test byte ptr word_20650, 3 + jnz locret_13FE3 + mov al, byte_1E364 + cbw + cmp ax, 2 + jl short loc_13F62 + mov al, byte ptr word_20650 + mov [bp+var_1], al + jmp short loc_13F66 +; --------------------------------------------------------------------------- + +loc_13F62: ; CODE XREF: sub_13F34+24j + mov [bp+var_1], 0 + +loc_13F66: ; CODE XREF: sub_13F34+2Cj + push large 0E40070h + push word ptr [bp+var_1] + push 25h ; '%' + mov ax, word_20650 + shl ax, 2 + add ax, 28h ; '(' + push ax + call sub_1078E + leave + retf +; --------------------------------------------------------------------------- + +loc_13F80: ; CODE XREF: sub_13F34+12j + cmp word_20650, 74h ; 't' + jl short loc_13FC6 + cmp word_20650, 13Ch + jl short loc_13FB6 + cmp word_20650, 1A0h + jl short loc_13F9D + mov word_20650, 10h + +loc_13F9D: ; CODE XREF: sub_13F34+61j + mov bx, word_2065C + dec word ptr [bx] + leave + retf +; --------------------------------------------------------------------------- + +loc_13FA5: ; CODE XREF: sub_13F34+Bj + cmp word_24E80, 1 + jnz short loc_13FD6 + mov bx, word_2065C + cmp word ptr [bx], 0C0h ; 'À' + jge short loc_13FBE + +loc_13FB6: ; CODE XREF: sub_13F34+59j + mov bx, word_2065C + inc word ptr [bx] + leave + retf +; --------------------------------------------------------------------------- + +loc_13FBE: ; CODE XREF: sub_13F34+80j + cmp word_20650, 0C0h ; 'À' + jle short loc_13FCE + +loc_13FC6: ; CODE XREF: sub_13F34+51j + mov bx, word_2065C + dec word ptr [bx] + leave + retf +; --------------------------------------------------------------------------- + +loc_13FCE: ; CODE XREF: sub_13F34+90j + mov word_24E80, 2 + leave + retf +; --------------------------------------------------------------------------- + +loc_13FD6: ; CODE XREF: sub_13F34+76j + cmp word_24E80, 2 + jnz short locret_13FE3 + mov word_20650, 0 + +locret_13FE3: ; CODE XREF: sub_13F34+19j + ; sub_13F34+A7j + leave + retf +sub_13F34 endp + +; --------------------------------------------------------------------------- + +loc_13FE5: ; DATA XREF: sub_B3DA+2AAo + push bp + mov bp, sp + mov ax, word_24E7C + add ax, 18h + mov word_205D8, ax + mov word_205DA, 30h ; '0' + inc word_20650 + cmp byte_2066A, 0 + jnz short loc_1402D + push cs + call near ptr sub_13F34 + mov bx, word_2065C + mov ax, [bx] + mov word_24E7C, ax + push cs + call near ptr sub_13ECD + or ax, ax + jnz short loc_14028 + push word_24E7C + push word_24E7E + push word_2064E + call sub_3146 + +loc_14028: ; CODE XREF: seg003:4555j + call sub_13C91 + jmp short loc_14039 +; --------------------------------------------------------------------------- + +loc_1402D: ; CODE XREF: seg003:4540j + call sub_13C0C + or ax, ax + jz short loc_14039 + mov ax, 2 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_14039: ; CODE XREF: seg003:456Bj seg003:4572j + mov ax, 1 + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1403E proc near ; CODE XREF: sub_13671+D0p + ; sub_140AE:loc_140F2p + push bp + mov bp, sp + cmp word_1EDA4, 0 + jz short loc_140AC + cmp word_1EDA4, 1 + jnz short loc_14055 + mov word_250E4, 64h ; 'd' + +loc_14055: ; CODE XREF: sub_1403E+Fj + inc word_1EDA4 + mov ax, word_1EDA4 + cmp ax, word_250E4 + jb short loc_140AC + mov ax, word_250E4 + add ax, 8 + cmp ax, word_1EDA4 + jbe short loc_140AC + test byte ptr word_1EDA4, 1 + jz short loc_1407D + mov word_1DF9A, 8Ch ; 'Œ' + jmp short loc_14083 +; --------------------------------------------------------------------------- + +loc_1407D: ; CODE XREF: sub_1403E+35j + mov word_1DF9A, 64h ; 'd' + +loc_14083: ; CODE XREF: sub_1403E+3Dj + call far ptr loc_1EF6 + mov ax, word_250E4 + add ax, 7 + cmp ax, word_1EDA4 + jnz short loc_140AC + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + call sub_FAED + and ax, 3FFh + add ax, 14h + add word_250E4, ax + +loc_140AC: ; CODE XREF: sub_1403E+8j + ; sub_1403E+22j ... + pop bp + retn +sub_1403E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_140AE proc far ; DATA XREF: sub_B3DA+312o + push bp + mov bp, sp + cmp byte_1EDA6, 0 + jz short loc_140D4 + push large 200000h + push large 1A0018Fh + call sub_F1E + mov byte_1EDA6, 0 + mov word_1EB0A, 0FFFFh + +loc_140D4: ; CODE XREF: sub_140AE+8j + inc word_1EDA2 + test byte ptr word_1EDA2, 1 + jnz short loc_140F2 + call sub_FAED + mov bx, 280h + xor dx, dx + div bx + add dx, 30h ; '0' + push dx + push 10h + call sub_134B6 + +loc_140F2: ; CODE XREF: sub_140AE+2Fj + call sub_1403E + call sub_764 + push large 0C00003h + call sub_127E + call sub_135BB + pop bp + retf +sub_140AE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1410A proc far ; DATA XREF: sub_B3DA+2CAo + push bp + mov bp, sp + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 400040h + call sub_45FC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + mov ax, word_250E2 + pop bp + retf +sub_1410A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14169 proc near ; CODE XREF: sub_1424A+EEp + push bp + mov bp, sp + push si + push di + cmp word_1EDA8, 30h ; '0' + jge short loc_141A1 + mov ax, word_1EDA8 + and ax, 0Fh + cmp ax, 5 + jnz short loc_141A1 + mov bx, word_2065C + mov ax, [bx] + add ax, 20h ; ' ' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push large 800018h + push 1 + call sub_4090 + +loc_141A1: ; CODE XREF: sub_14169+Aj + ; sub_14169+15j + mov di, 0Ah + mov ax, word_1EDA8 + sar ax, 3 + add di, ax + inc word_1EDA8 + cmp word_1EDA8, 40h ; '@' + jl short loc_141DC + mov word_1EDA8, 0 + mov word_20650, 0 + mov byte_2066A, 0 + mov word_250E2, 0 + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + jmp short loc_141FF +; --------------------------------------------------------------------------- + +loc_141DC: ; CODE XREF: sub_14169+4Cj + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_141F0 + sub si, 190h + +loc_141F0: ; CODE XREF: sub_14169+81j + mov bx, word_2065C + push word ptr [bx] + push si + push di + push 2 + call sub_38BC + +loc_141FF: ; CODE XREF: sub_14169+71j + pop di + pop si + pop bp + retn +sub_14169 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14203 proc near ; CODE XREF: sub_1424A:loc_1433Ep + push bp + mov bp, sp + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_14248 + mov ax, word_20650 + mov bx, 0C0h ; 'À' + cwd + idiv bx + cmp dx, 40h ; '@' + jge short loc_14248 + mov bx, word_2065C + mov ax, [bx] + add ax, 1Ch + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + mov al, byte ptr word_20650 + shl al, 2 + push ax + push 80h ; '€' + push large 54001Eh + call sub_10865 + +loc_14248: ; CODE XREF: sub_14203+Ej + ; sub_14203+1Cj + pop bp + retn +sub_14203 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1424A proc far ; DATA XREF: sub_B3DA+2D6o + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + xor di, di + mov word_205D8, 0D8h ; 'Ø' + mov bx, word_2065E + mov ax, [bx] + add ax, 18h + mov word_205DA, ax + inc word_20650 + cmp word_20650, 1 + jnz short loc_1429E + mov word_20652, 0C0h ; 'À' + mov word_20654, 0C0h ; 'À' + mov word_20656, 0FFF0h + mov word_20658, 0FFF0h + mov word_2065A, 0 + mov word_250E2, 1 + mov word_1EDA4, 1 + jmp loc_143E1 +; --------------------------------------------------------------------------- + +loc_1429E: ; CODE XREF: sub_1424A+25j + cmp word_20650, 140h + jge short loc_14321 + mov ax, word_20344 + sar ax, 1 + and ax, 3 + mov [bp+var_2], ax + add ax, 89h ; '‰' + mov di, ax + test byte ptr word_20650, 3 + jnz short loc_142C3 + mov bx, word_2065E + inc word ptr [bx] + +loc_142C3: ; CODE XREF: sub_1424A+71j + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + or si, si + jge short loc_142D7 + add si, 190h + jmp short loc_142E1 +; --------------------------------------------------------------------------- + +loc_142D7: ; CODE XREF: sub_1424A+85j + cmp si, 190h + jl short loc_142E1 + sub si, 190h + +loc_142E1: ; CODE XREF: sub_1424A+8Bj + ; sub_1424A+91j + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 40003Ah + call sub_1283C + or ax, ax + jz loc_143D4 + push 4 + call sub_FA52 + add sp, 2 + mov bx, word_2065C + push word ptr [bx] + push si + push large 880000h + push 0FFC0h + call far ptr loc_2F80 + inc word_2065A + jmp loc_143E1 +; --------------------------------------------------------------------------- + +loc_14321: ; CODE XREF: sub_1424A+5Aj + mov ax, word_20344 + sar ax, 1 + and ax, 3 + mov [bp+var_2], ax + add ax, 89h ; '‰' + mov di, ax + cmp byte_2066A, 0 + jz short loc_1433E + call sub_14169 + jmp loc_143E1 +; --------------------------------------------------------------------------- + +loc_1433E: ; CODE XREF: sub_1424A+ECj + call sub_14203 + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + or si, si + jge short loc_14355 + add si, 190h + jmp short loc_1435F +; --------------------------------------------------------------------------- + +loc_14355: ; CODE XREF: sub_1424A+103j + cmp si, 190h + jl short loc_1435F + sub si, 190h + +loc_1435F: ; CODE XREF: sub_1424A+109j + ; sub_1424A+10Fj + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 40003Ah + call sub_1283C + mov [bp+var_4], ax + or ax, ax + jz short loc_143C7 + add word_2065A, ax + cmp word_2065A, 17Ch + jle short loc_1438D + cmp si, 130h + jl short loc_143AD + +loc_1438D: ; CODE XREF: sub_1424A+13Bj + push 4 + call sub_FA52 + add sp, 2 + mov bx, word_2065C + push word ptr [bx] + push si + push large 880000h + push 0FFC0h + call far ptr loc_2F80 + jmp short loc_143E1 +; --------------------------------------------------------------------------- + +loc_143AD: ; CODE XREF: sub_1424A+141j + push 2 + call sub_FA52 + add sp, 2 + mov byte_2066A, 1 + add dword_218AC, 4E20h + jmp short loc_143E1 +; --------------------------------------------------------------------------- + +loc_143C7: ; CODE XREF: sub_1424A+12Fj + cmp word_20650, 640h + jle short loc_143D4 + mov byte_2066A, 1 + +loc_143D4: ; CODE XREF: sub_1424A+AEj + ; sub_1424A+183j + mov bx, word_2065C + push word ptr [bx] + push si + push di + call sub_3146 + +loc_143E1: ; CODE XREF: sub_1424A+51j + ; sub_1424A+D4j ... + pop di + pop si + leave + retf +sub_1424A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_143E5 proc far ; DATA XREF: sub_B3DA+2FAo + push bp + mov bp, sp + push si + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 400040h + call sub_45FC + cmp word_250FE, 0 + jz loc_144ED + xor si, si + jmp loc_144E6 +; --------------------------------------------------------------------------- + +loc_14428: ; CODE XREF: sub_143E5+104j + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx+7676h] + mov bx, word_2065C + cmp ax, [bx] + jz short loc_14493 + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx+7682h] + mov bx, word_2065E + cmp ax, [bx] + jz short loc_14493 + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx+7676h] + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx+7682h] + push large 400040h + call sub_45FC + +loc_14493: ; CODE XREF: sub_143E5+5Dj + ; sub_143E5+79j + mov al, byte_20619 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx+7676h] + mov dl, byte_20618 + mov dh, 0 + imul dx, 6 + mov bx, si + add bx, bx + add dx, bx + mov bx, dx + mov [bx+7676h], ax + mov al, byte_20619 + mov ah, 0 + imul ax, 6 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx+7682h] + mov dl, byte_20618 + mov dh, 0 + imul dx, 6 + mov bx, si + add bx, bx + add dx, bx + mov bx, dx + mov [bx+7682h], ax + inc si + +loc_144E6: ; CODE XREF: sub_143E5+40j + cmp si, 3 + jl loc_14428 + +loc_144ED: ; CODE XREF: sub_143E5+3Aj + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + call sub_146EF + pop si + pop bp + retf +sub_143E5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14519 proc near ; CODE XREF: sub_150F4+28p + push bp + mov bp, sp + push si + push di + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 18h + push ax + push word_1EDAA + call sub_FFF8 + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 18h + push ax + mov ax, word_1EDAA + add ax, 0FFE8h + push ax + call sub_FFF8 + mov bx, word_2065C + mov ax, [bx] + add ax, 30h ; '0' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 30h ; '0' + push ax + push large 3C0001h + push 0 + call sub_4090 + mov di, 0Ah + mov ax, word_1EDAA + add ax, 0FFE0h + mov bx, 0Ah + cwd + idiv bx + add di, ax + inc word_1EDAA + cmp word_1EDAA, 60h ; '`' + jl short loc_1459F + mov word_1EDAA, 0 + mov ax, 1 + jmp short loc_145DD +; --------------------------------------------------------------------------- + +loc_1459F: ; CODE XREF: sub_14519+79j + mov bx, word_2065E + mov si, [bx] + add si, word_20344 + cmp si, 190h + jl short loc_145B3 + sub si, 190h + +loc_145B3: ; CODE XREF: sub_14519+94j + cmp word_20650, 20h ; ' ' + jge short loc_145CC + mov bx, word_2065C + push word ptr [bx] + push si + push word_2064E + call sub_3146 + jmp short loc_145DB +; --------------------------------------------------------------------------- + +loc_145CC: ; CODE XREF: sub_14519+9Fj + mov bx, word_2065C + push word ptr [bx] + push si + push di + push 2 + call sub_38BC + +loc_145DB: ; CODE XREF: sub_14519+B1j + xor ax, ax + +loc_145DD: ; CODE XREF: sub_14519+84j + pop di + pop si + pop bp + retn +sub_14519 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_145E1 proc near ; CODE XREF: sub_150F4:loc_15203p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + mov bx, word_2065E + mov si, [bx] + mov bx, word_2065C + mov ax, [bx] + cmp ax, word_205F6 + jg short loc_1461A + add ax, 20h ; ' ' + cmp ax, word_205F6 + jle short loc_1461A + lea ax, [si-10h] + cmp ax, word_205F8 + jge short loc_1461A + lea ax, [si+20h] + cmp ax, word_205F8 + jle short loc_1461A + mov byte_20604, 1 + +loc_1461A: ; CODE XREF: sub_145E1+17j + ; sub_145E1+20j ... + add si, word_20344 + cmp si, 190h + jl short loc_14628 + sub si, 190h + +loc_14628: ; CODE XREF: sub_145E1+41j + mov bx, word_2065C + mov ax, [bx] + add ax, 8 + push ax + mov bx, word_2065E + push word ptr [bx] + push large 300030h + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_14689 + add word_2065A, ax + push 4 + call sub_FA52 + add sp, 2 + mov bx, word_2065C + push word ptr [bx] + push si + push word_2064E + push large 0FFC0h + call far ptr loc_2F80 + cmp word_2065A, 960h + jl short loc_14699 + mov byte_2066A, 1 + add dword_218AC, 7530h + mov byte_20605, 0C8h ; 'È' + jmp short loc_14699 +; --------------------------------------------------------------------------- + +loc_14689: ; CODE XREF: sub_145E1+65j + mov bx, word_2065C + push word ptr [bx] + push si + push word_2064E + call sub_3146 + +loc_14699: ; CODE XREF: sub_145E1+91j + ; sub_145E1+A6j + pop si + leave + retn +sub_145E1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1469C proc near ; CODE XREF: sub_1489C+59p + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 +arg_4 = byte ptr 8 +arg_6 = byte ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + mov cx, [bp+arg_A] + mov di, [bp+arg_8] + mov si, 7690h + xor dx, dx + jmp short loc_146E4 +; --------------------------------------------------------------------------- + +loc_146AE: ; CODE XREF: sub_1469C+4Bj + cmp byte ptr [si], 0 + jnz short loc_146E0 + mov byte ptr [si], 1 + mov al, [bp+arg_4] + mov [si+1], al + mov [si+2], cx + mov [si+4], di + mov al, [bp+arg_6] + mov [si+6], al + mov byte ptr [si+7], 0 + mov al, [bp+arg_2] + mov [si+8], al + mov al, byte_252E0 + mov [si+9], al + mov al, [bp+arg_0] + mov [si+0Ah], al + jmp short loc_146E9 +; --------------------------------------------------------------------------- + +loc_146E0: ; CODE XREF: sub_1469C+15j + inc dx + add si, 0Ch + +loc_146E4: ; CODE XREF: sub_1469C+10j + cmp dx, 28h ; '(' + jl short loc_146AE + +loc_146E9: ; CODE XREF: sub_1469C+42j + pop di + pop si + pop bp + retn 0Ch +sub_1469C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_146EF proc near ; CODE XREF: sub_143E5+12Ep + push bp + mov bp, sp + push si + push di + mov si, 7690h + xor di, di + jmp short loc_1471D +; --------------------------------------------------------------------------- + +loc_146FB: ; CODE XREF: sub_146EF+31j + cmp byte ptr [si], 0 + jz short loc_14719 + push word ptr [si+2] + push word ptr [si+4] + push large 200020h + call sub_45FC + cmp byte ptr [si], 2 + jnz short loc_14719 + mov byte ptr [si], 0 + +loc_14719: ; CODE XREF: sub_146EF+Fj + ; sub_146EF+25j + inc di + add si, 0Ch + +loc_1471D: ; CODE XREF: sub_146EF+Aj + cmp di, 28h ; '(' + jl short loc_146FB + pop di + pop si + pop bp + retn +sub_146EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14726 proc near ; CODE XREF: sub_150F4:loc_15206p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, 7690h + mov [bp+var_2], 0 + jmp loc_1482F +; --------------------------------------------------------------------------- + +loc_14739: ; CODE XREF: sub_14726+10Dj + cmp byte ptr [si], 1 + jnz loc_14829 + cmp byte ptr [si+0Ah], 0 + jbe short loc_147A3 + mov di, [si+4] + add di, word_20344 + cmp di, 190h + jl short loc_14757 + sub di, 190h + +loc_14757: ; CODE XREF: sub_14726+2Bj + push word ptr [si+2] + push di + mov al, [si+9] + mov ah, 0 + push ax + call sub_3708 + dec byte ptr [si+0Ah] + mov ax, [si+2] + add ax, 0FFF0h + cmp ax, word_205F6 + jg loc_14829 + mov ax, [si+2] + cmp ax, word_205F6 + jl loc_14829 + mov ax, [si+4] + add ax, 0FFF0h + cmp ax, word_205F8 + jge loc_14829 + mov ax, [si+4] + cmp ax, word_205F8 + jle loc_14829 + mov byte_20604, 1 + jmp loc_14829 +; --------------------------------------------------------------------------- + +loc_147A3: ; CODE XREF: sub_14726+1Ej + cmp byte ptr [si+7], 0 + jnz short loc_147BD + push 0Ah + call sub_FA52 + add sp, 2 + sub word ptr [si+2], 8 + sub word ptr [si+4], 8 + jmp short loc_147C3 +; --------------------------------------------------------------------------- + +loc_147BD: ; CODE XREF: sub_14726+81j + cmp byte ptr [si+7], 20h ; ' ' + jnb short loc_147F3 + +loc_147C3: ; CODE XREF: sub_14726+95j + mov al, [si+7] + mov ah, 0 + sar ax, 2 + add ax, 1Ah + mov [bp+var_4], ax + mov di, [si+4] + add di, word_20344 + cmp di, 190h + jl short loc_147E2 + sub di, 190h + +loc_147E2: ; CODE XREF: sub_14726+B6j + push word ptr [si+2] + push di + push [bp+var_4] + call sub_3146 + inc byte ptr [si+7] + jmp short loc_14829 +; --------------------------------------------------------------------------- + +loc_147F3: ; CODE XREF: sub_14726+9Bj + mov al, byte_252E1 + mov ah, 0 + and ax, 1 + push ax + mov al, byte_1E364 + cbw + pop dx + cmp dx, ax + jg short loc_14822 + mov di, [si+4] + add di, 0Ch + mov ax, [si+2] + add ax, 0Ch + push ax + push di + push word ptr [si+6] + push word ptr [si+1] + mov al, [si+8] + mov ah, 0 + push ax + call sub_1078E + +loc_14822: ; CODE XREF: sub_14726+DDj + inc byte_252E1 + mov byte ptr [si], 2 + +loc_14829: ; CODE XREF: sub_14726+16j + ; sub_14726+4Dj ... + inc [bp+var_2] + add si, 0Ch + +loc_1482F: ; CODE XREF: sub_14726+10j + cmp [bp+var_2], 28h ; '(' + jl loc_14739 + pop di + pop si + leave + retn +sub_14726 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1483B proc near ; CODE XREF: sub_150F4:loc_15145p + push bp + mov bp, sp + cmp word_20650, 0Ah + jl short loc_1489A + cmp word_20650, 0Ah + jnz short loc_1485E + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1485E: ; CODE XREF: sub_1483B+Fj + cmp word_20650, 32h ; '2' + jl short loc_1489A + cmp word_20650, 32h ; '2' + jnz short loc_1487E + push 3 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Fh ; '' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1487E: ; CODE XREF: sub_1483B+2Fj + cmp word_20650, 5Ah ; 'Z' + jg short loc_1488E + mov bx, word_2065E + add word ptr [bx], 6 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1488E: ; CODE XREF: sub_1483B+48j + mov word_2064E, 8Dh ; '' + mov word_20650, 0 + +loc_1489A: ; CODE XREF: sub_1483B+8j + ; sub_1483B+28j + pop bp + retn +sub_1483B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1489C proc near ; CODE XREF: sub_148FD+B2p + ; sub_148FD:loc_14A12p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = byte ptr 8 + + push bp + mov bp, sp + push si + mov si, [bp+arg_2] + cmp [bp+arg_4], 0 + jnz short loc_148BB + mov bx, word_2065C + add [bx], si + cmp word ptr [bx], 170h + jle short loc_148CA + mov word ptr [bx], 170h + jmp short loc_148CA +; --------------------------------------------------------------------------- + +loc_148BB: ; CODE XREF: sub_1489C+Bj + mov bx, word_2065C + sub [bx], si + cmp word ptr [bx], 10h + jge short loc_148CA + mov word ptr [bx], 10h + +loc_148CA: ; CODE XREF: sub_1489C+17j + ; sub_1489C+1Dj ... + mov bx, word_2065E + mov ax, [bp+arg_0] + add [bx], ax + mov bx, word_2065C + mov ax, [bx] + add ax, 0Ch + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 0Ch + push ax + push 0 + push word_252E2 + push word_252E2+1 + push word_252E4 + call sub_1469C + pop si + pop bp + retn 6 +sub_1489C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_148FD proc near ; CODE XREF: sub_150F4:loc_1514Ap + push bp + mov bp, sp + push si + cmp word_20650, 14h + jl loc_14A36 + mov bx, word_2065E + mov si, [bx] + cmp word_20650, 14h + jnz short loc_14954 + mov bx, word_2065C + mov ax, [bx] + add ax, 10h + cmp ax, word_205F6 + jge short loc_1492B + mov ax, 1 + jmp short loc_1492D +; --------------------------------------------------------------------------- + +loc_1492B: ; CODE XREF: sub_148FD+27j + xor ax, ax + +loc_1492D: ; CODE XREF: sub_148FD+2Cj + mov byte ptr word_252E6, al + mov ah, 0 + add ax, 90h ; '' + mov word_2064E, ax + mov word_252E4, 10h + mov al, 79h ; 'y' + sub al, byte ptr word_252E6 + mov byte_252E0, al + mov byte ptr word_252E2, 19h + mov byte ptr word_252E2+1, 40h ; '@' + jmp loc_14A36 +; --------------------------------------------------------------------------- + +loc_14954: ; CODE XREF: sub_148FD+18j + cmp word_20650, 20h ; ' ' + jg short loc_14968 + push word_252E6 + push large 0FFF8FFF8h + jmp loc_14A12 +; --------------------------------------------------------------------------- + +loc_14968: ; CODE XREF: sub_148FD+5Cj + cmp word_20650, 38h ; '8' + jge short loc_14978 + mov word_2064E, 8Dh ; '' + jmp loc_14A36 +; --------------------------------------------------------------------------- + +loc_14978: ; CODE XREF: sub_148FD+70j + cmp word_20650, 38h ; '8' + jnz short loc_1499E + mov al, byte ptr word_252E6 + mov ah, 0 + mov dx, 91h ; '‘' + sub dx, ax + mov word_2064E, dx + mov al, byte ptr word_252E6 + add al, 78h ; 'x' + mov byte_252E0, al + mov word_252E4, 10h + jmp loc_14A36 +; --------------------------------------------------------------------------- + +loc_1499E: ; CODE XREF: sub_148FD+80j + cmp word_20650, 39h ; '9' + jnz short loc_149C4 + push word_252E6 + push large 8FFF8h + call sub_1489C + add word_252E4, 2 + cmp si, 30h ; '0' + jle short loc_14A36 + mov word_20650, 38h ; '8' + jmp short loc_14A36 +; --------------------------------------------------------------------------- + +loc_149C4: ; CODE XREF: sub_148FD+A6j + cmp word_20650, 50h ; 'P' + jge short loc_149D3 + mov word_2064E, 8Dh ; '' + jmp short loc_14A36 +; --------------------------------------------------------------------------- + +loc_149D3: ; CODE XREF: sub_148FD+CCj + cmp word_20650, 50h ; 'P' + jnz short loc_149F9 + mov al, byte ptr word_252E6 + mov ah, 0 + mov dx, 95h ; '•' + sub dx, ax + mov word_2064E, dx + mov al, 79h ; 'y' + sub al, byte ptr word_252E6 + mov byte_252E0, al + mov word_252E4, 10h + jmp short loc_14A36 +; --------------------------------------------------------------------------- + +loc_149F9: ; CODE XREF: sub_148FD+DBj + mov bx, word_2065C + cmp word ptr [bx], 20h ; ' ' + jle short loc_14A1C + cmp word ptr [bx], 160h + jge short loc_14A1C + push word_252E6 + push large 80008h + +loc_14A12: ; CODE XREF: sub_148FD+68j + call sub_1489C + add word_252E4, 2 + jmp short loc_14A36 +; --------------------------------------------------------------------------- + +loc_14A1C: ; CODE XREF: sub_148FD+103j + ; sub_148FD+109j + cmp si, 30h ; '0' + jle short loc_14A30 + mov bx, word_2065E + sub word ptr [bx], 2 + mov word_2064E, 8Dh ; '' + jmp short loc_14A36 +; --------------------------------------------------------------------------- + +loc_14A30: ; CODE XREF: sub_148FD+122j + mov word_20650, 0 + +loc_14A36: ; CODE XREF: sub_148FD+9j + ; sub_148FD+54j ... + pop si + pop bp + retn +sub_148FD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14A39 proc near ; CODE XREF: sub_150F4:loc_1514Fp + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_14B31 + cmp word_20650, 32h ; '2' + jnz short loc_14A64 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + mov al, byte ptr word_2066E + mov byte ptr word_252E2, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14A64: ; CODE XREF: sub_14A39+11j + cmp word_20650, 63h ; 'c' + jl loc_14B31 + cmp word_20650, 63h ; 'c' + jnz short loc_14A9C + push 3 + call sub_FA52 + add sp, 2 + mov al, byte ptr word_252E6 + mov ah, 0 + mov dx, 95h ; '•' + sub dx, ax + mov word_2064E, dx + mov al, byte ptr word_252E6 + add al, 78h ; 'x' + mov byte_252E0, al + mov word_252E4, 50h ; 'P' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14A9C: ; CODE XREF: sub_14A39+39j + cmp word_20650, 78h ; 'x' + jge short loc_14AAF + push word_252E6 + push large 0FFF80008h + jmp short loc_14AFB +; --------------------------------------------------------------------------- + +loc_14AAF: ; CODE XREF: sub_14A39+68j + cmp word_20650, 88h ; 'ˆ' + jge short loc_14AE9 + mov word_2064E, 8Eh ; 'Ž' + mov al, byte ptr word_252E6 + mov ah, 0 + add ax, 90h ; '' + mov word_2064E, ax + mov al, 79h ; 'y' + sub al, byte ptr word_252E6 + mov byte_252E0, al + dec word_252E4 + cmp word_20650, 87h ; '‡' + jnz short loc_14B31 + push 3 + call sub_FA52 + add sp, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14AE9: ; CODE XREF: sub_14A39+7Cj + cmp word_20650, 9Ch ; 'œ' + jge short loc_14B04 + push word_252E6 + push large 0FFF8FFF8h + +loc_14AFB: ; CODE XREF: sub_14A39+74j + call sub_1489C + dec word_252E4 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14B04: ; CODE XREF: sub_14A39+B6j + mov bx, word_2065C + cmp word ptr [bx], 0C0h ; 'À' + jz short loc_14B2B + mov word_2064E, 8Dh ; '' + cmp byte ptr word_252E6, 0 + jnz short loc_14B20 + mov ax, 2 + jmp short loc_14B23 +; --------------------------------------------------------------------------- + +loc_14B20: ; CODE XREF: sub_14A39+E0j + mov ax, 0FFFEh + +loc_14B23: ; CODE XREF: sub_14A39+E5j + mov bx, word_2065C + add [bx], ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14B2B: ; CODE XREF: sub_14A39+D3j + mov word_20650, 0 + +loc_14B31: ; CODE XREF: sub_14A39+8j + ; sub_14A39+30j ... + pop bp + retn +sub_14A39 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14B33 proc near ; CODE XREF: sub_150F4:loc_15154p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_14BC0 + cmp word_20650, 32h ; '2' + jnz short loc_14B58 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14B58: ; CODE XREF: sub_14B33+11j + cmp word_20650, 63h ; 'c' + jl short loc_14BC0 + cmp word_20650, 63h ; 'c' + jnz short loc_14B7E + push 3 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Fh ; '' + mov word_252E8, 20h ; ' ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14B7E: ; CODE XREF: sub_14B33+31j + cmp word_20650, 74h ; 't' + jge short loc_14BB4 + test byte ptr word_20650, 1 + jz short loc_14BC0 + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push 40h ; '@' + push word_2066E+1 + push word_252E8 + call sub_1078E + add word_252E8, 0Bh + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14BB4: ; CODE XREF: sub_14B33+50j + mov word_2064E, 8Dh ; '' + mov word_20650, 0 + +loc_14BC0: ; CODE XREF: sub_14B33+8j + ; sub_14B33+2Aj ... + pop bp + retn +sub_14B33 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14BC2 proc near ; CODE XREF: sub_150F4:loc_151A1p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_14C74 + cmp word_20650, 32h ; '2' + jnz short loc_14BEC + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + mov byte ptr word_252E2, 1Ah + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14BEC: ; CODE XREF: sub_14BC2+11j + cmp word_20650, 63h ; 'c' + jl loc_14C74 + cmp word_20650, 63h ; 'c' + jnz short loc_14C14 + push 3 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Fh ; '' + mov word_252EA, 20h ; ' ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14C14: ; CODE XREF: sub_14BC2+38j + cmp word_20650, 78h ; 'x' + jge short loc_14C68 + test byte ptr word_20650, 1 + jz short loc_14C48 + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push 0 + push word_20670 + push word_252EA + call sub_1078E + add word_252EA, 0Bh + +loc_14C48: ; CODE XREF: sub_14BC2+5Ej + mov bx, word_2065C + cmp word ptr [bx], 0C0h ; 'À' + jz short loc_14C74 + cmp word ptr [bx], 0C0h ; 'À' + jge short loc_14C5D + mov ax, 8 + jmp short loc_14C60 +; --------------------------------------------------------------------------- + +loc_14C5D: ; CODE XREF: sub_14BC2+94j + mov ax, 0FFF8h + +loc_14C60: ; CODE XREF: sub_14BC2+99j + mov bx, word_2065C + add [bx], ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14C68: ; CODE XREF: sub_14BC2+57j + mov word_2064E, 8Dh ; '' + mov word_20650, 0 + +loc_14C74: ; CODE XREF: sub_14BC2+8j + ; sub_14BC2+2Fj ... + pop bp + retn +sub_14BC2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14C76 proc near ; CODE XREF: sub_150F4:loc_151A6p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_14DFA + cmp word_20650, 32h ; '2' + jnz short loc_14CBE + mov bx, word_2065C + mov ax, [bx] + add ax, 10h + cmp ax, word_205F6 + jge short loc_14C9D + mov ax, 1 + jmp short loc_14C9F +; --------------------------------------------------------------------------- + +loc_14C9D: ; CODE XREF: sub_14C76+20j + xor ax, ax + +loc_14C9F: ; CODE XREF: sub_14C76+25j + mov byte ptr word_252E6, al + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + mov byte ptr word_252E2, 1Ah + mov byte ptr word_252E2+1, 30h ; '0' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14CBE: ; CODE XREF: sub_14C76+11j + cmp word_20650, 63h ; 'c' + jl loc_14DFA + cmp word_20650, 63h ; 'c' + jnz short loc_14CF3 + push 3 + call sub_FA52 + add sp, 2 + mov al, byte ptr word_252E6 + mov ah, 0 + add ax, 94h ; '”' + mov word_2064E, ax + mov al, byte ptr word_252E6 + add al, 78h ; 'x' + mov byte_252E0, al + mov word_252E4, 14h + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14CF3: ; CODE XREF: sub_14C76+56j + cmp word_20650, 74h ; 't' + jge short loc_14D07 + push word_252E6 + push large 0FFF80008h + jmp loc_14DE4 +; --------------------------------------------------------------------------- + +loc_14D07: ; CODE XREF: sub_14C76+82j + cmp word_20650, 88h ; 'ˆ' + jge short loc_14D3F + mov word_2064E, 8Eh ; 'Ž' + mov al, byte ptr word_252E6 + mov ah, 0 + mov dx, 95h ; '•' + sub dx, ax + mov word_2064E, dx + mov al, 79h ; 'y' + sub al, byte ptr word_252E6 + mov byte_252E0, al + mov word_252E4, 14h + cmp word_20650, 87h ; '‡' + jnz loc_14DFA + jmp loc_14DC8 +; --------------------------------------------------------------------------- + +loc_14D3F: ; CODE XREF: sub_14C76+97j + cmp word_20650, 98h ; '˜' + jge short loc_14D54 + push word_252E6 + push large 80008h + jmp loc_14DE4 +; --------------------------------------------------------------------------- + +loc_14D54: ; CODE XREF: sub_14C76+CFj + cmp word_20650, 0ACh ; '¬' + jge short loc_14D88 + mov word_2064E, 8Eh ; 'Ž' + mov al, byte ptr word_252E6 + mov ah, 0 + mov dx, 91h ; '‘' + sub dx, ax + mov word_2064E, dx + mov al, byte ptr word_252E6 + add al, 78h ; 'x' + mov byte_252E0, al + mov word_252E4, 14h + cmp word_20650, 0ABh ; '«' + jnz short loc_14DFA + jmp short loc_14DC8 +; --------------------------------------------------------------------------- + +loc_14D88: ; CODE XREF: sub_14C76+E4j + cmp word_20650, 0BCh ; '¼' + jge short loc_14D98 + push word_252E6 + push 8 + jmp short loc_14DE2 +; --------------------------------------------------------------------------- + +loc_14D98: ; CODE XREF: sub_14C76+118j + cmp word_20650, 0D0h ; 'Ð' + jge short loc_14DD4 + mov word_2064E, 8Eh ; 'Ž' + mov al, byte ptr word_252E6 + mov ah, 0 + add ax, 90h ; '' + mov word_2064E, ax + mov al, 79h ; 'y' + sub al, byte ptr word_252E6 + mov byte_252E0, al + mov word_252E4, 14h + cmp word_20650, 0CFh ; 'Ï' + jnz short loc_14DFA + +loc_14DC8: ; CODE XREF: sub_14C76+C6j + ; sub_14C76+110j + push 3 + call sub_FA52 + add sp, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14DD4: ; CODE XREF: sub_14C76+128j + cmp word_20650, 0E0h ; 'à' + jge short loc_14DEE + push word_252E6 + push 0FFF8h + +loc_14DE2: ; CODE XREF: sub_14C76+120j + push 0FFF8h + +loc_14DE4: ; CODE XREF: sub_14C76+8Ej + ; sub_14C76+DBj + call sub_1489C + add word_252E4, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14DEE: ; CODE XREF: sub_14C76+164j + mov word_2064E, 8Dh ; '' + mov word_20650, 0 + +loc_14DFA: ; CODE XREF: sub_14C76+8j + ; sub_14C76+4Dj ... + pop bp + retn +sub_14C76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14DFC proc near ; CODE XREF: sub_14E30:loc_14E8Ap + push bp + mov bp, sp + push 3 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Fh ; '' + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push 0 + push word_20670 + push 4Ah ; 'J' + call sub_1078E + pop bp + retn +sub_14DFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14E30 proc near ; CODE XREF: sub_150F4:loc_151ABp + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl short loc_14E9B + cmp word_20650, 32h ; '2' + jnz short loc_14E58 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + mov byte ptr word_252E2, 1Ah + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14E58: ; CODE XREF: sub_14E30+Fj + cmp word_20650, 63h ; 'c' + jl short loc_14E9B + cmp word_20650, 63h ; 'c' + jz short loc_14E8A + cmp word_20650, 6Ch ; 'l' + jl short loc_14E7B + cmp word_20650, 6Ch ; 'l' + jz short loc_14E8A + cmp word_20650, 74h ; 't' + jge short loc_14E83 + +loc_14E7B: ; CODE XREF: sub_14E30+3Bj + mov word_2064E, 8Eh ; 'Ž' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14E83: ; CODE XREF: sub_14E30+49j + cmp word_20650, 74h ; 't' + jnz short loc_14E8F + +loc_14E8A: ; CODE XREF: sub_14E30+34j + ; sub_14E30+42j + call sub_14DFC + pop bp + retn +; --------------------------------------------------------------------------- + +loc_14E8F: ; CODE XREF: sub_14E30+58j + mov word_2064E, 8Dh ; '' + mov word_20650, 0 + +loc_14E9B: ; CODE XREF: sub_14E30+8j + ; sub_14E30+2Dj + pop bp + retn +sub_14E30 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14E9D proc near ; CODE XREF: sub_150F4:loc_151EFp + push bp + mov bp, sp + push si + cmp word_20650, 32h ; '2' + jl short loc_14F13 + cmp word_20650, 32h ; '2' + jnz short loc_14EC7 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 8Eh ; 'Ž' + mov word_21748, 5 + jmp short loc_14F13 +; --------------------------------------------------------------------------- + +loc_14EC7: ; CODE XREF: sub_14E9D+10j + cmp word_20650, 63h ; 'c' + jl short loc_14F13 + mov word_2064E, 92h ; '’' + xor si, si + jmp short loc_14F02 +; --------------------------------------------------------------------------- + +loc_14ED8: ; CODE XREF: sub_14E9D+68j + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 18h + push ax + call sub_FAC6 + push ax + push 87h ; '‡' + mov ax, si + and ax, 1 + add ax, 7Ah ; 'z' + push ax + push 36h ; '6' + call sub_10865 + inc si + +loc_14F02: ; CODE XREF: sub_14E9D+39j + cmp si, 3 + jl short loc_14ED8 + mov word_20650, 0 + mov word_250FE, 1 + +loc_14F13: ; CODE XREF: sub_14E9D+9j + ; sub_14E9D+28j ... + pop si + pop bp + retn +sub_14E9D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14F16 proc near ; CODE XREF: sub_150F4:loc_151F4p + +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, 8 + push si + push di + cmp word_20650, 32h ; '2' + jl loc_150F0 + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + add ax, 7676h + mov [bp+var_6], ax + mov al, byte_20618 + mov ah, 0 + imul ax, 6 + add ax, 7682h + mov [bp+var_8], ax + test byte ptr word_20650, 7 + jnz short loc_14F84 + mov bx, [bp+var_6] + mov ax, [bx+2] + mov [bx], ax + mov bx, [bp+var_8] + mov ax, [bx+2] + mov [bx], ax + mov bx, [bp+var_6] + mov ax, [bx+4] + mov [bx+2], ax + mov bx, [bp+var_8] + mov ax, [bx+4] + mov [bx+2], ax + mov bx, word_2065C + mov ax, [bx] + mov bx, [bp+var_6] + mov [bx+4], ax + mov bx, word_2065E + mov ax, [bx] + mov bx, [bp+var_8] + mov [bx+4], ax + +loc_14F84: ; CODE XREF: sub_14F16+32j + cmp word_20650, 32h ; '2' + jnz short loc_14FEA + xor di, di + jmp short loc_14FAE +; --------------------------------------------------------------------------- + +loc_14F8F: ; CODE XREF: sub_14F16+9Bj + mov bx, di + add bx, bx + add bx, [bp+var_6] + mov si, word_2065C + mov ax, [si] + mov [bx], ax + mov bx, di + add bx, bx + add bx, [bp+var_8] + mov si, word_2065E + mov ax, [si] + mov [bx], ax + inc di + +loc_14FAE: ; CODE XREF: sub_14F16+77j + cmp di, 3 + jl short loc_14F8F + call sub_FAED + mov bx, 140h + xor dx, dx + div bx + add dx, 20h ; ' ' + mov word_252F0, dx + call sub_FAC6 + mov ah, 0 + add ax, 10h + mov word_252F2, ax + mov bx, word_2065C + mov ax, [bx] + mov word_252EC, ax + mov bx, word_2065E + mov ax, [bx] + mov word_252EE, ax + mov word_252F4, 1 + jmp loc_1508F +; --------------------------------------------------------------------------- + +loc_14FEA: ; CODE XREF: sub_14F16+73j + cmp word_20650, 72h ; 'r' + jg short loc_15038 + mov ax, word_252F0 + sub ax, word_252EC + imul word_252F4 + mov bx, 40h ; '@' + cwd + idiv bx + mov [bp+var_2], ax + mov ax, word_252F2 + sub ax, word_252EE + imul word_252F4 + cwd + idiv bx + mov [bp+var_4], ax + mov ax, word_252EE + add [bp+var_4], ax + mov ax, [bp+var_2] + add ax, word_252EC + mov bx, word_2065C + mov [bx], ax + mov bx, word_2065E + mov ax, [bp+var_4] + mov [bx], ax + inc word_252F4 + jmp short loc_1508F +; --------------------------------------------------------------------------- + +loc_15038: ; CODE XREF: sub_14F16+D9j + cmp word_20650, 72h ; 'r' + jnz short loc_1504B + push 9 + call sub_FA52 + add sp, 2 + jmp short loc_1508F +; --------------------------------------------------------------------------- + +loc_1504B: ; CODE XREF: sub_14F16+127j + cmp word_20650, 0A4h ; '¤' + jl loc_150F0 + mov word_2064E, 92h ; '’' + xor di, di + jmp short loc_15084 +; --------------------------------------------------------------------------- + +loc_1505F: ; CODE XREF: sub_14F16+171j + mov bx, word_2065C + mov ax, [bx] + add ax, 18h + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 18h + push ax + call sub_FAC6 + push ax + push 87h ; '‡' + lea ax, [di+7Ah] + push ax + push 36h ; '6' + call sub_10865 + inc di + +loc_15084: ; CODE XREF: sub_14F16+147j + cmp di, 2 + jl short loc_1505F + mov word_20650, 0 + +loc_1508F: ; CODE XREF: sub_14F16+D1j + ; sub_14F16+120j ... + xor di, di + jmp short loc_150EB +; --------------------------------------------------------------------------- + +loc_15093: ; CODE XREF: sub_14F16+1D8j + mov bx, di + add bx, bx + add bx, [bp+var_6] + mov ax, [bx] + mov bx, word_2065C + cmp ax, [bx] + jz short loc_150EA + mov bx, di + add bx, bx + add bx, [bp+var_8] + mov ax, [bx] + mov bx, word_2065E + cmp ax, [bx] + jz short loc_150EA + mov bx, di + add bx, bx + add bx, [bp+var_8] + mov [bp+var_4], ax + mov ax, word_20344 + add [bp+var_4], ax + cmp [bp+var_4], 190h + jl short loc_150D1 + sub [bp+var_4], 190h + +loc_150D1: ; CODE XREF: sub_14F16+1B4j + mov bx, di + add bx, bx + add bx, [bp+var_6] + push word ptr [bx] + push [bp+var_4] + push large 930000h + push 0FFC1h + call far ptr loc_2F80 + +loc_150EA: ; CODE XREF: sub_14F16+18Cj + ; sub_14F16+19Dj + inc di + +loc_150EB: ; CODE XREF: sub_14F16+17Bj + cmp di, 3 + jl short loc_15093 + +loc_150F0: ; CODE XREF: sub_14F16+Dj + ; sub_14F16+13Bj + pop di + pop si + leave + retn +sub_14F16 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_150F4 proc far ; DATA XREF: sub_B3DA+306o + push bp + mov bp, sp + push si + inc word_20650 + mov bx, word_2065E + mov si, [bx] + add si, 28h ; '(' + mov bx, word_2065C + mov ax, [bx] + add ax, 28h ; '(' + mov word_205D8, ax + mov word_205DA, si + cmp byte_2066A, 0 + jz short loc_1512B + call sub_14519 + or ax, ax + jz loc_15206 + mov ax, 2 + jmp loc_1520C +; --------------------------------------------------------------------------- + +loc_1512B: ; CODE XREF: sub_150F4+26j + cmp byte_252F6, 0 + jnz short loc_15185 + mov al, byte_252F7 + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja short loc_15157 + add bx, bx + jmp cs:off_15210[bx] + +loc_15145: ; DATA XREF: seg003:off_15210o + call sub_1483B + jmp short loc_15157 +; --------------------------------------------------------------------------- + +loc_1514A: ; CODE XREF: sub_150F4+4Cj + ; DATA XREF: seg003:5752o + call sub_148FD + jmp short loc_15157 +; --------------------------------------------------------------------------- + +loc_1514F: ; CODE XREF: sub_150F4+4Cj + ; DATA XREF: seg003:5754o + call sub_14A39 + jmp short loc_15157 +; --------------------------------------------------------------------------- + +loc_15154: ; CODE XREF: sub_150F4+4Cj + ; DATA XREF: seg003:5756o + call sub_14B33 + +loc_15157: ; CODE XREF: sub_150F4+48j + ; sub_150F4+54j ... + cmp word_20650, 0 + jnz loc_15203 + inc byte_252F7 + cmp byte_252F7, 3 + jbe short loc_15170 + mov byte_252F7, 0 + +loc_15170: ; CODE XREF: sub_150F4+75j + cmp word_2065A, 2BCh + jle loc_15203 + cmp byte_252F7, 1 + jz loc_15203 + jmp short loc_151CD +; --------------------------------------------------------------------------- + +loc_15185: ; CODE XREF: sub_150F4+3Cj + cmp byte_252F6, 1 + jnz short loc_151D8 + mov al, byte_252F7 + mov ah, 0 + or ax, ax + jz short loc_151A1 + cmp ax, 1 + jz short loc_151A6 + cmp ax, 2 + jz short loc_151AB + jmp short loc_151AE +; --------------------------------------------------------------------------- + +loc_151A1: ; CODE XREF: sub_150F4+9Fj + call sub_14BC2 + jmp short loc_151AE +; --------------------------------------------------------------------------- + +loc_151A6: ; CODE XREF: sub_150F4+A4j + call sub_14C76 + jmp short loc_151AE +; --------------------------------------------------------------------------- + +loc_151AB: ; CODE XREF: sub_150F4+A9j + call sub_14E30 + +loc_151AE: ; CODE XREF: sub_150F4+ABj + ; sub_150F4+B0j ... + cmp word_20650, 0 + jnz short loc_15203 + inc byte_252F7 + cmp byte_252F7, 2 + jbe short loc_151C5 + mov byte_252F7, 0 + +loc_151C5: ; CODE XREF: sub_150F4+CAj + cmp word_2065A, 5DCh + jle short loc_15203 + +loc_151CD: ; CODE XREF: sub_150F4+8Fj + inc byte_252F6 + mov byte_252F7, 0 + jmp short loc_15203 +; --------------------------------------------------------------------------- + +loc_151D8: ; CODE XREF: sub_150F4+96j + cmp byte_252F6, 2 + jnz short loc_15203 + mov al, byte_252F7 + mov ah, 0 + or ax, ax + jz short loc_151EF + cmp ax, 1 + jz short loc_151F4 + jmp short loc_151F7 +; --------------------------------------------------------------------------- + +loc_151EF: ; CODE XREF: sub_150F4+F2j + call sub_14E9D + jmp short loc_151F7 +; --------------------------------------------------------------------------- + +loc_151F4: ; CODE XREF: sub_150F4+F7j + call sub_14F16 + +loc_151F7: ; CODE XREF: sub_150F4+F9j + ; sub_150F4+FEj + cmp word_20650, 0 + jnz short loc_15203 + mov byte_252F7, 1 + +loc_15203: ; CODE XREF: sub_150F4+68j + ; sub_150F4+82j ... + call sub_145E1 + +loc_15206: ; CODE XREF: sub_150F4+2Dj + call sub_14726 + mov ax, 1 + +loc_1520C: ; CODE XREF: sub_150F4+34j + pop si + pop bp + retf +sub_150F4 endp + +; --------------------------------------------------------------------------- + db 0 +off_15210 dw offset loc_15145 ; DATA XREF: sub_150F4+4Cr + dw offset loc_1514A + dw offset loc_1514F + dw offset loc_15154 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15218 proc far ; DATA XREF: sub_B3DA+2EEo + push bp + mov bp, sp + call sub_12DE0 + push 1 + call sub_1310B + call sub_FC53 + call sub_F4BC + call sub_E162 + inc byte_1E365 + mov word_1EB0A, 0 + pop bp + retf +sub_15218 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1523C proc far ; DATA XREF: sub_B3DA+2E2o + push bp + mov bp, sp + push si + mov word_2064E, 8Dh ; '' + call sub_12DE0 + call sub_1314C + mov word_20652, 0C0h ; 'À' + mov ax, word_20652 + mov word_20654, ax + mov word_20656, 30h ; '0' + mov word_20658, 30h ; '0' + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + push 1 + call sub_289C + mov si, 30h ; '0' + add si, word_20344 + cmp si, 190h + jl short loc_15296 + sub si, 190h + +loc_15296: ; CODE XREF: sub_1523C+54j + mov bx, word_2065C + push word ptr [bx] + push si + push word_2064E + call sub_3146 + push ds + push offset aBoss4_m ; "boss4.m" + nop + push cs + call near ptr sub_13ABB + add sp, 4 + push 1 + call sub_285C + push 0 + call sub_1310B + call sub_12E95 + mov word_2065A, 0 + mov byte_2066A, 0 + mov word_21748, 2 + mov byte_1E510, 0 + mov byte_252F6, 0 + mov byte_252F7, 0 + mov word_250FE, 0 + cmp byte_1E364, 0 + jz short loc_152FF + mov byte ptr word_2066E, 1Ah + mov byte ptr word_2066E+1, 15h + mov byte ptr word_20670, 17h + jmp short loc_1530E +; --------------------------------------------------------------------------- + +loc_152FF: ; CODE XREF: sub_1523C+B0j + mov byte ptr word_2066E, 1Ah + mov byte ptr word_2066E+1, 9 + mov byte ptr word_20670, 0Bh + +loc_1530E: ; CODE XREF: sub_1523C+C1j + pop si + pop bp + retf +sub_1523C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15311 proc near ; CODE XREF: sub_1540C+54p + ; sub_1540C+6Bp ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 +arg_4 = byte ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_8] + mov dx, [bp+arg_6] + or dx, dx + jge short loc_15326 + add dx, 190h + jmp short loc_15330 +; --------------------------------------------------------------------------- + +loc_15326: ; CODE XREF: sub_15311+Dj + cmp dx, 190h + jl short loc_15330 + sub dx, 190h + +loc_15330: ; CODE XREF: sub_15311+13j + ; sub_15311+19j + mov si, 794Ah + xor cx, cx + jmp short loc_15361 +; --------------------------------------------------------------------------- + +loc_15337: ; CODE XREF: sub_15311+53j + cmp byte ptr [si], 0 + jnz short loc_1535D + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov [si+2], di + mov [si+4], dx + mov al, [bp+arg_4] + mov [si+6], al + mov al, [bp+arg_2] + mov [si+7], al + mov al, [bp+arg_0] + mov [si+8], al + jmp short loc_15366 +; --------------------------------------------------------------------------- + +loc_1535D: ; CODE XREF: sub_15311+29j + inc cx + add si, 0Ah + +loc_15361: ; CODE XREF: sub_15311+24j + cmp cx, 1Eh + jl short loc_15337 + +loc_15366: ; CODE XREF: sub_15311+4Aj + pop di + pop si + pop bp + retn 0Ah +sub_15311 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1536C proc near ; CODE XREF: sub_1540C:loc_155C0p + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = byte ptr -2 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, word_1EE16 + mov [bp+var_8], ax + mov ax, word_1EE18 + mov [bp+var_6], ax + mov ax, word_1EE1A + mov [bp+var_4], ax + mov al, byte_1EE1C + mov [bp+var_2], al + mov si, 794Ah + xor di, di + jmp short loc_153F9 +; --------------------------------------------------------------------------- + +loc_15393: ; CODE XREF: sub_1536C+90j + cmp byte ptr [si], 0 + jz short loc_153F5 + inc byte ptr [si+1] + test byte ptr [si+1], 7 + jnz short loc_153F5 + push word ptr [si+2] + push word ptr [si+4] + mov al, [si] + mov ah, 0 + lea dx, [bp+var_8] + add ax, dx + mov bx, ax + mov al, ss:[bx] + mov ah, 0 + push ax + call sub_480C + inc byte ptr [si] + cmp byte ptr [si], 7 + jb short loc_153F5 + mov ax, word_20344 + sub [si+4], ax + cmp word ptr [si+4], 0 + jge short loc_153D5 + add word ptr [si+4], 190h + +loc_153D5: ; CODE XREF: sub_1536C+62j + mov ax, [si+2] + add ax, 4 + push ax + mov ax, [si+4] + add ax, 4 + push ax + push word ptr [si+7] + push word ptr [si+6] + mov al, [si+8] + mov ah, 0 + push ax + call sub_1078E + mov byte ptr [si], 0 + +loc_153F5: ; CODE XREF: sub_1536C+2Aj + ; sub_1536C+33j ... + inc di + add si, 0Ah + +loc_153F9: ; CODE XREF: sub_1536C+25j + cmp di, 1Eh + jl short loc_15393 + pop di + pop si + leave + retn +sub_1536C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15402 proc far ; DATA XREF: sub_B3DA+464o + push bp + mov bp, sp + mov al, byte_253B4 + mov ah, 0 + pop bp + retf +sub_15402 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1540C proc far ; DATA XREF: sub_B3DA+470o + push bp + mov bp, sp + inc word_20650 + cmp word_20650, 1 + jnz short loc_15427 + mov byte_254EA, 0 + mov byte_253B4, 1 + jmp loc_155AD +; --------------------------------------------------------------------------- + +loc_15427: ; CODE XREF: sub_1540C+Cj + cmp word_20650, 60h ; '`' + jge short loc_154A0 + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz loc_155AD + cmp byte_254EA, 0 + jnz short loc_1544C + push large 800080h + jmp short loc_1549B +; --------------------------------------------------------------------------- + +loc_1544C: ; CODE XREF: sub_1540C+36j + mov al, byte_254EA + mov ah, 0 + mov dx, 80h ; '€' + sub dx, ax + push dx + push 80h ; '€' + push 21h ; '!' + push 0 + push 64h ; 'd' + call sub_15311 + push 80h ; '€' + mov al, byte_254EA + mov ah, 0 + mov dx, 80h ; '€' + sub dx, ax + push dx + push 21h ; '!' + push 0 + push 64h ; 'd' + call sub_15311 + mov al, byte_254EA + mov ah, 0 + add ax, 80h ; '€' + push ax + push 80h ; '€' + push 21h ; '!' + push 0 + push 64h ; 'd' + call sub_15311 + push 80h ; '€' + mov al, byte_254EA + mov ah, 0 + add ax, 80h ; '€' + push ax + +loc_1549B: ; CODE XREF: sub_1540C+3Ej + push 21h ; '!' + jmp loc_1559E +; --------------------------------------------------------------------------- + +loc_154A0: ; CODE XREF: sub_1540C+20j + cmp word_20650, 60h ; '`' + jz short loc_15521 + cmp word_20650, 0C0h ; 'À' + jge short loc_15519 + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz loc_155AD + cmp byte_254EA, 0 + jnz short loc_154CD + push large 1300000h + jmp short loc_15514 +; --------------------------------------------------------------------------- + +loc_154CD: ; CODE XREF: sub_1540C+B7j + mov al, byte_254EA + mov ah, 0 + mov dx, 130h + sub dx, ax + push dx + push 0 + push 24h ; '$' + push 0 + push 64h ; 'd' + call sub_15311 + push 130h + mov al, byte_254EA + mov ah, 0 + neg ax + push ax + push 24h ; '$' + push 0 + push 64h ; 'd' + call sub_15311 + mov al, byte_254EA + mov ah, 0 + add ax, 130h + push ax + push 0 + push 24h ; '$' + push 0 + push 64h ; 'd' + call sub_15311 + push 130h + mov al, byte_254EA + mov ah, 0 + push ax + +loc_15514: ; CODE XREF: sub_1540C+BFj + push 24h ; '$' + jmp loc_1559E +; --------------------------------------------------------------------------- + +loc_15519: ; CODE XREF: sub_1540C+A1j + cmp word_20650, 0C0h ; 'À' + jnz short loc_15529 + +loc_15521: ; CODE XREF: sub_1540C+99j + mov byte_254EA, 0 + jmp loc_155AD +; --------------------------------------------------------------------------- + +loc_15529: ; CODE XREF: sub_1540C+113j + cmp word_20650, 120h + jge short loc_155AD + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_155AD + cmp byte_254EA, 0 + jnz short loc_1554D + push large 0C00150h + jmp short loc_1559C +; --------------------------------------------------------------------------- + +loc_1554D: ; CODE XREF: sub_1540C+137j + mov al, byte_254EA + mov ah, 0 + mov dx, 0C0h ; 'À' + sub dx, ax + push dx + push 150h + push 25h ; '%' + push 0 + push 64h ; 'd' + call sub_15311 + push 0C0h ; 'À' + mov al, byte_254EA + mov ah, 0 + mov dx, 150h + sub dx, ax + push dx + push 25h ; '%' + push 0 + push 64h ; 'd' + call sub_15311 + mov al, byte_254EA + mov ah, 0 + add ax, 0C0h ; 'À' + push ax + push 150h + push 25h ; '%' + push 0 + push 64h ; 'd' + call sub_15311 + push 0C0h ; 'À' + mov al, byte_254EA + mov ah, 0 + add ax, 150h + push ax + +loc_1559C: ; CODE XREF: sub_1540C+13Fj + push 25h ; '%' + +loc_1559E: ; CODE XREF: sub_1540C+91j + ; sub_1540C+10Aj + push 0 + push 64h ; 'd' + call sub_15311 + mov al, byte_254EA + add al, 10h + mov byte_254EA, al + +loc_155AD: ; CODE XREF: sub_1540C+18j + ; sub_1540C+2Dj ... + cmp word_20650, 1A4h + jle short loc_155C0 + mov word_20650, 0 + mov byte_253B4, 0 + +loc_155C0: ; CODE XREF: sub_1540C+1A7j + call sub_1536C + pop bp + retf +sub_1540C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_155C5 proc near ; CODE XREF: sub_15E84+24p + ; sub_15F95+13Cp ... + +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov di, [bp+arg_4] + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 7A7Ch + or di, di + jle short loc_1563C + cmp di, 1BCh + jge short loc_1563C + cmp [bp+arg_2], 0 + jle short loc_1563C + cmp [bp+arg_2], 190h + jge short loc_1563C + xor si, si + jmp short loc_15637 +; --------------------------------------------------------------------------- + +loc_155F3: ; CODE XREF: sub_155C5+75j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_15632 + les bx, [bp+var_4] + mov byte ptr es:[bx], 1 + mov byte ptr es:[bx+1], 0 + mov es:[bx+2], di + mov ax, [bp+arg_2] + mov es:[bx+4], ax + mov ax, [bp+arg_0] + mov es:[bx+6], ax + mov byte ptr es:[bx+8], 1Ah + mov byte ptr es:[bx+9], 40h ; '@' + push 9 + call sub_FA52 + add sp, 2 + xor ax, ax + jmp short loc_1563F +; --------------------------------------------------------------------------- + +loc_15632: ; CODE XREF: sub_155C5+35j + inc si + add word ptr [bp+var_4], 0Ah + +loc_15637: ; CODE XREF: sub_155C5+2Cj + cmp si, 10h + jl short loc_155F3 + +loc_1563C: ; CODE XREF: sub_155C5+15j + ; sub_155C5+1Bj ... + mov ax, 1 + +loc_1563F: ; CODE XREF: sub_155C5+6Bj + pop di + pop si + leave + retn 6 +sub_155C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15645 proc near ; CODE XREF: sub_159AF+71p + +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 4 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 7A7Ch + xor ax, ax + jmp short loc_15668 +; --------------------------------------------------------------------------- + +loc_15657: ; CODE XREF: sub_15645+26j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 2 + jnz short loc_15663 + inc byte ptr es:[bx] + +loc_15663: ; CODE XREF: sub_15645+19j + inc ax + add word ptr [bp+var_4], 0Ah + +loc_15668: ; CODE XREF: sub_15645+10j + cmp ax, 10h + jl short loc_15657 + leave + retn +sub_15645 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1566F proc near ; CODE XREF: sub_16744:loc_16962p + +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 4 + push si + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 7A7Ch + xor si, si + jmp loc_158D2 +; --------------------------------------------------------------------------- + +loc_15683: ; CODE XREF: sub_1566F+266j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jz loc_158CD + les bx, [bp+var_4] + inc byte ptr es:[bx+1] + cmp byte ptr es:[bx], 1 + jnz loc_15721 + mov al, byte_2558C + test es:[bx+1], al + jnz short loc_156F7 + inc byte ptr es:[bx+8] + cmp byte ptr es:[bx+8], 22h ; '"' + jb short loc_156BE + inc byte ptr es:[bx] + push 3 + call sub_FA52 + add sp, 2 + +loc_156BE: ; CODE XREF: sub_1566F+40j + les bx, [bp+var_4] + mov byte ptr es:[bx+1], 0 + mov al, es:[bx+9] + add al, 0F8h ; 'ø' + mov es:[bx+9], al + push large 0C0000Fh + call sub_127E + les bx, [bp+var_4] + push word ptr es:[bx+2] + push word ptr es:[bx+4] + mov al, es:[bx+9] + mov ah, 0 + push ax + call sub_CC0 + call sub_12A8 + +loc_156F7: ; CODE XREF: sub_1566F+35j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 1 + jnz loc_158CD + mov ax, es:[bx+2] + add ax, 0FFF0h + push ax + mov ax, es:[bx+4] + add ax, 0FFF0h + push ax + mov al, es:[bx+8] + mov ah, 0 + push ax + call far ptr loc_3362 + jmp loc_158CD +; --------------------------------------------------------------------------- + +loc_15721: ; CODE XREF: sub_1566F+2Aj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 3 + jnz loc_15849 + mov al, byte_20618 + mov ah, 0 + mov dx, si + and dx, 1 + cmp ax, dx + jnz short loc_1577A + push large 0C0000Fh + call sub_127E + les bx, [bp+var_4] + push word ptr es:[bx+2] + push word ptr es:[bx+4] + mov al, es:[bx+9] + mov ah, 0 + push ax + call sub_C20 + call sub_12A8 + les bx, [bp+var_4] + mov al, es:[bx+9] + mov ah, 0 + cmp ax, es:[bx+6] + jge short loc_1577A + mov al, es:[bx+9] + add al, 10h + mov es:[bx+9], al + +loc_1577A: ; CODE XREF: sub_1566F+C9j + ; sub_1566F+FFj + les bx, [bp+var_4] + cmp byte ptr es:[bx+1], 20h ; ' ' + jbe short loc_1579B + inc byte ptr es:[bx] + mov byte ptr es:[bx+1], 0 + mov al, es:[bx+9] + mov ah, 0 + mov es:[bx+6], ax + mov byte ptr es:[bx+9], 8 + +loc_1579B: ; CODE XREF: sub_1566F+113j + les bx, [bp+var_4] + mov ax, es:[bx+2] + mov dl, es:[bx+9] + mov dh, 0 + sub ax, dx + push ax + mov al, byte_2558D + cbw + pop dx + add dx, ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + cmp dx, [bx+2B76h] + jge loc_158CD + mov bx, word ptr [bp+var_4] + mov ax, es:[bx+2] + mov dl, es:[bx+9] + mov dh, 0 + add ax, dx + push ax + mov al, byte_2558D + cbw + pop dx + sub dx, ax + add dx, 0FFE0h + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + cmp dx, [bx+2B76h] + jle loc_158CD + mov bx, word ptr [bp+var_4] + mov ax, es:[bx+4] + mov dl, es:[bx+9] + mov dh, 0 + sub ax, dx + push ax + mov al, byte_2558D + cbw + pop dx + add dx, ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + cmp dx, [bx+2B7Ah] + jge loc_158CD + mov bx, word ptr [bp+var_4] + mov ax, es:[bx+4] + mov dl, es:[bx+9] + mov dh, 0 + add ax, dx + push ax + mov al, byte_2558D + cbw + pop dx + sub dx, ax + add dx, 0FFE0h + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + cmp dx, [bx+2B7Ah] + jle loc_158CD + mov byte_20604, 1 + jmp loc_158CD +; --------------------------------------------------------------------------- + +loc_15849: ; CODE XREF: sub_1566F+B9j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 4 + jnz short loc_158CD + mov al, byte_20618 + mov ah, 0 + mov dx, si + and dx, 1 + cmp ax, dx + jnz short loc_158CD + push large 0C0000Fh + call sub_127E + les bx, [bp+var_4] + push word ptr es:[bx+2] + push word ptr es:[bx+4] + push word ptr es:[bx+6] + call sub_C20 + call sub_12A8 + push large 0C00000h + call sub_127E + les bx, [bp+var_4] + push word ptr es:[bx+2] + push word ptr es:[bx+4] + mov al, es:[bx+9] + mov ah, 0 + push ax + call sub_C20 + call sub_12A8 + les bx, [bp+var_4] + mov al, es:[bx+9] + mov ah, 0 + cmp ax, es:[bx+6] + jl short loc_158C0 + mov byte ptr es:[bx], 0 + jmp short loc_158CD +; --------------------------------------------------------------------------- + +loc_158C0: ; CODE XREF: sub_1566F+249j + les bx, [bp+var_4] + mov al, es:[bx+9] + add al, 10h + mov es:[bx+9], al + +loc_158CD: ; CODE XREF: sub_1566F+1Bj + ; sub_1566F+8Fj ... + inc si + add word ptr [bp+var_4], 0Ah + +loc_158D2: ; CODE XREF: sub_1566F+11j + cmp si, 10h + jl loc_15683 + pop si + leave + retn +sub_1566F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_158DC proc near ; CODE XREF: sub_15907:loc_159A4p + ; sub_15A25+Bp ... + push bp + mov bp, sp + push word_254E6 + push word_254E8 + push word_2064E + call far ptr loc_3362 + mov ax, word_254E6 + add ax, 40h ; '@' + push ax + push word_254E8 + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + pop bp + retn +sub_158DC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15907 proc near ; CODE XREF: sub_16744+216p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + mov ax, word_2064E + mov [bp+var_4], ax + cmp byte_2066A, 0 + jnz loc_159A4 + mov bx, word_2065C + mov ax, [bx] + add ax, 24h ; '$' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push large 380020h + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_1594A + mov word_2064E, 82h ; '‚' + add word_2065A, ax + +loc_1594A: ; CODE XREF: sub_15907+37j + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_254E6 + add dx, 8 + mov bx, ax + cmp [bx+2B76h], dx + jle short loc_159A4 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_254E6 + add dx, 58h ; 'X' + mov bx, ax + cmp [bx+2B76h], dx + jge short loc_159A4 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B7Ah] + cmp ax, word_254E8 + jle short loc_159A4 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_254E8 + add dx, 40h ; '@' + mov bx, ax + cmp [bx+2B7Ah], dx + jge short loc_159A4 + mov byte_20604, 1 + +loc_159A4: ; CODE XREF: sub_15907+11j + ; sub_15907+57j ... + call sub_158DC + mov ax, [bp+var_4] + mov word_2064E, ax + leave + retn +sub_15907 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_159AF proc far ; DATA XREF: sub_B3DA+494o + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + mov [bp+var_2], 8 + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + call sub_764 + push large 0C00000h + call sub_127E + push large 40010h + push large 33017Fh + call sub_B88 + call sub_12A8 + call sub_15645 + leave + retf +sub_159AF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15A25 proc near ; CODE XREF: sub_16744+93p + push bp + mov bp, sp + push si + cmp word_20650, 0Ah + jge short loc_15A38 + call sub_158DC + xor ax, ax + jmp loc_15D53 +; --------------------------------------------------------------------------- + +loc_15A38: ; CODE XREF: sub_15A25+9j + cmp word_20650, 0Ah + jnz short loc_15A54 + mov byte_2558E, 8 + call sub_158DC + push 9 + call sub_FA52 + add sp, 2 + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15A54: ; CODE XREF: sub_15A25+18j + cmp word_20650, 5Ah ; 'Z' + jge short loc_15AD0 + call sub_158DC + cmp byte_20618, 0 + jnz short loc_15A8A + push large 0C0000Fh + call sub_127E + mov ax, word_254E6 + add ax, 40h ; '@' + push ax + mov ax, word_254E8 + add ax, 40h ; '@' + push ax + push 18h + call sub_C20 + call sub_12A8 + +loc_15A8A: ; CODE XREF: sub_15A25+3Ej + cmp word_20650, 32h ; '2' + jl short loc_15ABA + cmp byte_20618, 0 + jz short loc_15ABA + push large 0C0000Fh + call sub_127E + mov ax, word_254E6 + add ax, 40h ; '@' + push ax + push large 10017Fh + call sub_12AE + call sub_12A8 + +loc_15ABA: ; CODE XREF: sub_15A25+6Aj + ; sub_15A25+71j + cmp word_20650, 59h ; 'Y' + jnz loc_15D51 + push 3 + call sub_FA52 + add sp, 2 + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15AD0: ; CODE XREF: sub_15A25+34j + cmp word_20650, 64h ; 'd' + jge loc_15B65 + push large 0C0000Fh + call sub_127E + mov al, byte_2558E + mov ah, 0 + push ax + mov ax, word_254E6 + add ax, 40h ; '@' + pop dx + sub ax, dx + mov bx, 8 + cwd + idiv bx + push ax + push 10h + mov al, byte_2558E + mov ah, 0 + add ax, word_254E6 + add ax, 40h ; '@' + cwd + idiv bx + push ax + push 17Fh + call sub_B88 + call sub_12A8 + mov al, byte_2558E + mov ah, 0 + mov dx, word_254E6 + add dx, 38h ; '8' + sub dx, ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + cmp dx, [bx+2B76h] + jge short loc_15B57 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dl, byte_2558E + mov dh, 0 + add dx, word_254E6 + add dx, 28h ; '(' + mov bx, ax + cmp [bx+2B76h], dx + jge short loc_15B57 + mov byte_20604, 1 + +loc_15B57: ; CODE XREF: sub_15A25+10Fj + ; sub_15A25+12Bj + mov al, byte_2558E + add al, 8 + mov byte_2558E, al + call sub_158DC + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15B65: ; CODE XREF: sub_15A25+B0j + cmp word_20650, 64h ; 'd' + jnz short loc_15BC2 + mov al, byte_2558E + mov ah, 0 + mov dx, word_254E6 + add dx, 38h ; '8' + sub dx, ax + mov word_25592, dx + mov al, byte_2558E + mov ah, 0 + add ax, word_254E6 + add ax, 28h ; '(' + mov word_25594, ax + mov al, byte_2558E + mov ah, 0 + push ax + mov ax, word_254E6 + add ax, 40h ; '@' + pop dx + sub ax, dx + mov bx, 8 + cwd + idiv bx + mov byte_2558F, al + mov al, byte_2558E + mov ah, 0 + add ax, word_254E6 + add ax, 40h ; '@' + cwd + idiv bx + add al, 0FFh + mov byte_25590, al + mov word_2064E, 86h ; '†' + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15BC2: ; CODE XREF: sub_15A25+145j + cmp word_20650, 8Ch ; 'Œ' + jg short loc_15C25 + push large 0C0000Fh + call sub_127E + mov al, byte_2558F + mov ah, 0 + push ax + push 10h + mov al, byte_25590 + mov ah, 0 + push ax + push 17Fh + call sub_B88 + call sub_12A8 + call sub_158DC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25592 + jle loc_15D51 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25594 + jge loc_15D51 + mov byte_20604, 1 + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15C25: ; CODE XREF: sub_15A25+1A3j + cmp word_20650, 0B4h ; '´' + jge loc_15CBC + push large 0C0000Fh + call sub_127E + mov al, byte_2558F + mov ah, 0 + push ax + push 10h + mov al, byte_25590 + mov ah, 0 + push ax + push 17Fh + call sub_B88 + call sub_12A8 + mov ax, word_20650 + mov bx, 0Ah + cwd + idiv bx + or dx, dx + jnz short loc_15C67 + add word_2064E, 2 + +loc_15C67: ; CODE XREF: sub_15A25+23Bj + call sub_158DC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25592 + jle short loc_15C95 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25594 + jge short loc_15C95 + mov byte_20604, 1 + +loc_15C95: ; CODE XREF: sub_15A25+256j + ; sub_15A25+269j + mov ax, word_20650 + and ax, 1 + mov si, ax + mov ax, 190h + sub ax, word_20344 + push ax + mov ax, word_20344 + imul ax, 28h + add ax, si + push ax + push si + call sub_1E2C + mov byte_2066D, 2 + jmp loc_15D51 +; --------------------------------------------------------------------------- + +loc_15CBC: ; CODE XREF: sub_15A25+206j + cmp word_20650, 0DCh ; 'Ü' + jg short loc_15D1C + mov byte_2066D, 1 + push large 0C0000Fh + call sub_127E + mov al, byte_2558F + mov ah, 0 + push ax + push 10h + mov al, byte_25590 + mov ah, 0 + push ax + push 17Fh + call sub_B88 + call sub_12A8 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25592 + jle short loc_15D51 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B76h] + cmp ax, word_25594 + jge short loc_15D51 + mov byte_20604, 1 + jmp short loc_15D51 +; --------------------------------------------------------------------------- + +loc_15D1C: ; CODE XREF: sub_15A25+29Dj + cmp word_20650, 0E0h ; 'à' + jge short loc_15D4C + push large 0C00000h + call sub_127E + mov al, byte_2558F + mov ah, 0 + push ax + push 10h + mov al, byte_25590 + mov ah, 0 + push ax + push 17Fh + call sub_B88 + call sub_12A8 + jmp short loc_15D51 +; --------------------------------------------------------------------------- + +loc_15D4C: ; CODE XREF: sub_15A25+2FDj + mov ax, 1 + jmp short loc_15D53 +; --------------------------------------------------------------------------- + +loc_15D51: ; CODE XREF: sub_15A25+2Cj + ; sub_15A25+9Aj ... + xor ax, ax + +loc_15D53: ; CODE XREF: sub_15A25+10j + ; sub_15A25+32Aj + pop si + pop bp + retn +sub_15A25 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15D56 proc near + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + cmp word_20650, 14h + jl loc_15E81 + cmp word_20650, 14h + jnz short loc_15D83 + mov byte_25596, 0 + cmp word_205F6, 0D0h ; 'Ð' + jge short loc_15D7E + mov al, 1 + jmp short loc_15D80 +; --------------------------------------------------------------------------- + +loc_15D7E: ; CODE XREF: sub_15D56+22j + mov al, 0FFh + +loc_15D80: ; CODE XREF: sub_15D56+26j + mov byte_25597, al + +loc_15D83: ; CODE XREF: sub_15D56+15j + mov ax, word_20650 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_15D9A + push 3 + call sub_FA52 + add sp, 2 + +loc_15D9A: ; CODE XREF: sub_15D56+38j + cmp word_20650, 94h ; '”' + jge short loc_15DB7 + mov al, byte_25597 + cbw + mov bx, word_2065C + add [bx], ax + test byte ptr word_20650, 1 + jz loc_15E81 + jmp short loc_15DF2 +; --------------------------------------------------------------------------- + +loc_15DB7: ; CODE XREF: sub_15D56+4Aj + cmp word_20650, 0D4h ; 'Ô' + jge short loc_15DD7 + mov al, byte_25597 + cbw + shl ax, 2 + mov bx, word_2065C + sub [bx], ax + test byte ptr word_20650, 1 + jz loc_15E81 + jmp short loc_15DF2 +; --------------------------------------------------------------------------- + +loc_15DD7: ; CODE XREF: sub_15D56+67j + cmp word_20650, 154h + jge short loc_15E19 + mov al, byte_25597 + cbw + mov bx, word_2065C + add [bx], ax + test byte ptr word_20650, 1 + jz loc_15E81 + +loc_15DF2: ; CODE XREF: sub_15D56+5Fj + ; sub_15D56+7Fj + push 7Fh ; '' + call sub_FAD5 + mov ah, 0 + add ax, word_254E6 + push ax + mov ax, word_254E8 + add ax, 40h ; '@' + push ax + push 40h ; '@' + push 20h ; ' ' + push 1Fh + call sub_FAD5 + mov ah, 0 + add ax, 1Eh + push ax + call sub_1078E + jmp short loc_15E81 +; --------------------------------------------------------------------------- + +loc_15E19: ; CODE XREF: sub_15D56+87j + cmp word_20650, 1B8h + jge short loc_15E7B + inc byte_25596 + call sub_FAC6 + mov ah, 0 + mov dl, byte_25596 + mov dh, 0 + add dx, dx + push dx + cwd + pop bx + idiv bx + mov al, 40h ; '@' + sub al, byte_25596 + add dl, al + mov [bp+var_1], dl + test byte ptr word_20650, 3 + jnz short loc_15E81 + xor si, si + jmp short loc_15E74 +; --------------------------------------------------------------------------- + +loc_15E4D: ; CODE XREF: sub_15D56+121j + push 7Fh ; '' + call sub_FAD5 + mov ah, 0 + add ax, word_254E6 + push ax + mov ax, word_254E8 + add ax, 40h ; '@' + push ax + push word ptr [bp+var_1] + push 20h ; ' ' + push 1Fh + call sub_FAD5 + mov ah, 0 + add ax, 1Eh + push ax + call sub_1078E + inc si + +loc_15E74: ; CODE XREF: sub_15D56+F5j + cmp si, 3 + jl short loc_15E4D + jmp short loc_15E81 +; --------------------------------------------------------------------------- + +loc_15E7B: ; CODE XREF: sub_15D56+C9j + mov word_20650, 0 + +loc_15E81: ; CODE XREF: sub_15D56+Cj + ; sub_15D56+5Bj ... + pop si + leave + retn +sub_15D56 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15E84 proc near + push bp + mov bp, sp + cmp word_20650, 64h ; 'd' + jl short loc_15EF5 + cmp word_20650, 64h ; 'd' + jnz short loc_15EAD + mov byte_2558C, 7 + mov byte_2558D, 4 + push 80h ; '€' + +loc_15EA2: ; CODE XREF: sub_15E84+33j + push large 1400040h + call sub_155C5 + jmp short loc_15EE7 +; --------------------------------------------------------------------------- + +loc_15EAD: ; CODE XREF: sub_15E84+Fj + cmp word_20650, 78h ; 'x' + jnz short loc_15EB9 + push 140h + jmp short loc_15EA2 +; --------------------------------------------------------------------------- + +loc_15EB9: ; CODE XREF: sub_15E84+2Ej + cmp word_20650, 82h ; '‚' + jle short loc_15EE7 + cmp word_20650, 96h ; '–' + jge short loc_15EE7 + mov ax, word_20650 + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_15EE7 + push word_253B6 + push word_253B8 + push 0 + push 17h + push 78h ; 'x' + call sub_1078E + +loc_15EE7: ; CODE XREF: sub_15E84+27j + ; sub_15E84+3Bj ... + cmp word_20650, 0C8h ; 'È' + jle short loc_15EF5 + mov word_20650, 0 + +loc_15EF5: ; CODE XREF: sub_15E84+8j + ; sub_15E84+69j + pop bp + retn +sub_15E84 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15EF7 proc near ; CODE XREF: sub_15F6F+3p sub_16176+3p ... + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jge short loc_15F06 + mov ax, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_15F06: ; CODE XREF: sub_15EF7+8j + cmp word_20650, 32h ; '2' + jnz short loc_15F1E + cmp word_205F6, 0D0h ; 'Ð' + jge short loc_15F19 + mov al, 1 + jmp short loc_15F1B +; --------------------------------------------------------------------------- + +loc_15F19: ; CODE XREF: sub_15EF7+1Cj + mov al, 0FFh + +loc_15F1B: ; CODE XREF: sub_15EF7+20j + mov byte_25598, al + +loc_15F1E: ; CODE XREF: sub_15EF7+14j + cmp word_20650, 72h ; 'r' + jge short loc_15F37 + mov al, byte_25598 + cbw + mov bx, word_2065C + add [bx], ax + mov bx, word_2065E + inc word ptr [bx] + jmp short loc_15F6B +; --------------------------------------------------------------------------- + +loc_15F37: ; CODE XREF: sub_15EF7+2Cj + cmp word_20650, 0F2h ; 'ò' + jge short loc_15F4B + mov al, byte_25598 + cbw + mov bx, word_2065C + sub [bx], ax + jmp short loc_15F6B +; --------------------------------------------------------------------------- + +loc_15F4B: ; CODE XREF: sub_15EF7+46j + cmp word_20650, 132h + jge short loc_15F65 + mov al, byte_25598 + cbw + mov bx, word_2065C + add [bx], ax + mov bx, word_2065E + dec word ptr [bx] + jmp short loc_15F6B +; --------------------------------------------------------------------------- + +loc_15F65: ; CODE XREF: sub_15EF7+5Aj + mov word_20650, 0 + +loc_15F6B: ; CODE XREF: sub_15EF7+3Ej + ; sub_15EF7+52j ... + xor ax, ax + pop bp + retn +sub_15EF7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15F6F proc near + push bp + mov bp, sp + call sub_15EF7 + or ax, ax + jnz short loc_15F93 + test byte ptr word_20650, 1Fh + jnz short loc_15F93 + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 27h ; ''' + push 55h ; 'U' + call sub_1078E + +loc_15F93: ; CODE XREF: sub_15F6F+8j sub_15F6F+Fj + pop bp + retn +sub_15F6F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15F95 proc near + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + cmp word_20650, 32h ; '2' + jl loc_16172 + cmp word_20650, 32h ; '2' + jnz short loc_15FB7 + push 9 + call sub_FA52 + add sp, 2 + +loc_15FB7: ; CODE XREF: sub_15F95+16j + cmp word_20650, 64h ; 'd' + jge short loc_15FCF + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, 80h ; '€' + mov word_2064E, ax + jmp loc_16172 +; --------------------------------------------------------------------------- + +loc_15FCF: ; CODE XREF: sub_15F95+27j + cmp word_20650, 64h ; 'd' + jnz short loc_15FFD + mov ax, word_205F6 + add ax, 10h + mov word_2559A, ax + mov ax, word_205F8 + add ax, 10h + mov word_2559C, ax + mov byte_2558C, 3 + mov byte_2558D, 0FCh ; 'ü' + mov byte_2559E, 0 + mov word_2064E, 80h ; '€' + +loc_15FFD: ; CODE XREF: sub_15F95+3Fj + cmp word_20650, 82h ; '‚' + jge short loc_1604A + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_1601A + push large 0C0000Fh + jmp short loc_1602E +; --------------------------------------------------------------------------- + +loc_1601A: ; CODE XREF: sub_15F95+7Bj + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + cmp dx, 2 + jnz short loc_16042 + push large 0C00000h + +loc_1602E: ; CODE XREF: sub_15F95+83j + call sub_127E + push word_2559A + push word_2559C + push 70h ; 'p' + call sub_CC0 + +loc_16042: ; CODE XREF: sub_15F95+91j + call sub_12A8 + jmp loc_16172 +; --------------------------------------------------------------------------- + +loc_1604A: ; CODE XREF: sub_15F95+6Ej + cmp word_20650, 1C2h + jge loc_16146 + cmp byte_20618, 0 + jnz short loc_1607A + push large 0C0000Fh + call sub_127E + push word_2559A + push word_2559C + push 70h ; 'p' + call sub_CC0 + call sub_12A8 + +loc_1607A: ; CODE XREF: sub_15F95+C4j + cmp word_20650, 96h ; '–' + jl loc_16172 + mov ax, word_20650 + mov bx, 0Ch + cwd + idiv bx + or dx, dx + jnz loc_16122 + mov al, byte_2559E + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+5ECh] + imul eax, 70h + sar eax, 8 + add ax, word_2559A + mov si, ax + mov al, byte_2559E + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+56Ch] + imul eax, 70h + sar eax, 8 + add ax, word_2559C + mov di, ax + push si + push ax + push 18h + call sub_155C5 + mov al, byte_2559E + add al, 80h ; '€' + mov [bp+var_1], al + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+5ECh] + imul eax, 70h + sar eax, 8 + add ax, word_2559A + mov si, ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+56Ch] + imul eax, 70h + sar eax, 8 + add ax, word_2559C + mov di, ax + push si + push ax + push 18h + call sub_155C5 + mov al, byte_2559E + add al, 0F0h ; 'ð' + mov byte_2559E, al + +loc_16122: ; CODE XREF: sub_15F95+FAj + cmp word_20650, 0C8h ; 'È' + jl short loc_16172 + test byte ptr word_20650, 0Fh + jnz short loc_16172 + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 27h ; ''' + push 50h ; 'P' + call sub_1078E + jmp short loc_16172 +; --------------------------------------------------------------------------- + +loc_16146: ; CODE XREF: sub_15F95+BBj + cmp byte_20618, 0 + jnz short loc_16172 + push large 0C00000h + call sub_127E + push word_2559A + push word_2559C + push 70h ; 'p' + call sub_CC0 + call sub_12A8 + mov word_20650, 0 + +loc_16172: ; CODE XREF: sub_15F95+Dj + ; sub_15F95+37j ... + pop di + pop si + leave + retn +sub_15F95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16176 proc near + push bp + mov bp, sp + call sub_15EF7 + or ax, ax + jnz short loc_1619A + test byte ptr word_20650, 7 + jnz short loc_1619A + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 25h ; '%' + push 32h ; '2' + call sub_1078E + +loc_1619A: ; CODE XREF: sub_16176+8j sub_16176+Fj + pop bp + retn +sub_16176 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1619C proc near + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_162D1 + cmp word_20650, 32h ; '2' + jnz short loc_161B9 + push 9 + call sub_FA52 + add sp, 2 + +loc_161B9: ; CODE XREF: sub_1619C+11j + cmp word_20650, 64h ; 'd' + jge short loc_161D0 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, 80h ; '€' + mov word_2064E, ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_161D0: ; CODE XREF: sub_1619C+22j + cmp word_20650, 64h ; 'd' + jnz short loc_161EE + mov word_2064E, 80h ; '€' + mov word_255A0, 20h ; ' ' + mov byte_255A2, 0 + mov word_21748, 1 + +loc_161EE: ; CODE XREF: sub_1619C+39j + test byte ptr word_20650, 0Fh + jnz loc_162D1 + push word_255A0 + push 18h + push 40h ; '@' + push 87h ; '‡' + mov al, byte_255A2 + mov ah, 0 + add ax, 7Ah ; 'z' + push ax + push 40h ; '@' + call sub_10865 + mov ax, 1B0h + sub ax, word_255A0 + push ax + push 18h + push 40h ; '@' + push 87h ; '‡' + mov al, byte_255A2 + mov ah, 0 + add ax, 7Ah ; 'z' + push ax + push 40h ; '@' + call sub_10865 + add word_255A0, 10h + cmp word_255A0, 0E0h ; 'à' + jnz short loc_162B2 + mov byte_23A70, 20h ; ' ' + mov ax, word_254E6 + add ax, 3Ch ; '<' + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov byte_23A70, 30h ; '0' + mov ax, word_254E6 + add ax, 2Ch ; ',' + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov ax, word_254E6 + add ax, 4Ch ; 'L' + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov byte_23A70, 64h ; 'd' + mov ax, word_254E6 + add ax, 1Ch + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov ax, word_254E6 + add ax, 5Ch ; '\' + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov byte_23A70, 10h + +loc_162B2: ; CODE XREF: sub_1619C+9Cj + cmp word_255A0, 1B0h + jl short loc_162D1 + mov word_255A0, 20h ; ' ' + inc byte_255A2 + cmp byte_255A2, 2 + jb short loc_162D1 + mov word_20650, 0 + +loc_162D1: ; CODE XREF: sub_1619C+8j + ; sub_1619C+57j ... + pop bp + retn +sub_1619C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_162D3 proc near + +var_E = word ptr -0Eh +var_B = word ptr -0Bh + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov si, 13AEh + lea di, [bp+var_B+1] + push ss + pop es + mov cx, 5 + rep movsw + call sub_15EF7 + or ax, ax + jnz loc_1641D + cmp word_20650, 64h ; 'd' + jnz short loc_16300 + mov byte_255A3, 0 + jmp loc_1641D +; --------------------------------------------------------------------------- + +loc_16300: ; CODE XREF: sub_162D3+23j + cmp word_20650, 72h ; 'r' + jz short loc_1634B + cmp word_20650, 76h ; 'v' + jz short loc_16325 + cmp word_20650, 7Ah ; 'z' + jz short loc_1637C + cmp word_20650, 0F2h ; 'ò' + jz short loc_1634B + cmp word_20650, 0F6h ; 'ö' + jnz short loc_16374 + +loc_16325: ; CODE XREF: sub_162D3+39j + mov al, byte_255A3 + inc byte_255A3 + cbw + add ax, ax + lea dx, [bp+var_B+1] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, word_254E6 + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + +loc_1634B: ; CODE XREF: sub_162D3+32j + ; sub_162D3+48j + mov al, byte_255A3 + inc byte_255A3 + cbw + add ax, ax + lea dx, [bp+var_B+1] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, word_254E6 + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + jmp loc_1641D +; --------------------------------------------------------------------------- + +loc_16374: ; CODE XREF: sub_162D3+50j + cmp word_20650, 0FAh ; 'ú' + jnz short loc_163CB + +loc_1637C: ; CODE XREF: sub_162D3+40j + mov al, byte_255A3 + inc byte_255A3 + cbw + add ax, ax + lea dx, [bp+var_B+1] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, word_254E6 + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov al, byte_255A3 + cbw + add ax, ax + lea dx, [bp+var_B+1] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, word_254E6 + push ax + push word_253B8 + push large 1006Fh + call sub_12A19 + mov byte_255A3, 0 + jmp short loc_1641D +; --------------------------------------------------------------------------- + +loc_163CB: ; CODE XREF: sub_162D3+A7j + cmp word_20650, 78h ; 'x' + jle short loc_1641D + cmp word_20650, 0F0h ; 'ð' + jge short loc_1641D + test byte ptr word_20650, 0Fh + jnz short loc_1641D + mov byte ptr [bp+var_B], 90h ; '' + mov [bp+var_E], 0 + jmp short loc_16417 +; --------------------------------------------------------------------------- + +loc_163EC: ; CODE XREF: sub_162D3+148j + push word_253B6 + push word_253B8 + push [bp+var_B] + push 87h ; '‡' + mov ax, [bp+var_E] + mov bx, 2 + cwd + idiv bx + add dx, 7Ah ; 'z' + push dx + push 3Ch ; '<' + call sub_10865 + mov al, byte ptr [bp+var_B] + add al, 10h + mov byte ptr [bp+var_B], al + inc [bp+var_E] + +loc_16417: ; CODE XREF: sub_162D3+117j + cmp byte ptr [bp+var_B], 0F0h ; 'ð' + jb short loc_163EC + +loc_1641D: ; CODE XREF: sub_162D3+1Aj + ; sub_162D3+2Aj ... + pop di + pop si + leave + retn +sub_162D3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16421 proc near + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + cmp word_20650, 32h ; '2' + jl locret_16553 + cmp word_20650, 32h ; '2' + jnz short loc_16441 + push 9 + call sub_FA52 + add sp, 2 + +loc_16441: ; CODE XREF: sub_16421+14j + cmp word_20650, 64h ; 'd' + jge short loc_16458 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, 80h ; '€' + mov word_2064E, ax + leave + retn +; --------------------------------------------------------------------------- + +loc_16458: ; CODE XREF: sub_16421+25j + cmp word_20650, 64h ; 'd' + jnz short loc_164AD + push word_253B6 + push word_253B8 + mov ax, word_205F6 + add ax, 10h + push ax + mov ax, word_205F8 + add ax, 10h + push ax + push 0 + push ds + push offset word_255A4 + push ds + push offset word_255A6 + push 30h ; '0' + call sub_F5B1 + mov ax, word_255A4 + neg ax + mov word_255AC, ax + mov word_2064E, 80h ; '€' + mov ax, word_253B6 + mov word_255A8, ax + mov word_255AE, ax + mov byte_2558D, 0FCh ; 'ü' + mov byte_2558C, 3 + mov ax, word_253B8 + mov word_255AA, ax + +loc_164AD: ; CODE XREF: sub_16421+3Cj + test byte ptr word_20650, 7 + jnz locret_16553 + push word_255A8 + push word_255AA + push 30h ; '0' + call sub_155C5 + mov [bp+var_2], ax + push word_255AE + push word_255AA + push 30h ; '0' + call sub_155C5 + or ax, ax + jz short loc_164E3 + cmp [bp+var_2], 0 + jz short loc_164E3 + mov word_20650, 0 + +loc_164E3: ; CODE XREF: sub_16421+B4j + ; sub_16421+BAj + mov ax, word_255A4 + add word_255A8, ax + mov ax, word_255AC + add word_255AE, ax + mov ax, word_255A6 + add word_255AA, ax + mov ax, word_205F6 + add ax, 10h + cmp ax, word_255A8 + jle short loc_1650B + add word_255A8, 10h + jmp short loc_1651C +; --------------------------------------------------------------------------- + +loc_1650B: ; CODE XREF: sub_16421+E1j + mov ax, word_205F6 + add ax, 10h + cmp ax, word_255A8 + jge short loc_1651C + sub word_255A8, 10h + +loc_1651C: ; CODE XREF: sub_16421+E8j + ; sub_16421+F4j + mov ax, word_205F6 + add ax, 10h + cmp ax, word_255AE + jle short loc_1652F + sub word_255AE, 10h + jmp short loc_16540 +; --------------------------------------------------------------------------- + +loc_1652F: ; CODE XREF: sub_16421+105j + mov ax, word_205F6 + add ax, 10h + cmp ax, word_255AE + jge short loc_16540 + add word_255AE, 10h + +loc_16540: ; CODE XREF: sub_16421+10Cj + ; sub_16421+118j + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 25h ; '%' + push 3Ch ; '<' + call sub_1078E + +locret_16553: ; CODE XREF: sub_16421+Bj + ; sub_16421+91j + leave + retn +sub_16421 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16555 proc near + push bp + mov bp, sp + call sub_15EF7 + or ax, ax + jnz short loc_165A3 + cmp word_20650, 32h ; '2' + jnz short loc_1656B + mov byte_2558C, 7 + +loc_1656B: ; CODE XREF: sub_16555+Fj + mov ax, word_20650 + and ax, 3Fh + cmp ax, 20h ; ' ' + jnz short loc_16589 + mov ax, word_205F6 + add ax, 10h + push ax + mov ax, word_205F8 + add ax, 10h + push ax + push 30h ; '0' + call sub_155C5 + +loc_16589: ; CODE XREF: sub_16555+1Fj + test byte ptr word_20650, 3Fh + jnz short loc_165A3 + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 27h ; ''' + push 3Ch ; '<' + call sub_1078E + +loc_165A3: ; CODE XREF: sub_16555+8j + ; sub_16555+39j + pop bp + retn +sub_16555 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_165A5 proc near ; CODE XREF: sub_16606+3p sub_16650+3p ... + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jge short loc_165B4 + mov ax, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_165B4: ; CODE XREF: sub_165A5+8j + cmp word_20650, 32h ; '2' + jnz short loc_165CC + cmp word_205F6, 0D0h ; 'Ð' + jge short loc_165C7 + mov al, 2 + jmp short loc_165C9 +; --------------------------------------------------------------------------- + +loc_165C7: ; CODE XREF: sub_165A5+1Cj + mov al, 0FEh ; 'þ' + +loc_165C9: ; CODE XREF: sub_165A5+20j + mov byte_255B0, al + +loc_165CC: ; CODE XREF: sub_165A5+14j + cmp word_20650, 82h ; '‚' + jl short loc_165F0 + cmp word_20650, 122h + jge short loc_165E8 + mov al, byte_255B0 + cbw + mov bx, word_2065C + sub [bx], ax + jmp short loc_16602 +; --------------------------------------------------------------------------- + +loc_165E8: ; CODE XREF: sub_165A5+35j + cmp word_20650, 172h + jge short loc_165FC + +loc_165F0: ; CODE XREF: sub_165A5+2Dj + mov al, byte_255B0 + cbw + mov bx, word_2065C + add [bx], ax + jmp short loc_16602 +; --------------------------------------------------------------------------- + +loc_165FC: ; CODE XREF: sub_165A5+49j + mov word_20650, 0 + +loc_16602: ; CODE XREF: sub_165A5+41j + ; sub_165A5+55j + xor ax, ax + pop bp + retn +sub_165A5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16606 proc near + push bp + mov bp, sp + call sub_165A5 + or ax, ax + jnz short loc_1664E + cmp word_20650, 32h ; '2' + jnz short loc_1661C + mov byte_2558C, 7 + +loc_1661C: ; CODE XREF: sub_16606+Fj + test byte ptr word_20650, 3Fh + jnz short loc_16636 + mov ax, word_205F6 + add ax, 10h + push ax + mov ax, word_205F8 + add ax, 10h + push ax + push 30h ; '0' + call sub_155C5 + +loc_16636: ; CODE XREF: sub_16606+1Bj + test byte ptr word_20650, 7 + jnz short loc_1664E + push word_253B6 + push word_253B8 + push 0 + push 26h ; '&' + push 46h ; 'F' + call sub_1078E + +loc_1664E: ; CODE XREF: sub_16606+8j + ; sub_16606+35j + pop bp + retn +sub_16606 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16650 proc near + push bp + mov bp, sp + call sub_165A5 + or ax, ax + jnz short loc_1668C + cmp word_20650, 32h ; '2' + jnz short loc_16666 + mov byte ptr word_255B1, 0 + +loc_16666: ; CODE XREF: sub_16650+Fj + test byte ptr word_20650, 7 + jnz short loc_1668C + push word_253B6 + push word_253B8 + push word_255B1 + push 24h ; '$' + push large 560050h + call sub_10865 + mov al, byte ptr word_255B1 + add al, 8 + mov byte ptr word_255B1, al + +loc_1668C: ; CODE XREF: sub_16650+8j + ; sub_16650+1Bj + pop bp + retn +sub_16650 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1668E proc near + push bp + mov bp, sp + call sub_165A5 + or ax, ax + jnz short loc_166DC + cmp word_20650, 32h ; '2' + jnz short loc_166A4 + mov byte_2558C, 7 + +loc_166A4: ; CODE XREF: sub_1668E+Fj + test byte ptr word_20650, 1Fh + jnz short loc_166BE + mov ax, word_205F6 + add ax, 10h + push ax + mov ax, word_205F8 + add ax, 10h + push ax + push 30h ; '0' + call sub_155C5 + +loc_166BE: ; CODE XREF: sub_1668E+1Bj + mov ax, word_20650 + and ax, 1Fh + cmp ax, 10h + jnz short loc_166DC + push word_253B6 + push word_253B8 + call sub_FAC6 + push ax + push 25h ; '%' + push 3Ch ; '<' + call sub_1078E + +loc_166DC: ; CODE XREF: sub_1668E+8j + ; sub_1668E+39j + pop bp + retn +sub_1668E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_166DE proc far ; CODE XREF: sub_16744+EBp + ; sub_16744+19Bp ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov al, byte_255B4 + mov ah, 0 + or ax, ax + jz short loc_166F6 + cmp ax, 1 + jz short loc_166FC + cmp ax, 2 + jz short loc_16702 + jmp short loc_16706 +; --------------------------------------------------------------------------- + +loc_166F6: ; CODE XREF: sub_166DE+Aj + call word_255B6 + jmp short loc_16706 +; --------------------------------------------------------------------------- + +loc_166FC: ; CODE XREF: sub_166DE+Fj + call word_255B8 + jmp short loc_16706 +; --------------------------------------------------------------------------- + +loc_16702: ; CODE XREF: sub_166DE+14j + call word_255BA + +loc_16706: ; CODE XREF: sub_166DE+16j + ; sub_166DE+1Cj ... + cmp word_20650, 0 + jnz short loc_16742 + inc byte_255B4 + mov al, byte_255B4 + mov ah, 0 + cmp ax, [bp+arg_0] + jl short loc_16725 + mov byte_255B4, 0 + mov byte_255B3, 1 + +loc_16725: ; CODE XREF: sub_166DE+3Bj + mov ax, word_2065A + cmp ax, word_255BC + jl short loc_16742 + mov word_2065A, 0 + inc byte ptr word_255B1+1 + mov byte_255B4, 0 + mov byte_255B3, 0 + +loc_16742: ; CODE XREF: sub_166DE+2Dj + ; sub_166DE+4Ej + pop bp + retf +sub_166DE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16744 proc far ; DATA XREF: sub_B3DA+4A0o + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + mov bx, word_2065C + mov ax, [bx] + mov word_254E6, ax + mov bx, word_2065E + mov ax, [bx] + mov word_254E8, ax + mov ax, word_254E6 + add ax, 3Ch ; '<' + mov word_253B6, ax + mov ax, word_254E8 + add ax, 3Ch ; '<' + mov word_253B8, ax + inc word_20650 + mov ax, word_253B6 + mov word_205D8, ax + mov ax, word_253B8 + mov word_205DA, ax + test byte ptr dword_20612, 1 + jnz short loc_167D0 + mov al, byte_255BE + add al, 8 + mov byte_255BE, al + push large 0C00004h + call sub_127E + xor si, si + mov al, byte_255BE + jmp short loc_167C3 +; --------------------------------------------------------------------------- + +loc_167A0: ; CODE XREF: sub_16744+85j + push large 0E000C8h + mov al, [bp+var_1] + mov ah, 0 + push ax + mov al, byte_2066C + mov ah, 0 + imul ax, 0Eh + add ax, 2 + push ax + call sub_1C287 + inc si + mov al, [bp+var_1] + add al, 80h ; '€' + +loc_167C3: ; CODE XREF: sub_16744+5Aj + mov [bp+var_1], al + cmp si, 2 + jl short loc_167A0 + call sub_12A8 + +loc_167D0: ; CODE XREF: sub_16744+40j + cmp byte_2066A, 0 + jz short loc_167E6 + call sub_15A25 + or ax, ax + jz loc_16962 + mov ax, 2 + jmp loc_16968 +; --------------------------------------------------------------------------- + +loc_167E6: ; CODE XREF: sub_16744+91j + cmp byte ptr word_255B1+1, 0 + jnz short loc_16825 + cmp word_20650, 32h ; '2' + jle loc_16948 + mov byte_255B4, 0 + mov word_20650, 0 + inc byte ptr word_255B1+1 + mov byte_255B3, 0 + mov word_255B6, 6296h + mov word_255B8, 63C4h + mov word_255BA, 64AFh + mov word_255BC, 708h + jmp loc_16948 +; --------------------------------------------------------------------------- + +loc_16825: ; CODE XREF: sub_16744+A7j + cmp byte ptr word_255B1+1, 1 + jnz short loc_16838 + push 3 + push cs + call near ptr sub_166DE + add sp, 2 + jmp loc_16948 +; --------------------------------------------------------------------------- + +loc_16838: ; CODE XREF: sub_16744+E6j + cmp byte ptr word_255B1+1, 2 + jnz short loc_16868 + mov byte_255B4, 0 + mov word_20650, 0 + inc byte ptr word_255B1+1 + mov byte_255B3, 0 + mov word_255B6, 64D5h + mov word_255B8, 66B6h + mov word_255BC, 708h + jmp loc_16948 +; --------------------------------------------------------------------------- + +loc_16868: ; CODE XREF: sub_16744+F9j + cmp byte ptr word_255B1+1, 3 + jz short loc_168DC + cmp byte ptr word_255B1+1, 4 + jnz short loc_1689F + mov byte_255B4, 0 + mov word_20650, 0 + inc byte ptr word_255B1+1 + mov byte_255B3, 0 + mov word_255B6, 66DCh + mov word_255B8, 6813h + mov word_255BC, 708h + jmp loc_16948 +; --------------------------------------------------------------------------- + +loc_1689F: ; CODE XREF: sub_16744+130j + cmp byte ptr word_255B1+1, 5 + jz short loc_168DC + cmp byte ptr word_255B1+1, 6 + jnz short loc_168D5 + mov byte_255B4, 0 + mov word_20650, 0 + inc byte ptr word_255B1+1 + mov byte_255B3, 0 + mov word_255B6, 6961h + mov word_255B8, 6A95h + mov word_255BC, 708h + jmp short loc_16948 +; --------------------------------------------------------------------------- + +loc_168D5: ; CODE XREF: sub_16744+167j + cmp byte ptr word_255B1+1, 7 + jnz short loc_168E7 + +loc_168DC: ; CODE XREF: sub_16744+129j + ; sub_16744+160j + push 2 + push cs + call near ptr sub_166DE + add sp, 2 + jmp short loc_16948 +; --------------------------------------------------------------------------- + +loc_168E7: ; CODE XREF: sub_16744+196j + cmp byte ptr word_255B1+1, 8 + jnz short loc_1691C + mov byte_255B4, 0 + mov word_20650, 0 + inc byte ptr word_255B1+1 + mov byte_255B3, 0 + mov word_255B6, 6B46h + mov word_255B8, 6B90h + mov word_255BA, 6BCEh + mov word_255BC, 1388h + jmp short loc_16948 +; --------------------------------------------------------------------------- + +loc_1691C: ; CODE XREF: sub_16744+1A8j + cmp byte ptr word_255B1+1, 9 + jnz short loc_16948 + push 3 + push cs + call near ptr sub_166DE + add sp, 2 + cmp word_2065A, 514h + jl short loc_16948 + mov byte_2066A, 1 + add dword_1E598, 493E0h + mov word_20650, 0 + +loc_16948: ; CODE XREF: sub_16744+AEj + ; sub_16744+DEj ... + mov bx, word_2065C + mov ax, [bx] + mov word_254E6, ax + mov bx, word_2065E + mov ax, [bx] + mov word_254E8, ax + call sub_15907 + inc dword_20682 + +loc_16962: ; CODE XREF: sub_16744+98j + call sub_1566F + mov ax, 1 + +loc_16968: ; CODE XREF: sub_16744+9Fj + pop si + leave + retf +sub_16744 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1696B proc far ; DATA XREF: sub_B3DA+47Co + push bp + mov bp, sp + call sub_1A6C5 + mov byte_2287E, 2 + call sub_12DE0 + push large 8000C0h + call sub_2F56 + mov word_1E2FC, 80h ; '€' + push ds + push offset aStage5b1_bft ; "stage5b1.bft" + call sub_2E7C + push ds + push offset aStage5b2_bft ; "stage5b2.bft" + call sub_2E7C + push large 200000h + push large 1A0018Fh + call sub_F1E + call sub_134A0 + mov word_20652, 0A0h ; ' ' + mov word_20654, 0A0h ; ' ' + mov word_254E6, 0A0h ; ' ' + mov word_20656, 30h ; '0' + mov word_20658, 30h ; '0' + mov word_254E8, 30h ; '0' + mov word_2065A, 0 + mov word_20650, 0 + mov word_2064E, 80h ; '€' + mov byte ptr word_255B1+1, 0 + mov byte_2558C, 7 + nop + push cs + call near ptr sub_10E0A + call sub_D376 + push 1 + call sub_289C + call sub_158DC + push ds + push offset aBoss5_m ; "boss5.m" + nop + push cs + call near ptr sub_13ABB + add sp, 4 + push 1 + call sub_285C + push 0 + call sub_1310B + call sub_12E95 + pop bp + retf +sub_1696B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A21 proc far ; DATA XREF: sub_B3DA+488o + push bp + mov bp, sp + call sub_12DE0 + push 1 + call sub_1310B + call sub_FE12 + call sub_F4BC + les bx, dword_2026C + mov byte ptr es:[bx+0Bh], 7Fh ; '' + mov eax, dword_1E598 + imul eax, 0Ah + movzx edx, word ptr es:[bx+12h] + add eax, edx + mov es:[bx+0Eh], eax + call sub_1CDD6 + push ds + push offset aMaine ; "maine" + call sub_C566 + add sp, 4 + pop bp + retf +sub_16A21 endp + +; --------------------------------------------------------------------------- + +loc_16A66: ; DATA XREF: sub_16A8A+9o + ; sub_16A8A+15o + push bp + mov bp, sp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A6B proc far ; CODE XREF: sub_B3DA+64P + push bp + mov bp, sp + xor ax, ax + jmp short loc_16A7D +; --------------------------------------------------------------------------- + +loc_16A72: ; CODE XREF: sub_16A6B+15j + mov bx, ax + imul bx, 26h + mov byte ptr [bx+7B5Eh], 0 + inc ax + +loc_16A7D: ; CODE XREF: sub_16A6B+5j + cmp ax, 19h + jl short loc_16A72 + mov word_1EE50, 0 + pop bp + retf +sub_16A6B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16A8A proc far ; CODE XREF: sub_BFD0+4EP + push bp + mov bp, sp + mov word ptr dword_26C3C+2, seg seg003 + mov word ptr dword_26C3C, offset loc_16A66 + mov word ptr dword_26C40+2, seg seg003 + mov word ptr dword_26C40, offset loc_16A66 + pop bp + retf +sub_16A8A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16AA7 proc near ; CODE XREF: sub_16E3D+31Cp + ; sub_16E3D+330p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + mov bx, word_26C48 + mov ax, [bx+4] + mov bx, word_26C4A + add ax, [bx] + push ax + mov bx, word_26C48 + mov ax, [bx+6] + mov bx, word_26C4C + add ax, [bx] + push ax + push [bp+arg_0] + mov bx, word_26C46 + push word ptr [bx+24h] + mov al, [bx+25h] + mov ah, 0 + push ax + call sub_1078E + pop bp + retn 2 +sub_16AA7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16ADD proc near ; CODE XREF: sub_16E3D:loc_16F0Fp + ; sub_16E3D+16Fp + push bp + mov bp, sp + mov bx, word_26C52 + mov al, [bx] + cbw + mov bx, word_26C4A + add [bx], ax + mov bx, word_26C54 + mov al, [bx] + cbw + mov bx, word_26C4C + add [bx], ax + pop bp + retn +sub_16ADD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16AFC proc near ; CODE XREF: sub_16E3D:loc_16FB6p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + mov ax, word_205F8 + add ax, 10h + mov [bp+var_2], ax + mov bx, word_26C4A + push word ptr [bx] + mov bx, word_26C4C + push word ptr [bx] + mov ax, word_205F6 + add ax, 18h + push ax + push [bp+var_2] + push 0 + push ss + lea ax, [bp+var_4] + push ax + push ss + lea ax, [bp+var_6] + push ax + mov bx, word_26C46 + mov bx, [bx+8] + add bx, word_26C44 + mov al, [bx+2] + mov ah, 0 + push ax + call sub_F5B1 + mov bx, word_26C52 + mov al, byte ptr [bp+var_4] + mov [bx], al + mov bx, word_26C54 + mov al, byte ptr [bp+var_6] + mov [bx], al + mov bx, word_26C4A + mov ax, [bp+var_4] + add [bx], ax + mov bx, word_26C4C + mov ax, [bp+var_6] + add [bx], ax + leave + retn +sub_16AFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16B69 proc near ; CODE XREF: sub_16E3D+1B3p + ; sub_16E3D+1D4p + +var_5 = word ptr -5 +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 + mov bx, word_26C46 + mov ax, [bx+8] + add ax, [bp+arg_2] + mov si, ax + mov bx, word_26C44 + mov al, [bx+si+1] + mov ah, 0 + mov bx, word_26C46 + push ax + mov ax, [bx+0Ah] + cwd + pop bx + idiv bx + or dx, dx + jnz short loc_16B9F + mov bx, word_26C46 + mov ax, [bp+arg_0] + add [bx+16h], ax + +loc_16B9F: ; CODE XREF: sub_16B69+2Aj + mov bx, word_26C44 + mov al, [bx+si] + mov bx, word_26C46 + add al, [bx+16h] + mov byte ptr [bp+var_5], al + push ss + lea ax, [bp+var_2] + push ax + push ss + lea ax, [bp+var_5+1] + push ax + push [bp+var_5] + mov bx, word_26C44 + mov al, [bx+si+2] + mov ah, 0 + push ax + call sub_F562 + mov bx, word_26C4A + mov ax, [bp+var_2] + add [bx], ax + mov bx, word_26C4C + mov ax, [bp+var_5+1] + add [bx], ax + mov bx, word_26C52 + mov al, byte ptr [bp+var_2] + mov [bx], al + mov bx, word_26C54 + mov al, byte ptr [bp+var_5+1] + mov [bx], al + pop si + leave + retn 4 +sub_16B69 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16BF4 proc near ; CODE XREF: sub_16E3D:loc_1701Bp + +var_F = word ptr -0Fh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = dword ptr -4 + + push bp + mov bp, sp + sub sp, 10h + push si + mov ax, word_26C4A + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], ax + mov ax, word_26C4C + mov word ptr [bp+var_8+2], ds + mov word ptr [bp+var_8], ax + mov bx, word_26C46 + mov ax, [bx+8] + add ax, 2 + mov si, ax + mov bx, si + inc si + add bx, word_26C44 + cmp byte ptr [bx], 0 + jnz short loc_16C2A + mov ax, 0FFFFh + jmp short loc_16C2D +; --------------------------------------------------------------------------- + +loc_16C2A: ; CODE XREF: sub_16BF4+2Fj + mov ax, 1 + +loc_16C2D: ; CODE XREF: sub_16BF4+34j + mov [bp+var_F+1], ax + mov bx, word_26C44 + mov al, [bx+si] + mov bx, word_26C46 + add al, [bx+16h] + mov byte ptr [bp+var_F], al + inc si + mov bx, word_26C44 + mov al, [bx+si] + mov ah, 0 + imul [bp+var_F+1] + mov bx, word_26C46 + add [bx+16h], ax + inc si + push ss + lea ax, [bp+var_A] + push ax + push ss + lea ax, [bp+var_C] + push ax + push [bp+var_F] + mov bx, word_26C44 + mov al, [bx+si] + mov ah, 0 + push ax + call sub_F562 + les bx, [bp+var_4] + mov ax, [bp+var_A] + add es:[bx], ax + les bx, [bp+var_8] + mov ax, [bp+var_C] + add es:[bx], ax + mov bx, word_26C52 + mov al, byte ptr [bp+var_A] + mov [bx], al + mov bx, word_26C54 + mov al, byte ptr [bp+var_C] + mov [bx], al + pop si + leave + retn +sub_16BF4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16C96 proc near ; CODE XREF: sub_16D9B+89p + +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 + mov si, [bp+arg_6] + mov bx, [bp+arg_2] + imul bx, 26h + mov byte ptr [bx+7B5Eh], 1 + mov bx, [bp+arg_2] + imul bx, 26h + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add bx, ax + mov [bx+7B50h], si + mov bx, [bp+arg_2] + imul bx, 26h + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bp+arg_4] + mov [bx+7B52h], ax + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B62h], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B58h], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov ax, [bp+arg_0] + mov [bx+7B5Ch], ax + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B5Ah], 0 + call sub_FAC6 + mov bx, [bp+arg_2] + imul bx, 26h + mov [bx+7B5Fh], al + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B66h], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov byte ptr [bx+7B72h], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov byte ptr [bx+7B73h], 0 + cmp si, 0D0h ; 'Ð' + jge short loc_16D3E + mov ax, 1 + jmp short loc_16D40 +; --------------------------------------------------------------------------- + +loc_16D3E: ; CODE XREF: sub_16C96+A1j + xor ax, ax + +loc_16D40: ; CODE XREF: sub_16C96+A6j + mov bx, [bp+arg_2] + imul bx, 26h + mov [bx+7B68h], ax + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B6Ah], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov byte ptr [bx+7B6Eh], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B64h], 1 + mov bx, [bp+arg_2] + imul bx, 26h + mov byte ptr [bx+7B60h], 0 + mov bx, [bp+arg_2] + imul bx, 26h + mov word ptr [bx+7B70h], 0 + mov al, byte_1EE52 + mov ah, 0 + cmp ax, [bp+arg_2] + jge short loc_16D96 + mov al, byte ptr [bp+arg_2] + inc al + mov byte_1EE52, al + +loc_16D96: ; CODE XREF: sub_16C96+F6j + pop si + pop bp + retn 8 +sub_16C96 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16D9B proc far ; CODE XREF: sub_BCB1+6AP + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, word_1EE50 + cmp ax, word_26C3A + jge loc_16E39 + add ax, ax + les bx, dword_26B76 + add bx, ax + mov ax, es:[bx] + cmp ax, word_2034A + jnz short loc_16E39 + mov di, 1 + jmp short loc_16E30 +; --------------------------------------------------------------------------- + +loc_16DC4: ; CODE XREF: sub_16D9B+98j + mov bx, di + shl bx, 2 + les bx, [bx-6EFAh] + mov ax, word_1EE50 + add ax, ax + add bx, ax + cmp word ptr es:[bx], 0FFFFh + jz short loc_16E2F + mov bx, di + shl bx, 2 + mov bx, [bx-6EFAh] + mov ax, word_1EE50 + add ax, ax + add bx, ax + mov ax, es:[bx] + mov [bp+var_2], ax + mov bx, [bp+var_2] + imul bx, 24h + mov ax, [bx+7F08h] + mov [bp+var_4], ax + cmp byte_2061A, 0 + jnz short loc_16E2F + xor si, si + jmp short loc_16E2A +; --------------------------------------------------------------------------- + +loc_16E08: ; CODE XREF: sub_16D9B+92j + mov bx, si + imul bx, 26h + cmp byte ptr [bx+7B5Eh], 0 + jnz short loc_16E29 + mov ax, di + shl ax, 3 + add ax, 10h + push ax + push [bp+var_4] + push si + push [bp+var_2] + call sub_16C96 + jmp short loc_16E2F +; --------------------------------------------------------------------------- + +loc_16E29: ; CODE XREF: sub_16D9B+77j + inc si + +loc_16E2A: ; CODE XREF: sub_16D9B+6Bj + cmp si, 19h + jl short loc_16E08 + +loc_16E2F: ; CODE XREF: sub_16D9B+3Dj + ; sub_16D9B+67j ... + inc di + +loc_16E30: ; CODE XREF: sub_16D9B+27j + cmp di, 31h ; '1' + jl short loc_16DC4 + inc word_1EE50 + +loc_16E39: ; CODE XREF: sub_16D9B+Fj + ; sub_16D9B+22j + pop di + pop si + leave + retf +sub_16D9B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_16E3D proc near ; CODE XREF: sub_1766E+82p + +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 0Ah + push si + mov bx, word_26C48 + mov ax, [bx+20h] + mov word_26C44, ax + mov bx, word_26C46 + mov al, [bx+8] + mov [bp+var_7], al + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx] + mov [bp+var_8], al + mov ah, 0 + cmp ax, 25h ; '%' + jz loc_1719F + jg short loc_16E80 + mov bx, ax + cmp bx, 24h ; '$' + ja loc_174B0 + add bx, bx + jmp cs:off_17518[bx] +; --------------------------------------------------------------------------- + +loc_16E80: ; CODE XREF: sub_16E3D+31j + cmp ax, 0A7h ; '§' + jz loc_17361 + jg short loc_16EC9 + cmp ax, 0A2h ; '¢' + jz loc_173AB + jg short loc_16EB6 + cmp ax, 0A0h ; ' ' + jz loc_172FF + jg short loc_16EAC + cmp ax, 26h ; '&' + jz loc_17226 + cmp ax, 27h ; ''' + jz loc_1728A + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16EAC: ; CODE XREF: sub_16E3D+5Cj + cmp ax, 0A1h ; '¡' + jz loc_1731C + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16EB6: ; CODE XREF: sub_16E3D+53j + sub ax, 0A3h ; '£' + mov bx, ax + cmp bx, 3 + ja loc_174B0 + add bx, bx + jmp cs:off_17510[bx] +; --------------------------------------------------------------------------- + +loc_16EC9: ; CODE XREF: sub_16E3D+4Aj + sub ax, 0A8h ; '¨' + mov bx, ax + cmp bx, 7 + ja loc_174B0 + add bx, bx + jmp cs:off_17500[bx] + +loc_16EDC: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j + ; DATA XREF: ... + mov [bp+var_4], 2 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16EE3: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov bx, word_26C52 + mov [bx], al + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+3] + mov [bp+var_6], al + mov bx, word_26C54 + jmp loc_16FAA +; --------------------------------------------------------------------------- + +loc_16F0F: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + call sub_16ADD + mov [bp+var_4], 2 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16F19: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A44o + call sub_FAC6 + mov [bp+var_3], al + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov [bp+var_5], al + mov ah, 0 + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + imul word ptr [bx+5ECh] + sar ax, 8 + mov bx, word_26C52 + mov [bx], al + mov al, [bp+var_5] + mov ah, 0 + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + imul word ptr [bx+56Ch] + sar ax, 8 + mov bx, word_26C54 + mov [bx], al + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_16F6A: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + cmp word ptr [bx+18h], 0 + jnz short loc_16F79 + mov ax, 0FFFFh + jmp short loc_16F7C +; --------------------------------------------------------------------------- + +loc_16F79: ; CODE XREF: sub_16E3D+135j + mov ax, 1 + +loc_16F7C: ; CODE XREF: sub_16E3D+13Aj + mov [bp+var_2], ax + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov ah, 0 + imul [bp+var_2] + mov bx, word_26C52 + mov [bx], al + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+3] + mov bx, word_26C54 + +loc_16FAA: ; CODE XREF: sub_16E3D+CFj + mov [bx], al + call sub_16ADD + mov [bp+var_4], 4 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16FB6: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + call sub_16AFC + mov [bp+var_4], 3 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16FC0: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov al, byte_1E503 + mov ah, 0 + mov bx, word_26C4C + add [bx], ax + mov [bp+var_4], 2 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16FD2: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + mov bx, [bx+8] + add bx, word_26C44 + cmp byte ptr [bx+2], 0 + jnz short loc_16FE7 + mov al, 0FFh + jmp short loc_16FE9 +; --------------------------------------------------------------------------- + +loc_16FE7: ; CODE XREF: sub_16E3D+1A4j + mov al, 1 + +loc_16FE9: ; CODE XREF: sub_16E3D+1A8j + mov [bp+var_9], al + push 3 + cbw + push ax + call sub_16B69 + mov [bp+var_4], 6 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_16FFA: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + cmp word ptr [bx+18h], 1 + jnz short loc_17008 + mov al, 0FFh + jmp short loc_1700A +; --------------------------------------------------------------------------- + +loc_17008: ; CODE XREF: sub_16E3D+1C5j + mov al, 1 + +loc_1700A: ; CODE XREF: sub_16E3D+1C9j + mov [bp+var_A], al + push 2 + cbw + push ax + call sub_16B69 + mov [bp+var_4], 5 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_1701B: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + call sub_16BF4 + mov [bp+var_4], 6 + jmp loc_174B0 +; --------------------------------------------------------------------------- + +loc_17025: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + shl ax, 3 + mov bx, word_26C4A + mov [bx], ax + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov ah, 0 + shl ax, 3 + mov bx, word_26C4C + mov [bx], ax + mov [bp+var_4], 3 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_1705E: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + call sub_FAED + mov dl, [bp+var_7] + mov dh, 0 + add dx, word_26C44 + mov bx, dx + mov dl, [bx+2] + mov dh, 0 + shl dx, 3 + push ax + push dx + xor dx, dx + pop bx + pop ax + div bx + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + shl ax, 3 + add dx, ax + mov bx, word_26C4A + mov [bx], dx + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+3] + mov ah, 0 + shl ax, 3 + mov bx, word_26C4C + mov [bx], ax + mov bx, word_26C4A + cmp word ptr [bx], 0D0h ; 'Ð' + jge short loc_170BF + mov ax, 1 + jmp short loc_170C1 +; --------------------------------------------------------------------------- + +loc_170BF: ; CODE XREF: sub_16E3D+27Bj + xor ax, ax + +loc_170C1: ; CODE XREF: sub_16E3D+280j + mov bx, word_26C46 + mov [bx+18h], ax + mov [bp+var_4], 4 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_170CF: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + call sub_FAED + mov dl, [bp+var_7] + mov dh, 0 + add dx, word_26C44 + mov bx, dx + mov dl, [bx+2] + mov dh, 0 + shl dx, 3 + push ax + push dx + xor dx, dx + pop bx + pop ax + div bx + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + shl ax, 3 + add dx, ax + mov bx, word_26C4C + mov [bx], dx + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+3] + mov ah, 0 + shl ax, 3 + mov bx, word_26C4A + mov [bx], ax + mov [bp+var_4], 4 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17128: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + mov byte ptr [bx+0Eh], 2 + mov ax, 2 + jmp loc_174FC +; --------------------------------------------------------------------------- + +loc_17136: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + mov word ptr [bx+0Ah], 0 + push 3 + call sub_FA52 + add sp, 2 + mov bx, word_26C46 + mov byte ptr [bx+10h], 1 + mov ax, 2 + jmp loc_174FC +; --------------------------------------------------------------------------- + +loc_17157: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + push 0 + call sub_16AA7 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_1715F: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+1] + call sub_16AA7 + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17177: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C46 + push word ptr [bx+16h] + call sub_16AA7 + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + add [bx+16h], ax + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_1719F: ; CODE XREF: sub_16E3D+2Dj + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov bx, word_26C46 + mov [bx+24h], al + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov bx, word_26C46 + mov [bx+25h], al + mov [bp+var_4], 3 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_171D0: ; CODE XREF: sub_16E3D+3Ej + ; sub_16E3D+87j ... + mov bx, word_26C48 + mov ax, [bx+4] + mov bx, word_26C4A + add ax, [bx] + push ax + mov bx, word_26C48 + mov ax, [bx+6] + mov bx, word_26C4C + add ax, [bx] + push ax + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+1] + mov bx, word_26C46 + push word ptr [bx+24h] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov ah, 0 + push ax + mov bx, word_26C46 + mov al, [bx+25h] + mov ah, 0 + push ax + call sub_10865 + mov [bp+var_4], 3 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17226: ; CODE XREF: sub_16E3D+61j + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov si, ax + sub si, word_20344 + or si, si + jge short loc_17244 + add si, 190h + +loc_17244: ; CODE XREF: sub_16E3D+401j + mov bx, word_26C48 + mov ax, [bx+4] + mov bx, word_26C4A + add ax, [bx] + push ax + push si + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+2] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+3] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+4] + mov ah, 0 + push ax + call sub_1078E + mov [bp+var_4], 5 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_1728A: ; CODE XREF: sub_16E3D+68j + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov si, ax + sub si, word_20344 + or si, si + jge short loc_172A8 + add si, 190h + +loc_172A8: ; CODE XREF: sub_16E3D+465j + mov bx, word_26C48 + mov ax, [bx+4] + mov bx, word_26C4A + add ax, [bx] + push ax + push si + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+2] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + push word ptr [bx+3] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+4] + mov ah, 0 + push ax + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+5] + mov ah, 0 + push ax + call sub_10865 + mov [bp+var_4], 6 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_172FF: ; CODE XREF: sub_16E3D+58j + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+8], ax + mov ax, 1 + jmp loc_174FC +; --------------------------------------------------------------------------- + +loc_1731C: ; CODE XREF: sub_16E3D+72j + mov bx, word_26C46 + mov ax, [bx+16h] + inc word ptr [bx+16h] + mov dl, [bp+var_7] + mov dh, 0 + add dx, word_26C44 + mov bx, dx + mov dl, [bx+2] + mov dh, 0 + cmp ax, dx + jge short loc_17353 + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+8], ax + jmp short loc_1735B +; --------------------------------------------------------------------------- + +loc_17353: ; CODE XREF: sub_16E3D+4FBj + mov bx, word_26C46 + add word ptr [bx+8], 3 + +loc_1735B: ; CODE XREF: sub_16E3D+514j + mov ax, 1 + jmp loc_174FC +; --------------------------------------------------------------------------- + +loc_17361: ; CODE XREF: sub_16E3D+46j + mov bx, word_26C46 + mov ax, [bx+1Ah] + inc word ptr [bx+1Ah] + mov dl, [bp+var_7] + mov dh, 0 + add dx, word_26C44 + mov bx, dx + mov dl, [bx+2] + mov dh, 0 + cmp ax, dx + jge short loc_17398 + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+8], ax + jmp short loc_173A5 +; --------------------------------------------------------------------------- + +loc_17398: ; CODE XREF: sub_16E3D+540j + mov bx, word_26C46 + mov word ptr [bx+1Ah], 0 + add word ptr [bx+8], 3 + +loc_173A5: ; CODE XREF: sub_16E3D+559j + mov ax, 1 + jmp loc_174FC +; --------------------------------------------------------------------------- + +loc_173AB: ; CODE XREF: sub_16E3D+4Fj + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+16h], ax + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_173C9: ; CODE XREF: sub_16E3D+87j + ; sub_16E3D+9Aj + ; DATA XREF: ... + mov bx, word_26C46 + mov word ptr [bx+14h], 0 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_173D5: ; CODE XREF: sub_16E3D+87j + ; sub_16E3D+9Aj + ; DATA XREF: ... + mov bx, word_26C46 + mov word ptr [bx+14h], 1 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_173E1: ; CODE XREF: sub_16E3D+87j + ; sub_16E3D+9Aj + ; DATA XREF: ... + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+12h], ax + mov word ptr [bx+14h], 0 + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17404: ; CODE XREF: sub_16E3D+87j + ; sub_16E3D+9Aj + ; DATA XREF: ... + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + mov [bx+12h], ax + mov word ptr [bx+14h], 2 + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17427: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A42o + mov bx, word_26C46 + mov byte ptr [bx+1Eh], 1 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_17432: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:off_17500o + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + push ax + call sub_FA52 + add sp, 2 + mov [bp+var_4], 2 + jmp loc_174E1 +; --------------------------------------------------------------------------- + +loc_17452: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A46o + mov bx, word_26C46 + mov byte ptr [bx+22h], 1 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_1745D: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A48o + mov bx, word_26C46 + mov byte ptr [bx+22h], 0 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_17468: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A4Ao + mov bx, word_26C46 + mov byte ptr [bx+23h], 1 + jmp loc_174F2 +; --------------------------------------------------------------------------- + +loc_17473: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A4Co + mov bx, word_26C46 + mov byte ptr [bx+23h], 0 + jmp short loc_174F2 +; --------------------------------------------------------------------------- + +loc_1747D: ; CODE XREF: sub_16E3D+9Aj + ; DATA XREF: seg003:7A4Eo + mov bx, word_26C4A + push word ptr [bx] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + push ax + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+2] + mov ah, 0 + push ax + call sub_480C + mov [bp+var_4], 3 + jmp short loc_174E1 +; --------------------------------------------------------------------------- + +loc_174B0: ; CODE XREF: sub_16E3D+38j + ; sub_16E3D+3Ej ... + mov bx, word_26C46 + inc word ptr [bx+0Ah] + mov al, [bp+var_7] + mov ah, 0 + add ax, word_26C44 + mov bx, ax + mov al, [bx+1] + mov ah, 0 + mov bx, word_26C46 + cmp ax, [bx+0Ah] + jg short loc_174DD + mov al, [bp+var_4] + mov ah, 0 + add [bx+8], ax + mov word ptr [bx+0Ah], 0 + +loc_174DD: ; CODE XREF: sub_16E3D+691j + xor ax, ax + jmp short loc_174FC +; --------------------------------------------------------------------------- + +loc_174E1: ; CODE XREF: sub_16E3D+12Aj + ; sub_16E3D+21Ej ... + mov al, [bp+var_4] + mov ah, 0 + mov bx, word_26C46 + add [bx+8], ax + mov ax, 1 + jmp short loc_174FC +; --------------------------------------------------------------------------- + +loc_174F2: ; CODE XREF: sub_16E3D+31Fj + ; sub_16E3D+595j ... + mov bx, word_26C46 + inc word ptr [bx+8] + mov ax, 1 + +loc_174FC: ; CODE XREF: sub_16E3D+2F6j + ; sub_16E3D+317j ... + pop si + leave + retn +sub_16E3D endp + +; --------------------------------------------------------------------------- + db 0 +off_17500 dw offset loc_17432 ; DATA XREF: sub_16E3D+9Ar + dw offset loc_17427 + dw offset loc_16F19 + dw offset loc_17452 + dw offset loc_1745D + dw offset loc_17468 + dw offset loc_17473 + dw offset loc_1747D +off_17510 dw offset loc_173C9 ; DATA XREF: sub_16E3D+87r + dw offset loc_173D5 + dw offset loc_173E1 + dw offset loc_17404 +off_17518 dw offset loc_16EDC ; DATA XREF: sub_16E3D+3Er + dw offset loc_16EE3 + dw offset loc_16FC0 + dw offset loc_16FD2 + dw offset loc_17025 + dw offset loc_1705E + dw offset loc_170CF + dw offset loc_16FFA + dw offset loc_16F6A + dw offset loc_16FB6 + dw offset loc_16F0F + dw offset loc_1701B + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_17128 + dw offset loc_17136 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_174B0 + dw offset loc_17157 + dw offset loc_1715F + dw offset loc_17177 + dw offset loc_174B0 + dw offset loc_171D0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17562 proc near ; CODE XREF: sub_1766E:loc_177EBp + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + mov bx, word_26C48 + cmp byte ptr [bx+18h], 0 + jnz short loc_175D1 + mov bx, word_26C46 + cmp byte ptr [bx+23h], 0 + jnz short loc_175D1 + mov si, word_26C50 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26C4E + add dx, 0FFF0h + mov bx, ax + cmp [bx+2B76h], dx + jle short loc_175D1 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26C4E + add dx, 10h + mov bx, ax + cmp [bx+2B76h], dx + jge short loc_175D1 + lea ax, [si-10h] + cmp ax, word_205F8 + jge short loc_175D1 + lea ax, [si+10h] + cmp ax, word_205F8 + jle short loc_175D1 + mov bx, word_26C46 + mov word ptr [bx+0Ah], 0 + mov byte_20604, 1 + mov byte ptr [bx+10h], 1 + +loc_175D1: ; CODE XREF: sub_17562+Fj + ; sub_17562+19j ... + push word_26C4E + push word_26C50 + push large 200020h + call sub_1283C + mov [bp+var_2], ax + pop si + leave + retn +sub_17562 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_175E8 proc near ; CODE XREF: sub_1766E+154p + push bp + mov bp, sp + push si + push di + mov bx, word_26C48 + mov di, [bx+0Eh] + or di, di + jnz short loc_175FD + mov ax, 0Ah + jmp short loc_175FF +; --------------------------------------------------------------------------- + +loc_175FD: ; CODE XREF: sub_175E8+Ej + xor ax, ax + +loc_175FF: ; CODE XREF: sub_175E8+13j + mov di, ax + mov bx, word_26C46 + mov ax, [bx+0Ah] + mov bx, 3 + cwd + idiv bx + add di, ax + mov bx, word_26C46 + cmp word ptr [bx+0Ah], 0 + jnz short loc_17635 + mov ax, word_26C4E + add ax, 10h + push ax + mov ax, word_26C50 + add ax, 10h + push ax + push large 140008h + push 0 + call sub_4090 + +loc_17635: ; CODE XREF: sub_175E8+30j + mov bx, word_26C46 + inc word ptr [bx+0Ah] + cmp word ptr [bx+0Ah], 18h + jl short loc_1764B + mov byte ptr [bx+0Eh], 2 + mov ax, 1 + jmp short loc_1766A +; --------------------------------------------------------------------------- + +loc_1764B: ; CODE XREF: sub_175E8+58j + mov si, word_26C50 + add si, word_20344 + cmp si, 190h + jl short loc_1765D + sub si, 190h + +loc_1765D: ; CODE XREF: sub_175E8+6Fj + push word_26C4E + push si + push di + call sub_3146 + xor ax, ax + +loc_1766A: ; CODE XREF: sub_175E8+61j + pop di + pop si + pop bp + retn +sub_175E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1766E proc far ; DATA XREF: sub_B3DA+217o + +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, 8 + push si + push di + mov [bp+var_2], 0 + mov [bp+var_4], 0 + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + mov word_26C46, 7B50h + xor di, di + jmp loc_1796A +; --------------------------------------------------------------------------- + +loc_17697: ; CODE XREF: sub_1766E+303j + mov bx, word_26C46 + cmp byte ptr [bx+0Eh], 1 + jnz loc_17964 + mov bx, word_26C46 + mov ax, [bx+0Ch] + imul ax, 24h + add ax, 7F06h + mov word_26C48, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, word_26C46 + mov word_26C4A, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add ax, word_26C46 + add ax, 2 + mov word_26C4C, ax + mov ax, word_26C46 + add ax, 1Ch + mov word_26C52, ax + mov ax, word_26C46 + add ax, 1Dh + mov word_26C54, ax + +loc_176E6: ; CODE XREF: sub_1766E+94j + mov bx, word_26C46 + cmp byte ptr [bx+10h], 0 + jnz short loc_176F6 + call sub_16E3D + mov [bp+var_2], ax + +loc_176F6: ; CODE XREF: sub_1766E+80j + cmp [bp+var_2], 2 + jz loc_17964 + cmp [bp+var_2], 1 + jz short loc_176E6 + mov bx, word_26C4A + mov ax, [bx] + mov word_26C4E, ax + mov bx, word_26C4C + mov ax, [bx] + mov word_26C50, ax + mov si, word_26C50 + cmp word_26C4E, 0 + jl short loc_17729 + cmp word_26C4E, 1A2h + jle short loc_17734 + +loc_17729: ; CODE XREF: sub_1766E+B1j + mov bx, word_26C46 + mov byte ptr [bx+0Eh], 2 + jmp loc_17964 +; --------------------------------------------------------------------------- + +loc_17734: ; CODE XREF: sub_1766E+B9j + mov bx, word_26C46 + cmp byte ptr [bx+1Eh], 0 + jz short loc_17758 + cmp word_26C50, 180h + jge short loc_1774D + cmp word_26C50, 0FFF0h + jg short loc_17758 + +loc_1774D: ; CODE XREF: sub_1766E+D6j + mov bx, word_26C46 + mov byte ptr [bx+0Eh], 2 + jmp loc_17964 +; --------------------------------------------------------------------------- + +loc_17758: ; CODE XREF: sub_1766E+CEj + ; sub_1766E+DDj + mov bx, word_26C46 + inc byte ptr [bx+0Fh] + mov bx, word_26C48 + cmp word ptr [bx+0Ah], 0 + jz short loc_177A0 + mov bx, word_26C46 + cmp word ptr [bx+14h], 1 + jnz short loc_177A0 + mov al, [bx+0Fh] + mov ah, 0 + mov bx, word_26C48 + cwd + idiv word ptr [bx+0Ch] + or dx, dx + jnz short loc_177A0 + mov bx, word_26C46 + inc word ptr [bx+12h] + mov ax, [bx+12h] + mov bx, word_26C48 + cmp ax, [bx+0Ah] + jl short loc_177A0 + mov bx, word_26C46 + mov word ptr [bx+12h], 0 + +loc_177A0: ; CODE XREF: sub_1766E+F9j + ; sub_1766E+103j ... + mov bx, word_26C48 + cmp word ptr [bx+16h], 0FFFFh + jz loc_178E9 + mov bx, word_26C46 + cmp byte ptr [bx+22h], 0 + jnz loc_178E9 + mov bx, word_26C46 + cmp byte ptr [bx+10h], 0 + jz short loc_177CE + call sub_175E8 + or ax, ax + jz loc_17964 + jmp loc_17964 +; --------------------------------------------------------------------------- + +loc_177CE: ; CODE XREF: sub_1766E+152j + cmp si, 168h + jge short loc_177EB + cmp si, [bp+var_4] + jle short loc_177EB + mov ax, word_26C4E + add ax, 8 + mov word_205D8, ax + lea ax, [si+8] + mov word_205DA, ax + mov [bp+var_4], si + +loc_177EB: ; CODE XREF: sub_1766E+164j + ; sub_1766E+169j + call sub_17562 + mov [bp+var_6], ax + or ax, ax + jz loc_178E9 + mov bx, word_26C48 + cmp word ptr [bx+16h], 0FFFEh + jnz short loc_1780E + push 4 + call sub_FA52 + add sp, 2 + jmp loc_178E9 +; --------------------------------------------------------------------------- + +loc_1780E: ; CODE XREF: sub_1766E+191j + mov bx, word_26C46 + mov ax, [bp+var_6] + add [bx+20h], ax + mov ax, [bx+20h] + mov bx, word_26C48 + cmp ax, [bx+16h] + jl loc_178A8 + mov bx, word_26C46 + mov word ptr [bx+0Ah], 0 + mov bx, word_26C48 + cmp byte ptr [bx+10h], 1 + jbe short loc_17854 + mov ax, word_26C4E + add ax, 0Ch + push ax + push word_26C50 + mov al, [bx+10h] + mov ah, 0 + add ax, 0FFFEh + push ax + call sub_D6CA + jmp short loc_17864 +; --------------------------------------------------------------------------- + +loc_17854: ; CODE XREF: sub_1766E+1C9j + mov ax, word_26C4E + add ax, 0Ch + push ax + push word_26C50 + call sub_D65A + +loc_17864: ; CODE XREF: sub_1766E+1E4j + push 3 + call sub_FA52 + add sp, 2 + mov bx, word_26C48 + mov eax, [bx+12h] + add dword_218AC, eax + mov al, byte_1E364 + cbw + cmp ax, 3 + jnz short loc_1789D + mov ax, [bx+4] + add ax, word_26C4E + push ax + mov ax, [bx+6] + add ax, word_26C50 + push ax + push 0 + push 19h + push 3Ch ; '<' + call sub_1078E + +loc_1789D: ; CODE XREF: sub_1766E+214j + mov bx, word_26C46 + mov byte ptr [bx+10h], 1 + jmp loc_17964 +; --------------------------------------------------------------------------- + +loc_178A8: ; CODE XREF: sub_1766E+1B4j + push 4 + call sub_FA52 + add sp, 2 + add si, word_20344 + cmp si, 190h + jl short loc_178C0 + sub si, 190h + +loc_178C0: ; CODE XREF: sub_1766E+24Cj + or si, si + jge short loc_178C8 + add si, 190h + +loc_178C8: ; CODE XREF: sub_1766E+254j + push word_26C4E + push si + mov bx, word_26C48 + mov ax, [bx+8] + mov bx, word_26C46 + add ax, [bx+12h] + push ax + push large 0FFC0h + call far ptr loc_2F80 + jmp short loc_17964 +; --------------------------------------------------------------------------- + +loc_178E9: ; CODE XREF: sub_1766E+13Aj + ; sub_1766E+146j ... + mov si, word_26C50 + mov bx, word_26C48 + cmp word ptr [bx+1Ah], 1 + jle short loc_17913 + mov ax, [bx+1Ah] + mov [bp+var_8], ax + mov bx, word_26C46 + mov al, [bx+0Fh] + mov ah, 0 + cwd + idiv [bp+var_8] + or dx, dx + jnz short loc_17913 + push 0 + call sub_16AA7 + +loc_17913: ; CODE XREF: sub_1766E+287j + ; sub_1766E+29Ej + mov bx, word_26C48 + cmp word ptr [bx+8], 0 + jz short loc_17964 + add si, word_20344 + cmp si, 190h + jl short loc_1792B + sub si, 190h + +loc_1792B: ; CODE XREF: sub_1766E+2B7j + or si, si + jge short loc_17933 + add si, 190h + +loc_17933: ; CODE XREF: sub_1766E+2BFj + mov bx, word_26C46 + cmp word ptr [bx+14h], 2 + jz short loc_17953 + push word_26C4E + push si + mov bx, word_26C48 + mov ax, [bx+8] + mov bx, word_26C46 + add ax, [bx+12h] + push ax + jmp short loc_1795F +; --------------------------------------------------------------------------- + +loc_17953: ; CODE XREF: sub_1766E+2CDj + push word_26C4E + push si + mov bx, word_26C46 + push word ptr [bx+12h] + +loc_1795F: ; CODE XREF: sub_1766E+2E3j + call sub_3146 + +loc_17964: ; CODE XREF: sub_1766E+31j + ; sub_1766E+8Cj ... + inc di + add word_26C46, 26h ; '&' + +loc_1796A: ; CODE XREF: sub_1766E+26j + mov al, byte_1EE52 + mov ah, 0 + cmp ax, di + jg loc_17697 + pop di + pop si + leave + retf +sub_1766E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17979 proc far ; DATA XREF: sub_B3DA+20Bo + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov byte_1EE52, 0 + mov [bp+var_2], 0 + jmp loc_17A49 +; --------------------------------------------------------------------------- + +loc_1798E: ; CODE XREF: sub_17979+D4j + mov bx, [bp+var_2] + imul bx, 26h + cmp byte ptr [bx+7B5Eh], 0 + jz loc_17A46 + mov bx, [bp+var_2] + imul bx, 26h + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add bx, ax + mov si, [bx+7B50h] + mov bx, [bp+var_2] + imul bx, 26h + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + add bx, ax + mov di, [bx+7B52h] + push si + push di + push large 200020h + call sub_45FC + mov bx, [bp+var_2] + imul bx, 26h + cmp byte ptr [bx+7B5Eh], 2 + jnz short loc_179EC + mov bx, [bp+var_2] + imul bx, 26h + mov byte ptr [bx+7B5Eh], 0 + jmp short loc_17A46 +; --------------------------------------------------------------------------- + +loc_179EC: ; CODE XREF: sub_17979+64j + mov al, byte ptr [bp+var_2] + inc al + mov byte_1EE52, al + mov bx, [bp+var_2] + imul bx, 26h + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+7B50h] + mov bx, [bp+var_2] + imul bx, 26h + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + add bx, dx + mov [bx+7B50h], ax + mov bx, [bp+var_2] + imul bx, 26h + mov al, byte_20619 + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+7B52h] + mov bx, [bp+var_2] + imul bx, 26h + mov dl, byte_20618 + mov dh, 0 + shl dx, 2 + add bx, dx + mov [bx+7B52h], ax + +loc_17A46: ; CODE XREF: sub_17979+20j + ; sub_17979+71j + inc [bp+var_2] + +loc_17A49: ; CODE XREF: sub_17979+12j + cmp [bp+var_2], 19h + jl loc_1798E + pop di + pop si + leave + retf +sub_17979 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17A55 proc far ; CODE XREF: sub_BFD0+49P + ; sub_12778+7Cp + push bp + mov bp, sp + xor ax, ax + jmp short loc_17A73 +; --------------------------------------------------------------------------- + +loc_17A5C: ; CODE XREF: sub_17A55+21j + mov bx, ax + imul bx, 26h + cmp byte ptr [bx+7B5Eh], 0 + jz short loc_17A72 + mov bx, ax + imul bx, 26h + mov byte ptr [bx+7B5Eh], 2 + +loc_17A72: ; CODE XREF: sub_17A55+11j + inc ax + +loc_17A73: ; CODE XREF: sub_17A55+5j + cmp ax, 19h + jl short loc_17A5C + mov byte_1EE52, 0 + pop bp + retf +sub_17A55 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17A7F proc near ; CODE XREF: sub_17B75+91p + ; sub_17B75+ABp ... + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 +arg_6 = byte ptr 0Ah +arg_8 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov si, [bp+arg_8] + mov di, [bp+arg_0] + mov al, byte_26CC1 + mov ah, 0 + sar ax, 6 + inc al + mov [bp+var_4], al + push 0C0h ; 'À' + push si + call sub_127E + mov [bp+var_2], di + jmp loc_17B5F +; --------------------------------------------------------------------------- + +loc_17AA9: ; CODE XREF: sub_17A7F+E7j + mov al, byte ptr [bp+var_2] + mov [bp+var_3], al + movzx eax, byte_26CC1 + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, 0E0h ; 'à' + mov word_20164, ax + mov al, [bp+arg_6] + add [bp+var_3], al + movzx eax, byte_26CC1 + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, 0C8h ; 'È' + mov word_20166, ax + cmp word_20164, 1A0h + jge short loc_17B24 + cmp word_20164, 18h + jle short loc_17B24 + cmp word_20166, 8 + jle short loc_17B24 + cmp word_20166, 180h + jge short loc_17B24 + mov al, [bp+var_4] + mov ah, 0 + push ax + call sub_3E6A + +loc_17B24: ; CODE XREF: sub_17A7F+82j + ; sub_17A7F+89j ... + cmp [bp+arg_2], 0 + jz short loc_17B59 + cmp [bp+var_2], 100h + jnz short loc_17B59 + push 0C0h ; 'À' + mov al, byte_26CC5 + mov ah, 0 + push ax + call sub_127E + push large 0E000C8h + mov al, byte_26CC2 + mov ah, 0 + push ax + call sub_C20 + push 0C0h ; 'À' + push si + call sub_127E + +loc_17B59: ; CODE XREF: sub_17A7F+A9j + ; sub_17A7F+B0j + mov ax, [bp+arg_4] + add [bp+var_2], ax + +loc_17B5F: ; CODE XREF: sub_17A7F+27j + lea ax, [di+80h] + cmp ax, [bp+var_2] + ja loc_17AA9 + call sub_12A8 + pop di + pop si + leave + retn 0Ah +sub_17A7F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17B75 proc far ; DATA XREF: sub_B3DA+43Fo + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + call sub_17E91 + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + call sub_764 + push large 0C00000h + call sub_127E + push large 40010h + push large 33017Fh + call sub_B88 + mov al, byte_2066C + mov ah, 0 + mov dx, ax + add dx, dx + add dx, ax + inc dl + mov [bp+var_1], dl + mov al, byte_26CC4 + mov ah, 0 + push ax + mov al, byte ptr word_1EE54 + add al, 0F0h ; 'ð' + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + push 0 + push 80h ; '€' + call sub_17A7F + mov al, byte_26CC4 + mov ah, 0 + push ax + mov al, byte ptr word_1EE54 + add al, 0F8h ; 'ø' + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + push 0 + push 80h ; '€' + call sub_17A7F + mov al, byte_26CC3 + mov ah, 0 + push ax + push word_1EE54 + mov al, [bp+var_1] + mov ah, 0 + push ax + push 0 + push 80h ; '€' + call sub_17A7F + mov al, byte_26CC4 + mov ah, 0 + push ax + mov al, byte ptr word_1EE54 + add al, 0F0h ; 'ð' + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + push 1 + push 100h + call sub_17A7F + mov al, byte_26CC4 + mov ah, 0 + push ax + mov al, byte ptr word_1EE54 + add al, 0F8h ; 'ø' + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + push 0 + push 100h + call sub_17A7F + mov al, byte_26CC3 + mov ah, 0 + push ax + mov al, byte ptr word_1EE54 + inc byte ptr word_1EE54 + push ax + mov al, [bp+var_1] + mov ah, 0 + push ax + push 0 + push 100h + call sub_17A7F + call sub_12A8 + leave + retf +sub_17B75 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17C92 proc near ; CODE XREF: sub_19456:loc_198A8p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + cmp byte_2066A, 0 + jnz locret_17D57 + mov bx, word_2065C + mov ax, [bx] + add ax, 30h ; '0' + push ax + mov bx, word_2065E + mov ax, [bx] + add ax, 20h ; ' ' + push ax + push large 400040h + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_17CF9 + mov byte_2066B, 1 + mov ax, word_26C66 + imul [bp+var_2] + add word_2065A, ax + cmp word_2065A, 1770h + jl short loc_17CF9 + push 2 + call sub_FA52 + add sp, 2 + mov byte_2066A, 1 + add dword_1E598, 7A120h + mov byte_20605, 0C8h ; 'È' + +loc_17CF9: ; CODE XREF: sub_17C92+31j + ; sub_17C92+48j + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, word_2065C + mov dx, [bx] + add dx, 10h + mov bx, ax + cmp [bx+2B76h], dx + jle short locret_17D57 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, word_2065C + mov dx, [bx] + add dx, 70h ; 'p' + mov bx, ax + cmp [bx+2B76h], dx + jge short locret_17D57 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2B7Ah] + mov bx, word_2065E + cmp ax, [bx] + jle short locret_17D57 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, [bx] + add dx, 50h ; 'P' + mov bx, ax + cmp [bx+2B7Ah], dx + jge short locret_17D57 + mov byte_20604, 1 + +locret_17D57: ; CODE XREF: sub_17C92+Bj + ; sub_17C92+7Dj ... + leave + retn +sub_17C92 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17D59 proc near ; CODE XREF: sub_19456+458p + push bp + mov bp, sp + push si + mov word_26CBC, 0 + xor si, si + jmp loc_17E87 +; --------------------------------------------------------------------------- + +loc_17D68: ; CODE XREF: sub_17D59+131j + mov bx, si + add bx, bx + cmp word ptr [bx-6DC4h], 1 + jz short loc_17D7A + inc word_26CBC + jmp loc_17E86 +; --------------------------------------------------------------------------- + +loc_17D7A: ; CODE XREF: sub_17D59+18j + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6E04h] + add ax, 4 + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6DE4h] + push large 180020h + call sub_1283C + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6E04h] + add ax, 0FFF0h + mov dl, byte_20619 + mov dh, 0 + add dx, dx + mov bx, dx + cmp ax, [bx+2B76h] + jge short loc_17E50 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6E04h] + add ax, 10h + mov dl, byte_20619 + mov dh, 0 + add dx, dx + mov bx, dx + cmp ax, [bx+2B76h] + jle short loc_17E50 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6DE4h] + add ax, 0FFF0h + mov dl, byte_20619 + mov dh, 0 + add dx, dx + mov bx, dx + cmp ax, [bx+2B7Ah] + jge short loc_17E50 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6DE4h] + add ax, 10h + mov dl, byte_20619 + mov dh, 0 + add dx, dx + mov bx, dx + cmp ax, [bx+2B7Ah] + jle short loc_17E50 + mov byte_20604, 1 + +loc_17E50: ; CODE XREF: sub_17D59+7Bj + ; sub_17D59+A2j ... + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6E04h] + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6DE4h] + mov ax, si + and ax, 3 + add ax, 89h ; '‰' + push ax + call far ptr loc_3362 + +loc_17E86: ; CODE XREF: sub_17D59+1Ej + inc si + +loc_17E87: ; CODE XREF: sub_17D59+Cj + cmp si, 8 + jl loc_17D68 + pop si + pop bp + retn +sub_17D59 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17E91 proc near ; CODE XREF: sub_17B75+6p + push bp + mov bp, sp + push si + xor si, si + jmp loc_17F1D +; --------------------------------------------------------------------------- + +loc_17E9A: ; CODE XREF: sub_17E91+8Fj + mov bx, si + add bx, bx + cmp word ptr [bx-6DC4h], 0 + jz short loc_17F1C + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6DE4h], 0FFF0h + jle short loc_17F1C + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6DE4h], 17Eh + jge short loc_17F1C + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6E04h] + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6DE4h] + push large 200020h + call sub_45FC + mov bx, si + add bx, bx + cmp word ptr [bx-6DC4h], 2 + jnz short loc_17F1C + mov bx, si + add bx, bx + mov word ptr [bx-6DC4h], 0 + +loc_17F1C: ; CODE XREF: sub_17E91+12j + ; sub_17E91+29j ... + inc si + +loc_17F1D: ; CODE XREF: sub_17E91+6j + cmp si, 8 + jl loc_17E9A + pop si + pop bp + retn +sub_17E91 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17F27 proc near ; CODE XREF: sub_19456+455p + +var_12 = word ptr -12h +var_F = byte ptr -0Fh +var_E = dword ptr -0Eh +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, 12h + push si + push di + cmp byte_2066B, 0 + jz loc_18033 + inc byte_26CC6 + test byte_26CC6, 3 + jnz loc_18033 + mov bx, word_2065C + mov al, [bx] + and al, 7 + mov [bp+var_F], al + mov byte_2066B, 0 + mov ax, [bx] + sar ax, 3 + mov bx, word_2065E + mov dx, [bx] + shl dx, 6 + add ax, dx + mov dx, [bx] + shl dx, 4 + add ax, dx + mov [bp+var_8], ax + push large 0C00004h + call sub_127E + mov [bp+var_A], 0 + jmp loc_18024 +; --------------------------------------------------------------------------- + +loc_17F82: ; CODE XREF: sub_17F27+101j + mov ax, [bp+var_A] + imul ax, 6 + add ax, [bp+var_8] + mov [bp+var_6], ax + mov bx, word_2064E + add bx, [bp+var_A] + add bx, bx + mov ax, [bx+1ADAh] + mov word ptr [bp+var_E+2], ax + mov word ptr [bp+var_E], 0 + mov [bp+var_2], 0 + mov bx, word_2065E + mov ax, [bx] + mov [bp+var_4], ax + jmp short loc_1801A +; --------------------------------------------------------------------------- + +loc_17FB3: ; CODE XREF: sub_17F27+F8j + cmp [bp+var_4], 180h + jge short loc_18021 + xor si, si + mov ax, [bp+var_A] + imul ax, 30h + mov bx, word_2065C + add ax, [bx] + mov di, ax + jmp short loc_1800B +; --------------------------------------------------------------------------- + +loc_17FCC: ; CODE XREF: sub_17F27+E7j + or di, di + jle short loc_18004 + cmp di, 1A0h + jge short loc_18004 + cmp [bp+var_4], 10h + jl short loc_18004 + les bx, [bp+var_E] + mov al, es:[bx] + mov ah, 0 + mov cl, 10h + sub cl, [bp+var_F] + shl ax, cl + mov dl, es:[bx] + mov dh, 0 + mov cl, [bp+var_F] + sar dx, cl + add ax, dx + mov [bp+var_12], ax + les bx, dword_1FD4C + add bx, [bp+var_6] + mov es:[bx+si], ax + +loc_18004: ; CODE XREF: sub_17F27+A7j + ; sub_17F27+ADj ... + inc si + add di, 8 + inc word ptr [bp+var_E] + +loc_1800B: ; CODE XREF: sub_17F27+A3j + cmp si, 6 + jl short loc_17FCC + inc [bp+var_2] + add [bp+var_6], 50h ; 'P' + inc [bp+var_4] + +loc_1801A: ; CODE XREF: sub_17F27+8Aj + cmp [bp+var_2], 80h ; '€' + jl short loc_17FB3 + +loc_18021: ; CODE XREF: sub_17F27+91j + inc [bp+var_A] + +loc_18024: ; CODE XREF: sub_17F27+58j + cmp [bp+var_A], 3 + jl loc_17F82 + call sub_12A8 + jmp short loc_180A8 +; --------------------------------------------------------------------------- + +loc_18033: ; CODE XREF: sub_17F27+Dj + ; sub_17F27+1Aj + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE2h] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + push word_2064E + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 60h ; '`' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + add ax, 2 + push ax + call far ptr loc_3362 + +loc_180A8: ; CODE XREF: sub_17F27+10Aj + pop di + pop si + leave + retn +sub_17F27 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_180AC proc near ; CODE XREF: sub_199B3+264p + push bp + mov bp, sp + cmp byte_1E364, 0 + jz short loc_180D1 + mov byte ptr word_2066E, 25h ; '%' + mov byte ptr word_2066E+1, 17h + mov byte ptr word_20670, 27h ; ''' + mov byte ptr word_20670+1, 21h ; '!' + mov byte_20672, 6 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_180D1: ; CODE XREF: sub_180AC+8j + mov byte ptr word_2066E, 25h ; '%' + mov byte ptr word_2066E+1, 19h + mov byte ptr word_20670, 5 + mov byte ptr word_20670+1, 22h ; '"' + mov byte_20672, 8 + pop bp + retn +sub_180AC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_180EC proc near ; CODE XREF: sub_19456:loc_195E5p + ; sub_19456:loc_1983Fp + push bp + mov bp, sp + cmp word_20650, 0Ah + jl loc_181B1 + cmp word_20650, 0Ah + jnz short loc_1810A + push 0 + call sub_10E39 + mov word_2064E, 83h ; 'ƒ' + +loc_1810A: ; CODE XREF: sub_180EC+11j + cmp word_20650, 42h ; 'B' + jge short loc_18125 + mov bx, word_2065C + sub word ptr [bx], 2 + cmp word ptr [bx], 20h ; ' ' + jg short loc_18170 + mov word_20650, 42h ; 'B' + jmp short loc_18170 +; --------------------------------------------------------------------------- + +loc_18125: ; CODE XREF: sub_180EC+23j + cmp word_20650, 0B2h ; '²' + jge short loc_18142 + mov bx, word_2065C + add word ptr [bx], 2 + cmp word ptr [bx], 100h + jl short loc_18170 + mov word_20650, 0B2h ; '²' + jmp short loc_18170 +; --------------------------------------------------------------------------- + +loc_18142: ; CODE XREF: sub_180EC+3Fj + cmp word_20650, 0EAh ; 'ê' + jge short loc_1815F + mov bx, word_2065C + sub word ptr [bx], 2 + cmp word ptr [bx], 90h ; '' + jg short loc_18170 + mov word_20650, 0EAh ; 'ê' + jmp short loc_18170 +; --------------------------------------------------------------------------- + +loc_1815F: ; CODE XREF: sub_180EC+5Cj + mov word_20650, 0 + mov word_2064E, 80h ; '€' + push 1 + call sub_10E39 + +loc_18170: ; CODE XREF: sub_180EC+2Fj + ; sub_180EC+37j ... + mov ax, word_20650 + mov bx, 20h ; ' ' + cwd + idiv bx + or dx, dx + jnz short loc_181B1 + push word_26C58 + push word_26C60 + push 0Fh + call sub_FAD5 + add al, 38h ; '8' + push ax + push word_2066E + push 3Ch ; '<' + call sub_1078E + push word_26C58 + push word_26C60 + push 0 + mov al, byte_26CC0 + mov ah, 0 + mov bx, ax + mov al, [bx+2BFFh] + push ax + push 28h ; '(' + call sub_1078E + +loc_181B1: ; CODE XREF: sub_180EC+8j + ; sub_180EC+8Fj + pop bp + retn +sub_180EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_181B3 proc near ; CODE XREF: sub_19456:loc_195EAp + ; sub_19456:loc_19830p + +var_4 = word ptr -4 +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + cmp word_20650, 14h + jl loc_183CC + cmp word_20650, 46h ; 'F' + jge short loc_181F1 + mov word_2064E, 80h ; '€' + mov bx, word_2065C + mov ax, [bx] + add ax, 40h ; '@' + cmp ax, word_205F6 + jge short loc_181E5 + mov ax, 2 + jmp short loc_181E8 +; --------------------------------------------------------------------------- + +loc_181E5: ; CODE XREF: sub_181B3+2Bj + mov ax, 0FFFEh + +loc_181E8: ; CODE XREF: sub_181B3+30j + mov bx, word_2065C + add [bx], ax + jmp loc_183CC +; --------------------------------------------------------------------------- + +loc_181F1: ; CODE XREF: sub_181B3+16j + cmp word_20650, 46h ; 'F' + jnz short loc_1821A + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + mov byte_26CC7, 30h ; '0' + mov byte_26CC8, 0 + mov byte_26CC9, 64h ; 'd' + jmp loc_183CC +; --------------------------------------------------------------------------- + +loc_1821A: ; CODE XREF: sub_181B3+43j + cmp word_20650, 0AAh ; 'ª' + jge loc_182C2 + push large 0C0000Dh + call sub_127E + mov al, 40h ; '@' + sub al, byte_26CC8 + mov [bp+var_2], al + shr [bp+var_2], 2 + xor si, si + mov al, byte_26CC8 + mov [bp+var_1], al + jmp short loc_1829D +; --------------------------------------------------------------------------- + +loc_18246: ; CODE XREF: sub_181B3+EDj + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+5ECh] + imul eax, 190h + sar eax, 8 + add ax, word_26C58 + mov di, ax + mov al, [bp+var_1] + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+56Ch] + imul eax, 190h + sar eax, 8 + add ax, word_26C60 + mov [bp+var_4], ax + push word_26C58 + push word_26C60 + push di + push ax + call sub_109C + mov al, [bp+var_2] + add [bp+var_1], al + inc si + +loc_1829D: ; CODE XREF: sub_181B3+91j + cmp si, 9 + jl short loc_18246 + cmp word_20650, 24h ; '$' + jl short loc_182AD + inc byte_26CC8 + +loc_182AD: ; CODE XREF: sub_181B3+F4j + call sub_12A8 + test byte ptr word_20650, 1 + jz loc_1835E + inc byte_26CC9 + jmp loc_1835E +; --------------------------------------------------------------------------- + +loc_182C2: ; CODE XREF: sub_181B3+6Dj + cmp word_20650, 0AAh ; 'ª' + jnz short loc_182DD + push 5 + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + jmp loc_183CC +; --------------------------------------------------------------------------- + +loc_182DD: ; CODE XREF: sub_181B3+115j + cmp word_20650, 0C6h ; 'Æ' + jg loc_1836D + mov ax, word_20650 + and ax, 3 + imul ax, 3Ch + mov dx, 110h + sub dx, ax + mov bx, word_2065E + mov [bx], dx + push large 0C0000Dh + call sub_127E + push 7Fh ; '' + call sub_FAD5 + mov [bp+var_1], al + mov ah, 0 + mov bx, word_2065C + add ax, [bx] + add ax, 8 + mov di, ax + push ax + push 10h + push ax + push 17Fh + call sub_109C + call sub_12A8 + mov bx, word_2065C + mov ax, [bx] + add ax, 10h + cmp ax, word_205F6 + jge short loc_1834B + mov ax, [bx] + add ax, 60h ; '`' + cmp ax, word_205F6 + jle short loc_1834B + mov byte_20604, 1 + +loc_1834B: ; CODE XREF: sub_181B3+186j + ; sub_181B3+191j + test byte ptr word_20650, 0 + jz short loc_18359 + mov byte_26CC9, 96h ; '–' + jmp short loc_1835E +; --------------------------------------------------------------------------- + +loc_18359: ; CODE XREF: sub_181B3+19Dj + mov byte_26CC9, 64h ; 'd' + +loc_1835E: ; CODE XREF: sub_181B3+104j + ; sub_181B3+10Cj ... + mov al, byte_26CC9 + mov ah, 0 + mov word_1DF9A, ax + call far ptr loc_1EF6 + jmp short loc_183CC +; --------------------------------------------------------------------------- + +loc_1836D: ; CODE XREF: sub_181B3+130j + cmp word_20650, 106h + jg short loc_183C6 + mov word_2064E, 80h ; '€' + mov bx, word_2065E + sub word ptr [bx], 4 + cmp word ptr [bx], 40h ; '@' + jg short loc_1838D + mov word_20650, 107h + +loc_1838D: ; CODE XREF: sub_181B3+1D2j + cmp byte_1E364, 0 + jz short loc_183CC + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_183CC + cmp byte_26CC0, 0 + jnz short loc_183AE + mov [bp+var_1], 25h ; '%' + jmp short loc_183B2 +; --------------------------------------------------------------------------- + +loc_183AE: ; CODE XREF: sub_181B3+1F3j + mov [bp+var_1], 27h ; ''' + +loc_183B2: ; CODE XREF: sub_181B3+1F9j + push word_26C56 + push word_26C5E + push 0 + push word ptr [bp+var_1] + push 3Ch ; '<' + call sub_1078E + jmp short loc_183CC +; --------------------------------------------------------------------------- + +loc_183C6: ; CODE XREF: sub_181B3+1C0j + mov word_20650, 0 + +loc_183CC: ; CODE XREF: sub_181B3+Dj + ; sub_181B3+3Bj ... + pop di + pop si + leave + retn +sub_181B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_183D0 proc near ; CODE XREF: sub_188AA+56p + ; sub_18B4B+56p + +var_5 = word ptr -5 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp word_20650, 28h ; '(' + jnz short loc_18424 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + mov bx, word_2065C + mov ax, [bx] + add ax, 50h ; 'P' + mov word_26CCC, ax + mov bx, word_2065E + mov ax, [bx] + add ax, 40h ; '@' + mov word_26CCE, ax + shl word_26CCC, 4 + shl word_26CCE, 4 + mov word_26CD0, 4 + mov byte_26CD3, 0FFh + mov byte_26CD4, 0 + jmp loc_1889C +; --------------------------------------------------------------------------- + +loc_18424: ; CODE XREF: sub_183D0+Dj + cmp word_20650, 50h ; 'P' + jl loc_188A4 + cmp word_20650, 50h ; 'P' + jnz loc_184E2 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + mov [bp+var_2], 0 + mov al, byte_26CD2 + jmp loc_184D4 +; --------------------------------------------------------------------------- + +loc_18451: ; CODE XREF: sub_183D0+10Bj + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + mov dx, word_26CCC + sar dx, 4 + add ax, dx + mov bx, [bp+var_2] + add bx, bx + mov [bx-6DF4h], ax + mov bx, [bp+var_2] + add bx, bx + mov [bx-6E04h], ax + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + mov dx, word_26CCE + sar dx, 4 + add ax, dx + mov bx, [bp+var_2] + add bx, bx + mov [bx-6DD4h], ax + mov bx, [bp+var_2] + add bx, bx + mov [bx-6DE4h], ax + mov bx, [bp+var_2] + add bx, bx + mov word ptr [bx-6DC4h], 1 + inc [bp+var_2] + mov al, byte ptr [bp+var_5] + add al, 40h ; '@' + +loc_184D4: ; CODE XREF: sub_183D0+7Ej + mov byte ptr [bp+var_5], al + cmp [bp+var_2], 4 + jl loc_18451 + jmp loc_1889C +; --------------------------------------------------------------------------- + +loc_184E2: ; CODE XREF: sub_183D0+62j + cmp word_20650, 60h ; '`' + jge loc_18589 + add word_26CD0, 4 + mov [bp+var_2], 0 + mov al, byte_26CD2 + jmp loc_1857B +; --------------------------------------------------------------------------- + +loc_184FB: ; CODE XREF: sub_183D0+1B2j + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + mov dx, word_26CCC + sar dx, 4 + add ax, dx + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_2] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6E04h], ax + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + mov dx, word_26CCE + sar dx, 4 + add ax, dx + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_2] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6DE4h], ax + inc [bp+var_2] + mov al, byte ptr [bp+var_5] + add al, 40h ; '@' + +loc_1857B: ; CODE XREF: sub_183D0+128j + mov byte ptr [bp+var_5], al + cmp [bp+var_2], 4 + jl loc_184FB + jmp loc_1889C +; --------------------------------------------------------------------------- + +loc_18589: ; CODE XREF: sub_183D0+117j + les bx, [bp+arg_4] + mov ax, es:[bx] + add word_26CCC, ax + les bx, [bp+arg_0] + mov ax, es:[bx] + add word_26CCE, ax + mov al, byte_26CD3 + cbw + add word_26CD0, ax + cmp byte_26CCA, 0 + jnz loc_186AD + cmp byte_26CC0, 0 + jz loc_18783 + cmp word_26CD0, 0C4h ; 'Ä' + jnz short loc_185C5 + mov word_20650, 0 + +loc_185C5: ; CODE XREF: sub_183D0+1EDj + cmp word_26CD0, 14h + jge loc_1879E + mov byte_26CD4, 0 + push 3 + call sub_FA52 + add sp, 2 + push 0 + call sub_10E39 + mov [bp+var_2], 0 + jmp loc_18691 +; --------------------------------------------------------------------------- + +loc_185EA: ; CODE XREF: sub_183D0+2C5j + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_2] + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6E04h] + add ax, 0Ch + mov si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_2] + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6DE4h] + add ax, 0Ch + mov di, ax + mov [bp+var_5+1], 0 + mov al, byte ptr [bp+var_2] + shl al, 6 + add al, byte_26CD2 + add al, 0C0h ; 'À' + jmp short loc_18645 +; --------------------------------------------------------------------------- + +loc_18631: ; CODE XREF: sub_183D0+27Cj + push si + push di + push [bp+var_5] + push 20h ; ' ' + push 23h ; '#' + call sub_1078E + inc [bp+var_5+1] + mov al, byte ptr [bp+var_5] + add al, 8 + +loc_18645: ; CODE XREF: sub_183D0+25Fj + mov byte ptr [bp+var_5], al + cmp [bp+var_5+1], 10h + jl short loc_18631 + mov [bp+var_5+1], 0 + mov al, byte ptr [bp+var_2] + shl al, 6 + add al, byte_26CD2 + add al, 0C4h ; 'Ä' + jmp short loc_1867A +; --------------------------------------------------------------------------- + +loc_18661: ; CODE XREF: sub_183D0+2B1j + push si + push di + push [bp+var_5] + push 20h ; ' ' + mov ax, 23h ; '#' + sub ax, [bp+var_5+1] + push ax + call sub_1078E + inc [bp+var_5+1] + mov al, byte ptr [bp+var_5] + add al, 8 + +loc_1867A: ; CODE XREF: sub_183D0+28Fj + mov byte ptr [bp+var_5], al + cmp [bp+var_5+1], 10h + jl short loc_18661 + mov bx, [bp+var_2] + add bx, bx + mov word ptr [bx-6DC4h], 2 + inc [bp+var_2] + +loc_18691: ; CODE XREF: sub_183D0+217j + cmp [bp+var_2], 4 + jl loc_185EA + push 1 + call sub_10E39 + mov word_26CD0, 140h + mov word_2064E, 80h ; '€' + jmp loc_1879E +; --------------------------------------------------------------------------- + +loc_186AD: ; CODE XREF: sub_183D0+1DAj + cmp byte_26CD4, 0 + jz short loc_186CA + cmp byte_26CC0, 0 + jz short loc_186C2 + mov al, byte_26CD2 + add al, 0FDh ; 'ý' + jmp short loc_186C7 +; --------------------------------------------------------------------------- + +loc_186C2: ; CODE XREF: sub_183D0+2E9j + mov al, byte_26CD2 + add al, 0FBh ; 'û' + +loc_186C7: ; CODE XREF: sub_183D0+2F0j + mov byte_26CD2, al + +loc_186CA: ; CODE XREF: sub_183D0+2E2j + cmp word_26CD0, 190h + jge loc_187DF + cmp word_26CD0, 14h + jge loc_1879E + les bx, [bp+arg_4] + mov word ptr es:[bx], 0 + les bx, [bp+arg_0] + mov word ptr es:[bx], 0 + mov byte_26CD4, 1 + push 3 + call sub_FA52 + add sp, 2 + mov al, byte_26CD2 + add al, 8 + mov byte ptr [bp+var_5], al + mov [bp+var_2], 0 + jmp short loc_18770 +; --------------------------------------------------------------------------- + +loc_1870B: ; CODE XREF: sub_183D0+3A4j + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_2] + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6E04h] + add ax, 0Ch + mov si, ax + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_2] + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6DE4h] + add ax, 0Ch + mov di, ax + mov [bp+var_5+1], 0 + jmp short loc_1875F +; --------------------------------------------------------------------------- + +loc_18746: ; CODE XREF: sub_183D0+393j + push si + push di + mov al, byte ptr [bp+var_5] + add al, byte ptr [bp+var_5+1] + push ax + push 20h ; ' ' + mov ax, [bp+var_5+1] + add ax, 23h ; '#' + push ax + call sub_1078E + add [bp+var_5+1], 0Ch + +loc_1875F: ; CODE XREF: sub_183D0+374j + cmp [bp+var_5+1], 30h ; '0' + jl short loc_18746 + inc [bp+var_2] + mov al, byte ptr [bp+var_5] + add al, 40h ; '@' + mov byte ptr [bp+var_5], al + +loc_18770: ; CODE XREF: sub_183D0+339j + cmp [bp+var_2], 4 + jl short loc_1870B + mov word_2064E, 80h ; '€' + mov byte_26CD3, 5 + jmp short loc_1879E +; --------------------------------------------------------------------------- + +loc_18783: ; CODE XREF: sub_183D0+1E3j + cmp word_26CD0, 20h ; ' ' + jge short loc_18791 + mov byte_26CD3, 2 + jmp short loc_1879E +; --------------------------------------------------------------------------- + +loc_18791: ; CODE XREF: sub_183D0+3B8j + cmp word_26CD0, 80h ; '€' + jle short loc_1879E + mov byte_26CD3, 0FEh ; 'þ' + +loc_1879E: ; CODE XREF: sub_183D0+1FAj + ; sub_183D0+2DAj ... + mov ax, word_26CCC + sar ax, 4 + mov si, ax + mov ax, word_26CCE + sar ax, 4 + mov di, ax + mov ax, si + add ax, word_26CD0 + jl short loc_187DF + mov ax, si + sub ax, word_26CD0 + cmp ax, 1A0h + jg short loc_187DF + mov ax, di + add ax, word_26CD0 + cmp ax, 0FFF0h + jl short loc_187DF + mov ax, di + sub ax, word_26CD0 + cmp ax, 182h + jg short loc_187DF + cmp word_20650, 1F4h + jle short loc_18806 + +loc_187DF: ; CODE XREF: sub_183D0+300j + ; sub_183D0+3E4j ... + mov [bp+var_2], 0 + jmp short loc_187F4 +; --------------------------------------------------------------------------- + +loc_187E6: ; CODE XREF: sub_183D0+428j + mov bx, [bp+var_2] + add bx, bx + mov word ptr [bx-6DC4h], 2 + inc [bp+var_2] + +loc_187F4: ; CODE XREF: sub_183D0+414j + cmp [bp+var_2], 4 + jl short loc_187E6 + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_18806: ; CODE XREF: sub_183D0+40Dj + mov [bp+var_2], 0 + mov al, byte_26CD2 + jmp loc_18891 +; --------------------------------------------------------------------------- + +loc_18811: ; CODE XREF: sub_183D0+4C8j + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + mov dx, word_26CCC + sar dx, 4 + add ax, dx + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_2] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6E04h], ax + movsx eax, word_26CD0 + mov dl, byte ptr [bp+var_5] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + mov dx, word_26CCE + sar dx, 4 + add ax, dx + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_2] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6DE4h], ax + inc [bp+var_2] + mov al, byte ptr [bp+var_5] + add al, 40h ; '@' + +loc_18891: ; CODE XREF: sub_183D0+43Ej + mov byte ptr [bp+var_5], al + cmp [bp+var_2], 4 + jl loc_18811 + +loc_1889C: ; CODE XREF: sub_183D0+51j + ; sub_183D0+10Fj ... + mov al, byte_26CD2 + add al, 5 + mov byte_26CD2, al + +loc_188A4: ; CODE XREF: sub_183D0+59j + pop di + pop si + leave + retn 8 +sub_183D0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_188AA proc near ; CODE XREF: sub_19456:loc_195EFp + ; sub_19456:loc_19826p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + cmp word_20650, 28h ; '(' + jl short locret_18903 + cmp word_20650, 28h ; '(' + jnz short loc_188F8 + mov byte_26CCA, 0 + mov bx, word_2065C + mov ax, [bx] + add ax, 50h ; 'P' + mov [bp+var_2], ax + mov bx, word_2065E + mov ax, [bx] + add ax, 40h ; '@' + mov [bp+var_4], ax + push [bp+var_2] + push ax + push word_205F6 + push word_205F8 + push 0 + push ds + push offset unk_26CD6 + push ds + push offset unk_26CD8 + push 30h ; '0' + call sub_F5B1 + +loc_188F8: ; CODE XREF: sub_188AA+12j + push ds + push offset unk_26CD6 + push ds + push offset unk_26CD8 + call sub_183D0 + +locret_18903: ; CODE XREF: sub_188AA+Bj + leave + retn +sub_188AA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18905 proc near ; CODE XREF: sub_19456:loc_19690p + ; sub_19456:loc_1982Bp + push bp + mov bp, sp + cmp word_20650, 0Ah + jl loc_18A19 + cmp word_20650, 46h ; 'F' + jge short loc_1893E + mov word_2064E, 80h ; '€' + mov bx, word_2065C + mov ax, [bx] + add ax, 40h ; '@' + cmp ax, word_205F6 + jge short loc_18932 + mov ax, 2 + jmp short loc_18935 +; --------------------------------------------------------------------------- + +loc_18932: ; CODE XREF: sub_18905+26j + mov ax, 0FFFEh + +loc_18935: ; CODE XREF: sub_18905+2Bj + mov bx, word_2065C + add [bx], ax + jmp loc_189DC +; --------------------------------------------------------------------------- + +loc_1893E: ; CODE XREF: sub_18905+11j + cmp word_20650, 46h ; 'F' + jnz short loc_1895D + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + mov byte ptr word_26CDA+1, 14h + jmp loc_189DC +; --------------------------------------------------------------------------- + +loc_1895D: ; CODE XREF: sub_18905+3Ej + cmp word_20650, 64h ; 'd' + jl loc_18A19 + cmp word_20650, 64h ; 'd' + jnz short loc_18985 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + call sub_FAC6 + mov byte ptr word_26CDA, al + jmp short loc_189DC +; --------------------------------------------------------------------------- + +loc_18985: ; CODE XREF: sub_18905+66j + cmp word_20650, 0A0h ; ' ' + jg short loc_18993 + dec byte ptr word_26CDA + jmp short loc_189DC +; --------------------------------------------------------------------------- + +loc_18993: ; CODE XREF: sub_18905+86j + cmp word_20650, 0F0h ; 'ð' + jg short loc_189A5 + inc byte ptr word_26CDA + inc byte ptr word_26CDA+1 + jmp short loc_189DC +; --------------------------------------------------------------------------- + +loc_189A5: ; CODE XREF: sub_18905+94j + cmp byte_26CC0, 0 + jz short loc_189D0 + cmp word_20650, 140h + jg short loc_189BE + inc byte ptr word_26CDA + dec byte ptr word_26CDA+1 + jmp short loc_189DC +; --------------------------------------------------------------------------- + +loc_189BE: ; CODE XREF: sub_18905+ADj + cmp word_20650, 190h + jg short loc_189D0 + dec byte ptr word_26CDA + inc byte ptr word_26CDA+1 + jmp short loc_189DC +; --------------------------------------------------------------------------- + +loc_189D0: ; CODE XREF: sub_18905+A5j + ; sub_18905+BFj + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_189DC: ; CODE XREF: sub_18905+36j + ; sub_18905+55j ... + cmp word_20650, 64h ; 'd' + jle short loc_18A19 + mov al, byte_1E364 + cbw + mov bx, 8 + sub bx, ax + mov ax, word_20650 + cwd + idiv bx + or dx, dx + jnz short loc_18A19 + push word_26C5A + push word_26C62 + push word_26CDA + push word_20670+1 + mov al, byte ptr word_26CDA+1 + mov ah, 0 + push ax + call sub_1078E + push 3 + call sub_FA52 + add sp, 2 + +loc_18A19: ; CODE XREF: sub_18905+8j + ; sub_18905+5Dj ... + pop bp + retn +sub_18905 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18A1B proc near ; CODE XREF: sub_19456:loc_19695p + ; sub_19456:loc_19835p + push bp + mov bp, sp + cmp word_20650, 0Ah + jl loc_18B49 + cmp word_20650, 46h ; 'F' + jge short loc_18A53 + mov word_2064E, 80h ; '€' + mov bx, word_2065C + mov ax, [bx] + add ax, 40h ; '@' + cmp ax, word_205F6 + jge short loc_18A48 + mov ax, 2 + jmp short loc_18A4B +; --------------------------------------------------------------------------- + +loc_18A48: ; CODE XREF: sub_18A1B+26j + mov ax, 0FFFEh + +loc_18A4B: ; CODE XREF: sub_18A1B+2Bj + mov bx, word_2065C + add [bx], ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18A53: ; CODE XREF: sub_18A1B+11j + cmp word_20650, 46h ; 'F' + jnz short loc_18A71 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + mov byte ptr word_26CDC, 0D8h ; 'Ø' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18A71: ; CODE XREF: sub_18A1B+3Dj + cmp word_20650, 64h ; 'd' + jl loc_18B49 + cmp word_20650, 64h ; 'd' + jnz short loc_18A93 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18A93: ; CODE XREF: sub_18A1B+64j + cmp word_20650, 84h ; '„' + jg short loc_18AB8 + push word_26C5A + push word_26C62 + push word_26CDC + push 23h ; '#' + push 5Ah ; 'Z' + call sub_1078E + mov al, byte ptr word_26CDC + add al, 3 + mov byte ptr word_26CDC, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18AB8: ; CODE XREF: sub_18A1B+7Ej + cmp word_20650, 96h ; '–' + jg short loc_18ADD + push word_26C5A + push word_26C62 + push word_26CDC + push 23h ; '#' + push 5Ah ; 'Z' + call sub_1078E + mov al, byte ptr word_26CDC + add al, 0FDh ; 'ý' + mov byte ptr word_26CDC, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18ADD: ; CODE XREF: sub_18A1B+A3j + cmp word_20650, 0E2h ; 'â' + jg short loc_18B3D + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + cmp dx, 1 + jnz short loc_18B49 + cmp byte_26CC0, 0 + jnz short loc_18B0D + push word_26C5A + push word_26C62 + push 40h ; '@' + push 7 + push 5Ah ; 'Z' + call sub_1078E + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18B0D: ; CODE XREF: sub_18A1B+DDj + push word_26C5A + push word_26C62 + push 3Fh ; '?' + call sub_FAD5 + add al, 20h ; ' ' + push ax + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + push word_26C5A + push word_26C62 + push 3Fh ; '?' + call sub_FAD5 + add al, 20h ; ' ' + push ax + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18B3D: ; CODE XREF: sub_18A1B+C8j + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_18B49: ; CODE XREF: sub_18A1B+8j + ; sub_18A1B+5Bj ... + pop bp + retn +sub_18A1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18B4B proc near ; CODE XREF: sub_19456:loc_1969Ap + ; sub_19456:loc_1983Ap + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + cmp word_20650, 28h ; '(' + jl short locret_18BA4 + cmp word_20650, 28h ; '(' + jnz short loc_18B99 + mov byte_26CCA, 1 + mov bx, word_2065C + mov ax, [bx] + add ax, 50h ; 'P' + mov [bp+var_2], ax + mov bx, word_2065E + mov ax, [bx] + add ax, 40h ; '@' + mov [bp+var_4], ax + push [bp+var_2] + push ax + push word_205F6 + push word_205F8 + push 0 + push ds + push offset unk_26CDE + push ds + push offset unk_26CE0 + push 34h ; '4' + call sub_F5B1 + +loc_18B99: ; CODE XREF: sub_18B4B+12j + push ds + push offset unk_26CDE + push ds + push offset unk_26CE0 + call sub_183D0 + +locret_18BA4: ; CODE XREF: sub_18B4B+Bj + leave + retn +sub_18B4B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18BA6 proc near ; CODE XREF: sub_19456+1C5p + ; sub_19456+272p ... + push bp + mov bp, sp + cmp word_20650, 0Ah + jl loc_18C48 + cmp word_20650, 0Ah + jnz short loc_18BCB + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18BCB: ; CODE XREF: sub_18BA6+11j + cmp word_20650, 28h ; '(' + jl short loc_18C48 + cmp word_20650, 28h ; '(' + jnz short loc_18BFC + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + cmp word_26C68, 6 + jnz short loc_18C39 + push word_26C5A + push word_26C62 + push 2 + jmp short loc_18C43 +; --------------------------------------------------------------------------- + +loc_18BFC: ; CODE XREF: sub_18BA6+31j + cmp word_20650, 3Ch ; '<' + jnz short loc_18C0F + push 0Ah + call sub_FA52 + add sp, 2 + jmp short loc_18C39 +; --------------------------------------------------------------------------- + +loc_18C0F: ; CODE XREF: sub_18BA6+5Bj + cmp word_20650, 50h ; 'P' + jnz short loc_18C48 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 80h ; '€' + cmp word_26C68, 2 + jnz short loc_18C39 + push word_26C5A + push word_26C62 + push 4 + jmp short loc_18C43 +; --------------------------------------------------------------------------- + +loc_18C39: ; CODE XREF: sub_18BA6+48j + ; sub_18BA6+67j ... + push word_26C5A + push word_26C62 + push 3 + +loc_18C43: ; CODE XREF: sub_18BA6+54j + ; sub_18BA6+91j + call sub_D6CA + +loc_18C48: ; CODE XREF: sub_18BA6+8j + ; sub_18BA6+2Aj ... + pop bp + retn +sub_18BA6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18C4A proc near ; CODE XREF: sub_19456:loc_1975Dp + ; sub_19456:loc_19821p + push bp + mov bp, sp + cmp word_20650, 0Ah + jl loc_18DDE + cmp word_20650, 46h ; 'F' + jge short loc_18C82 + mov word_2064E, 80h ; '€' + mov bx, word_2065C + mov ax, [bx] + add ax, 40h ; '@' + cmp ax, word_205F6 + jge short loc_18C77 + mov ax, 2 + jmp short loc_18C7A +; --------------------------------------------------------------------------- + +loc_18C77: ; CODE XREF: sub_18C4A+26j + mov ax, 0FFFEh + +loc_18C7A: ; CODE XREF: sub_18C4A+2Bj + mov bx, word_2065C + add [bx], ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18C82: ; CODE XREF: sub_18C4A+11j + cmp word_20650, 46h ; 'F' + jnz short loc_18C9B + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18C9B: ; CODE XREF: sub_18C4A+3Dj + cmp word_20650, 64h ; 'd' + jl loc_18DDE + cmp word_20650, 64h ; 'd' + jnz short loc_18CEE + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + mov ax, word_205F8 + sub ax, word_26C62 + push ax + mov ax, word_205F6 + sub ax, word_26C5A + push ax + call sub_1E78 + mov byte_26CE2, al + cmp word_205F6, 0D0h ; 'Ð' + jg short loc_18CDF + mov al, 0FFh + jmp short loc_18CE1 +; --------------------------------------------------------------------------- + +loc_18CDF: ; CODE XREF: sub_18C4A+8Fj + mov al, 1 + +loc_18CE1: ; CODE XREF: sub_18C4A+93j + mov byte_26CE3, al + mov al, byte_26CC0 + mov ah, 0 + mov word_21748, ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18CEE: ; CODE XREF: sub_18C4A+5Fj + cmp word_20650, 12Ch + jg loc_18DD2 + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz loc_18DA9 + push 0Ah + call sub_FA52 + add sp, 2 + cmp byte_1E364, 0 + jz short loc_18D75 + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 0Ah + push ax + push 88h ; 'ˆ' + push large 550050h + call sub_10865 + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 0F6h ; 'ö' + push ax + push 88h ; 'ˆ' + push large 550050h + call sub_10865 + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 1Eh + push ax + push 88h ; 'ˆ' + push large 550050h + call sub_10865 + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 0E2h ; 'â' + jmp short loc_18D9C +; --------------------------------------------------------------------------- + +loc_18D75: ; CODE XREF: sub_18C4A+CCj + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 0Fh + push ax + push 88h ; 'ˆ' + push large 550050h + call sub_10865 + push word_26C5A + push word_26C62 + mov al, byte_26CE2 + add al, 0F1h ; 'ñ' + +loc_18D9C: ; CODE XREF: sub_18C4A+129j + push ax + push 88h ; 'ˆ' + push large 550050h + call sub_10865 + +loc_18DA9: ; CODE XREF: sub_18C4A+B9j + cmp word_20650, 96h ; '–' + jl short loc_18DDE + test byte ptr word_20650, 1 + jz short loc_18DDE + cmp word_20650, 0D2h ; 'Ò' + jge short loc_18DC9 + mov al, byte_26CE3 + add byte_26CE2, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18DC9: ; CODE XREF: sub_18C4A+174j + mov al, byte_26CE3 + sub byte_26CE2, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18DD2: ; CODE XREF: sub_18C4A+AAj + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_18DDE: ; CODE XREF: sub_18C4A+8j + ; sub_18C4A+56j ... + pop bp + retn +sub_18C4A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18DE0 proc near ; CODE XREF: sub_19456:loc_19762p + ; sub_19456:loc_19844p + push bp + mov bp, sp + cmp word_20650, 1Eh + jl loc_18EB6 + cmp word_20650, 46h ; 'F' + jge short loc_18E18 + mov word_2064E, 80h ; '€' + mov bx, word_2065C + mov ax, [bx] + add ax, 40h ; '@' + cmp ax, word_205F6 + jge short loc_18E0D + mov ax, 2 + jmp short loc_18E10 +; --------------------------------------------------------------------------- + +loc_18E0D: ; CODE XREF: sub_18DE0+26j + mov ax, 0FFFEh + +loc_18E10: ; CODE XREF: sub_18DE0+2Bj + mov bx, word_2065C + add [bx], ax + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18E18: ; CODE XREF: sub_18DE0+11j + cmp word_20650, 46h ; 'F' + jnz short loc_18E31 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18E31: ; CODE XREF: sub_18DE0+3Dj + cmp word_20650, 78h ; 'x' + jl short loc_18EB6 + cmp word_20650, 78h ; 'x' + jnz short loc_18E89 + push 3 + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + mov byte_26CE4, 4 + +loc_18E54: ; CODE XREF: sub_18DE0+C8j + push word_26C5A + push word_26C62 + mov al, byte_26CE4 + add al, 8 + push ax + push 7 + push 50h ; 'P' + call sub_1078E + push word_26C5A + push word_26C62 + mov al, 78h ; 'x' + sub al, byte_26CE4 + push ax + push 7 + push 50h ; 'P' + call sub_1078E + mov al, byte_26CE4 + add al, 0Ah + mov byte_26CE4, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_18E89: ; CODE XREF: sub_18DE0+5Dj + cmp word_20650, 0A0h ; ' ' + jg short loc_18EAA + mov ax, word_20650 + mov bx, 0Ah + cwd + idiv bx + or dx, dx + jnz short loc_18EB6 + push 3 + call sub_FA52 + add sp, 2 + jmp short loc_18E54 +; --------------------------------------------------------------------------- + +loc_18EAA: ; CODE XREF: sub_18DE0+AFj + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_18EB6: ; CODE XREF: sub_18DE0+8j + ; sub_18DE0+56j ... + pop bp + retn +sub_18DE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18EB8 proc near ; CODE XREF: sub_19456:loc_19767p + ; sub_19456:loc_19849p + +var_4 = byte ptr -4 +var_3 = word ptr -3 + + push bp + mov bp, sp + sub sp, 4 + cmp word_20650, 28h ; '(' + jl locret_19171 + cmp word_20650, 28h ; '(' + jnz short loc_18F05 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 83h ; 'ƒ' + mov bx, word_2065C + mov ax, [bx] + add ax, 50h ; 'P' + mov word_26CE6, ax + mov bx, word_2065E + mov ax, [bx] + add ax, 50h ; 'P' + mov word_26CE8, ax + mov word_26CEA, 4 + call sub_FAC6 + mov byte_26CEC, al + jmp loc_19169 +; --------------------------------------------------------------------------- + +loc_18F05: ; CODE XREF: sub_18EB8+14j + cmp word_20650, 50h ; 'P' + jl locret_19171 + cmp word_20650, 50h ; 'P' + jnz loc_18FC3 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + mov [bp+var_3+1], 0 + mov al, byte_26CEC + jmp loc_18FB5 +; --------------------------------------------------------------------------- + +loc_18F32: ; CODE XREF: sub_18EB8+104j + movsx eax, word_26CEA + mov dl, [bp+var_4] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + mov dx, word_26CE6 + sar dx, 4 + add ax, dx + mov bx, [bp+var_3+1] + add bx, bx + mov [bx-6DF4h], ax + mov bx, [bp+var_3+1] + add bx, bx + mov [bx-6E04h], ax + movsx eax, word_26CEA + mov dl, [bp+var_4] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + mov dx, word_26CE8 + sar dx, 4 + add ax, dx + mov bx, [bp+var_3+1] + add bx, bx + mov [bx-6DD4h], ax + mov bx, [bp+var_3+1] + add bx, bx + mov [bx-6DE4h], ax + mov bx, [bp+var_3+1] + add bx, bx + mov word ptr [bx-6DC4h], 1 + inc [bp+var_3+1] + mov al, [bp+var_4] + add al, 40h ; '@' + +loc_18FB5: ; CODE XREF: sub_18EB8+77j + mov [bp+var_4], al + cmp [bp+var_3+1], 4 + jl loc_18F32 + jmp loc_19169 +; --------------------------------------------------------------------------- + +loc_18FC3: ; CODE XREF: sub_18EB8+5Bj + add word_26CEA, 2 + mov [bp+var_3+1], 0 + mov al, byte_26CEC + jmp loc_1912F +; --------------------------------------------------------------------------- + +loc_18FD3: ; CODE XREF: sub_18EB8+27Ej + movsx eax, word_26CEA + mov dl, [bp+var_4] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_26CE6 + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_3+1] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6E04h], ax + movsx eax, word_26CEA + mov dl, [bp+var_4] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_26CE8 + mov dl, byte_20618 + mov dh, 0 + shl dx, 4 + mov bx, [bp+var_3+1] + add bx, bx + add dx, bx + mov bx, dx + mov [bx-6DE4h], ax + mov al, byte_1E364 + cbw + shl ax, 4 + mov dx, 0B4h ; '´' + sub dx, ax + cmp dx, word_26CEA + jge loc_19127 + test byte ptr word_20650, 3 + jnz loc_19127 + push 3 + call sub_FA52 + add sp, 2 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6E04h], 0 + jle loc_19127 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6E04h], 1A0h + jge loc_19127 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6DE4h], 0 + jle short loc_19127 + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + cmp word ptr [bx-6DE4h], 190h + jge short loc_19127 + cmp byte_26CC0, 0 + jnz short loc_190E3 + mov al, byte ptr [bp+var_3+1] + shl al, 6 + add al, byte_26CEC + add al, 40h ; '@' + jmp short loc_190EF +; --------------------------------------------------------------------------- + +loc_190E3: ; CODE XREF: sub_18EB8+21Bj + mov al, byte ptr [bp+var_3+1] + shl al, 6 + add al, byte_26CEC + add al, 60h ; '`' + +loc_190EF: ; CODE XREF: sub_18EB8+229j + mov byte ptr [bp+var_3], al + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6E04h] + mov al, byte_20618 + mov ah, 0 + shl ax, 4 + mov dx, [bp+var_3+1] + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6DE4h] + push [bp+var_3] + push 20h ; ' ' + push 80h ; '€' + call sub_1078E + +loc_19127: ; CODE XREF: sub_18EB8+199j + ; sub_18EB8+1A2j ... + inc [bp+var_3+1] + mov al, [bp+var_4] + add al, 40h ; '@' + +loc_1912F: ; CODE XREF: sub_18EB8+118j + mov [bp+var_4], al + cmp [bp+var_3+1], 4 + jl loc_18FD3 + cmp word_26CEA, 1CCh + jle short loc_19169 + mov [bp+var_3+1], 0 + jmp short loc_19157 +; --------------------------------------------------------------------------- + +loc_19149: ; CODE XREF: sub_18EB8+2A3j + mov bx, [bp+var_3+1] + add bx, bx + mov word ptr [bx-6DC4h], 0 + inc [bp+var_3+1] + +loc_19157: ; CODE XREF: sub_18EB8+28Fj + cmp [bp+var_3+1], 4 + jl short loc_19149 + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_19169: ; CODE XREF: sub_18EB8+4Aj + ; sub_18EB8+108j ... + mov al, byte_26CEC + add al, 0FDh ; 'ý' + mov byte_26CEC, al + +locret_19171: ; CODE XREF: sub_18EB8+Bj + ; sub_18EB8+52j + leave + retn +sub_18EB8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19173 proc near ; CODE XREF: sub_19456:loc_1986Bp + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl short loc_191CA + cmp word_20650, 32h ; '2' + jnz short loc_1918B + mov byte ptr word_26CED, 0 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1918B: ; CODE XREF: sub_19173+Fj + cmp word_20650, 96h ; '–' + jge short loc_191C4 + test byte ptr word_20650, 1 + jz short loc_191CA + push 3 + call sub_FA52 + add sp, 2 + push word_26C5C + push word_26C64 + push word_26CED + push 23h ; '#' + push large 560032h + call sub_10865 + mov al, byte_20672 + add byte ptr word_26CED, al + pop bp + retn +; --------------------------------------------------------------------------- + +loc_191C4: ; CODE XREF: sub_19173+1Ej + mov word_20650, 0 + +loc_191CA: ; CODE XREF: sub_19173+8j + ; sub_19173+25j + pop bp + retn +sub_19173 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_191CC proc near ; CODE XREF: sub_19456:loc_19870p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_19351 + cmp word_20650, 32h ; '2' + jnz short loc_1920E + mov ax, word_205F8 + add ax, 0Ch + sub ax, word_26C64 + push ax + mov ax, word_205F6 + add ax, 0Ch + sub ax, word_26C5C + push ax + call sub_1E78 + mov byte ptr word_26CED+1, al + mov byte_26CEF, 1Eh + push 9 + call sub_FA52 + add sp, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1920E: ; CODE XREF: sub_191CC+11j + cmp word_20650, 50h ; 'P' + jg loc_192CA + test byte ptr word_20650, 1 + jz loc_19351 + push large 0C00000h + call sub_127E + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + push ax + call sub_CC0 + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + add ax, ax + push ax + call sub_CC0 + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + shl ax, 2 + push ax + call sub_CC0 + mov al, byte_26CEF + add al, 0FEh ; 'þ' + mov byte_26CEF, al + cmp word_20650, 50h ; 'P' + jz loc_19351 + push large 0C0000Dh + call sub_127E + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + push ax + call sub_CC0 + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + add ax, ax + push ax + call sub_CC0 + push word_26C5C + push word_26C64 + mov al, byte_26CEF + mov ah, 0 + shl ax, 2 + push ax + call sub_CC0 + call sub_12A8 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_192CA: ; CODE XREF: sub_191CC+47j + cmp word_20650, 0C8h ; 'È' + jge short loc_1934B + test byte ptr word_20650, 7 + jnz short loc_192FF + push word_26C5C + push word_26C64 + push 2 + push 1Ch + push large 56003Ch + call sub_10865 + push word_26C5C + push word_26C64 + push 2 + push 1Ch + push 3Ch ; '<' + call sub_1078E + +loc_192FF: ; CODE XREF: sub_191CC+10Bj + mov al, byte_1E364 + cbw + or ax, ax + jle short loc_19338 + mov ax, word_20650 + and ax, 7 + cmp ax, 4 + jnz short loc_19338 + push word_26C5C + push word_26C64 + push 2 + push 1Ch + push large 56003Ch + call sub_10865 + push word_26C5C + push word_26C64 + push 2 + push 1Ch + push 3Ch ; '<' + call sub_1078E + +loc_19338: ; CODE XREF: sub_191CC+139j + ; sub_191CC+144j + test byte ptr word_20650, 7 + jnz short loc_19351 + push 3 + call sub_FA52 + add sp, 2 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1934B: ; CODE XREF: sub_191CC+104j + mov word_20650, 0 + +loc_19351: ; CODE XREF: sub_191CC+8j + ; sub_191CC+50j ... + pop bp + retn +sub_191CC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19353 proc near ; CODE XREF: sub_19456:loc_19875p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl short loc_193A2 + cmp word_20650, 0BEh ; '¾' + jge short loc_1939C + test byte ptr word_20650, 1Fh + jnz short loc_1937A + push word_26C5C + push word_26C64 + push 0 + push 17h + jmp short loc_19391 +; --------------------------------------------------------------------------- + +loc_1937A: ; CODE XREF: sub_19353+17j + mov ax, word_20650 + and ax, 1Fh + cmp ax, 10h + jnz short loc_193A2 + push word_26C5C + push word_26C64 + push 0 + push 11h + +loc_19391: ; CODE XREF: sub_19353+25j + push large 56005Ah + call sub_10865 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1939C: ; CODE XREF: sub_19353+10j + mov word_20650, 0 + +loc_193A2: ; CODE XREF: sub_19353+8j + ; sub_19353+30j + pop bp + retn +sub_19353 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_193A4 proc near ; CODE XREF: sub_19456:loc_195F2p + ; sub_19456:loc_1969Dp ... + push bp + mov bp, sp + push si + cmp word_20650, 0 + jnz loc_19443 + mov ax, word_2065A + cmp ax, word_26CF0 + jge short loc_193C3 + mov ax, word_26CBE + cmp ax, word_26CF2 + jle short loc_193D5 + +loc_193C3: ; CODE XREF: sub_193A4+14j + inc word_26C68 + mov word_26C66, 0 + mov word_26CBE, 0 + jmp short loc_19443 +; --------------------------------------------------------------------------- + +loc_193D5: ; CODE XREF: sub_193A4+1Dj + inc word_26CBE + mov ax, word_26CBE + cmp ax, word_26CF6 + jl short loc_193E8 + mov word_26C66, 1 + +loc_193E8: ; CODE XREF: sub_193A4+3Cj + cmp byte_26CC0, 0 + jnz short loc_193FD + mov ax, word_26C6A + inc ax + mov si, ax + cmp si, word_26CF4 + jl short loc_1940A + jmp short loc_19408 +; --------------------------------------------------------------------------- + +loc_193FD: ; CODE XREF: sub_193A4+49j + mov ax, word_26C6A + inc ax + mov si, ax + cmp si, 7 + jle short loc_1940A + +loc_19408: ; CODE XREF: sub_193A4+57j + xor si, si + +loc_1940A: ; CODE XREF: sub_193A4+55j + ; sub_193A4+62j + mov word_26C6A, si + mov bx, word_2065E + cmp word ptr [bx], 30h ; '0' + jge short loc_1941F + mov word_1EE56, 1 + jmp short loc_19443 +; --------------------------------------------------------------------------- + +loc_1941F: ; CODE XREF: sub_193A4+71j + mov bx, word_2065E + cmp word ptr [bx], 40h ; '@' + jle short loc_19430 + mov word_1EE56, 0FFFFh + jmp short loc_19443 +; --------------------------------------------------------------------------- + +loc_19430: ; CODE XREF: sub_193A4+82j + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov ax, 1 + sub ax, dx + mov word_1EE56, ax + +loc_19443: ; CODE XREF: sub_193A4+9j + ; sub_193A4+2Fj ... + cmp word_20650, 0Ah + jge short loc_19453 + mov bx, word_2065E + mov ax, word_1EE56 + add [bx], ax + +loc_19453: ; CODE XREF: sub_193A4+A4j + pop si + pop bp + retn +sub_193A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19456 proc far ; DATA XREF: sub_B3DA+44Bo + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + push si + inc word_20650 + mov bx, word_2065C + mov ax, [bx] + add ax, 48h ; 'H' + mov word_205D8, ax + mov bx, word_2065E + mov ax, [bx] + add ax, 38h ; '8' + mov word_205DA, ax + mov bx, word_2065C + mov ax, [bx] + add ax, 20h ; ' ' + mov word_26C56, ax + mov ax, [bx] + add ax, 28h ; '(' + mov word_26C58, ax + mov ax, [bx] + add ax, 40h ; '@' + mov word_26C5A, ax + mov ax, [bx] + add ax, 40h ; '@' + mov word_26C5C, ax + mov bx, word_2065E + mov ax, [bx] + add ax, 60h ; '`' + mov word_26C5E, ax + mov ax, [bx] + add ax, 10h + mov word_26C60, ax + mov ax, [bx] + add ax, 72h ; 'r' + mov word_26C62, ax + mov ax, [bx] + add ax, 2Ch ; ',' + mov word_26C64, ax + test byte ptr dword_20612, 1 + jnz short loc_1953B + cmp byte_2066C, 0 + jnz short loc_1950F + mov al, byte_26CF8 + add al, 8 + mov byte_26CF8, al + push large 0C00003h + call sub_127E + xor si, si + mov al, byte_26CF8 + jmp short loc_19502 +; --------------------------------------------------------------------------- + +loc_194E9: ; CODE XREF: sub_19456+B2j + push large 0E000C8h + mov al, [bp+var_1] + mov ah, 0 + push ax + push 10h + call sub_1C287 + inc si + mov al, [bp+var_1] + add al, 80h ; '€' + +loc_19502: ; CODE XREF: sub_19456+91j + mov [bp+var_1], al + cmp si, 2 + jl short loc_194E9 + call sub_12A8 + +loc_1950F: ; CODE XREF: sub_19456+77j + test byte ptr word_26C68, 1 + jz short loc_1953B + inc byte_26CFA + cmp byte_26CFA, 40h ; '@' + jb short loc_19526 + mov byte_26CFA, 0 + +loc_19526: ; CODE XREF: sub_19456+C9j + mov al, byte_26CFA + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov dl, byte_26CF9 + sub dl, al + mov byte_26CC2, dl + +loc_1953B: ; CODE XREF: sub_19456+70j + ; sub_19456+BEj + cmp word_26C68, 0 + jnz loc_195CB + mov ax, word_20650 + cwd + sub ax, dx + sar ax, 1 + mov byte_26CC1, al + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + mov byte_26CC2, al + mov ax, word_20650 + sar ax, 1 + mov byte_1F508, al + mov byte_1F509, 0 + mov ax, word_20650 + sar ax, 1 + mov byte_1F50A, al + call far ptr loc_1EF6 + cmp word_20650, 64h ; 'd' + jle loc_198A8 + mov al, byte_26CC2 + mov byte_26CF9, al + mov byte_26CFA, 0 + mov word_26C68, 1 + mov word_20650, 0 + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov word_26C6A, dx + mov word_26CBE, 0 + mov word_26CF0, 258h + mov word_26CF6, 2 + mov word_26CF2, 0Ah + mov word_26CF4, 3 + mov word_2065A, 0 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_195CB: ; CODE XREF: sub_19456+EAj + cmp word_26C68, 1 + jnz short loc_195F8 + mov ax, word_26C6A + or ax, ax + jz short loc_195E5 + cmp ax, 1 + jz short loc_195EA + cmp ax, 2 + jz short loc_195EF + jmp short loc_195F2 +; --------------------------------------------------------------------------- + +loc_195E5: ; CODE XREF: sub_19456+181j + call sub_180EC + jmp short loc_195F2 +; --------------------------------------------------------------------------- + +loc_195EA: ; CODE XREF: sub_19456+186j + call sub_181B3 + jmp short loc_195F2 +; --------------------------------------------------------------------------- + +loc_195EF: ; CODE XREF: sub_19456+18Bj + call sub_188AA + +loc_195F2: ; CODE XREF: sub_19456+18Dj + ; sub_19456+192j ... + call sub_193A4 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_195F8: ; CODE XREF: sub_19456+17Aj + cmp word_26C68, 2 + jnz short loc_19676 + mov ax, word_20650 + mov bx, 4 + cwd + idiv bx + add al, 32h ; '2' + mov byte_26CC1, al + mov ax, word_20650 + mov bx, 5 + cwd + idiv bx + add al, 1Eh + mov byte_26CC2, al + call sub_18BA6 + mov ax, word_20650 + sar ax, 1 + mov dl, 33h ; '3' + sub dl, al + mov byte_1F508, dl + mov ax, word_20650 + sar ax, 1 + mov byte_1F509, al + mov byte_1F50A, 32h ; '2' + call far ptr loc_1EF6 + cmp word_20650, 64h ; 'd' + jle loc_198A8 + mov word_26C68, 3 + mov word_20650, 0 + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov word_26C6A, dx + mov word_26CBE, 0 + mov al, byte_26CC2 + mov byte_26CF9, al + mov word_26CF0, 2BCh + jmp loc_19728 +; --------------------------------------------------------------------------- + +loc_19676: ; CODE XREF: sub_19456+1A7j + cmp word_26C68, 3 + jnz short loc_196A3 + mov ax, word_26C6A + or ax, ax + jz short loc_19690 + cmp ax, 1 + jz short loc_19695 + cmp ax, 2 + jz short loc_1969A + jmp short loc_1969D +; --------------------------------------------------------------------------- + +loc_19690: ; CODE XREF: sub_19456+22Cj + call sub_18905 + jmp short loc_1969D +; --------------------------------------------------------------------------- + +loc_19695: ; CODE XREF: sub_19456+231j + call sub_18A1B + jmp short loc_1969D +; --------------------------------------------------------------------------- + +loc_1969A: ; CODE XREF: sub_19456+236j + call sub_18B4B + +loc_1969D: ; CODE XREF: sub_19456+238j + ; sub_19456+23Dj ... + call sub_193A4 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_196A3: ; CODE XREF: sub_19456+225j + cmp word_26C68, 4 + jnz loc_19743 + mov ax, word_20650 + mov bx, 4 + cwd + idiv bx + add al, 4Bh ; 'K' + mov byte_26CC1, al + mov ax, word_20650 + mov bx, 5 + cwd + idiv bx + add al, 32h ; '2' + mov byte_26CC2, al + call sub_18BA6 + mov ax, word_20650 + sar ax, 1 + mov byte_1F508, al + mov ax, word_20650 + sar ax, 1 + mov dl, 33h ; '3' + sub dl, al + mov byte_1F509, dl + mov ax, word_20650 + sar ax, 1 + mov dl, 33h ; '3' + sub dl, al + mov byte_1F50A, dl + call far ptr loc_1EF6 + cmp word_20650, 64h ; 'd' + jle loc_198A8 + mov word_26C68, 5 + mov word_20650, 0 + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov word_26C6A, dx + mov al, byte_26CC2 + mov byte_26CF9, al + mov word_26CBE, 0 + mov word_26CF0, 320h + +loc_19728: ; CODE XREF: sub_19456+21Dj + mov word_26CF6, 2 + mov word_26CF2, 0Ch + mov word_26CF4, 3 + mov word_2065A, 0 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_19743: ; CODE XREF: sub_19456+252j + cmp word_26C68, 5 + jnz short loc_19770 + mov ax, word_26C6A + or ax, ax + jz short loc_1975D + cmp ax, 1 + jz short loc_19762 + cmp ax, 2 + jz short loc_19767 + jmp short loc_1976A +; --------------------------------------------------------------------------- + +loc_1975D: ; CODE XREF: sub_19456+2F9j + call sub_18C4A + jmp short loc_1976A +; --------------------------------------------------------------------------- + +loc_19762: ; CODE XREF: sub_19456+2FEj + call sub_18DE0 + jmp short loc_1976A +; --------------------------------------------------------------------------- + +loc_19767: ; CODE XREF: sub_19456+303j + call sub_18EB8 + +loc_1976A: ; CODE XREF: sub_19456+305j + ; sub_19456+30Aj ... + call sub_193A4 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_19770: ; CODE XREF: sub_19456+2F2j + cmp word_26C68, 6 + jnz loc_1980A + mov ax, word_20650 + mov bx, 4 + cwd + idiv bx + add al, 64h ; 'd' + mov byte_26CC1, al + mov ax, word_20650 + mov bx, 5 + cwd + idiv bx + add al, 46h ; 'F' + mov byte_26CC2, al + call sub_18BA6 + mov ax, word_20650 + sar ax, 1 + mov dl, 33h ; '3' + sub dl, al + mov byte_1F508, dl + mov byte_1F509, 0 + mov byte_1F50A, 0 + call far ptr loc_1EF6 + cmp word_20650, 64h ; 'd' + jle loc_198A8 + mov al, byte_26CC2 + mov byte_26CF9, al + mov word_26C68, 7 + mov word_20650, 0 + push 7 + call sub_FAD5 + mov ah, 0 + mov word_26C6A, ax + mov word_26CBE, 0 + mov word_26CF0, 5DCh + mov word_26CF6, 3 + mov word_26CF2, 0C8h ; 'È' + mov word_26CF4, 9 + mov byte_26CC0, 1 + mov word_2065A, 0 + mov byte_26CC4, 2 + jmp loc_198A8 +; --------------------------------------------------------------------------- + +loc_1980A: ; CODE XREF: sub_19456+31Fj + cmp word_26C68, 7 + jnz short loc_19851 + mov bx, word_26C6A + cmp bx, 8 + ja short loc_1984C + add bx, bx + jmp cs:off_19937[bx] + +loc_19821: ; DATA XREF: seg003:off_19937o + call sub_18C4A + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_19826: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E79o + call sub_188AA + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_1982B: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E7Bo + call sub_18905 + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_19830: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E7Do + call sub_181B3 + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_19835: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E7Fo + call sub_18A1B + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_1983A: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E81o + call sub_18B4B + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_1983F: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E83o + call sub_180EC + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_19844: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E85o + call sub_18DE0 + jmp short loc_1984C +; --------------------------------------------------------------------------- + +loc_19849: ; CODE XREF: sub_19456+3C6j + ; DATA XREF: seg003:9E87o + call sub_18EB8 + +loc_1984C: ; CODE XREF: sub_19456+3C2j + ; sub_19456+3CEj ... + call sub_193A4 + jmp short loc_198A8 +; --------------------------------------------------------------------------- + +loc_19851: ; CODE XREF: sub_19456+3B9j + cmp word_26C68, 9 + jnz short loc_198A8 + mov ax, word_26C6A + or ax, ax + jz short loc_1986B + cmp ax, 1 + jz short loc_19870 + cmp ax, 2 + jz short loc_19875 + jmp short loc_19878 +; --------------------------------------------------------------------------- + +loc_1986B: ; CODE XREF: sub_19456+407j + call sub_19173 + jmp short loc_19878 +; --------------------------------------------------------------------------- + +loc_19870: ; CODE XREF: sub_19456+40Cj + call sub_191CC + jmp short loc_19878 +; --------------------------------------------------------------------------- + +loc_19875: ; CODE XREF: sub_19456+411j + call sub_19353 + +loc_19878: ; CODE XREF: sub_19456+413j + ; sub_19456+418j ... + call sub_193A4 + cmp word_20650, 1 + jnz short loc_1988A + mov bx, word_2065E + mov word ptr [bx], 40h ; '@' + +loc_1988A: ; CODE XREF: sub_19456+42Aj + cmp word_20650, 1Eh + jge short loc_198A8 + mov ax, word_26C5C + cmp ax, word_205F6 + jge short loc_1989F + mov ax, 1 + jmp short loc_198A2 +; --------------------------------------------------------------------------- + +loc_1989F: ; CODE XREF: sub_19456+442j + mov ax, 0FFFFh + +loc_198A2: ; CODE XREF: sub_19456+447j + mov bx, word_2065C + add [bx], ax + +loc_198A8: ; CODE XREF: sub_19456+124j + ; sub_19456+172j ... + call sub_17C92 + call sub_17F27 + call sub_17D59 + cmp word_26C68, 8 + jnz short loc_19924 + call sub_19C8D + or ax, ax + jnz short loc_19930 + inc word_26C68 + mov word_2064E, 80h ; '€' + mov word_26CBE, 0 + mov word_20650, 0 + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov word_26C6A, dx + mov word_26CBE, 0 + mov word_2065A, 0 + mov word_26CF0, 44Ch + mov word_26CF6, 2 + mov word_26CF2, 0C8h ; 'È' + mov word_26CF4, 3 + mov byte_26CC5, 1 + mov byte_26CC4, 2 + mov byte_26CC1, 0C8h ; 'È' + mov byte_26CC2, 96h ; '–' + mov al, byte_26CC2 + mov byte_26CF9, al + jmp short loc_19930 +; --------------------------------------------------------------------------- + +loc_19924: ; CODE XREF: sub_19456+460j + cmp word_26C68, 0Ah + jnz short loc_19930 + nop + push cs + call near ptr sub_19D96 + +loc_19930: ; CODE XREF: sub_19456+467j + ; sub_19456+4CCj ... + mov ax, 1 + pop si + leave + retf +sub_19456 endp + +; --------------------------------------------------------------------------- + db 0 +off_19937 dw offset loc_19821 ; DATA XREF: sub_19456+3C6r + dw offset loc_19826 + dw offset loc_1982B + dw offset loc_19830 + dw offset loc_19835 + dw offset loc_1983A + dw offset loc_1983F + dw offset loc_19844 + dw offset loc_19849 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19949 proc near ; CODE XREF: sub_19C1D+5Fp + push bp + mov bp, sp + push si + mov al, byte_1E364 + cbw + imul ax, 14h + mov cx, ax + les bx, dword_2026C + mov ax, es:[bx+12h] + imul ax, 3 + mov dx, 0Ah + sub dx, ax + add dx, cx + mov cx, dx + mov al, byte_1EB0C + mov ah, 0 + imul ax, 3 + mov dx, 32h ; '2' + sub dx, ax + mov al, byte_1E64E + mov ah, 0 + sub dx, ax + mov si, dx + or si, si + jge short loc_19986 + xor si, si + +loc_19986: ; CODE XREF: sub_19949+39j + add cx, si + cmp word_1E586, 19h + jle short loc_19997 + mov word_1E586, 19h + jmp short loc_199A4 +; --------------------------------------------------------------------------- + +loc_19997: ; CODE XREF: sub_19949+44j + cmp word_1E586, 0 + jge short loc_199A4 + mov word_1E586, 0 + +loc_199A4: ; CODE XREF: sub_19949+4Cj + ; sub_19949+53j + add cx, word_1E586 + les bx, dword_2026C + mov es:[bx+28h], cx + pop si + pop bp + retn +sub_19949 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_199B3 proc far ; DATA XREF: sub_B3DA+427o + push bp + mov bp, sp + push si + call sub_1A6C5 + call sub_12DE0 + push large 8000C0h + call sub_2F56 + push ds + push offset aMima_bft ; "mima.bft" + call sub_2E7C + call sub_13328 + mov word_1F538, 0 + push 0Ah + call sub_F618 + call sub_1A529 + push large 8000C0h + call sub_2F56 + mov word_1E2FC, 80h ; '€' + push ds + push offset aMima1_bft ; "mima1.bft" + call sub_2E7C + push ds + push offset aStage3_b_btt ; "stage3_b.btt" + call sub_2E7C + mov word_20652, 90h ; '' + mov ax, word_20652 + mov word_20654, ax + mov word_20656, 40h ; '@' + mov ax, word_20656 + mov word_20658, ax + mov word_2064E, 80h ; '€' + call sub_13337 + push 1 + call sub_289C + push large 200000h + push large 1A0018Fh + call sub_F1E + push large 0C00000h + call sub_127E + call sub_FB0 + call sub_12A8 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE2h] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + push word_2064E + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 60h ; '`' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + add ax, 2 + push ax + call far ptr loc_3362 + push word_205F6 + push word_205F8 + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + push 0Ah + call sub_FA52 + call sub_FA8A + call sub_1A46B + push 3 + call sub_285C + push ds + push offset aMima_m ; "mima.m" + nop + push cs + call near ptr sub_13ABB + add sp, 6 + call sub_133AE + call sub_12E95 + call sub_D376 + mov word_2065A, 0 + mov byte_2066A, 0 + mov word_20650, 0 + mov byte_2066B, 0 + mov word_26C68, 0 + mov word_26C66, 0 + mov word_26CBE, 0 + mov byte_2287E, 2 + mov byte_26CC1, 0 + mov byte_26CC2, 0 + mov byte_26CC3, 0Dh + mov byte_26CC5, 3 + mov byte_26CC4, 0Ch + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + push large 0C0000Bh + call sub_127E + push large 1A00000h + push large 27F018Fh + call sub_F1E + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + call sub_FB0 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + call sub_FB0 + call sub_12A8 + push large 200000h + push large 1A0018Fh + call sub_F1E + mov word_26C6A, 0 + xor si, si + jmp short loc_19C0D +; --------------------------------------------------------------------------- + +loc_19C02: ; CODE XREF: sub_199B3+25Dj + mov bx, si + add bx, bx + mov word ptr [bx-6DC4h], 0 + inc si + +loc_19C0D: ; CODE XREF: sub_199B3+24Dj + cmp si, 8 + jl short loc_19C02 + mov byte_26CC0, 0 + call sub_180AC + pop si + pop bp + retf +sub_199B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19C1D proc near ; CODE XREF: sub_19C8D+B3p + ; sub_19D96:loc_19E2Ap + push bp + mov bp, sp + mov word_1DF9A, 0 + call far ptr loc_1EF6 + les bx, dword_2026C + mov eax, es:[bx+2Ch] + cmp eax, dword_1E598 + jnb short loc_19C41 + mov eax, dword_1E598 + jmp short loc_19C4A +; --------------------------------------------------------------------------- + +loc_19C41: ; CODE XREF: sub_19C1D+1Cj + les bx, dword_2026C + mov eax, es:[bx+2Ch] + +loc_19C4A: ; CODE XREF: sub_19C1D+22j + les bx, dword_2026C + mov es:[bx+2Ch], eax + mov eax, dword_1E598 + imul eax, 0Ah + movzx edx, word ptr es:[bx+12h] + add eax, edx + mov es:[bx+0Eh], eax + mov byte ptr es:[bx+0Bh], 7Fh ; '' + mov al, byte_1E59C + mov es:[bx+15h], al + mov al, byte_1E59D + mov es:[bx+14h], al + call sub_19949 + push ds + push offset aMaine_0 ; "maine" + call sub_C566 + add sp, 4 + pop bp + retn +sub_19C1D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19C8D proc near ; CODE XREF: sub_19456+462p + push bp + mov bp, sp + call sub_D376 + nop + push cs + call near ptr sub_10E0A + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE2h] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + push word_2064E + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 60h ; '`' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + add ax, 2 + push ax + call far ptr loc_3362 + call sub_12DE0 + call sub_133B8 + les bx, dword_2026C + cmp word ptr es:[bx+12h], 0 + jz short loc_19D48 + push 20Ah + call sub_F9F6 + pop cx + push 0Ah + call sub_289C + push 32h ; '2' + call sub_F618 + add dword_1E598, 0C350h + call sub_19C1D + mov ax, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_19D48: ; CODE XREF: sub_19C8D+91j + push large 8000C0h + call sub_2F56 + mov word_1E2FC, 80h ; '€' + push ds + push offset aMima2_bft ; "mima2.bft" + call sub_2E7C + call sub_12E95 + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_127E + call sub_FB0 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + call sub_FB0 + call sub_12A8 + mov byte_26CC0, 0 + xor ax, ax + pop bp + retn +sub_19C8D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19D96 proc far ; CODE XREF: sub_19456+4D7p + ; DATA XREF: sub_B3DA+433o + push bp + mov bp, sp + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE2h] + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + push word_2064E + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + add ax, 60h ; '`' + push ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+2BE6h] + mov ax, word_2064E + add ax, 2 + push ax + call far ptr loc_3362 + call sub_13439 + add dword_1E598, 186A0h + les bx, dword_2026C + cmp word ptr es:[bx+12h], 0 + jnz short loc_19E2A + call sub_1CD8E + +loc_19E2A: ; CODE XREF: sub_19D96+8Dj + call sub_19C1D + pop bp + retf +sub_19D96 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19E2F proc far + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + cmp byte_20618, 0 + jnz loc_19EEF + call sub_74E + mov ax, 0FFF7h + mov dx, 4A0h + out dx, ax + mov ax, 3FFh + mov dx, 4A2h + 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 ax, 1100h + mov dx, 4A4h + out dx, ax + push large 0B0009Ch + push large 600060h + call sub_45FC + call sub_4692 + mov ax, 8FCh + mov dx, 4A4h + out dx, ax + mov word_26D54, 98h ; '˜' + mov ax, word_20344 + add word_26D54, ax + cmp word_26D54, 190h + jl short loc_19EA7 + sub word_26D54, 190h + +loc_19EA7: ; CODE XREF: sub_19E2F+70j + mov ax, word_26D54 + mov [bp+var_4], ax + mov [bp+var_2], 0 + jmp short loc_19EE4 +; --------------------------------------------------------------------------- + +loc_19EB4: ; CODE XREF: sub_19E2F+B9j + mov si, 0B0h ; '°' + mov di, [bp+var_2] + jmp short loc_19ECA +; --------------------------------------------------------------------------- + +loc_19EBC: ; CODE XREF: sub_19E2F+9Fj + push si + push [bp+var_4] + push di + call sub_4896 + add si, 10h + inc di + +loc_19ECA: ; CODE XREF: sub_19E2F+8Bj + cmp si, 110h + jl short loc_19EBC + add [bp+var_4], 10h + cmp [bp+var_4], 190h + jl short loc_19EE0 + sub [bp+var_4], 190h + +loc_19EE0: ; CODE XREF: sub_19E2F+AAj + add [bp+var_2], 10h + +loc_19EE4: ; CODE XREF: sub_19E2F+83j + cmp [bp+var_2], 60h ; '`' + jl short loc_19EB4 + call sub_764 + +loc_19EEF: ; CODE XREF: sub_19E2F+Dj + pop di + pop si + leave + retf +sub_19E2F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19EF3 proc far ; DATA XREF: sub_B3DA+39Co + push bp + mov bp, sp + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + mov bx, word_2065C + push word ptr [bx] + mov bx, word_2065E + push word ptr [bx] + push large 400040h + call sub_45FC + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + mov ax, word_26D7A + pop bp + retf +sub_19EF3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19F52 proc near ; CODE XREF: sub_1A1FF+215p + push bp + mov bp, sp + push si + mov si, word_26D78 + add si, word_20344 + or si, si + jge short loc_19F68 + add si, 190h + jmp short loc_19F72 +; --------------------------------------------------------------------------- + +loc_19F68: ; CODE XREF: sub_19F52+Ej + cmp si, 190h + jl short loc_19F72 + sub si, 190h + +loc_19F72: ; CODE XREF: sub_19F52+14j + ; sub_19F52+1Aj + cmp byte_2066B, 0 + jz short loc_19F9E + push 4 + call sub_FA52 + add sp, 2 + push word_26D76 + push si + push word_2064E + push large 0FFC0h + call far ptr loc_2F80 + mov byte_2066B, 0 + jmp short loc_19FAC +; --------------------------------------------------------------------------- + +loc_19F9E: ; CODE XREF: sub_19F52+25j + push word_26D76 + push si + push word_2064E + call sub_3146 + +loc_19FAC: ; CODE XREF: sub_19F52+4Aj + pop si + pop bp + retn +sub_19F52 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_19FAF proc near ; CODE XREF: sub_1A1FF+20Dp + push bp + mov bp, sp + push si + push di + mov ax, word_20650 + mov bx, 18h + cwd + idiv bx + or dx, dx + jnz short loc_19FDA + mov ax, word_26D76 + add ax, 20h ; ' ' + push ax + mov ax, word_26D78 + add ax, 20h ; ' ' + push ax + push 80h ; '€' + push bx + push 1 + call sub_4090 + +loc_19FDA: ; CODE XREF: sub_19FAF+10j + mov di, 0Ah + mov ax, word_1EE98 + sar ax, 3 + add di, ax + inc word_1EE98 + cmp word_1EE98, 40h ; '@' + jl short loc_1A021 + mov word_1EE98, 0 + mov word_20650, 0 + mov byte_2066A, 2 + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + mov word_26D7A, 0 + mov word_26CFE, 0FFFFh + mov word_20616, 660h + jmp short loc_1A040 +; --------------------------------------------------------------------------- + +loc_1A021: ; CODE XREF: sub_19FAF+3Fj + mov si, word_26D78 + add si, word_20344 + cmp si, 190h + jl short loc_1A033 + sub si, 190h + +loc_1A033: ; CODE XREF: sub_19FAF+7Ej + push word_26D76 + push si + push di + push 2 + call sub_38BC + +loc_1A040: ; CODE XREF: sub_19FAF+70j + pop di + pop si + pop bp + retn +sub_19FAF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A044 proc near ; CODE XREF: sub_1A1FF:loc_1A411p + push bp + mov bp, sp + push si + push di + mov ax, word_26D76 + add ax, 8 + push ax + push word_26D78 + push large 300030h + call sub_1283C + mov di, ax + or ax, ax + jz short loc_1A0CA + mov byte_2066B, 1 + add word_2065A, di + mov si, word_26D78 + add si, word_20344 + cmp si, 190h + jl short loc_1A07E + sub si, 190h + +loc_1A07E: ; CODE XREF: sub_1A044+34j + cmp word_2065A, 190h + jl short loc_1A0CA + cmp si, 150h + jge short loc_1A0CA + cmp si, 60h ; '`' + jle short loc_1A0CA + push 2 + call sub_FA52 + add sp, 2 + mov byte_2066A, 1 + add dword_218AC, 0C350h + cmp word_20616, 660h + jnz short loc_1A0B6 + mov di, 4 + jmp short loc_1A0B9 +; --------------------------------------------------------------------------- + +loc_1A0B6: ; CODE XREF: sub_1A044+6Bj + mov di, 2 + +loc_1A0B9: ; CODE XREF: sub_1A044+70j + mov ax, word_26D76 + add ax, 18h + push ax + push word_26D78 + push di + call sub_D6CA + +loc_1A0CA: ; CODE XREF: sub_1A044+1Dj + ; sub_1A044+40j ... + pop di + pop si + pop bp + retn +sub_1A044 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A0CE proc near ; CODE XREF: sub_1A1FF:loc_1A38Cp + push bp + mov bp, sp + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_1A101 + push 3 + call sub_FA52 + add sp, 2 + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push 60h ; '`' + push 40h ; '@' + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + +loc_1A101: ; CODE XREF: sub_1A0CE+Ej + pop bp + retn +sub_1A0CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A103 proc near ; CODE XREF: sub_1A1FF:loc_1A391p + +var_1 = byte ptr -1 + + push bp + mov bp, sp + sub sp, 2 + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short locret_1A14F + push 3 + call sub_FA52 + add sp, 2 + cmp byte_1E364, 0 + jnz short loc_1A12B + mov al, 0Fh + jmp short loc_1A12D +; --------------------------------------------------------------------------- + +loc_1A12B: ; CODE XREF: sub_1A103+22j + mov al, 14h + +loc_1A12D: ; CODE XREF: sub_1A103+26j + mov [bp+var_1], al + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push 60h ; '`' + push 40h ; '@' + push word ptr [bp+var_1] + mov ax, word_20650 + add ax, 0FFECh + push ax + call sub_1078E + +locret_1A14F: ; CODE XREF: sub_1A103+11j + leave + retn +sub_1A103 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A151 proc near ; CODE XREF: sub_1A1FF:loc_1A396p + push bp + mov bp, sp + mov ax, word_20650 + mov bx, 8 + cwd + idiv bx + or dx, dx + jnz short loc_1A17C + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push 60h ; '`' + push 40h ; '@' + push 80h ; '€' + push 50h ; 'P' + push bx + call sub_10865 + +loc_1A17C: ; CODE XREF: sub_1A151+Ej + pop bp + retn +sub_1A151 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A17E proc near ; CODE XREF: sub_1A1FF:loc_1A39Bp + push bp + mov bp, sp + mov al, byte_1E364 + cbw + add ax, ax + mov bx, 10h + sub bx, ax + mov ax, word_20650 + cwd + idiv bx + or dx, dx + jnz short loc_1A1B4 + mov byte_23A70, 10h + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push large 500006h + push 6Fh ; 'o' + call sub_12A19 + +loc_1A1B4: ; CODE XREF: sub_1A17E+16j + pop bp + retn +sub_1A17E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A1B6 proc near ; CODE XREF: sub_1A1FF:loc_1A3A0p + push bp + mov bp, sp + push si + mov ax, word_20650 + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_1A1FC + push 7 + call sub_FA52 + add sp, 2 + xor si, si + jmp short loc_1A1F7 +; --------------------------------------------------------------------------- + +loc_1A1D5: ; CODE XREF: sub_1A1B6+44j + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push word_26D00 + push 3Fh ; '?' + call sub_FAD5 + add al, 20h ; ' ' + push ax + push 20h ; ' ' + push 46h ; 'F' + call sub_1078E + inc si + +loc_1A1F7: ; CODE XREF: sub_1A1B6+1Dj + cmp si, 4 + jl short loc_1A1D5 + +loc_1A1FC: ; CODE XREF: sub_1A1B6+Fj + pop si + pop bp + retn +sub_1A1B6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A1FF proc far ; DATA XREF: sub_B3DA+3A8o + push bp + mov bp, sp + mov ax, word_26D76 + add ax, 18h + mov word_205D8, ax + mov ax, word_26D78 + add ax, 18h + mov word_205DA, ax + inc word_20650 + cmp word_20650, 1 + jnz short loc_1A296 + cmp word_26CFE, 0 + jnz short loc_1A234 + mov word_20652, 40h ; '@' + mov word_2064E, 96h ; '–' + jmp short loc_1A240 +; --------------------------------------------------------------------------- + +loc_1A234: ; CODE XREF: sub_1A1FF+25j + mov word_20652, 140h + mov word_2064E, 95h ; '•' + +loc_1A240: ; CODE XREF: sub_1A1FF+33j + mov ax, word_20652 + mov word_20654, ax + mov word_20656, 0FFF0h + mov word_20658, 0FFF0h + mov word_2065C, 2BE2h + mov word_2065E, 2BE6h + mov word_2065A, 0 + mov byte_2066A, 0 + mov byte_2066B, 0 + mov word_26CFC, 0 + cmp word_26CFE, 0 + jnz short loc_1A280 + mov ax, 1 + jmp short loc_1A283 +; --------------------------------------------------------------------------- + +loc_1A280: ; CODE XREF: sub_1A1FF+7Aj + mov ax, 0FFFFh + +loc_1A283: ; CODE XREF: sub_1A1FF+7Fj + mov word_26CFE, ax + mov byte_26D7D, 0 + mov byte_26D7C, 0 + mov word_26D7A, 1 + +loc_1A296: ; CODE XREF: sub_1A1FF+1Ej + mov bx, word_2065E + mov ax, [bx] + add ax, 30h ; '0' + mov word_26D00, ax + mov ax, [bx] + mov word_26D78, ax + cmp byte_2066A, 0 + jnz loc_1A405 + cmp word_26CFC, 0 + jnz loc_1A341 + mov ax, word_26CFE + shl ax, 3 + mov bx, word_2065C + add [bx], ax + mov bx, word_2065E + add word ptr [bx], 2 + mov bx, word_2065C + mov ax, [bx] + mov word_26D76, ax + mov bx, word_2065E + mov ax, [bx] + mov word_26D78, ax + test byte ptr word_20650, 7 + jnz short loc_1A30A + push 7 + call sub_FA52 + add sp, 2 + mov ax, word_26CFE + shl ax, 4 + add ax, word_26D76 + add ax, 1Ch + push ax + push word_26D00 + push 40h ; '@' + push 20h ; ' ' + push 50h ; 'P' + call sub_1078E + +loc_1A30A: ; CODE XREF: sub_1A1FF+E4j + cmp word_20650, 20h ; ' ' + jl loc_1A405 + mov word_26CFC, 1 + mov word_20650, 2 + mov word_2064E, 94h ; '”' + mov ax, 0FFFFh + imul word_26CFE + mov word_26CFE, ax + call sub_FAC6 + mov ah, 0 + mov bx, 5 + cwd + idiv bx + mov byte_26D7C, dl + jmp loc_1A405 +; --------------------------------------------------------------------------- + +loc_1A341: ; CODE XREF: sub_1A1FF+B6j + cmp word_26CFC, 1 + jnz loc_1A405 + cmp word_20650, 32h ; '2' + jle loc_1A405 + cmp word_26CFE, 0FFFFh + jnz short loc_1A362 + mov word_2064E, 95h ; '•' + jmp short loc_1A368 +; --------------------------------------------------------------------------- + +loc_1A362: ; CODE XREF: sub_1A1FF+159j + mov word_2064E, 96h ; '–' + +loc_1A368: ; CODE XREF: sub_1A1FF+161j + mov ax, word_26CFE + shl ax, 2 + mov bx, word_2065C + add [bx], ax + mov ax, [bx] + mov word_26D76, ax + mov al, byte_26D7C + mov ah, 0 + mov bx, ax + cmp bx, 4 + ja short loc_1A3A3 + add bx, bx + jmp cs:off_1A419[bx] + +loc_1A38C: ; DATA XREF: seg003:off_1A419o + call sub_1A0CE + jmp short loc_1A3A3 +; --------------------------------------------------------------------------- + +loc_1A391: ; CODE XREF: sub_1A1FF+188j + ; DATA XREF: seg003:A95Bo + call sub_1A103 + jmp short loc_1A3A3 +; --------------------------------------------------------------------------- + +loc_1A396: ; CODE XREF: sub_1A1FF+188j + ; DATA XREF: seg003:A95Do + call sub_1A151 + jmp short loc_1A3A3 +; --------------------------------------------------------------------------- + +loc_1A39B: ; CODE XREF: sub_1A1FF+188j + ; DATA XREF: seg003:A95Fo + call sub_1A17E + jmp short loc_1A3A3 +; --------------------------------------------------------------------------- + +loc_1A3A0: ; CODE XREF: sub_1A1FF+188j + ; DATA XREF: seg003:A961o + call sub_1A1B6 + +loc_1A3A3: ; CODE XREF: sub_1A1FF+184j + ; sub_1A1FF+190j ... + cmp byte_26D7D, 0Ch + jnb short loc_1A3DC + cmp word_20650, 72h ; 'r' + jl short loc_1A405 + mov word_20650, 2 + mov word_2064E, 94h ; '”' + mov ax, 0FFFFh + imul word_26CFE + mov word_26CFE, ax + call sub_FAC6 + mov ah, 0 + mov bx, 5 + cwd + idiv bx + mov byte_26D7C, dl + inc byte_26D7D + jmp short loc_1A405 +; --------------------------------------------------------------------------- + +loc_1A3DC: ; CODE XREF: sub_1A1FF+1A9j + cmp word_26D76, 0 + jle short loc_1A3EB + cmp word_26D76, 180h + jl short loc_1A405 + +loc_1A3EB: ; CODE XREF: sub_1A1FF+1E2j + mov word_20650, 0 + mov word_26CFE, 0FFFFh + mov word_20616, 660h + mov word_26D7A, 0 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1A405: ; CODE XREF: sub_1A1FF+ADj + ; sub_1A1FF+110j ... + cmp byte_2066A, 0 + jz short loc_1A411 + call sub_19FAF + pop bp + retf +; --------------------------------------------------------------------------- + +loc_1A411: ; CODE XREF: sub_1A1FF+20Bj + call sub_1A044 + call sub_19F52 + pop bp + retf +sub_1A1FF endp + +; --------------------------------------------------------------------------- +off_1A419 dw offset loc_1A38C ; DATA XREF: sub_1A1FF+188r + dw offset loc_1A391 + dw offset loc_1A396 + dw offset loc_1A39B + dw offset loc_1A3A0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A423 proc near ; CODE XREF: sub_1A529+10Bp + +var_2 = 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 + xor di, di + mov [bp+var_2], 0 + jmp short loc_1A45F +; --------------------------------------------------------------------------- + +loc_1A434: ; CODE XREF: sub_1A423+40j + xor si, si + jmp short loc_1A457 +; --------------------------------------------------------------------------- + +loc_1A438: ; CODE XREF: sub_1A423+37j + mov ax, si + shl ax, 5 + add ax, [bp+arg_2] + push ax + mov ax, [bp+var_2] + shl ax, 5 + add ax, [bp+arg_0] + push ax + lea ax, [di+80h] + push ax + call sub_3556 + inc si + inc di + +loc_1A457: ; CODE XREF: sub_1A423+13j + cmp si, 8 + jl short loc_1A438 + inc [bp+var_2] + +loc_1A45F: ; CODE XREF: sub_1A423+Fj + cmp [bp+var_2], 8 + jl short loc_1A434 + pop di + pop si + leave + retn 4 +sub_1A423 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A46B proc near ; CODE XREF: sub_199B3+17Cp + ; sub_1A529+167p ... + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + xor di, di + mov [bp+var_2], 0 + mov di, 140h + add di, word_20344 + cmp di, 190h + jl short loc_1A48B + sub di, 190h + +loc_1A48B: ; CODE XREF: sub_1A46B+1Aj + lea ax, [di+20h] + add [bp+var_2], ax + cmp [bp+var_2], 190h + jl short loc_1A49D + sub [bp+var_2], 190h + +loc_1A49D: ; CODE XREF: sub_1A46B+2Bj + push 20h ; ' ' + push di + push 22h ; '"' + call sub_3146 + push 20h ; ' ' + push [bp+var_2] + push 2Ah ; '*' + call sub_3146 + push 40h ; '@' + push di + push 23h ; '#' + call sub_3146 + push 40h ; '@' + push [bp+var_2] + push 2Bh ; '+' + call sub_3146 + push 60h ; '`' + push di + push 24h ; '$' + call sub_3146 + push 60h ; '`' + push [bp+var_2] + push 2Ch ; ',' + call sub_3146 + xor si, si + jmp short loc_1A508 +; --------------------------------------------------------------------------- + +loc_1A4E3: ; CODE XREF: sub_1A46B+A0j + mov ax, si + shl ax, 5 + add ax, 80h ; '€' + push ax + push di + push 25h ; '%' + call sub_3146 + mov ax, si + shl ax, 5 + add ax, 80h ; '€' + push ax + push [bp+var_2] + push 2Dh ; '-' + call sub_3146 + inc si + +loc_1A508: ; CODE XREF: sub_1A46B+76j + cmp si, 8 + jl short loc_1A4E3 + push 180h + push di + push 26h ; '&' + call sub_3146 + push 180h + push [bp+var_2] + push 2Eh ; '.' + call sub_3146 + pop di + pop si + leave + retn +sub_1A46B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A529 proc near ; CODE XREF: sub_199B3+2Ep + ; sub_1A7D5+34p + push bp + mov bp, sp + push si + push large 200010h + push large 1A00140h + call sub_F1E + push 9 + call sub_FA52 + add sp, 2 + mov si, 96h ; '–' + jmp loc_1A613 +; --------------------------------------------------------------------------- + +loc_1A54E: ; CODE XREF: sub_1A529+ECj + push large 0C0000Ah + call sub_127E + push large 0E00090h + push si + call sub_C20 + push large 0C0000Dh + call sub_127E + push large 0E00090h + mov ax, si + mov bx, 32h ; '2' + cwd + idiv bx + shl dx, 2 + push dx + call sub_CC0 + push large 0C0000Fh + call sub_127E + push large 0E00090h + mov ax, si + mov bx, 1Eh + cwd + idiv bx + imul dx, 7 + push dx + call sub_CC0 + push 1 + call sub_F618 + push large 0C00000h + call sub_127E + push large 0E00090h + push si + call sub_C20 + push large 0E00090h + mov ax, si + mov bx, 32h ; '2' + cwd + idiv bx + shl dx, 2 + push dx + call sub_CC0 + push large 0E00090h + mov ax, si + mov bx, 1Eh + cwd + idiv bx + imul dx, 7 + push dx + call sub_CC0 + mov ax, 96h ; '–' + sub ax, si + mov bx, 3 + cwd + idiv bx + add ax, ax + add ax, 64h ; 'd' + mov word_1DF9A, ax + call far ptr loc_1EF6 + call sub_FA8A + dec si + +loc_1A613: ; CODE XREF: sub_1A529+22j + or si, si + jg loc_1A54E + push large 0C00000h + call sub_127E + call sub_FB0 + call sub_12A8 + push large 600000h + call sub_1A423 + push word_205F6 + push word_205F8 + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + call sub_1A46B + xor si, si + jmp short loc_1A6B2 +; --------------------------------------------------------------------------- + +loc_1A697: ; CODE XREF: sub_1A529+18Cj + mov ax, si + imul ax, 0Ah + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_1DF9A, dx + call far ptr loc_1EF6 + push 3 + call sub_F618 + inc si + +loc_1A6B2: ; CODE XREF: sub_1A529+16Cj + cmp si, 0Ah + jl short loc_1A697 + mov word_1DF9A, 64h ; 'd' + call far ptr loc_1EF6 + pop si + pop bp + retn +sub_1A529 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A6C5 proc near ; CODE XREF: sub_1696B+3p sub_199B3+4p ... + push bp + mov bp, sp + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_205F8 + mov bx, ax + mov [bx+2B7Ah], dx + mov word_20344, 0 + mov word_20348, 0 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_15DA + mov word_1F538, 0 + push 1 + call sub_F618 + push 0 + call sub_1DD4 + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + push word_205F6 + push word_205F8 + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, word_205F6 + add dx, 0FFF0h + mov bx, ax + mov [bx+2B8Ah], dx + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov dx, word_205F8 + add dx, 10h + mov bx, ax + mov [bx+2B8Ch], dx + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + mov dl, byte_20619 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2B8Ah], ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ch] + mov dl, byte_20619 + mov dh, 0 + shl dx, 2 + mov bx, dx + mov [bx+2B8Ch], ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + pop bp + retn +sub_1A6C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A7D5 proc far ; DATA XREF: sub_B3DA+3B4o + push bp + mov bp, sp + push si + call sub_1A6C5 + call sub_12DE0 + push large 8000C0h + call sub_2F56 + mov word_1E2FC, 80h ; '€' + push ds + push offset aMima_bft_0 ; "mima.bft" + call sub_2E7C + call sub_1315B + mov word_1F538, 0 + push 0Ah + call sub_F618 + call sub_1A529 + push 0 + call sub_1310B + push large 8001FFh + call sub_2F56 + mov word_1E2FC, 80h ; '€' + push ds + push offset aStage3_b_bft ; "stage3_b.bft" + call sub_2E7C + push ds + push offset aStage3_b_btt_0 ; "stage3_b.btt" + call sub_2E7C + mov word_20652, 0B0h ; '°' + mov ax, word_20652 + mov word_20654, ax + mov word_20656, 40h ; '@' + mov ax, word_20656 + mov word_20658, ax + mov word_26D76, 0B0h ; '°' + mov word_26D78, 40h ; '@' + mov word_2064E, 80h ; '€' + push 1 + call sub_289C + push large 0C00000h + call sub_127E + call sub_FB0 + call sub_12A8 + push large 200000h + push large 1A0018Fh + call sub_F1E + push word_26D76 + push word_26D78 + push word_2064E + call far ptr loc_3362 + mov ax, word_26D76 + add ax, 30h ; '0' + push ax + push word_26D78 + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + push word_205F6 + push word_205F8 + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + push 0Ah + call sub_FA52 + call sub_FA8A + call sub_1A46B + push 1 + call sub_285C + push ds + push offset aBoss3_m ; "boss3.m" + nop + push cs + call near ptr sub_13ABB + add sp, 6 + call sub_13187 + call sub_15DA + push word_26D76 + push word_26D78 + push word_2064E + call far ptr loc_3362 + mov ax, word_26D76 + add ax, 30h ; '0' + push ax + push word_26D78 + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + push word_205F6 + push word_205F8 + push 0 + call sub_3146 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ah] + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + mov ax, [bx+2B8Ah] + add ax, 30h ; '0' + push ax + mov al, byte_20618 + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+2B8Ch] + push 48h ; 'H' + call sub_3708 + mov al, byte_20619 + mov ah, 0 + push ax + call sub_1614 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + mov byte_2287E, 2 + call sub_D376 + mov word_2065A, 0 + mov byte_2066A, 0 + mov word_20650, 0 + mov byte_2066B, 0 + mov word_26CFC, 0 + mov byte_1EE96, 0 + xor si, si + jmp short loc_1AA1A +; --------------------------------------------------------------------------- + +loc_1A9FB: ; CODE XREF: sub_1A7D5+248j + mov bx, si + add bx, bx + mov word ptr [bx-6D4Eh], 0 + mov bx, si + add bx, bx + mov word ptr [bx-6D46h], 2 + mov bx, si + add bx, bx + mov word ptr [bx-6D3Eh], 0 + inc si + +loc_1AA1A: ; CODE XREF: sub_1A7D5+224j + cmp si, 4 + jl short loc_1A9FB + mov byte_26D7E, 1 + mov byte_1FFF8, 9 + mov word_1FFF6, 18h + mov word_1FFF0, 18h + mov word_1FFF2, 4 + mov word_26CFE, 0 + mov byte_26D4C, 0 + mov byte_26D4D, 0 + mov byte_26D4E, 0 + mov byte_26D4F, 0 + mov byte_1E510, 0E0h ; 'à' + call sub_1B214 + pop si + pop bp + retf +sub_1A7D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AA60 proc near ; CODE XREF: sub_1BEF2:loc_1C11Ap + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + cmp byte_2066A, 0 + jnz locret_1AB33 + mov ax, word_26D76 + add ax, 18h + push ax + mov ax, word_26D78 + add ax, 18h + push ax + push large 300030h + call sub_1283C + mov [bp+var_2], ax + or ax, ax + jz short loc_1AAD6 + cmp word_26D4A, 8 + jl short loc_1AAB1 + push 4 + call sub_FA52 + add sp, 2 + mov byte_2066B, 1 + mov al, byte_1EE96 + mov ah, 0 + imul [bp+var_2] + add word_2065A, ax + jmp short loc_1AABB +; --------------------------------------------------------------------------- + +loc_1AAB1: ; CODE XREF: sub_1AA60+32j + push 0Bh + call sub_FA52 + add sp, 2 + +loc_1AABB: ; CODE XREF: sub_1AA60+4Fj + cmp word_2065A, 384h + jl short loc_1AAD6 + mov byte_2066A, 1 + add dword_218AC, 4E20h + mov byte_20605, 0C8h ; 'È' + +loc_1AAD6: ; CODE XREF: sub_1AA60+2Bj + ; sub_1AA60+61j + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26D76 + add dx, 0FFF0h + mov bx, ax + cmp [bx+2B76h], dx + jle short locret_1AB33 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26D76 + add dx, 30h ; '0' + mov bx, ax + cmp [bx+2B76h], dx + jge short locret_1AB33 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26D78 + add dx, 0FFF0h + mov bx, ax + cmp [bx+2B7Ah], dx + jle short locret_1AB33 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov dx, word_26D78 + add dx, 30h ; '0' + mov bx, ax + cmp [bx+2B7Ah], dx + jge short locret_1AB33 + mov byte_20604, 1 + +locret_1AB33: ; CODE XREF: sub_1AA60+Bj + ; sub_1AA60+8Aj ... + leave + retn +sub_1AA60 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AB35 proc near ; CODE XREF: sub_1BEF2+22Bp + push bp + mov bp, sp + push si + mov byte_1EB88, 3 + xor si, si + jmp loc_1AC6C +; --------------------------------------------------------------------------- + +loc_1AB43: ; CODE XREF: sub_1AB35+13Aj + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz loc_1AC6B + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 4 + push ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + push word ptr es:[bx] + push large 180020h + call sub_1283C + or ax, ax + jz short loc_1ABEE + mov bx, si + add bx, bx + mov word ptr [bx-6D3Eh], 1 + mov bx, si + add bx, bx + inc word ptr [bx-6D4Eh] + mov bx, si + add bx, bx + cmp word ptr [bx-6D4Eh], 6Eh ; 'n' + jl short loc_1ABEE + call sub_FAC6 + mov ah, 0 + mov bx, 50h ; 'P' + cwd + idiv bx + mov al, byte_1E516 + mov ah, 0 + cmp dx, ax + jl short loc_1ABD1 + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 8 + push ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 8 + push ax + push 3 + call sub_D6CA + +loc_1ABD1: ; CODE XREF: sub_1AB35+73j + push 2 + call sub_FA52 + add sp, 2 + mov bx, si + add bx, bx + mov word ptr [bx-6D46h], 1 + add dword_218AC, 1388h + +loc_1ABEE: ; CODE XREF: sub_1AB35+42j + ; sub_1AB35+5Fj + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov dx, es:[bx] + add dx, 0FFF0h + mov bx, ax + cmp [bx+2B76h], dx + jle short loc_1AC6B + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, si + shl bx, 2 + mov bx, [bx-6D1Ah] + mov dx, es:[bx] + add dx, 10h + mov bx, ax + cmp [bx+2B76h], dx + jge short loc_1AC6B + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov dx, es:[bx] + add dx, 0FFF0h + mov bx, ax + cmp [bx+2B7Ah], dx + jle short loc_1AC6B + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, si + shl bx, 2 + mov bx, [bx-6D0Ah] + mov dx, es:[bx] + add dx, 10h + mov bx, ax + cmp [bx+2B7Ah], dx + jge short loc_1AC6B + mov byte_20604, 1 + +loc_1AC6B: ; CODE XREF: sub_1AB35+17j + ; sub_1AB35+D5j ... + inc si + +loc_1AC6C: ; CODE XREF: sub_1AB35+Bj + cmp si, 4 + jl loc_1AB43 + mov byte_1EB88, 1 + pop si + pop bp + retn +sub_1AB35 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AC7B proc near ; CODE XREF: sub_1BEF2+235p + push bp + mov bp, sp + push si + mov si, 0Ah + mov ax, word_26D76 + add ax, 28h ; '(' + push ax + mov ax, word_26D78 + add ax, 28h ; '(' + push ax + push word_1EE9A + call sub_FFF8 + cmp word_1EE9A, 18h + jl short loc_1AD16 + cmp word_1EE9A, 38h ; '8' + jnz short loc_1ACAA + mov byte_1E510, 20h ; ' ' + +loc_1ACAA: ; CODE XREF: sub_1AC7B+28j + mov ax, word_26D76 + add ax, 28h ; '(' + push ax + mov ax, word_26D78 + add ax, 28h ; '(' + push ax + mov ax, word_1EE9A + add ax, 0FFE8h + push ax + call sub_FFF8 + cmp word_1EE9A, 30h ; '0' + jl short loc_1AD16 + cmp word_1EE9A, 50h ; 'P' + jnz short loc_1ACD5 + mov byte_1E510, 0 + +loc_1ACD5: ; CODE XREF: sub_1AC7B+53j + mov ax, word_26D76 + add ax, 28h ; '(' + push ax + mov ax, word_26D78 + add ax, 28h ; '(' + push ax + mov ax, word_1EE9A + add ax, 0FFD0h + push ax + call sub_FFF8 + cmp word_1EE9A, 40h ; '@' + jl short loc_1AD16 + test byte ptr word_1EE9A, 0Fh + jnz short loc_1AD16 + mov ax, word_26D76 + add ax, 30h ; '0' + push ax + mov ax, word_26D78 + add ax, 30h ; '0' + push ax + push large 880018h + push 1 + call sub_4090 + +loc_1AD16: ; CODE XREF: sub_1AC7B+21j + ; sub_1AC7B+4Cj ... + mov ax, word_1EE9A + add ax, 0FFE0h + sar ax, 4 + add si, ax + inc word_1EE9A + cmp word_1EE9A, 20h ; ' ' + jge short loc_1AD54 + push word_26D76 + push word_26D78 + push word_2064E + call far ptr loc_3362 + mov ax, word_26D76 + add ax, 30h ; '0' + push ax + push word_26D78 + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + jmp short loc_1AD64 +; --------------------------------------------------------------------------- + +loc_1AD54: ; CODE XREF: sub_1AC7B+AFj + push word_26D76 + push word_26D78 + push si + push 3 + call sub_38BC + +loc_1AD64: ; CODE XREF: sub_1AC7B+D7j + cmp word_1EE9A, 64h ; 'd' + jl short loc_1AD7B + mov word_1EE9A, 0 + mov byte_2066A, 3 + mov ax, 1 + jmp short loc_1AD7D +; --------------------------------------------------------------------------- + +loc_1AD7B: ; CODE XREF: sub_1AC7B+EEj + xor ax, ax + +loc_1AD7D: ; CODE XREF: sub_1AC7B+FEj + pop si + pop bp + retn +sub_1AC7B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AD80 proc near ; CODE XREF: sub_1BEF2+254p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov si, [bp+arg_0] + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 10h + push ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 10h + push ax + push large 3C0002h + push 0 + call sub_4090 + mov di, 0Ah + mov bx, si + add bx, bx + mov ax, [bx+142Ch] + mov bx, 6 + cwd + idiv bx + add di, ax + mov bx, si + add bx, bx + inc word ptr [bx+142Ch] + mov bx, si + add bx, bx + cmp word ptr [bx+142Ch], 30h ; '0' + jl loc_1AE74 + mov bx, si + add bx, bx + mov word ptr [bx+142Ch], 0 + mov bx, si + add bx, bx + mov word ptr [bx-6D46h], 2 + mov dx, 0A6h ; '¦' + mov al, byte_20619 + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_127E + mov al, byte_20619 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6D6Eh] + sar ax, 3 + mov [bp+var_2], ax + push ax + mov al, byte_20619 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + push word ptr [bx-6D5Eh] + mov ax, [bp+var_2] + add ax, 5 + push ax + mov al, byte_20619 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6D5Eh] + add ax, 20h ; ' ' + push ax + call sub_B88 + call sub_12A8 + mov dx, 0A6h ; '¦' + mov al, byte_20618 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, si + add bx, bx + mov word ptr [bx-6D4Eh], 0 + mov ax, 1 + jmp short loc_1AE94 +; --------------------------------------------------------------------------- + +loc_1AE74: ; CODE XREF: sub_1AD80+5Cj + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + push word ptr es:[bx] + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + push word ptr es:[bx] + push di + call far ptr loc_3362 + xor ax, ax + +loc_1AE94: ; CODE XREF: sub_1AD80+F2j + pop di + pop si + leave + retn +sub_1AD80 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AE98 proc near ; CODE XREF: sub_1BEF2:loc_1C133p + +var_12 = word ptr -12h +var_F = byte ptr -0Fh +var_E = dword ptr -0Eh +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 + + push bp + mov bp, sp + sub sp, 12h + push si + push di + cmp byte_2066B, 0 + jz loc_1AFFB + mov al, byte ptr word_26D76 + and al, 7 + mov [bp+var_9], al + mov al, 10h + sub al, [bp+var_9] + mov [bp+var_F], al + mov byte_2066B, 0 + mov ax, word_26D76 + sar ax, 3 + mov dx, word_26D78 + shl dx, 6 + add ax, dx + mov dx, word_26D78 + shl dx, 4 + add ax, dx + mov [bp+var_6], ax + mov [bp+var_4], ax + push large 0C00004h + call sub_127E + mov bx, word_2064E + add bx, bx + mov ax, [bx+1ADAh] + mov word ptr [bp+var_E+2], ax + mov word ptr [bp+var_E], 0 + mov [bp+var_2], 0 + mov ax, word_26D78 + mov [bp+var_8], ax + jmp short loc_1AF61 +; --------------------------------------------------------------------------- + +loc_1AF06: ; CODE XREF: sub_1AE98+CDj + cmp [bp+var_8], 180h + jge short loc_1AF67 + xor si, si + mov di, word_26D76 + jmp short loc_1AF52 +; --------------------------------------------------------------------------- + +loc_1AF15: ; CODE XREF: sub_1AE98+BDj + or di, di + jle short loc_1AF4B + cmp di, 1A0h + jge short loc_1AF4B + cmp [bp+var_8], 10h + jl short loc_1AF4B + les bx, [bp+var_E] + mov al, es:[bx] + mov ah, 0 + mov cl, [bp+var_9] + sar ax, cl + mov dl, es:[bx] + mov dh, 0 + mov cl, [bp+var_F] + shl dx, cl + add ax, dx + mov [bp+var_12], ax + les bx, dword_1FD4C + add bx, [bp+var_4] + mov es:[bx+si], ax + +loc_1AF4B: ; CODE XREF: sub_1AE98+7Fj + ; sub_1AE98+85j ... + inc si + add di, 8 + inc word ptr [bp+var_E] + +loc_1AF52: ; CODE XREF: sub_1AE98+7Bj + cmp si, 6 + jl short loc_1AF15 + inc [bp+var_2] + add [bp+var_4], 50h ; 'P' + inc [bp+var_8] + +loc_1AF61: ; CODE XREF: sub_1AE98+6Cj + cmp [bp+var_2], 60h ; '`' + jl short loc_1AF06 + +loc_1AF67: ; CODE XREF: sub_1AE98+73j + mov bx, word_2064E + add bx, bx + mov ax, [bx+1ADCh] + mov word ptr [bp+var_E+2], ax + mov word ptr [bp+var_E], 0 + mov ax, [bp+var_6] + add ax, 6 + mov [bp+var_4], ax + mov [bp+var_2], 0 + mov ax, word_26D78 + mov [bp+var_8], ax + jmp short loc_1AFEE +; --------------------------------------------------------------------------- + +loc_1AF8F: ; CODE XREF: sub_1AE98+15Aj + cmp [bp+var_8], 180h + jge short loc_1AFF4 + xor si, si + mov ax, word_26D76 + add ax, 30h ; '0' + mov di, ax + jmp short loc_1AFDF +; --------------------------------------------------------------------------- + +loc_1AFA2: ; CODE XREF: sub_1AE98+14Aj + or di, di + jle short loc_1AFD8 + cmp di, 1A0h + jge short loc_1AFD8 + cmp [bp+var_8], 10h + jl short loc_1AFD8 + les bx, [bp+var_E] + mov al, es:[bx] + mov ah, 0 + mov cl, [bp+var_9] + sar ax, cl + mov dl, es:[bx] + mov dh, 0 + mov cl, [bp+var_F] + shl dx, cl + add ax, dx + mov [bp+var_12], ax + les bx, dword_1FD4C + add bx, [bp+var_4] + mov es:[bx+si], ax + +loc_1AFD8: ; CODE XREF: sub_1AE98+10Cj + ; sub_1AE98+112j ... + inc si + add di, 8 + inc word ptr [bp+var_E] + +loc_1AFDF: ; CODE XREF: sub_1AE98+108j + cmp si, 6 + jl short loc_1AFA2 + inc [bp+var_2] + add [bp+var_4], 50h ; 'P' + inc [bp+var_8] + +loc_1AFEE: ; CODE XREF: sub_1AE98+F5j + cmp [bp+var_2], 60h ; '`' + jl short loc_1AF8F + +loc_1AFF4: ; CODE XREF: sub_1AE98+FCj + call sub_12A8 + jmp short loc_1B021 +; --------------------------------------------------------------------------- + +loc_1AFFB: ; CODE XREF: sub_1AE98+Dj + push word_26D76 + push word_26D78 + push word_2064E + call far ptr loc_3362 + mov ax, word_26D76 + add ax, 30h ; '0' + push ax + push word_26D78 + mov ax, word_2064E + inc ax + push ax + call far ptr loc_3362 + +loc_1B021: ; CODE XREF: sub_1AE98+161j + pop di + pop si + leave + retn +sub_1AE98 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B025 proc near ; CODE XREF: sub_1BEF2+263p + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = byte ptr -8 + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + push large 0C00003h + call sub_127E + xor si, si + xor di, di + jmp short loc_1B057 +; --------------------------------------------------------------------------- + +loc_1B03E: ; CODE XREF: sub_1B025+35j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1B056 + mov bx, di + add bx, bx + lea ax, [bp+var_A] + add bx, ax + mov ss:[bx], si + inc di + +loc_1B056: ; CODE XREF: sub_1B025+22j + inc si + +loc_1B057: ; CODE XREF: sub_1B025+17j + cmp si, 4 + jl short loc_1B03E + mov bx, di + add bx, bx + lea ax, [bp+var_A] + add bx, ax + mov ax, [bp+var_A] + mov ss:[bx], ax + xor si, si + jmp short loc_1B0D7 +; --------------------------------------------------------------------------- + +loc_1B06F: ; CODE XREF: sub_1B025+B4j + mov bx, si + add bx, bx + lea ax, [bp+var_A] + add bx, ax + mov ax, ss:[bx] + mov [bp+var_C], ax + mov bx, si + add bx, bx + lea ax, [bp+var_8] + add bx, ax + mov ax, ss:[bx] + mov [bp+var_E], ax + mov bx, [bp+var_C] + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 10h + push ax + mov bx, [bp+var_C] + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 10h + push ax + mov bx, [bp+var_E] + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 10h + push ax + mov bx, [bp+var_E] + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 10h + push ax + call sub_109C + inc si + +loc_1B0D7: ; CODE XREF: sub_1B025+48j + cmp si, di + jl short loc_1B06F + call sub_12A8 + xor si, si + jmp loc_1B192 +; --------------------------------------------------------------------------- + +loc_1B0E5: ; CODE XREF: sub_1B025+170j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 1 + jge loc_1B191 + mov bx, si + add bx, bx + cmp word ptr [bx-6D3Eh], 0 + jz short loc_1B16F + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + cmp word ptr es:[bx], 0 + jle short loc_1B163 + mov bx, si + shl bx, 2 + mov bx, [bx-6D1Ah] + cmp word ptr es:[bx], 1A0h + jge short loc_1B163 + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + cmp word ptr es:[bx], 0 + jl short loc_1B163 + mov bx, si + shl bx, 2 + mov bx, [bx-6D0Ah] + cmp word ptr es:[bx], 170h + jg short loc_1B163 + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + push word ptr es:[bx] + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + push word ptr es:[bx] + lea ax, [si+8Ah] + push ax + push large 0FFC0h + call sub_2C40 + +loc_1B163: ; CODE XREF: sub_1B025+E5j + ; sub_1B025+F5j ... + mov bx, si + add bx, bx + mov word ptr [bx-6D3Eh], 0 + jmp short loc_1B191 +; --------------------------------------------------------------------------- + +loc_1B16F: ; CODE XREF: sub_1B025+D6j + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + push word ptr es:[bx] + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + push word ptr es:[bx] + lea ax, [si+8Ah] + push ax + call far ptr loc_3362 + +loc_1B191: ; CODE XREF: sub_1B025+C9j + ; sub_1B025+148j + inc si + +loc_1B192: ; CODE XREF: sub_1B025+BDj + cmp si, 4 + jl loc_1B0E5 + pop di + pop si + leave + retn +sub_1B025 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B19D proc near ; CODE XREF: sub_1B24A+Cp sub_1B35F+Ap + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jnz short loc_1B1B9 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1B1B9: ; CODE XREF: sub_1B19D+8j + cmp word_20650, 64h ; 'd' + jnz short loc_1B1D2 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 84h ; '„' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1B1D2: ; CODE XREF: sub_1B19D+21j + cmp word_20650, 6Ch ; 'l' + jnz short loc_1B1EB + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 86h ; '†' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1B1EB: ; CODE XREF: sub_1B19D+3Aj + cmp word_20650, 74h ; 't' + jnz short loc_1B204 + push 0Ah + call sub_FA52 + add sp, 2 + mov word_2064E, 88h ; 'ˆ' + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1B204: ; CODE XREF: sub_1B19D+53j + cmp word_20650, 82h ; '‚' + jnz short loc_1B212 + mov word_2064E, 80h ; '€' + +loc_1B212: ; CODE XREF: sub_1B19D+6Dj + pop bp + retn +sub_1B19D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B214 proc near ; CODE XREF: sub_1A7D5+285p + push bp + mov bp, sp + cmp byte_1E364, 0 + jz short loc_1B234 + mov byte ptr word_2066E, 17h + mov byte ptr word_2066E+1, 11h + mov byte ptr word_20670, 2 + mov byte ptr word_20670+1, 4 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_1B234: ; CODE XREF: sub_1B214+8j + mov byte ptr word_2066E, 18h + mov byte ptr word_2066E+1, 12h + mov byte ptr word_20670, 20h ; ' ' + mov byte ptr word_20670+1, 2 + pop bp + retn +sub_1B214 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B24A proc near ; CODE XREF: sub_1BEF2+C1p + ; sub_1BEF2:loc_1C044p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl loc_1B2E7 + call sub_1B19D + cmp word_20650, 32h ; '2' + jnz short loc_1B267 + mov byte ptr word_26D7F, 18h + jmp short loc_1B27A +; --------------------------------------------------------------------------- + +loc_1B267: ; CODE XREF: sub_1B24A+14j + cmp word_20650, 82h ; '‚' + jnz short loc_1B27A + mov word_20650, 0 + mov byte_26D7E, 0 + +loc_1B27A: ; CODE XREF: sub_1B24A+1Bj + ; sub_1B24A+23j + cmp word_20650, 64h ; 'd' + jle short loc_1B2E7 + mov ax, word_20650 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_1B2E7 + cmp byte_26D7E, 0 + jz short loc_1B2C6 + mov ax, word_26D76 + add ax, 24h ; '$' + push ax + mov ax, word_26D78 + add ax, 40h ; '@' + push ax + push word_26D7F + push 20h ; ' ' + push 3Ch ; '<' + call sub_1078E + mov ax, word_26D76 + add ax, 34h ; '4' + push ax + mov ax, word_26D78 + add ax, 40h ; '@' + push ax + push word_26D7F + push 20h ; ' ' + push 3Ch ; '<' + jmp short loc_1B2DC +; --------------------------------------------------------------------------- + +loc_1B2C6: ; CODE XREF: sub_1B24A+49j + mov ax, word_26D76 + add ax, 2Ch ; ',' + push ax + mov ax, word_26D78 + add ax, 40h ; '@' + push ax + push word_26D7F + push 20h ; ' ' + push 32h ; '2' + +loc_1B2DC: ; CODE XREF: sub_1B24A+7Aj + call sub_1078E + mov al, byte ptr word_26D7F + add al, 0Ah + mov byte ptr word_26D7F, al + +loc_1B2E7: ; CODE XREF: sub_1B24A+8j + ; sub_1B24A+35j ... + pop bp + retn +sub_1B24A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B2E9 proc near ; CODE XREF: sub_1BEF2:loc_1C03Bp + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl short loc_1B35D + cmp word_20650, 32h ; '2' + jnz short loc_1B30A + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + +loc_1B30A: ; CODE XREF: sub_1B2E9+Fj + mov ax, word_20650 + mov bx, 18h + cwd + idiv bx + or dx, dx + jnz short loc_1B349 + mov ax, word_26D76 + add ax, 40h ; '@' + push ax + mov ax, word_26D78 + add ax, 10h + push ax + push 0 + push word_2066E + push 36h ; '6' + call sub_1078E + mov ax, word_26D76 + add ax, 40h ; '@' + push ax + mov ax, word_26D78 + add ax, 10h + push ax + push 0 + push word_2066E+1 + push 3Ch ; '<' + call sub_1078E + +loc_1B349: ; CODE XREF: sub_1B2E9+2Cj + cmp word_20650, 0C0h ; 'À' + jle short loc_1B35D + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_1B35D: ; CODE XREF: sub_1B2E9+8j + ; sub_1B2E9+66j + pop bp + retn +sub_1B2E9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B35F proc near ; CODE XREF: sub_1BEF2:loc_1C032p + push bp + mov bp, sp + cmp word_20650, 32h ; '2' + jl short loc_1B3DC + call sub_1B19D + cmp word_20650, 32h ; '2' + jnz short loc_1B39A + call sub_FAC6 + mov byte ptr word_26D7F+1, al + mov al, byte_1EEA4 + mov ah, 0 + mov word_21744, ax + mov word_21746, 2 + mov word_21748, 80h ; '€' + mov al, byte_1EEA4 + mov ah, 0 + imul ax, -1 + mov byte_1EEA4, al + jmp short loc_1B3A8 +; --------------------------------------------------------------------------- + +loc_1B39A: ; CODE XREF: sub_1B35F+12j + cmp word_20650, 82h ; '‚' + jnz short loc_1B3A8 + mov word_20650, 0 + +loc_1B3A8: ; CODE XREF: sub_1B35F+39j + ; sub_1B35F+41j + cmp word_20650, 64h ; 'd' + jl short loc_1B3DC + test byte ptr word_20650, 3 + jnz short loc_1B3DC + mov ax, word_26D76 + add ax, 2Ch ; ',' + push ax + mov ax, word_26D78 + add ax, 40h ; '@' + push ax + push word_26D7F+1 + push 84h ; '„' + push large 550028h + call sub_10865 + mov al, byte ptr word_26D7F+1 + add al, 2Bh ; '+' + mov byte ptr word_26D7F+1, al + +loc_1B3DC: ; CODE XREF: sub_1B35F+8j + ; sub_1B35F+4Ej ... + pop bp + retn +sub_1B35F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B3DE proc near ; CODE XREF: sub_1BEF2+260p + push bp + mov bp, sp + push si + xor si, si + jmp loc_1B46D +; --------------------------------------------------------------------------- + +loc_1B3E7: ; CODE XREF: sub_1B3DE+92j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1B46C + mov al, [si-6D20h] + mov bx, si + add bx, bx + add al, [bx-6D2Eh] + mov [si-6D20h], al + mov bx, si + add bx, bx + movsx eax, word ptr [bx-6D36h] + mov dl, [si-6D20h] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, word_26D76 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov es:[bx], ax + mov bx, si + add bx, bx + movsx eax, word ptr [bx-6D36h] + mov dl, [si-6D20h] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, word_26D78 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov es:[bx], ax + +loc_1B46C: ; CODE XREF: sub_1B3DE+12j + inc si + +loc_1B46D: ; CODE XREF: sub_1B3DE+6j + cmp si, 4 + jl loc_1B3E7 + pop si + pop bp + retn +sub_1B3DE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B477 proc near ; CODE XREF: sub_1BEF2+DBp + ; sub_1BEF2:loc_1C04Dp + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + cmp word_20650, 64h ; 'd' + jl loc_1B551 + cmp word_20650, 64h ; 'd' + jnz short loc_1B4A2 + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + jmp loc_1B52F +; --------------------------------------------------------------------------- + +loc_1B4A2: ; CODE XREF: sub_1B477+16j + cmp word_20650, 82h ; '‚' + jnz short loc_1B51B + mov ax, word_26D76 + add ax, 20h ; ' ' + mov si, ax + mov ax, word_26D78 + add ax, 20h ; ' ' + mov di, ax + mov [bp+var_2], 0 + jmp short loc_1B513 +; --------------------------------------------------------------------------- + +loc_1B4C1: ; CODE XREF: sub_1B477+A0j + mov bx, [bp+var_2] + add bx, bx + mov word ptr [bx-6D46h], 0 + mov bx, [bp+var_2] + mov al, byte ptr [bp+var_2] + shl al, 6 + mov [bx-6D20h], al + add bx, bx + mov word ptr [bx-6D36h], 8 + mov bx, [bp+var_2] + add bx, bx + mov word ptr [bx-6D2Eh], 2 + mov bx, [bp+var_2] + add bx, bx + mov [bx-6D6Eh], si + mov bx, [bp+var_2] + add bx, bx + mov [bx-6D66h], si + mov bx, [bp+var_2] + add bx, bx + mov [bx-6D5Eh], di + mov bx, [bp+var_2] + add bx, bx + mov [bx-6D56h], di + inc [bp+var_2] + +loc_1B513: ; CODE XREF: sub_1B477+48j + cmp [bp+var_2], 4 + jl short loc_1B4C1 + jmp short loc_1B52F +; --------------------------------------------------------------------------- + +loc_1B51B: ; CODE XREF: sub_1B477+31j + cmp word_20650, 9Ah ; 'š' + jnz short loc_1B52F + mov word_2064E, 80h ; '€' + mov word_20650, 0 + +loc_1B52F: ; CODE XREF: sub_1B477+28j + ; sub_1B477+A2j ... + cmp word_20650, 82h ; '‚' + jle short loc_1B551 + mov [bp+var_2], 0 + jmp short loc_1B54B +; --------------------------------------------------------------------------- + +loc_1B53E: ; CODE XREF: sub_1B477+D8j + mov bx, [bp+var_2] + add bx, bx + add word ptr [bx-6D36h], 2 + inc [bp+var_2] + +loc_1B54B: ; CODE XREF: sub_1B477+C5j + cmp [bp+var_2], 4 + jl short loc_1B53E + +loc_1B551: ; CODE XREF: sub_1B477+Dj + ; sub_1B477+BEj + pop di + pop si + leave + retn +sub_1B477 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B555 proc near ; CODE XREF: sub_1BEF2:loc_1C053p + push bp + mov bp, sp + push si + cmp word_20650, 0Ah + jl loc_1B662 + cmp word_20650, 0Ah + jnz short loc_1B592 + mov ax, word_26D76 + add ax, 20h ; ' ' + cmp ax, word_205F6 + jge short loc_1B579 + mov al, 1 + jmp short loc_1B57B +; --------------------------------------------------------------------------- + +loc_1B579: ; CODE XREF: sub_1B555+1Ej + mov al, 0FFh + +loc_1B57B: ; CODE XREF: sub_1B555+22j + mov byte_26D81, al + mov ax, word_26D76 + mov word_26D82, ax + mov ax, word_26D78 + add ax, 70h ; 'p' + mov word_26D84, ax + mov byte_26D86, 0C0h ; 'À' + +loc_1B592: ; CODE XREF: sub_1B555+12j + mov al, byte_26D81 + add byte_26D86, al + mov al, byte_26D86 + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+5ECh] + imul eax, 70h + sar eax, 8 + add ax, word_26D82 + mov bx, word_2065C + mov [bx], ax + mov al, byte_26D86 + mov ah, 0 + add ax, ax + mov bx, ax + movsx eax, word ptr [bx+56Ch] + imul eax, 70h + sar eax, 8 + add ax, word_26D84 + mov bx, word_2065E + mov [bx], ax + mov bx, word_2065C + mov ax, [bx] + mov word_26D76, ax + mov bx, word_2065E + mov ax, [bx] + mov word_26D78, ax + test byte ptr word_20650, 0Fh + jnz short loc_1B654 + push 3 + call sub_FAD5 + mov ah, 0 + mov si, ax + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1B631 + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 0Ch + push ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 0Ch + push ax + push 0 + push 19h + push 50h ; 'P' + call sub_1078E + +loc_1B631: ; CODE XREF: sub_1B555+B1j + cmp word_26D4A, 8 + jnz short loc_1B654 + cmp si, 1 + jge short loc_1B654 + mov ax, word_26D76 + add ax, 40h ; '@' + push ax + mov ax, word_26D78 + add ax, 10h + push ax + push 0 + push 0Ah + push 50h ; 'P' + call sub_1078E + +loc_1B654: ; CODE XREF: sub_1B555+9Dj + ; sub_1B555+E1j ... + cmp word_20650, 10Ah + jl short loc_1B662 + mov word_20650, 0 + +loc_1B662: ; CODE XREF: sub_1B555+9j + ; sub_1B555+105j + pop si + pop bp + retn +sub_1B555 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B665 proc near ; CODE XREF: sub_1B6DA+54p + ; sub_1B7D3+E2p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + cmp word_20650, si + jl short loc_1B6D5 + cmp word_20650, si + jnz short loc_1B68A + push 9 + call sub_FA52 + add sp, 2 + +loc_1B682: ; CODE XREF: sub_1B665+2Cj + mov word_2064E, 82h ; '‚' + jmp short loc_1B6D5 +; --------------------------------------------------------------------------- + +loc_1B68A: ; CODE XREF: sub_1B665+11j + lea ax, [si+1Eh] + cmp ax, word_20650 + jz short loc_1B682 + lea ax, [si+24h] + cmp ax, word_20650 + jnz short loc_1B6A4 + mov word_2064E, 84h ; '„' + jmp short loc_1B6D5 +; --------------------------------------------------------------------------- + +loc_1B6A4: ; CODE XREF: sub_1B665+35j + lea ax, [si+2Ah] + cmp ax, word_20650 + jnz short loc_1B6B5 + mov word_2064E, 86h ; '†' + jmp short loc_1B6D5 +; --------------------------------------------------------------------------- + +loc_1B6B5: ; CODE XREF: sub_1B665+46j + lea ax, [si+32h] + cmp ax, word_20650 + jnz short loc_1B6C6 + mov word_2064E, 88h ; 'ˆ' + jmp short loc_1B6D5 +; --------------------------------------------------------------------------- + +loc_1B6C6: ; CODE XREF: sub_1B665+57j + lea ax, [si+3Ch] + cmp ax, word_20650 + jnz short loc_1B6D5 + mov word_2064E, 80h ; '€' + +loc_1B6D5: ; CODE XREF: sub_1B665+Bj + ; sub_1B665+23j ... + pop si + pop bp + retn 2 +sub_1B665 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B6DA proc near ; CODE XREF: sub_1BEF2:loc_1C059p + push bp + mov bp, sp + push si + cmp word_20650, 32h ; '2' + jl loc_1B7D0 + cmp word_20650, 118h + jge short loc_1B703 + xor si, si + jmp short loc_1B6FC +; --------------------------------------------------------------------------- + +loc_1B6F3: ; CODE XREF: sub_1B6DA+25j + mov bx, si + add bx, bx + inc word ptr [bx-6D36h] + inc si + +loc_1B6FC: ; CODE XREF: sub_1B6DA+17j + cmp si, 4 + jl short loc_1B6F3 + jmp short loc_1B72B +; --------------------------------------------------------------------------- + +loc_1B703: ; CODE XREF: sub_1B6DA+13j + cmp word_20650, 1FEh + jge short loc_1B71F + xor si, si + jmp short loc_1B718 +; --------------------------------------------------------------------------- + +loc_1B70F: ; CODE XREF: sub_1B6DA+41j + mov bx, si + add bx, bx + dec word ptr [bx-6D36h] + inc si + +loc_1B718: ; CODE XREF: sub_1B6DA+33j + cmp si, 4 + jl short loc_1B70F + jmp short loc_1B72B +; --------------------------------------------------------------------------- + +loc_1B71F: ; CODE XREF: sub_1B6DA+2Fj + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_1B72B: ; CODE XREF: sub_1B6DA+27j + ; sub_1B6DA+43j + push 0DCh ; 'Ü' + call sub_1B665 + cmp word_20650, 0DCh ; 'Ü' + jnz short loc_1B73E + mov byte ptr word_26D87, 0 + +loc_1B73E: ; CODE XREF: sub_1B6DA+5Dj + cmp word_26D4A, 8 + jnz short loc_1B74B + mov word_2064E, 82h ; '‚' + +loc_1B74B: ; CODE XREF: sub_1B6DA+69j + cmp word_20650, 0FAh ; 'ú' + jl short loc_1B75B + cmp word_20650, 10Eh + jl short loc_1B762 + +loc_1B75B: ; CODE XREF: sub_1B6DA+77j + cmp word_26D4A, 8 + jnz short loc_1B7D0 + +loc_1B762: ; CODE XREF: sub_1B6DA+7Fj + cmp word_26D4A, 8 + jz short loc_1B79B + mov al, byte ptr word_26D87 + add al, 0Dh + mov byte ptr word_26D87, al + mov al, byte_1E364 + cbw + mov dx, word_20650 + and dx, 1 + cmp ax, dx + jl short loc_1B7D0 + mov ax, word_26D76 + add ax, 2Ch ; ',' + push ax + mov ax, word_26D78 + add ax, 40h ; '@' + push ax + push word_26D87 + push 20h ; ' ' + push 32h ; '2' + call sub_1078E + jmp short loc_1B7D0 +; --------------------------------------------------------------------------- + +loc_1B79B: ; CODE XREF: sub_1B6DA+8Dj + mov al, byte ptr word_26D87 + add al, 0Ah + mov byte ptr word_26D87, al + mov ax, word_26D76 + add ax, 40h ; '@' + push ax + mov ax, word_26D78 + add ax, 10h + push ax + push word_26D87 + push 20h ; ' ' + push 3Ch ; '<' + call sub_1078E + cmp word_20650, 10Eh + jle short loc_1B7D0 + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_1B7D0: ; CODE XREF: sub_1B6DA+9j + ; sub_1B6DA+86j ... + pop si + pop bp + retn +sub_1B6DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B7D3 proc near ; CODE XREF: sub_1BEF2:loc_1C074p + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + cmp word_20650, 0Ah + jnz short loc_1B7FA + mov word_26D42, 3 + mov word_26D46, 3 + mov word_26D44, 0FFFEh + mov word_26D48, 0FFFEh + +loc_1B7FA: ; CODE XREF: sub_1B7D3+Dj + cmp word_20650, 32h ; '2' + jl loc_1B992 + cmp word_20650, 82h ; '‚' + jge short loc_1B823 + xor si, si + jmp short loc_1B81B +; --------------------------------------------------------------------------- + +loc_1B80F: ; CODE XREF: sub_1B7D3+4Bj + mov bx, si + add bx, bx + add word ptr [bx-6D36h], 2 + add si, 2 + +loc_1B81B: ; CODE XREF: sub_1B7D3+3Aj + cmp si, 4 + jl short loc_1B80F + jmp loc_1B8B2 +; --------------------------------------------------------------------------- + +loc_1B823: ; CODE XREF: sub_1B7D3+36j + cmp word_20650, 104h + jl loc_1B8B2 + cmp word_20650, 154h + jge short loc_1B868 + xor si, si + jmp short loc_1B845 +; --------------------------------------------------------------------------- + +loc_1B839: ; CODE XREF: sub_1B7D3+75j + mov bx, si + add bx, bx + sub word ptr [bx-6D36h], 2 + add si, 2 + +loc_1B845: ; CODE XREF: sub_1B7D3+64j + cmp si, 4 + jl short loc_1B839 + cmp byte_1E364, 0 + jz short loc_1B8B2 + mov si, 1 + jmp short loc_1B861 +; --------------------------------------------------------------------------- + +loc_1B856: ; CODE XREF: sub_1B7D3+91j + mov bx, si + add bx, bx + inc word ptr [bx-6D36h] + add si, 2 + +loc_1B861: ; CODE XREF: sub_1B7D3+81j + cmp si, 4 + jl short loc_1B856 + jmp short loc_1B8B2 +; --------------------------------------------------------------------------- + +loc_1B868: ; CODE XREF: sub_1B7D3+60j + cmp word_20650, 1A4h + jge short loc_1B88E + cmp byte_1E364, 0 + jz short loc_1B8B2 + mov si, 1 + jmp short loc_1B887 +; --------------------------------------------------------------------------- + +loc_1B87C: ; CODE XREF: sub_1B7D3+B7j + mov bx, si + add bx, bx + dec word ptr [bx-6D36h] + add si, 2 + +loc_1B887: ; CODE XREF: sub_1B7D3+A7j + cmp si, 4 + jl short loc_1B87C + jmp short loc_1B8B2 +; --------------------------------------------------------------------------- + +loc_1B88E: ; CODE XREF: sub_1B7D3+9Bj + mov word_26D42, 2 + mov word_26D46, 2 + mov word_26D44, 0FFFEh + mov word_26D48, 0FFFEh + mov word_20650, 0 + mov word_2064E, 80h ; '€' + +loc_1B8B2: ; CODE XREF: sub_1B7D3+4Dj + ; sub_1B7D3+56j ... + push 8Ch ; 'Œ' + call sub_1B665 + cmp word_20650, 8Ch ; 'Œ' + jnz short loc_1B8C5 + mov byte ptr word_26D87+1, 0 + +loc_1B8C5: ; CODE XREF: sub_1B7D3+EBj + cmp word_26D4A, 8 + jnz short loc_1B903 + mov word_2064E, 82h ; '‚' + mov al, 18h + sub al, byte_1E364 + mov dl, byte ptr word_26D87+1 + sub dl, al + mov byte ptr word_26D87+1, dl + mov ax, word_26D76 + add ax, 40h ; '@' + push ax + mov ax, word_26D78 + add ax, 10h + push ax + push word_26D87+1 + push 0FFh + push large 55003Ch + call sub_10865 + jmp loc_1B992 +; --------------------------------------------------------------------------- + +loc_1B903: ; CODE XREF: sub_1B7D3+F7j + cmp word_20650, 96h ; '–' + jl loc_1B992 + cmp word_20650, 0FAh ; 'ú' + jge short loc_1B992 + test byte ptr word_20650, 3 + jnz short loc_1B992 + mov al, byte ptr word_26D87+1 + add al, 3 + mov byte ptr word_26D87+1, al + push 0Ah + call sub_FA52 + add sp, 2 + xor si, si + jmp short loc_1B98D +; --------------------------------------------------------------------------- + +loc_1B932: ; CODE XREF: sub_1B7D3+1BDj + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1B98A + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov di, es:[bx] + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + mov [bp+var_2], ax + or di, di + jle short loc_1B98A + cmp di, 1A0h + jge short loc_1B98A + cmp [bp+var_2], 0 + jl short loc_1B98A + cmp [bp+var_2], 170h + jg short loc_1B98A + lea ax, [di+0Ch] + push ax + mov ax, [bp+var_2] + add ax, 0Ch + push ax + mov al, [si-6D20h] + add al, byte ptr word_26D87+1 + push ax + push 20h ; ' ' + push 46h ; 'F' + call sub_1078E + +loc_1B98A: ; CODE XREF: sub_1B7D3+168j + ; sub_1B7D3+187j ... + add si, 2 + +loc_1B98D: ; CODE XREF: sub_1B7D3+15Dj + cmp si, 4 + jl short loc_1B932 + +loc_1B992: ; CODE XREF: sub_1B7D3+2Cj + ; sub_1B7D3+12Dj ... + pop di + pop si + leave + retn +sub_1B7D3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B996 proc near ; CODE XREF: sub_1BEF2:loc_1C07Dp + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + cmp word_20650, 0Ah + jnz short loc_1B9BD + mov word_26D42, 0FFFDh + mov word_26D46, 0FFFDh + mov word_26D44, 0FFFDh + mov word_26D48, 0FFFDh + +loc_1B9BD: ; CODE XREF: sub_1B996+Dj + cmp word_26D4A, 8 + jnz short loc_1B9D0 + mov word_2064E, 80h ; '€' + mov word_20650, 0 + +loc_1B9D0: ; CODE XREF: sub_1B996+2Cj + cmp word_20650, 32h ; '2' + jl loc_1BAFB + cmp word_20650, 32h ; '2' + jnz short loc_1BA0B + mov word_26D42, 0FFFCh + mov word_26D46, 0FFFCh + mov word_26D44, 0FFFCh + mov word_26D48, 0FFFCh + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + jmp loc_1BAFB +; --------------------------------------------------------------------------- + +loc_1BA0B: ; CODE XREF: sub_1B996+48j + cmp word_20650, 64h ; 'd' + jnz short loc_1BA7B + push 3 + call sub_FA52 + add sp, 2 + xor si, si + jmp short loc_1BA73 +; --------------------------------------------------------------------------- + +loc_1BA20: ; CODE XREF: sub_1B996+E0j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1BA72 + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 0Ch + mov di, ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 0Ch + mov [bp+var_2], ax + mov [bp+var_4], 0FFC0h + jmp short loc_1BA6C +; --------------------------------------------------------------------------- + +loc_1BA55: ; CODE XREF: sub_1B996+DAj + push di + push [bp+var_2] + mov al, [si-6D20h] + add al, byte ptr [bp+var_4] + push ax + push 20h ; ' ' + push 46h ; 'F' + call sub_1078E + add [bp+var_4], 10h + +loc_1BA6C: ; CODE XREF: sub_1B996+BDj + cmp [bp+var_4], 40h ; '@' + jl short loc_1BA55 + +loc_1BA72: ; CODE XREF: sub_1B996+93j + inc si + +loc_1BA73: ; CODE XREF: sub_1B996+88j + cmp si, 4 + jl short loc_1BA20 + jmp loc_1BAFB +; --------------------------------------------------------------------------- + +loc_1BA7B: ; CODE XREF: sub_1B996+7Aj + cmp word_20650, 6Eh ; 'n' + jnz short loc_1BAFB + push 3 + call sub_FA52 + add sp, 2 + xor si, si + jmp short loc_1BAF6 +; --------------------------------------------------------------------------- + +loc_1BA90: ; CODE XREF: sub_1B996+163j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1BAF5 + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 0Ch + mov di, ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 0Ch + mov [bp+var_2], ax + mov [bp+var_4], 0FFBAh + jmp short loc_1BAE5 +; --------------------------------------------------------------------------- + +loc_1BAC5: ; CODE XREF: sub_1B996+153j + push di + push [bp+var_2] + mov al, [si-6D20h] + add al, byte ptr [bp+var_4] + push ax + push 20h ; ' ' + push 1Fh + call sub_FAD5 + mov ah, 0 + add ax, 10h + push ax + call sub_1078E + add [bp+var_4], 0Ch + +loc_1BAE5: ; CODE XREF: sub_1B996+12Dj + cmp [bp+var_4], 46h ; 'F' + jl short loc_1BAC5 + mov bx, si + add bx, bx + mov word ptr [bx-6D46h], 1 + +loc_1BAF5: ; CODE XREF: sub_1B996+103j + inc si + +loc_1BAF6: ; CODE XREF: sub_1B996+F8j + cmp si, 4 + jl short loc_1BA90 + +loc_1BAFB: ; CODE XREF: sub_1B996+3Fj + ; sub_1B996+72j ... + pop di + pop si + leave + retn +sub_1B996 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BAFF proc near ; CODE XREF: sub_1BEF2:loc_1C062p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + cmp word_20650, 32h ; '2' + jl loc_1BC3F + cmp word_20650, 96h ; '–' + jl short loc_1BB1D + push 78h ; 'x' + call sub_1B665 + +loc_1BB1D: ; CODE XREF: sub_1BAFF+17j + cmp word_20650, 32h ; '2' + jnz short loc_1BB4F + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + mov byte_26D89, 0 + mov byte_26D8A, 0 + mov byte_26D8B, 0 + mov byte_26D8C, 0 + mov byte_26D8D, 0 + jmp short loc_1BB85 +; --------------------------------------------------------------------------- + +loc_1BB4F: ; CODE XREF: sub_1BAFF+23j + cmp word_20650, 12Ch + jnz short loc_1BB85 + mov word_20650, 0 + mov ax, 0FFFFh + imul word_26D42 + mov word_26D42, ax + mov ax, 0FFFFh + imul word_26D44 + mov word_26D44, ax + mov ax, 0FFFFh + imul word_26D46 + mov word_26D46, ax + mov ax, 0FFFFh + imul word_26D48 + mov word_26D48, ax + +loc_1BB85: ; CODE XREF: sub_1BAFF+4Ej + ; sub_1BAFF+56j + cmp word_20650, 46h ; 'F' + jle loc_1BC3F + mov ax, word_20650 + mov bx, 5 + cwd + idiv bx + or dx, dx + jnz loc_1BC3F + push 0Ah + call sub_FA52 + add sp, 2 + xor si, si + jmp short loc_1BC0F +; --------------------------------------------------------------------------- + +loc_1BBAB: ; CODE XREF: sub_1BAFF+113j + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1BC0E + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 0Ch + mov di, ax + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 0Ch + mov [bp+var_2], ax + mov ax, word_20650 + sar ax, 2 + add ax, 19h + mov [bp+var_4], ax + push di + push [bp+var_2] + mov al, [si-6D20h] + add al, [si-6CE6h] + push ax + push 20h ; ' ' + push [bp+var_4] + call sub_1078E + mov al, [si-6CE6h] + mov bx, si + add bx, bx + mov dl, [bx-6D2Eh] + add dl, dl + add al, dl + mov [si-6CE6h], al + +loc_1BC0E: ; CODE XREF: sub_1BAFF+B5j + inc si + +loc_1BC0F: ; CODE XREF: sub_1BAFF+AAj + cmp si, 4 + jl short loc_1BBAB + cmp word_26D4A, 8 + jnz short loc_1BC3B + test byte_26D89, 1 + jnz short loc_1BC3B + mov ax, word_26D76 + add ax, 2Ch ; ',' + push ax + mov ax, word_26D78 + add ax, 2Ch ; ',' + push ax + push word_20650 + push 25h ; '%' + push 32h ; '2' + call sub_1078E + +loc_1BC3B: ; CODE XREF: sub_1BAFF+11Aj + ; sub_1BAFF+121j + inc byte_26D89 + +loc_1BC3F: ; CODE XREF: sub_1BAFF+Dj + ; sub_1BAFF+8Bj ... + pop di + pop si + leave + retn +sub_1BAFF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC43 proc near ; CODE XREF: sub_1BEF2:loc_1C06Bp + +var_3 = word ptr -3 + + push bp + mov bp, sp + sub sp, 4 + push si + cmp word_20650, 32h ; '2' + jl loc_1BE6F + cmp word_20650, 96h ; '–' + jl short loc_1BC60 + push 78h ; 'x' + call sub_1B665 + +loc_1BC60: ; CODE XREF: sub_1BC43+16j + cmp word_20650, 32h ; '2' + jnz short loc_1BCAE + push 9 + call sub_FA52 + add sp, 2 + mov word_2064E, 82h ; '‚' + mov al, byte_1EEA5 + cbw + mov word_21744, ax + mov word_21746, 0 + mov word_21748, 40h ; '@' + mov al, byte_1EEA5 + cbw + imul ax, -1 + mov byte_1EEA5, al + mov word_26D42, 2 + mov word_26D46, 2 + mov word_26D44, 0FFFEh + mov word_26D48, 0FFFEh + jmp short loc_1BD16 +; --------------------------------------------------------------------------- + +loc_1BCAE: ; CODE XREF: sub_1BC43+22j + cmp word_20650, 46h ; 'F' + jnz short loc_1BCCF + mov word_26D42, 3 + mov word_26D46, 3 + mov word_26D44, 0FFFDh + mov word_26D48, 0FFFDh + jmp short loc_1BD16 +; --------------------------------------------------------------------------- + +loc_1BCCF: ; CODE XREF: sub_1BC43+70j + cmp word_20650, 50h ; 'P' + jnz short loc_1BCF0 + mov word_26D42, 4 + mov word_26D46, 4 + mov word_26D44, 0FFFCh + mov word_26D48, 0FFFCh + jmp short loc_1BD16 +; --------------------------------------------------------------------------- + +loc_1BCF0: ; CODE XREF: sub_1BC43+91j + cmp word_20650, 0C8h ; 'È' + jnz short loc_1BD16 + mov word_26D42, 2 + mov word_26D46, 2 + mov word_26D44, 0FFFEh + mov word_26D48, 0FFFEh + mov word_20650, 0 + +loc_1BD16: ; CODE XREF: sub_1BC43+69j + ; sub_1BC43+8Aj ... + cmp word_20650, 46h ; 'F' + jle loc_1BE6F + mov ax, word_20650 + mov bx, 0Eh + cwd + idiv bx + or dx, dx + jnz loc_1BE6F + push 0Ah + call sub_FA52 + add sp, 2 + cmp word_20650, 78h ; 'x' + jg short loc_1BDAC + mov [bp+var_3+1], 0 + jmp short loc_1BD86 +; --------------------------------------------------------------------------- + +loc_1BD46: ; CODE XREF: sub_1BC43+147j + mov bx, [bp+var_3+1] + add bx, bx + cmp word ptr [bx-6D46h], 0 + jnz short loc_1BD83 + mov bx, [bp+var_3+1] + shl bx, 2 + les bx, [bx-6D1Ah] + mov ax, es:[bx] + add ax, 8 + push ax + mov bx, [bp+var_3+1] + shl bx, 2 + les bx, [bx-6D0Ah] + mov ax, es:[bx] + add ax, 8 + push ax + push 0C0h ; 'À' + push 0FFh + push large 550046h + call sub_10865 + +loc_1BD83: ; CODE XREF: sub_1BC43+10Dj + inc [bp+var_3+1] + +loc_1BD86: ; CODE XREF: sub_1BC43+101j + cmp [bp+var_3+1], 4 + jl short loc_1BD46 + mov ax, word_26D76 + add ax, 28h ; '(' + push ax + mov ax, word_26D78 + add ax, 28h ; '(' + push ax + push 0C0h ; 'À' + push 0FFh + push large 550046h + call sub_10865 + jmp loc_1BE2F +; --------------------------------------------------------------------------- + +loc_1BDAC: ; CODE XREF: sub_1BC43+FAj + mov al, byte_1EEA5 + cbw + cmp ax, 1 + jnz short loc_1BDBA + mov si, 190h + jmp short loc_1BDBD +; --------------------------------------------------------------------------- + +loc_1BDBA: ; CODE XREF: sub_1BC43+170j + mov si, 20h ; ' ' + +loc_1BDBD: ; CODE XREF: sub_1BC43+175j + mov [bp+var_3+1], 0 + jmp short loc_1BE25 +; --------------------------------------------------------------------------- + +loc_1BDC4: ; CODE XREF: sub_1BC43+1EAj + push 7 + call sub_FAD5 + mov dl, byte_1EEA5 + shl dl, 4 + add al, dl + add al, 40h ; '@' + mov byte ptr [bp+var_3], al + call sub_FAED + mov bx, 170h + xor dx, dx + div bx + add dx, 20h ; ' ' + push dx + push 10h + push [bp+var_3] + push 0FFh + push 55h ; 'U' + push 1Fh + call sub_FAD5 + mov ah, 0 + add ax, 10h + push ax + call sub_10865 + push si + call sub_FAED + mov bx, 140h + xor dx, dx + div bx + add dx, 10h + push dx + push [bp+var_3] + push 0FFh + push 55h ; 'U' + push 1Fh + call sub_FAD5 + mov ah, 0 + add ax, 10h + push ax + call sub_10865 + inc [bp+var_3+1] + +loc_1BE25: ; CODE XREF: sub_1BC43+17Fj + mov al, byte ptr word_20670+1 + mov ah, 0 + cmp ax, [bp+var_3+1] + jg short loc_1BDC4 + +loc_1BE2F: ; CODE XREF: sub_1BC43+166j + cmp word_26D4A, 8 + jnz short loc_1BE6F + mov [bp+var_3+1], 0 + jmp short loc_1BE69 +; --------------------------------------------------------------------------- + +loc_1BE3D: ; CODE XREF: sub_1BC43+22Aj + mov ax, word_26D76 + add ax, 28h ; '(' + push ax + mov ax, word_26D78 + add ax, 28h ; '(' + push ax + mov al, byte ptr [bp+var_3+1] + shl al, 6 + mov dl, byte ptr word_20650 + add dl, dl + add al, dl + push ax + push 85h ; '…' + push large 550046h + call sub_10865 + inc [bp+var_3+1] + +loc_1BE69: ; CODE XREF: sub_1BC43+1F8j + cmp [bp+var_3+1], 4 + jl short loc_1BE3D + +loc_1BE6F: ; CODE XREF: sub_1BC43+Cj + ; sub_1BC43+D8j ... + pop si + leave + retn +sub_1BC43 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BE72 proc near ; CODE XREF: sub_1BEF2+143p + ; sub_1BEF2+14Cp ... + push bp + mov bp, sp + cmp word_20650, 1 + jz short loc_1BEF0 + cmp word_20650, 2 + jnz short loc_1BEC5 + mov ax, word_26D76 + add ax, 20h ; ' ' + cmp ax, word_205F6 + jge short loc_1BE94 + mov ax, 1 + jmp short loc_1BE97 +; --------------------------------------------------------------------------- + +loc_1BE94: ; CODE XREF: sub_1BE72+1Bj + mov ax, 0FFFFh + +loc_1BE97: ; CODE XREF: sub_1BE72+20j + mov word_26D8E, ax + cmp word_26D78, 48h ; 'H' + jge short loc_1BEA6 + mov ax, 1 + jmp short loc_1BEC2 +; --------------------------------------------------------------------------- + +loc_1BEA6: ; CODE XREF: sub_1BE72+2Dj + cmp word_26D78, 6Ch ; 'l' + jle short loc_1BEB2 + mov ax, 0FFFFh + jmp short loc_1BEC2 +; --------------------------------------------------------------------------- + +loc_1BEB2: ; CODE XREF: sub_1BE72+39j + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov ax, 1 + sub ax, dx + +loc_1BEC2: ; CODE XREF: sub_1BE72+32j + ; sub_1BE72+3Ej + mov word_26D90, ax + +loc_1BEC5: ; CODE XREF: sub_1BE72+Fj + cmp word_20650, 32h ; '2' + jge short loc_1BEF0 + mov bx, word_2065C + mov ax, word_26D8E + add [bx], ax + mov bx, word_2065E + mov ax, word_26D90 + add [bx], ax + mov bx, word_2065C + mov ax, [bx] + mov word_26D76, ax + mov bx, word_2065E + mov ax, [bx] + mov word_26D78, ax + +loc_1BEF0: ; CODE XREF: sub_1BE72+8j + ; sub_1BE72+58j + pop bp + retn +sub_1BE72 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BEF2 proc far ; DATA XREF: sub_B3DA+3D8o + push bp + mov bp, sp + push si + push di + xor si, si + mov word_26D4A, 0 + jmp short loc_1BF0E +; --------------------------------------------------------------------------- + +loc_1BF01: ; CODE XREF: sub_1BEF2+1Fj + mov bx, si + add bx, bx + mov ax, [bx-6D46h] + add word_26D4A, ax + inc si + +loc_1BF0E: ; CODE XREF: sub_1BEF2+Dj + cmp si, 4 + jl short loc_1BF01 + cmp word_26D4A, 8 + jnz short loc_1BF2E + mov ax, word_26D76 + add ax, 28h ; '(' + mov word_205D8, ax + mov ax, word_26D78 + add ax, 28h ; '(' + mov word_205DA, ax + jmp short loc_1BF3A +; --------------------------------------------------------------------------- + +loc_1BF2E: ; CODE XREF: sub_1BEF2+26j + mov word_205D8, 0FFFFh + mov word_205DA, 0FFFFh + +loc_1BF3A: ; CODE XREF: sub_1BEF2+3Aj + inc word_20650 + test byte ptr dword_20612, 1 + jz short loc_1BF78 + cmp byte_2066C, 0 + jz short loc_1BF53 + test byte ptr dword_20612, 3 + jz short loc_1BF78 + +loc_1BF53: ; CODE XREF: sub_1BEF2+58j + call sub_FAED + mov bx, 180h + xor dx, dx + div bx + add dx, 20h ; ' ' + mov di, dx + push dx + push 10h + mov ax, 0E0h ; 'à' + sub ax, di + mov bx, 3 + cwd + idiv bx + add al, 40h ; '@' + push ax + call sub_3E1C + +loc_1BF78: ; CODE XREF: sub_1BEF2+51j + ; sub_1BEF2+5Fj + test byte ptr dword_20612, 1Fh + jnz short loc_1BF9E + inc byte_26D4C + mov al, byte_26D4C + cbw + cmp ax, 6 + jl short loc_1BF91 + mov byte_26D4C, 0 + +loc_1BF91: ; CODE XREF: sub_1BEF2+98j + mov al, byte_26D4C + cbw + mov bx, ax + mov al, [bx+1420h] + mov byte_1FFF8, al + +loc_1BF9E: ; CODE XREF: sub_1BEF2+8Bj + call sub_3F8A + cmp byte_2066A, 0 + jnz loc_1C11A + cmp word_26CFC, 0 + jnz short loc_1BFC6 + call sub_1B24A + cmp word_20650, 0 + jnz loc_1C11A + inc word_26CFC + jmp loc_1C11A +; --------------------------------------------------------------------------- + +loc_1BFC6: ; CODE XREF: sub_1BEF2+BFj + cmp word_26CFC, 1 + jnz short loc_1BFEA + call sub_1B477 + cmp word_20650, 0 + jnz loc_1C11A + inc word_26CFC + mov byte_26D4D, 1 + mov byte_26D92, 0 + jmp loc_1C11A +; --------------------------------------------------------------------------- + +loc_1BFEA: ; CODE XREF: sub_1BEF2+D9j + cmp word_26CFC, 2 + jnz loc_1C11A + mov al, byte_26D4D + cbw + cmp ax, 2 + jz short loc_1C059 + jg short loc_1C011 + sub ax, 0FFFDh + mov bx, ax + cmp bx, 4 + ja loc_1C10E + add bx, bx + jmp cs:off_1C160[bx] +; --------------------------------------------------------------------------- + +loc_1C011: ; CODE XREF: sub_1BEF2+10Aj + cmp ax, 5 + jz short loc_1C074 + jg short loc_1C025 + cmp ax, 3 + jz short loc_1C062 + cmp ax, 4 + jz short loc_1C06B + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C025: ; CODE XREF: sub_1BEF2+124j + cmp ax, 6 + jz short loc_1C07D + cmp ax, 7Fh ; '' + jz short loc_1C086 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C032: ; CODE XREF: sub_1BEF2+11Aj + ; DATA XREF: seg003:off_1C160o + call sub_1B35F + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C03B: ; CODE XREF: sub_1BEF2+11Aj + ; DATA XREF: seg003:C6A2o + call sub_1B2E9 + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C044: ; CODE XREF: sub_1BEF2+11Aj + ; DATA XREF: seg003:C6A4o + call sub_1B24A + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C04D: ; CODE XREF: sub_1BEF2+11Aj + ; DATA XREF: seg003:C6A6o + call sub_1B477 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C053: ; CODE XREF: sub_1BEF2+11Aj + ; DATA XREF: seg003:C6A8o + call sub_1B555 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C059: ; CODE XREF: sub_1BEF2+108j + call sub_1B6DA + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C062: ; CODE XREF: sub_1BEF2+129j + call sub_1BAFF + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C06B: ; CODE XREF: sub_1BEF2+12Ej + call sub_1BC43 + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C074: ; CODE XREF: sub_1BEF2+122j + call sub_1B7D3 + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C07D: ; CODE XREF: sub_1BEF2+136j + call sub_1B996 + call sub_1BE72 + jmp loc_1C10E +; --------------------------------------------------------------------------- + +loc_1C086: ; CODE XREF: sub_1BEF2+13Bj + call sub_1BE72 + cmp word_20650, 1Eh + jle short loc_1C10E + cmp word_26D4A, 8 + jge short loc_1C0BC + cmp byte_26D92, 4 + jb short loc_1C0A5 + mov byte_26D4D, 6 + jmp short loc_1C108 +; --------------------------------------------------------------------------- + +loc_1C0A5: ; CODE XREF: sub_1BEF2+1AAj + call sub_FAC6 + mov ah, 0 + mov bx, 5 + cwd + idiv bx + inc dl + mov byte_26D4D, dl + inc byte_26D92 + jmp short loc_1C108 +; --------------------------------------------------------------------------- + +loc_1C0BC: ; CODE XREF: sub_1BEF2+1A3j + mov al, byte_26D4E + cbw + cmp ax, 2 + jl short loc_1C0F2 + mov byte_26D92, 0 + mov byte_26D4D, 0 + mov byte_26D4E, 0 + inc byte_26D4F + cmp byte_26D4F, 2 + jb short loc_1C0E4 + mov byte_1EE96, 1 + +loc_1C0E4: ; CODE XREF: sub_1BEF2+1EBj + cmp byte_26D4F, 7 + jb short loc_1C108 + mov byte_2066A, 1 + jmp short loc_1C108 +; --------------------------------------------------------------------------- + +loc_1C0F2: ; CODE XREF: sub_1BEF2+1D1j + inc byte_26D4E + call sub_FAC6 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + mov al, 0FFh + sub al, dl + mov byte_26D4D, al + +loc_1C108: ; CODE XREF: sub_1BEF2+1B1j + ; sub_1BEF2+1C8j ... + mov word_20650, 1 + +loc_1C10E: ; CODE XREF: sub_1BEF2+114j + ; sub_1BEF2+130j ... + cmp word_20650, 0 + jnz short loc_1C11A + mov byte_26D4D, 7Fh ; '' + +loc_1C11A: ; CODE XREF: sub_1BEF2+B6j + ; sub_1BEF2+C9j ... + call sub_1AA60 + call sub_1AB35 + cmp byte_2066A, 0 + jz short loc_1C133 + call sub_1AC7B + or ax, ax + jz short loc_1C136 + mov ax, 2 + jmp short loc_1C15B +; --------------------------------------------------------------------------- + +loc_1C133: ; CODE XREF: sub_1BEF2+233j + call sub_1AE98 + +loc_1C136: ; CODE XREF: sub_1BEF2+23Aj + xor si, si + jmp short loc_1C14D +; --------------------------------------------------------------------------- + +loc_1C13A: ; CODE XREF: sub_1BEF2+25Ej + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 1 + jnz short loc_1C14C + push si + call sub_1AD80 + add sp, 2 + +loc_1C14C: ; CODE XREF: sub_1BEF2+251j + inc si + +loc_1C14D: ; CODE XREF: sub_1BEF2+246j + cmp si, 4 + jl short loc_1C13A + call sub_1B3DE + call sub_1B025 + mov ax, 1 + +loc_1C15B: ; CODE XREF: sub_1BEF2+23Fj + pop di + pop si + pop bp + retf +sub_1BEF2 endp + +; --------------------------------------------------------------------------- + db 0 +off_1C160 dw offset loc_1C032 ; DATA XREF: sub_1BEF2+11Ar + dw offset loc_1C03B + dw offset loc_1C044 + dw offset loc_1C04D + dw offset loc_1C053 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C16A proc far ; DATA XREF: sub_B3DA+3CCo + push bp + mov bp, sp + push si + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE2h + mov word_2065C, ax + mov al, byte_20618 + mov ah, 0 + add ax, ax + add ax, 2BE6h + mov word_2065E, ax + call sub_764 + push large 0C00000h + call sub_127E + push large 40010h + push large 33017Fh + call sub_B88 + call sub_3EF4 + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE2h] + mov bx, word_2065C + mov [bx], ax + mov al, byte_20619 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+2BE6h] + mov bx, word_2065E + mov [bx], ax + xor si, si + jmp loc_1C261 +; --------------------------------------------------------------------------- + +loc_1C1D9: ; CODE XREF: sub_1C16A+FAj + mov al, byte_20618 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + add ax, 9292h + mov bx, si + shl bx, 2 + mov word ptr [bx-6D18h], ds + mov [bx-6D1Ah], ax + mov al, byte_20618 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + add ax, 92A2h + mov bx, si + shl bx, 2 + mov word ptr [bx-6D08h], ds + mov [bx-6D0Ah], ax + mov bx, si + add bx, bx + cmp word ptr [bx-6D46h], 2 + jge short loc_1C260 + mov al, byte_20619 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6D6Eh] + mov bx, si + shl bx, 2 + les bx, [bx-6D1Ah] + mov es:[bx], ax + mov al, byte_20619 + mov ah, 0 + shl ax, 3 + mov dx, si + add dx, dx + add ax, dx + mov bx, ax + mov ax, [bx-6D5Eh] + mov bx, si + shl bx, 2 + les bx, [bx-6D0Ah] + mov es:[bx], ax + +loc_1C260: ; CODE XREF: sub_1C16A+B4j + inc si + +loc_1C261: ; CODE XREF: sub_1C16A+6Cj + cmp si, 4 + jl loc_1C1D9 + call sub_12A8 + pop si + pop bp + retf +sub_1C16A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C270 proc far ; DATA XREF: sub_B3DA+3C0o + push bp + mov bp, sp + call sub_12DE0 + call sub_131D9 + call sub_FC53 + +loc_1C27C: + call sub_E162 + inc byte_1E365 + pop bp + +locret_1C286: + retf +sub_1C270 endp + +seg003 ends + +; =========================================================================== + +; Segment type: Pure code +seg004 segment byte public 'CODE' use16 + assume cs:seg004 + ;org 7 + 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_1C287 proc far ; CODE XREF: sub_FFF8+9BP + ; sub_16744+74P ... + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +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, 4 + push si + push di + mov di, [bp+arg_6] + mov si, [bp+arg_2] + mov ax, si + sar ax, 6 + inc al + mov [bp+var_4], al + mov [bp+var_2], 0 + jmp loc_1C332 +; --------------------------------------------------------------------------- + +loc_1C2A7: ; CODE XREF: sub_1C287+B0j + mov al, byte ptr [bp+var_2] + mov [bp+var_3], al + movsx eax, si + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, di + mov word_20164, ax + movsx eax, si + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_4] + mov word_20166, ax + cmp word_20164, 1A0h + jge short loc_1C32C + cmp word_20164, 18h + jle short loc_1C32C + cmp word_20166, 8 + jle short loc_1C32C + cmp word_20166, 180h + jge short loc_1C32C + mov ax, word_20344 + add word_20166, ax + cmp word_20166, 190h + jl short loc_1C321 + sub word_20166, 190h + +loc_1C321: ; CODE XREF: sub_1C287+92j + mov al, [bp+var_4] + mov ah, 0 + push ax + call sub_3E6A + +loc_1C32C: ; CODE XREF: sub_1C287+6Dj + ; sub_1C287+74j ... + mov ax, [bp+arg_0] + add [bp+var_2], ax + +loc_1C332: ; CODE XREF: sub_1C287+1Dj + cmp [bp+var_2], 100h + jb loc_1C2A7 + pop di + pop si + leave + retf 8 +sub_1C287 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C341 proc far ; CODE XREF: sub_FFF8+56P + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +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, 4 + push si + push di + mov ax, [bp+arg_2] + sar ax, 6 + inc al + mov [bp+var_4], al + mov [bp+var_2], 0 + jmp short loc_1C3D2 +; --------------------------------------------------------------------------- + +loc_1C35B: ; CODE XREF: sub_1C341+96j + mov al, byte ptr [bp+var_2] + mov [bp+var_3], al + movsx eax, [bp+arg_2] + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+5ECh] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_6] + mov si, ax + movsx eax, [bp+arg_2] + mov dl, [bp+var_3] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+56Ch] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_4] + mov di, ax + cmp si, 1A0h + jge short loc_1C3CC + cmp si, 18h + jle short loc_1C3CC + cmp di, 8 + jle short loc_1C3CC + cmp di, 180h + jge short loc_1C3CC + push si + push ax + mov al, [bp+var_4] + mov ah, 0 + push ax + mov al, [bp+var_4] + mov ah, 0 + push ax + call sub_45FC + +loc_1C3CC: ; CODE XREF: sub_1C341+66j + ; sub_1C341+6Bj ... + mov ax, [bp+arg_0] + +loc_1C3CF: + add [bp+var_2], ax + +loc_1C3D2: ; CODE XREF: sub_1C341+18j + cmp [bp+var_2], 100h + jb short loc_1C35B + pop di + pop si + leave + retf 8 +sub_1C341 endp + +seg004 ends + +; =========================================================================== + +; Segment type: Pure code +seg005 segment byte public 'CODE' use16 + assume cs:seg005 + ;org 0Fh + 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_1C3DF proc far ; CODE XREF: sub_B3DA+1B3P + +src = dword ptr -14h +dest = dword ptr -10h +var_A = word ptr -0Ah +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 14h, 0 + push si + push di + mov word ptr [bp-0Ch], ds + mov word ptr [bp+dest+2], 111Ah + les bx, [bp+dest+2] + mov al, byte_1E365 + add al, 30h ; '0' + mov es:[bx+5], al + push word ptr [bp-0Ch] + push bx + call sub_950 + push ss + lea ax, [bp+var_A] + push ax + push 4 + call sub_89C + push [bp+var_A] + call sub_2980 + mov [bp+var_6], ax + mov word ptr [bp+src+2], ax + mov word ptr [bp+src], 0 + push ax + push word ptr [bp+src] + push [bp+var_A] + call sub_89C + call sub_870 + les bx, [bp+src] + mov ax, es:[bx] + mov word_22FD8, ax + add word ptr [bp+src], 2 + xor di, di + jmp short loc_1C451 +; --------------------------------------------------------------------------- + +loc_1C443: ; CODE XREF: sub_1C3DF+76j + les bx, [bp+src] + mov al, es:[bx] + mov [di+4BE6h], al + inc word ptr [bp+src] + inc di + +loc_1C451: ; CODE XREF: sub_1C3DF+62j + cmp di, word_22FD8 + jl short loc_1C443 + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_2], ax + add word ptr [bp+src], 2 + mov byte_22FDB, 0 + mov word ptr [bp+dest], 7F06h + xor di, di + jmp loc_1C55E +; --------------------------------------------------------------------------- + +loc_1C473: ; CODE XREF: sub_1C3DF+182j + push 1Ch ; n + push large [bp+src] ; src + push ds + push word ptr [bp+dest] ; dest + call _memcpy + add sp, 0Ah + add word ptr [bp+src], 1Ch + mov bx, di + imul bx, 24h + mov bx, [bx+7F0Eh] + add bx, bx + mov ax, [bx+1EDAh] + shr ax, 8 + shl ax, 3 + mov bx, word ptr [bp+dest] + mov [bx+1Ch], ax + mov bx, di + imul bx, 24h + mov bx, [bx+7F0Eh] + add bx, bx + mov ax, [bx+1EDAh] + and ax, 0FFh + mov bx, word ptr [bp+dest] + mov [bx+1Eh], ax + mov ax, [bx+1Ah] + mov [bp+var_4], ax + cmp byte_1E364, 0 + jnz short loc_1C4CE + shl [bp+var_4], 1 + jmp short loc_1C4DF +; --------------------------------------------------------------------------- + +loc_1C4CE: ; CODE XREF: sub_1C3DF+E8j + cmp byte_1E364, 2 + jz short loc_1C4DC + cmp byte_1E364, 3 + jnz short loc_1C4DF + +loc_1C4DC: ; CODE XREF: sub_1C3DF+F4j + sar [bp+var_4], 1 + +loc_1C4DF: ; CODE XREF: sub_1C3DF+EDj + ; sub_1C3DF+FBj + mov bx, word ptr [bp+dest] + mov ax, [bp+var_4] + mov [bx+1Ah], ax + les bx, [bp+src] + cmp byte ptr es:[bx], 0FEh ; 'þ' + jnz short loc_1C513 + inc word ptr [bp+src] + les bx, [bp+src] + mov al, es:[bx] + mov ah, 0 + shl ax, 6 + add ax, 556Ch + mov bx, word ptr [bp+dest] + mov word ptr [bx+22h], ds + mov [bx+20h], ax + inc word ptr [bp+src] + inc word ptr [bp+src] + jmp short loc_1C559 +; --------------------------------------------------------------------------- + +loc_1C513: ; CODE XREF: sub_1C3DF+110j + mov [bp+var_4], 0 + +loc_1C518: ; CODE XREF: sub_1C3DF+15Dj + mov al, byte_22FDB + mov ah, 0 + shl ax, 6 + add ax, [bp+var_4] + les bx, [bp+src] + mov dl, es:[bx] + mov bx, ax + mov [bx+556Ch], dl + inc word ptr [bp+src] + inc [bp+var_4] + les bx, [bp+src] + cmp byte ptr es:[bx], 0FFh + jnz short loc_1C518 + inc word ptr [bp+src] + mov al, byte_22FDB + mov ah, 0 + shl ax, 6 + add ax, 556Ch + mov bx, word ptr [bp+dest] + mov word ptr [bx+22h], ds + mov [bx+20h], ax + inc byte_22FDB + +loc_1C559: ; CODE XREF: sub_1C3DF+132j + inc di + add word ptr [bp+dest], 24h ; '$' + +loc_1C55E: ; CODE XREF: sub_1C3DF+91j + cmp di, [bp+var_2] + jl loc_1C473 + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_2], ax + add word ptr [bp+src], 2 + mov word_26C3A, ax + xor di, di + jmp short loc_1C594 +; --------------------------------------------------------------------------- + +loc_1C579: ; CODE XREF: sub_1C3DF+1B8j + mov ax, [bp+var_2] + add ax, ax + push ax + call sub_2980 + mov bx, di + shl bx, 2 + mov [bx-6EF8h], ax + mov word ptr [bx-6EFAh], 0 + inc di + +loc_1C594: ; CODE XREF: sub_1C3DF+198j + cmp di, 31h ; '1' + jl short loc_1C579 + xor di, di + jmp short loc_1C5F7 +; --------------------------------------------------------------------------- + +loc_1C59D: ; CODE XREF: sub_1C3DF+21Bj + mov ax, di + add ax, ax + les bx, dword_26B76 + add bx, ax + push es + les si, [bp+src] + mov ax, es:[si] + pop es + mov es:[bx], ax + add word ptr [bp+src], 2 + mov [bp+var_4], 1 + jmp short loc_1C5F0 +; --------------------------------------------------------------------------- + +loc_1C5BD: ; CODE XREF: sub_1C3DF+215j + mov bx, [bp+var_4] + shl bx, 2 + les bx, [bx-6EFAh] + mov ax, di + add ax, ax + add bx, ax + push es + push bx + les bx, [bp+src] + cmp byte ptr es:[bx], 0FFh + jnz short loc_1C5DD + mov ax, 0FFFFh + jmp short loc_1C5E5 +; --------------------------------------------------------------------------- + +loc_1C5DD: ; CODE XREF: sub_1C3DF+1F7j + les bx, [bp+src] + mov al, es:[bx] + mov ah, 0 + +loc_1C5E5: ; CODE XREF: sub_1C3DF+1FCj + pop bx + pop es + mov es:[bx], ax + inc word ptr [bp+src] + inc [bp+var_4] + +loc_1C5F0: ; CODE XREF: sub_1C3DF+1DCj + cmp [bp+var_4], 31h ; '1' + jl short loc_1C5BD + inc di + +loc_1C5F7: ; CODE XREF: sub_1C3DF+1BCj + cmp di, [bp+var_2] + jl short loc_1C59D + push [bp+var_6] + call sub_2A84 + pop di + pop si + leave + retf +sub_1C3DF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C608 proc far ; CODE XREF: sub_B3DA+1AEP + ; sub_C566+19P + push bp + mov bp, sp + push si + xor si, si + jmp short loc_1C63F +; --------------------------------------------------------------------------- + +loc_1C610: ; CODE XREF: sub_1C608+3Aj + mov bx, si + shl bx, 2 + mov ax, [bx-6EFAh] + or ax, [bx-6EF8h] + jz short loc_1C63E + mov bx, si + shl bx, 2 + push word ptr [bx-6EF8h] + call sub_2A84 + mov bx, si + shl bx, 2 + mov word ptr [bx-6EF8h], 0 + mov word ptr [bx-6EFAh], 0 + +loc_1C63E: ; CODE XREF: sub_1C608+15j + inc si + +loc_1C63F: ; CODE XREF: sub_1C608+6j + cmp si, 31h ; '1' + jl short loc_1C610 + pop si + pop bp + +locret_1C646: + retf +sub_1C608 endp + +seg005 ends + +; =========================================================================== + +; Segment type: Pure code +seg006 segment byte public 'CODE' use16 + assume cs:seg006 + ;org 7 + 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_1C647 proc far ; CODE XREF: sub_1C9FE+17p + ; sub_1CD36+12p + push bp + mov bp, sp + push si + xor si, si + jmp short loc_1C6BF +; --------------------------------------------------------------------------- + +loc_1C64F: ; CODE XREF: sub_1C647+7Bj + mov word_252FE, 0 + mov ax, si + imul ax, 3E8h + mov dx, 2710h + sub dx, ax + movsx eax, dx + mov bx, si + shl bx, 2 + mov [bx+7890h], eax + mov ax, si + sar ax, 1 + mov dl, 5 + sub dl, al + mov [si+7903h], dl + xor cx, cx + jmp short loc_1C68B +; --------------------------------------------------------------------------- + +loc_1C67E: ; CODE XREF: sub_1C647+47j + mov bx, si + imul bx, 7 + add bx, cx + mov byte ptr [bx+78BCh], 0DAh ; 'Ú' + inc cx + +loc_1C68B: ; CODE XREF: sub_1C647+35j + cmp cx, 6 + jl short loc_1C67E + mov bx, si + imul bx, 7 + mov byte ptr [bx+78C2h], 0 + mov bx, si + shl bx, 2 + mov word ptr [bx+790Eh], 76Ch + mov bx, si + shl bx, 2 + mov byte ptr [bx+7910h], 1 + mov bx, si + shl bx, 2 + mov byte ptr [bx+7911h], 1 + mov byte ptr [si+7936h], 1 + inc si + +loc_1C6BF: ; CODE XREF: sub_1C647+6j + cmp si, 0Ah + jl short loc_1C64F + pop si + pop bp + retf +sub_1C647 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C6C7 proc near ; CODE XREF: sub_1C9FE:loc_1CA1Ap + ; sub_1CD36:loc_1CD4Dp ... + push bp + mov bp, sp + push si + push large [off_1EDB4] + call sub_950 + mov al, byte_1E364 + cbw + imul ax, 0B6h + movzx eax, ax + push eax + push 0 + call sub_98C + push ds + push offset word_252FE + push 0B6h ; '¶' + call sub_89C + xor si, si + jmp short loc_1C705 +; --------------------------------------------------------------------------- + +loc_1C6FA: ; CODE XREF: sub_1C6C7+42j + mov al, [si+788Eh] + add al, 0EEh ; 'î' + mov [si+788Eh], al + inc si + +loc_1C705: ; CODE XREF: sub_1C6C7+31j + cmp si, 0B2h ; '²' + jl short loc_1C6FA + call sub_870 + pop si + pop bp + retn +sub_1C6C7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C713 proc far ; CODE XREF: sub_1C785+E0p + +var_B = byte ptr -0Bh +var_A = dword ptr -0Ah +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 0Ch, 0 + push si + mov [bp+var_6], 989680h + mov [bp+var_B], 0 + mov si, 1Ah + jmp short loc_1C77B +; --------------------------------------------------------------------------- + +loc_1C729: ; CODE XREF: sub_1C713+6Bj + mov eax, [bp+arg_2] + cdq + idiv [bp+var_6] + mov ebx, 0Ah + cdq + idiv ebx + mov [bp+var_A], edx + mov eax, [bp+var_6] + cdq + idiv ebx + mov [bp+var_6], eax + mov ax, word ptr [bp+var_A] + add ax, 0A0h ; ' ' + mov [bp+var_2], ax + cmp [bp+var_A], 0 + jz short loc_1C763 + mov [bp+var_B], 1 + +loc_1C763: ; CODE XREF: sub_1C713+4Aj + cmp [bp+var_B], 0 + jz short loc_1C778 + push si + push [bp+arg_6] + push [bp+var_2] + push [bp+arg_0] + call sub_1416 + +loc_1C778: ; CODE XREF: sub_1C713+54j + add si, 2 + +loc_1C77B: ; CODE XREF: sub_1C713+14j + cmp si, 2Ah ; '*' + jl short loc_1C729 + pop si + leave + retf 8 +sub_1C713 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C785 proc near ; CODE XREF: sub_1C9FE+47p + ; sub_1C9FE+176p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 2, 0 + push si + push di + mov di, 0E1h ; 'á' + push large 140002h + push ds + push offset aMO_0 ; "±²Ï¼¬¸»®" + push 81h ; '' + call sub_145A + push large 0C0004h + push ds + push offset aKO ; "¶ª·®" + push 81h ; '' + call sub_145A + push large 1B0004h + push ds + push offset asc_1EDF9 ; "¹¸²¶½" + push 81h ; '' + call sub_145A + push large 290004h + push ds + push offset asc_1EDFF ; "¼½" + push 81h ; '' + call sub_145A + cmp [bp+arg_0], 0FFFFh + jz short loc_1C82E + xor si, si + jmp short loc_1C815 +; --------------------------------------------------------------------------- + +loc_1C7E0: ; CODE XREF: sub_1C785+93j + mov [bp+var_2], 0 + jmp short loc_1C80E +; --------------------------------------------------------------------------- + +loc_1C7E7: ; CODE XREF: sub_1C785+8Dj + mov ax, [bp+var_2] + add ax, ax + add ax, 0Ah + push ax + lea ax, [si+12h] + push ax + mov bx, si + imul bx, 11h + add bx, [bp+var_2] + mov al, [bx+1351h] + mov ah, 0 + push ax + push 0E1h ; 'á' + call sub_1416 + inc [bp+var_2] + +loc_1C80E: ; CODE XREF: sub_1C785+60j + cmp [bp+var_2], 11h + jl short loc_1C7E7 + inc si + +loc_1C815: ; CODE XREF: sub_1C785+59j + cmp si, 3 + jl short loc_1C7E0 + push large 0A0012h + mov al, byte_1EDC1 + mov ah, 0 + push ax + push 85h ; '…' + call sub_1416 + +loc_1C82E: ; CODE XREF: sub_1C785+55j + xor si, si + jmp short loc_1C891 +; --------------------------------------------------------------------------- + +loc_1C832: ; CODE XREF: sub_1C785+10Fj + cmp si, [bp+arg_0] + jnz short loc_1C83C + mov di, 81h ; '' + jmp short loc_1C83F +; --------------------------------------------------------------------------- + +loc_1C83C: ; CODE XREF: sub_1C785+B0j + mov di, 0E1h ; 'á' + +loc_1C83F: ; CODE XREF: sub_1C785+B5j + push 0Ah + lea ax, [si+6] + push ax + mov ax, si + imul ax, 7 + add ax, 78BCh + push ds + push ax + push di + call sub_145A + lea ax, [si+6] + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+7890h] + push di + push cs + call near ptr sub_1C713 + cmp byte ptr [si+7903h], 7Fh ; '' + jz short loc_1C881 + push 2Ch ; ',' + lea ax, [si+6] + push ax + mov al, [si+7903h] + mov ah, 0 + add ax, 0A0h ; ' ' + push ax + jmp short loc_1C88A +; --------------------------------------------------------------------------- + +loc_1C881: ; CODE XREF: sub_1C785+E8j + push 2Ch ; ',' + lea ax, [si+6] + push ax + push 0F0h ; 'ð' + +loc_1C88A: ; CODE XREF: sub_1C785+FAj + push di + call sub_1416 + inc si + +loc_1C891: ; CODE XREF: sub_1C785+ABj + cmp si, 0Ah + jl short loc_1C832 + xor si, si + jmp short loc_1C8D8 +; --------------------------------------------------------------------------- + +loc_1C89A: ; CODE XREF: sub_1C785+156j + cmp si, [bp+arg_0] + jnz short loc_1C8A4 + mov di, 81h ; '' + jmp short loc_1C8A7 +; --------------------------------------------------------------------------- + +loc_1C8A4: ; CODE XREF: sub_1C785+118j + mov di, 0E1h ; 'á' + +loc_1C8A7: ; CODE XREF: sub_1C785+11Dj + cmp si, 9 + jz short loc_1C8B9 + push 6 + lea ax, [si+6] + push ax + lea ax, [si+0A1h] + push ax + jmp short loc_1C8D1 +; --------------------------------------------------------------------------- + +loc_1C8B9: ; CODE XREF: sub_1C785+125j + push large 5000Fh + push 0A1h ; '¡' + push di + call sub_1416 + push large 7000Fh + push 0A0h ; ' ' + +loc_1C8D1: ; CODE XREF: sub_1C785+132j + push di + call sub_1416 + inc si + +loc_1C8D8: ; CODE XREF: sub_1C785+113j + cmp si, 0Ah + jl short loc_1C89A + pop di + pop si + leave + retn 2 +sub_1C785 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C8E3 proc near ; CODE XREF: sub_1C9FE+1AAp + ; sub_1C9FE+1C2p ... + +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] + mov ax, si + add ax, ax + add ax, 0Ah + push ax + lea ax, [di+12h] + push ax + mov bx, di + imul bx, 11h + mov al, [bx+si+1351h] + mov ah, 0 + push ax + push [bp+arg_0] + call sub_1416 + pop di + pop si + pop bp + retn 6 +sub_1C8E3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C914 proc near ; CODE XREF: sub_1C9FE+2D6p + ; sub_1C9FE+2F6p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + push 0Ah + lea ax, [si+6] + push ax + mov ax, si + imul ax, 7 + add ax, 78BCh + push ds + push ax + push 81h ; '' + call sub_145A + mov ax, di + add ax, ax + add ax, 0Ah + push ax + lea ax, [si+6] + push ax + mov bx, si + imul bx, 7 + mov al, [bx+di+78BCh] + mov ah, 0 + push ax + push 85h ; '…' + call sub_1416 + pop di + pop si + pop bp + retn 4 +sub_1C914 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C95D proc far ; CODE XREF: sub_1C9FE+331p + ; sub_1CD8E+3Dp ... + push bp + mov bp, sp + push si + mov dword_25328, 0 + mov byte_25372, 0 + mov byte_2537D, 0 + mov dword_253B0, 0 + xor si, si + jmp short loc_1C9A6 +; --------------------------------------------------------------------------- + +loc_1C981: ; CODE XREF: sub_1C95D+4Cj + mov bx, si + shl bx, 2 + mov eax, [bx+7890h] + add dword_25328, eax + mov bx, si + imul bx, 7 + mov al, [bx+78BCh] + add byte_25372, al + mov al, [si+7903h] + add byte_2537D, al + inc si + +loc_1C9A6: ; CODE XREF: sub_1C95D+22j + cmp si, 0Ah + jl short loc_1C981 + xor si, si + jmp short loc_1C9C5 +; --------------------------------------------------------------------------- + +loc_1C9AF: ; CODE XREF: sub_1C95D+6Cj + movzx eax, byte ptr [si+788Eh] + add dword_253B0, eax + mov al, [si+788Eh] + add al, 12h + mov [si+788Eh], al + inc si + +loc_1C9C5: ; CODE XREF: sub_1C95D+50j + cmp si, 0B2h ; '²' + jl short loc_1C9AF + push large [off_1EDB4] + call sub_7B0 + mov al, byte_1E364 + cbw + imul ax, 0B6h + movzx eax, ax + push eax + push 0 + call sub_98C + push ds + push offset word_252FE + push 0B6h ; '¶' + call sub_9DC + call sub_870 + pop si + pop bp + retf +sub_1C95D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C9FE proc far ; CODE XREF: sub_C31F+EDP + +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 + + enter 0Ch, 0 + push si + push di + xor si, si + push large [off_1EDB4] + call sub_880 + or ax, ax + jnz short loc_1CA1A + push cs + call near ptr sub_1C647 + jmp short loc_1CA1D +; --------------------------------------------------------------------------- + +loc_1CA1A: ; CODE XREF: sub_1C9FE+14j + call sub_1C6C7 + +loc_1CA1D: ; CODE XREF: sub_1C9FE+1Aj + mov eax, dword_1E598 + imul eax, 0Ah + mov dword_1E598, eax + les bx, dword_2026C + movzx eax, word ptr es:[bx+12h] + add dword_1E598, eax + mov eax, dword_25324 + cmp eax, dword_1E598 + jle short loc_1CA50 + push 0FFFFh + call sub_1C785 + call sub_F4BC + jmp loc_1CD32 +; --------------------------------------------------------------------------- + +loc_1CA50: ; CODE XREF: sub_1C9FE+43j + mov [bp+var_2], 9 + jmp short loc_1CA6C +; --------------------------------------------------------------------------- + +loc_1CA57: ; CODE XREF: sub_1C9FE+72j + mov bx, [bp+var_2] + shl bx, 2 + mov eax, [bx+788Ch] + cmp eax, dword_1E598 + jg short loc_1CA72 + dec [bp+var_2] + +loc_1CA6C: ; CODE XREF: sub_1C9FE+57j + cmp [bp+var_2], 0 + jg short loc_1CA57 + +loc_1CA72: ; CODE XREF: sub_1C9FE+69j + mov [bp+var_4], 9 + jmp loc_1CB0C +; --------------------------------------------------------------------------- + +loc_1CA7A: ; CODE XREF: sub_1C9FE+114j + mov bx, [bp+var_4] + shl bx, 2 + mov eax, [bx+788Ch] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+7890h], eax + mov [bp+var_6], 0 + jmp short loc_1CAB4 +; --------------------------------------------------------------------------- + +loc_1CA97: ; CODE XREF: sub_1C9FE+BAj + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov al, [bx+78B5h] + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov [bx+78BCh], al + inc [bp+var_6] + +loc_1CAB4: ; CODE XREF: sub_1C9FE+97j + cmp [bp+var_6], 6 + jl short loc_1CA97 + mov bx, [bp+var_4] + mov al, [bx+7902h] + mov [bx+7903h], al + shl bx, 2 + mov ax, [bx+790Ah] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+790Eh], ax + mov bx, [bp+var_4] + shl bx, 2 + mov al, [bx+790Dh] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+7911h], al + mov bx, [bp+var_4] + shl bx, 2 + mov al, [bx+790Ch] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+7910h], al + mov bx, [bp+var_4] + mov al, [bx+7935h] + mov [bx+7936h], al + dec [bp+var_4] + +loc_1CB0C: ; CODE XREF: sub_1C9FE+79j + mov ax, [bp+var_4] + cmp ax, [bp+var_2] + jg loc_1CA7A + mov bx, [bp+var_2] + shl bx, 2 + mov eax, dword_1E598 + mov [bx+7890h], eax + mov bx, [bp+var_2] + mov al, byte_1E365 + inc al + mov [bx+7903h], al + mov ax, [bp+var_2] + shl ax, 2 + add ax, 790Eh + push ds + push ax ; datep + call _getdate + add sp, 4 + les bx, dword_2026C + mov al, es:[bx+26h] + mov bx, [bp+var_2] + mov [bx+7936h], al + mov [bp+var_6], 0 + jmp short loc_1CB6B +; --------------------------------------------------------------------------- + +loc_1CB5A: ; CODE XREF: sub_1C9FE+171j + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov byte ptr [bx+78BCh], 0DAh ; 'Ú' + inc [bp+var_6] + +loc_1CB6B: ; CODE XREF: sub_1C9FE+15Aj + cmp [bp+var_6], 6 + jl short loc_1CB5A + push [bp+var_2] + call sub_1C785 + xor di, di + mov [bp+var_8], 0 + mov word_1FFA8, 0 + mov [bp+var_A], 1 + +loc_1CB89: ; CODE XREF: sub_1C9FE+311j + mov [bp+var_B], 0 + +loc_1CB8D: ; CODE XREF: sub_1C9FE+31Cj + ; sub_1C9FE+324j ... + call sub_F62E + cmp [bp+var_A], 0 + jnz loc_1CCFE + test byte ptr word_1FFA8, 1 + jz short loc_1CBC3 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_1C8E3 + dec [bp+var_8] + cmp [bp+var_8], 0 + jge short loc_1CBB9 + mov [bp+var_8], 2 + +loc_1CBB9: ; CODE XREF: sub_1C9FE+1B4j + push di + push [bp+var_8] + push 85h ; '…' + call sub_1C8E3 + +loc_1CBC3: ; CODE XREF: sub_1C9FE+1A1j + test byte ptr word_1FFA8, 2 + jz short loc_1CBEC + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_1C8E3 + inc [bp+var_8] + cmp [bp+var_8], 2 + jle short loc_1CBE2 + mov [bp+var_8], 0 + +loc_1CBE2: ; CODE XREF: sub_1C9FE+1DDj + push di + push [bp+var_8] + push 85h ; '…' + call sub_1C8E3 + +loc_1CBEC: ; CODE XREF: sub_1C9FE+1CAj + test byte ptr word_1FFA8, 4 + jz short loc_1CC0F + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_1C8E3 + dec di + or di, di + jge short loc_1CC05 + mov di, 10h + +loc_1CC05: ; CODE XREF: sub_1C9FE+202j + push di + push [bp+var_8] + push 85h ; '…' + call sub_1C8E3 + +loc_1CC0F: ; CODE XREF: sub_1C9FE+1F3j + test byte ptr word_1FFA8, 8 + jz short loc_1CC32 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_1C8E3 + inc di + cmp di, 10h + jle short loc_1CC28 + xor di, di + +loc_1CC28: ; CODE XREF: sub_1C9FE+226j + push di + push [bp+var_8] + push 85h ; '…' + call sub_1C8E3 + +loc_1CC32: ; CODE XREF: sub_1C9FE+216j + test byte ptr word_1FFA8, 10h + jnz short loc_1CC42 + test byte ptr word_1FFA8, 80h + jz loc_1CCD7 + +loc_1CC42: ; CODE XREF: sub_1C9FE+239j + cmp [bp+var_8], 2 + jnz short loc_1CC4D + cmp di, 0Dh + jge short loc_1CC8A + +loc_1CC4D: ; CODE XREF: sub_1C9FE+248j + mov bx, [bp+var_8] + imul bx, 11h + mov al, [bx+di+1351h] + mov bx, [bp+var_2] + imul bx, 7 + mov [bx+si+78BCh], al + cmp si, 5 + jnz short loc_1CC82 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_1C8E3 + mov di, 10h + mov [bp+var_8], 2 + push di + push [bp+var_8] + push 85h ; '…' + call sub_1C8E3 + +loc_1CC82: ; CODE XREF: sub_1C9FE+266j + inc si + cmp si, 5 + jle short loc_1CCD0 + jmp short loc_1CCC6 +; --------------------------------------------------------------------------- + +loc_1CC8A: ; CODE XREF: sub_1C9FE+24Dj + cmp di, 0Dh + jnz short loc_1CCA2 + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+78BCh], 0CFh ; 'Ï' + inc si + cmp si, 5 + jle short loc_1CCD0 + jmp short loc_1CCC6 +; --------------------------------------------------------------------------- + +loc_1CCA2: ; CODE XREF: sub_1C9FE+28Fj + cmp di, 0Eh + jnz short loc_1CCBB + dec si + or si, si + jge short loc_1CCAE + xor si, si + +loc_1CCAE: ; CODE XREF: sub_1C9FE+2ACj + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+78BCh], 0CFh ; 'Ï' + jmp short loc_1CCD0 +; --------------------------------------------------------------------------- + +loc_1CCBB: ; CODE XREF: sub_1C9FE+2A7j + cmp di, 0Fh + jnz short loc_1CCCB + inc si + cmp si, 5 + jle short loc_1CCD0 + +loc_1CCC6: ; CODE XREF: sub_1C9FE+28Aj + ; sub_1C9FE+2A2j + mov si, 5 + jmp short loc_1CCD0 +; --------------------------------------------------------------------------- + +loc_1CCCB: ; CODE XREF: sub_1C9FE+2C0j + cmp di, 10h + jz short loc_1CD2E + +loc_1CCD0: ; CODE XREF: sub_1C9FE+288j + ; sub_1C9FE+2A0j ... + push [bp+var_2] + push si + call sub_1C914 + +loc_1CCD7: ; CODE XREF: sub_1C9FE+240j + test byte ptr word_1FFA8, 20h + jz short loc_1CCF7 + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+78BCh], 0CFh ; 'Ï' + dec si + or si, si + jge short loc_1CCF0 + xor si, si + +loc_1CCF0: ; CODE XREF: sub_1C9FE+2EEj + push [bp+var_2] + push si + call sub_1C914 + +loc_1CCF7: ; CODE XREF: sub_1C9FE+2DEj + test byte ptr word_1FFA8, 40h + jnz short loc_1CD2E + +loc_1CCFE: ; CODE XREF: sub_1C9FE+198j + push 1 + call sub_F618 + mov ax, word_1FFA8 + mov [bp+var_A], ax + cmp [bp+var_A], 0 + jz loc_1CB89 + inc [bp+var_B] + cmp [bp+var_B], 1Eh + jbe loc_1CB8D + test [bp+var_B], 1 + jnz loc_1CB8D + mov [bp+var_A], 0 + jmp loc_1CB8D +; --------------------------------------------------------------------------- + +loc_1CD2E: ; CODE XREF: sub_1C9FE+2D0j + ; sub_1C9FE+2FEj + push cs + call near ptr sub_1C95D + +loc_1CD32: ; CODE XREF: sub_1C9FE+4Fj + pop di + pop si + leave + retf +sub_1C9FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1CD36 proc far ; CODE XREF: sub_B2AB+10P + push bp + mov bp, sp + push large [off_1EDB4] + call sub_880 + or ax, ax + jnz short loc_1CD4D + push cs + call near ptr sub_1C647 + jmp short loc_1CD50 +; --------------------------------------------------------------------------- + +loc_1CD4D: ; CODE XREF: sub_1CD36+Fj + call sub_1C6C7 + +loc_1CD50: ; CODE XREF: sub_1CD36+15j + mov eax, dword_25300 + mov ebx, 0Ah + cdq + idiv ebx + cmp eax, dword_1E598 + jl short loc_1CD71 + mov eax, dword_25300 + cdq + idiv ebx + jmp short loc_1CD75 +; --------------------------------------------------------------------------- + +loc_1CD71: ; CODE XREF: sub_1CD36+2Ej + mov eax, dword_1E598 + +loc_1CD75: ; CODE XREF: sub_1CD36+39j + mov dword_252F8, eax + mov eax, dword_25300 + mov ebx, 0Ah + cdq + idiv ebx + mov byte_252FC, dl + pop bp + retf +sub_1CD36 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1CD8E proc far ; CODE XREF: sub_19D96+8FP + +var_7 = byte ptr -7 +var_6 = byte ptr -6 + + enter 8, 0 + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_1EE02 + mov cx, 6 + call SCOPY@ + mov al, byte_1E364 + mov [bp+var_7], al + les bx, dword_2026C + mov al, es:[bx+26h] + mov byte_1E364, al + call sub_1C6C7 + mov al, byte_1E364 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + mov word_252FE, ax + push cs + call near ptr sub_1C95D + mov al, [bp+var_7] + mov byte_1E364, al + leave + retf +sub_1CD8E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1CDD6 proc far ; CODE XREF: sub_16A21+32P + +var_5 = byte ptr -5 +var_4 = byte ptr -4 + + enter 6, 0 + lea ax, [bp+var_4] + push ss + push ax + push ds + push offset unk_1EE08 + mov cx, 3 + call SCOPY@ + mov al, byte_1E364 + mov [bp+var_5], al + mov byte_1E364, 3 + call sub_1C6C7 + les bx, dword_2026C + mov al, es:[bx+26h] + mov ah, 0 + lea dx, [bp+var_4] + add ax, dx + mov bx, ax + mov al, ss:[bx] + mov ah, 0 + +loc_1CE0F: + or word_252FE, ax + push cs + +loc_1CE14: + call near ptr sub_1C95D + mov al, [bp+var_5] + mov byte_1E364, al + leave + retf +sub_1CDD6 endp + +seg006 ends + +; =========================================================================== + +; Segment type: Pure code +seg007 segment byte public 'CODE' use16 + assume cs:seg007 + ;org 0Fh + 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, 0AA8Fh + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_1CE4E + 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_1CE68 + +loc_1CE4E: ; 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_1CE68: ; 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_1CE8E db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:AA87o + db 0Dh dup(0), 2, 0, 2, 0, 95h, 0AAh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0C0h, 0 + dw seg seg007 + 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, 9Ch, 71h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string__string(__int32, char *s) +@string@$bctr$qnxc proc far ; CODE XREF: string::contains(char *)+25P + ; string::assert_element(uint)+5Ap ... + +var_22 = word ptr -22h +var_16 = word ptr -16h +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 0AB01h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_1CF37 + 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_1CFAB + +loc_1CF37: ; 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_1CF9B + 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_1CF6D + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_1CF6F +; --------------------------------------------------------------------------- + +loc_1CF6D: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_1CF6F: ; 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_1CF9B: ; 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_1CFAB: ; 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, 0A0h, 2 + dw seg seg007 +aTstringref db 'TStringRef *',0 +byte_1CFE8 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:AAEBo + db 0Dh dup(0), 2, 0, 2, 0, 17h, 0ABh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_1D078 + dw 0 + db 3, 0Dh dup(0) +byte_1D036 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:AAE7o + db 0Dh dup(0), 2, 0, 2, 0, 64h, 0ABh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 68h, 2 + dw seg seg007 + db 2 dup(0), 3, 0Dh dup(0) +byte_1D078 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg007:0212o + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 71h + 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, 0B7h, 6 + dw seg seg007 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0E6h, 2 + dw seg seg007 + dw 0 + db 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh), 1, 0 + db 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h, 72h + db 65h, 6Eh, 63h, 65h, 0Ah dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string___string(void (*driver)(void), char) +@string@$bdtr$qv proc far ; CODE XREF: string::contains(char *)+45P + ; xmsg::~xmsg(void)+3FP ... + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 0ABBAh + 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_1D19C + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_1D189 + 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_1D4C7 + add sp, 6 + +loc_1D189: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_1D19C + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_1D19C: ; CODE XREF: string::~string(void)+2Bj + ; string::~string(void)+69j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@$bdtr$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::assert_element(unsigned int)const +@string@assert_element$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 0ABEEh + 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_1D1D7 + mov ax, 1 + jmp short loc_1D1D9 +; --------------------------------------------------------------------------- + +loc_1D1D7: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_1D1D9: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_1D25A + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 0ACE0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 1950h + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0C09h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1D25A: ; CODE XREF: string::assert_element(uint)+31j + push [bp+var_26] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@assert_element$xqui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::assert_index(unsigned int)const +@string@assert_index$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 0AC32h + 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_1D295 + mov ax, 1 + jmp short loc_1D297 +; --------------------------------------------------------------------------- + +loc_1D295: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_1D297: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_1D318 + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 0ACE0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 196Eh + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0C09h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1D318: ; CODE XREF: string::assert_index(uint)+31j + push [bp+var_26] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@assert_index$xqui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; TSubString::assert_element(unsigned int)const +@TSubString@assert_element$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 0AC76h + 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_1D350 + mov ax, 1 + jmp short loc_1D352 +; --------------------------------------------------------------------------- + +loc_1D350: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_1D352: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_1D3D3 + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 0ACE0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 198Ch + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0C09h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_1D3D3: ; 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_1D405 + 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_1D405 + jmp loc_1D4AB +; --------------------------------------------------------------------------- + +loc_1D405: ; 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_1D65F + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_5838 + 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_1D45F + push ds + mov ax, 16A6h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1D45F: ; 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_1D4AB: ; 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_1D4C7(void (*driver)(void), char) +sub_1D4C7 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, 0AC90h + 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_1D519 + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_5705 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_1D519 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_1D519: ; CODE XREF: sub_1D4C7+2Bj + ; sub_1D4C7+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D4C7 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, 0ACA2h + 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_1D65F + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_1F3BE + jbe short loc_1D587 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_599F + 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_1D587: ; CODE XREF: seg007:074Ej + 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, 0ACACh + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_1D65F + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_1F3BE + jbe short loc_1D5EF + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_599F + 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_1D5EF: ; CODE XREF: seg007:07B6j + 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_1D5FD proc far ; CODE XREF: seg007:08CEp + +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, 0ACBEh + 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_599F + 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_1D651 + push ds + mov ax, 16A6h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1D651: ; CODE XREF: sub_1D5FD+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_1D5FD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_1D65F proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg007:0739p ... + +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, 0ACC8h + call ___InitExceptBlocks + mov ax, word_1F3BA + mov [bp+var_20], ax + mov cx, word_1F3BC + 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_1D65F endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; TStringRef::splice(unsigned int, unsigned int, char const *, unsigned int) +@TStringRef@splice$quiuinxcui: + sub sp, 26h + push si + push di + mov ax, seg seg000 + mov bx, 0ACDAh + call ___InitExceptBlocks + les bx, [bp+6] + mov ax, es:[bx+6] + add ax, [bp+12h] + sub ax, [bp+0Ch] + mov [bp-24h], ax + push ax + push cs + call near ptr sub_1D65F + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_1D6E6 + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_1D5FD + add sp, 6 + jmp short loc_1D755 +; --------------------------------------------------------------------------- + +loc_1D6E6: ; CODE XREF: seg007:08C4j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_1F3BE + jbe short loc_1D755 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_1D755 + mov ax, [bp-26h] + inc ax + push ax + call sub_5838 + pop cx + mov [bp-20h], dx + mov [bp-22h], ax + les bx, [bp+6] + mov ax, es:[bx+2] + or ax, es:[bx+4] + jnz short loc_1D727 + push ds + mov ax, 16A6h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_1D727: ; CODE XREF: seg007:0909j + cmp word ptr [bp+0Ah], 0 + jz short loc_1D749 + push word ptr [bp+0Ah] + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + push word ptr [bp-20h] + push word ptr [bp-22h] + call _memcpy + add sp, 0Ah + +loc_1D749: ; CODE XREF: seg007:091Bj + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_1D766 +; --------------------------------------------------------------------------- + +loc_1D755: ; CODE XREF: seg007:08D4j seg007:08E4j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_1D766: ; CODE XREF: seg007:0943j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_1D783 + cmp ax, [bp-22h] + jnz short loc_1D783 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_1D7B5 + +loc_1D783: ; CODE XREF: seg007:0964j seg007:0969j + les bx, [bp+6] + mov ax, es:[bx+6] + sub ax, [bp+0Ah] + sub ax, [bp+0Ch] + push ax + mov ax, es:[bx+2] + add ax, [bp+0Ah] + add ax, [bp+0Ch] + push word ptr es:[bx+4] + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + add ax, [bp+12h] + push word ptr [bp-20h] + push ax + call _memmove + add sp, 0Ah + +loc_1D7B5: ; CODE XREF: seg007:0971j + cmp word ptr [bp+12h], 0 + jz short loc_1D7F9 + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_1D7E0 + push word ptr [bp+12h] + push word ptr [bp+10h] + push word ptr [bp+0Eh] + mov ax, [bp-22h] + add ax, [bp+0Ah] + push word ptr [bp-20h] + push ax + call _memmove + add sp, 0Ah + jmp short loc_1D7F9 +; --------------------------------------------------------------------------- + +loc_1D7E0: ; CODE XREF: seg007:09B1j + push word ptr [bp+12h] + mov ax, 20h ; ' ' + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + push word ptr [bp-20h] + push ax + call _memset + add sp, 8 + +loc_1D7F9: ; CODE XREF: seg007:09A9j seg007:09CEj + les bx, [bp+6] + mov ax, [bp-24h] + mov es:[bx+6], ax + push es + les ax, [bp-22h] + mov dx, es + pop es + add ax, es:[bx+6] + mov bx, ax + mov es, dx + mov byte ptr es:[bx], 0 + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_1D82B + cmp ax, [bp-22h] + jz short loc_1D84E + +loc_1D82B: ; CODE XREF: seg007:0A14j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_5705 + pop cx + pop cx + les bx, [bp+6] + mov dx, [bp-20h] + mov ax, [bp-22h] + mov es:[bx+4], dx + mov es:[bx+2], ax + +loc_1D84E: ; CODE XREF: seg007:0A19j + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::set_case_sensitive(int) +@string@set_case_sensitive$qi: + sub sp, 2 + push si + push di + mov ax, word_1F3B4 + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3B4, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::set_paranoid_check(int) +@string@set_paranoid_check$qi: + sub sp, 2 + push si + push di + mov ax, word_1F3B6 + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3B6, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::skip_whitespace(int) +@string@skip_whitespace$qi: + sub sp, 2 + push si + push di + mov ax, word_1F3B8 + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3B8, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::initial_capacity(unsigned int) +@string@initial_capacity$qui: + sub sp, 2 + push si + push di + mov ax, word_1F3BA + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3BA, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::resize_increment(unsigned int) +@string@resize_increment$qui: + sub sp, 2 + push si + push di + mov ax, word_1F3BC + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3BC, ax + cmp word_1F3BC, 0 + jnz short loc_1D8F1 + mov word_1F3BC, 1 + +loc_1D8F1: ; CODE XREF: seg007:0AD9j + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::max_waste(unsigned int) +@string@max_waste$qui: + sub sp, 2 + push si + push di + mov ax, word_1F3BE + mov [bp-2], ax + mov ax, [bp+6] + mov word_1F3BE, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_1D917 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:ACB6o seg000:ACD2o + db 0Dh dup(0), 2, 0, 2, 0, 15h, 0ADh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_1D9A7 + 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, 62h, 0ADh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 97h, 0Bh + dw seg seg007 + db 2 dup(0), 3, 0Dh dup(0) +byte_1D9A7 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg007:0B41o + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 71h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_1D9DF db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:ABC8o seg000:AC50o + db 0Dh dup(0), 1, 0, 1, 0, 14h, 3 + dw seg seg007 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_1DA19 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:AC9Ao + db 0Dh dup(0), 2, 0, 2, 0, 0AFh, 0ADh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0, 97h, 0Bh + dw seg seg007 + db 2 dup(0), 3, 16h dup(0) +seg007 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_1DA70 dw 0 ; DATA XREF: sub_48A+7r sub_5634+20r ... +word_1DA72 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +word_1DA74 dw 554Eh ; DATA XREF: sub_48A+20w sub_56A5+Cr ... +word_1DA76 dw 4C4Ch ; DATA XREF: sub_48A+Br sub_56A5+2r ... +off_1DA78 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_55D1+24r ... + dw offset sub_4548 +off_1DA7C dw offset sub_4B43 ; DATA XREF: sub_78EC+77r sub_78EC+A1r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aBorlandCCopyri db 'Borland C++ - Copyright 1993 Borland Intl.',0 +aDivideError db 'Divide error',0Dh,0Ah,0 +dword_1DACA dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_1DACE dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_1DAD2 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_1DAD6 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_1DADE dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:AA7Ew +word_1DAE2 dw 0 ; DATA XREF: start+127r seg000:AA78w +word_1DAE4 dw 0 ; DATA XREF: start+46w +word_1DAE6 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_1DAE8 dw 0 ; DATA XREF: start+55w seg000:AA33r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_1DAEC dw 0 ; DATA XREF: start+16w start+C7r ... +word_1DAEE dw 0 ; DATA XREF: __IOERROR:loc_4DF0w + ; seg000:5D38w ... + db 0FFh + db 0FFh + db 0BAh ; º + db 93h ; “ +word_1DAF4 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_1DAF6 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_1DAF8 dw 0 ; DATA XREF: sub_5A20+6Ew __sbrk+12r ... +word_1DAFA dw 0 ; DATA XREF: start+8Bw sub_5A20+6Aw ... +word_1DAFC dw 0 ; DATA XREF: sub_5A20+7Ew __brk+1Cr ... +word_1DAFE dw 0 ; DATA XREF: start+21w start+F5w ... +aKOb db '¼½ª°®¡',0 ; DATA XREF: _main+ACo sub_B3DA+115w + dd 0 + dd 0 + db 0 +aOKKO db '®Á½»ªÏϼ½ª°®',0 ; DATA XREF: _main+99o + db 0 + db 0 + db 0 + db 18h + db 1 + db 31h ; 1 + db 1 + db 4Ah ; J + db 1 + db 63h ; c + db 1 + db 7Ch ; | + db 1 + db 95h ; • + db 1 + db 0AEh ; ® + db 1 + db 0C7h ; Ç + db 1 + db 0E0h ; à + db 1 + db 0F9h ; ù + db 1 + db 12h + db 2 + db 2Bh ; + + db 2 + db 44h ; D + db 2 + db 59h ; Y + db 2 + db 74h ; t + db 2 + db 8Bh ; ‹ + db 2 + db 0A4h ; ¤ + db 2 + db 0BFh ; ¿ + db 2 + db 0Ah + db 0Dh + db 0Bh + db 0Ch + db 0Dh + db 0Dh +aNoK db '­®·¸Ï¹µªÂ',0 ; DATA XREF: _main+DAo +aKOO db '¹ª¾¼®Ï·®¶¾',0 ; DATA XREF: sub_B9E2+4Co +asc_1DB5F db 'ÏÏÏÏÏÏÏÏÏÏÏ',0 ; DATA XREF: sub_B9E2+58o + ; sub_B9E2+175o ... + db 0 +off_1DB6C dd aGqbGapic ; DATA XREF: sub_B9E2+24r sub_B9E2+D2r ... + ; "ƒQ[ƒ€I—¹" +off_1DB70 dd aGqbGanKj ; DATA XREF: sub_B9E2+11r sub_B9E2+BCr ... + ; "ƒQ[ƒ€ÄŠJ" +byte_1DB74 db 0 ; DATA XREF: sub_B9E2+92r sub_B9E2+96w ... + db 0 +off_1DB76 dd aVV2 ; DATA XREF: sub_B9E2+107r + ; "‚Ù‚ñ‚Æ‚ÉI—¹‚µ‚¿‚Ⴄ‚Ì" +off_1DB7A dd aVdvVVBbvVVVV ; DATA XREF: sub_B9E2+11Ar + ; sub_B9E2+212r + ; "‚¤‚»‚Å‚·B‚·‚Ý‚Ü‚¹‚ñB" +off_1DB7E dd aB@b@vVvbavtvVV ; DATA XREF: sub_B9E2+12Dr + ; sub_B9E2+228r + ; "@@‚Í‚¢A‚â‚ß‚Ü‚·B@" +dword_1DB82 dd 0 ; DATA XREF: sub_BCB1+7r +word_1DB86 dw 0 ; DATA XREF: sub_C1E4+Ar sub_C1E4+1Bw ... +aB@Focab@bEaste db '@ ”Ž—í@`Eastern Wind ',0 +aB@SheSInATempe db '@ She',27h,'s in a temper!! ',0 +aB@EndOfDayligh db '@ End of Daylight@ ',0 +aB@VtvVVVivcb@b db ' @ ‚â‚Ý‚Ì‚¿‚©‚ç@@ ',0 +aB@b@b@b@b@mCKe db '@@@@@Œ¶–²ŠE@@@@',0 +aB@b@b@oav db ' @@@Ž€‚ð“q‚µ‚Ä@@@ ',0 +aVVrvivmbavVcvV db '‚Ђà‚났A‚ނ炳‚«‚É‚à‚¦',0 +aB@C db ' @ —öFƒ}ƒWƒbƒN @ ',0 +aB@umx db '@“Œ•û••–‚˜^@`—HŒ¶—•‘',0 +aCompleteDarkne db ' Complete Darkness ',0 +aB@Ggglgxgggigi db ' @ ƒGƒLƒXƒgƒ‰ƒ‰ƒu ',0 +aRaoVVVVVVsvfv db ' íŽÔ‚Þ‚·‚ß‚Ì‚Ý‚é‚ä‚ß ',0 +aOzcB@bPurpleDa db 'Ž‡–ì@` Purple Dawn',0 +aClpbb@bMidnigh db '—‹b@`Midnight Rainstorm',0 +aNgcB@bScarletD db 'g–²@` Scarlet Dream',0 +aCCvb@bRevengef db '—ì–‚@`Revengeful Ghost',0 +aXxcvb@bUmx db '••–‚@`“Œ•û••–‚˜^ and ...',0 +aIL db 'ˆÙ‹ó@`for Lunatic Gamers',0 +; char arg0[3] +arg0 db 'op',0 ; DATA XREF: _main+138o +aHuuma_efc db 'huuma.efc',0 ; DATA XREF: sub_B2AB+8o +aEye_pi db 'EYE.PI',0 ; DATA XREF: sub_B2AB+16o +aMiko_bft db 'miko.bft',0 ; DATA XREF: sub_B2AB+24o +aMiko32_bft db 'miko32.bft',0 ; DATA XREF: sub_B2AB+2Do +aMiko16_bft db 'miko16.bft',0 ; DATA XREF: sub_B2AB+36o +aBmt db 'bmt',0 ; DATA XREF: sub_B3DA+145o +aBbt db 'bbt',0 ; DATA XREF: sub_B3DA+15Bo +aMap db 'map',0 ; DATA XREF: sub_B3DA+171o +aMpn db 'mpn',0 ; DATA XREF: sub_B3DA+18Co +aM db 'm',0 ; DATA XREF: sub_B3DA+4CFo + db 0 + db 0 +aMiko_k_mpn db 'miko_k.mpn',0 ; DATA XREF: sub_B3DA+528o +aGqbGapic db 'ƒQ[ƒ€I—¹',0 ; DATA XREF: dseg:off_1DB6Co +aGqbGanKj db 'ƒQ[ƒ€ÄŠJ',0 ; DATA XREF: dseg:off_1DB70o +aVV2 db '‚Ù‚ñ‚Æ‚ÉI—¹‚µ‚¿‚Ⴄ‚Ì',0 ; DATA XREF: dseg:off_1DB76o +aVdvVVBbvVVVV db '‚¤‚»‚Å‚·B‚·‚Ý‚Ü‚¹‚ñB',0 ; DATA XREF: dseg:off_1DB7Ao +aB@b@vVvbavtvVV db '@@‚Í‚¢A‚â‚ß‚Ü‚·B@',0 ; DATA XREF: dseg:off_1DB7Eo +asc_1DDF7 db ' ',0 + ; DATA XREF: sub_C05D+20o sub_C05D+32o +aDemo1_rec db 'DEMO1.REC',0 ; DATA XREF: sub_C13E+39o +aDemo2_rec db 'DEMO2.REC',0 ; DATA XREF: sub_C13E+5Do +aDemo3_rec db 'DEMO3.REC',0 ; DATA XREF: sub_C13E+81o + 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_1DF4C dw 0 ; DATA XREF: sub_66A+Er sub_66A+60r ... +word_1DF4E dw 27Fh ; DATA XREF: sub_AB8+19r sub_F1E+30w ... +word_1DF50 dw 27Fh ; DATA XREF: sub_66A:loc_67Er + ; sub_66A:loc_6D4r ... +word_1DF52 dw 0 ; DATA XREF: sub_AB8:loc_AF6r + ; sub_B88+3r ... +word_1DF54 dw 18Fh ; DATA XREF: sub_66A+33r sub_66A+47r ... +word_1DF56 dw 18Fh ; DATA XREF: sub_F1E+6Bw sub_158C+40w ... +word_1DF58 dw 0A800h ; DATA XREF: sub_AB8+66r sub_B88+19r ... +word_1DF5A dw 7CB0h ; DATA XREF: sub_F1E+74w sub_FB0+13r ... + db 0 + db 0 + db 80h ; € + db 0 + db 0C0h ; À + db 0 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 0 + db 0F8h ; ø + db 0 + db 0FCh ; ü + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 80h ; € + db 0FFh + db 0C0h ; À + db 0FFh + db 0E0h ; à + db 0FFh + db 0F0h ; ð + db 0FFh + db 0F8h ; ø + db 0FFh + db 0FCh ; ü + db 0FFh + db 0FEh ; þ + db 0FFh + db 0FFh +word_1DF7E dw 0 ; DATA XREF: sub_89C+5r sub_89C+26r ... +word_1DF80 dw 0FFFFh ; DATA XREF: sub_7B0+6r sub_7B0+1Fw ... +byte_1DF82 db 0 ; DATA XREF: sub_A98+4r + db 0 +word_1DF84 dw 0 ; DATA XREF: sub_1340+2r sub_1340+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_1DF8E dw 0A800h ; DATA XREF: sub_F1E+7Er sub_158C+9w ... +word_1DF90 dw 3E80h ; DATA XREF: sub_158C+Fw sub_15DA+14r ... +word_1DF92 dw 190h ; DATA XREF: sub_F1E+4Fr sub_158C+3Cw ... +word_1DF94 dw 50h ; DATA XREF: sub_F1E+19r sub_F1E+6Er +word_1DF96 dw 0 ; DATA XREF: sub_CC0+56r seg000:0E3Br ... + db 55h ; U + db 0 +word_1DF9A 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_1DFCC dw 0 ; DATA XREF: seg000:1F21r + db 0 + db 0 + db 0 + db 0 +word_1DFD2 dw 200h ; DATA XREF: sub_574+9r sub_574+2Fr +word_1DFD4 dw 0 ; DATA XREF: sub_574:loc_5B0w + ; sub_574+48w ... +byte_1DFD6 db 0 ; DATA XREF: sub_3C00+4Fr sub_F913+28w + db 0 +dword_1DFD8 dd 1 ; DATA XREF: sub_2164+Cr sub_2164+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_1E25E dw 0A000h ; DATA XREF: sub_1416+13r sub_145A+13r ... + db 50h ; P + db 0 +word_1E262 dw 1 ; DATA XREF: sub_166A+2Er +aMasterl_libVer db 'MASTERL.LIB Version 0.23 Copyright (c)1995 A.Koizuka,Kazumi,steel' + db 'man,iR,All rights reserved.',0 + db 0 +unk_1E2C2 db 0 ; DATA XREF: sub_27B4+26r + db 0 +word_1E2C4 dw 0 ; DATA XREF: sub_27B4+18r +word_1E2C6 dw 0 ; DATA XREF: sub_2740+Ew sub_2740+16w ... +byte_1E2C8 db 0 ; DATA XREF: sub_2740+24r sub_2740+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_1E2D2 dw 0 ; DATA XREF: sub_25A4r sub_2932+6w ... +word_1E2D4 dw 0 ; DATA XREF: sub_2910+15w sub_2932+1Bw ... +word_1E2D6 dw 0 ; DATA XREF: sub_574+3w sub_1718+DFw ... +word_1E2D8 dw 100h ; DATA XREF: sub_2958+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_1E2DF db 0 ; DATA XREF: sub_2E7C+24r + ; sub_2E7C:loc_2EC2r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_1E2E6 dw 0 ; DATA XREF: sub_2E7C+6Er +word_1E2E8 dw 0 ; DATA XREF: sub_2E7C+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_1E2F6 dw 0 ; DATA XREF: sub_2E7C+32r + db 0 + db 0 +word_1E2FA dw 0 ; DATA XREF: sub_2B50r sub_2B50+7r ... +word_1E2FC dw 0 ; DATA XREF: sub_2B50:loc_2B6Dr + ; sub_2B94+5r ... +word_1E2FE dw 0 ; DATA XREF: sub_2B50+24r sub_2B50+2Br +byte_1E300 db 5 ; DATA XREF: sub_F464+4r sub_F464+2Fr +byte_1E301 db 3 ; DATA XREF: sub_F464+10r sub_F464+3Br +byte_1E302 db 0 ; DATA XREF: sub_F464+1Cr sub_F464+47r + db 0 +a_exe db '.exe',0 +byte_1E309 db 0 ; DATA XREF: sub_3CE0+3Bw sub_3CE0+4Fw ... +byte_1E30A db 0 ; DATA XREF: sub_F786:loc_F79Cw + ; sub_F9F6+3r ... + db 0 +byte_1E30C db 1 ; DATA XREF: sub_F4D1+4w sub_F4D1+15w ... +byte_1E30D db 0 ; DATA XREF: sub_F886+1Cw + ; sub_F886:loc_F8C8r ... +aUmx db '“Œ•û••–‚.˜^',0 ; DATA XREF: sub_F913+2Eo +byte_1E31A db 0FFh ; DATA XREF: sub_FA46+5w sub_FA52+Dr ... + db 0 + db 0 + db 20h + db 9 + db 2 + db 10h + db 5 + db 6 + db 30h ; 0 + db 8 + db 9 + db 5 + db 10h + db 0Ah + db 11h + db 0Ch + db 20h + db 20h + db 10h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 24h ; $ + db 10h + db 4 + db 10h + db 8 + db 0Ah + db 30h ; 0 + db 50h ; P + db 18h + db 11h + db 0Bh + db 4 + db 50h ; P + db 10h + db 30h ; 0 + db 4Ah ; J + db 20h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_1E35D db 0 ; DATA XREF: sub_FA46w sub_FA52+31w ... + db 0 + db 80h ; € + db 0C0h ; À + db 0E0h ; à + db 0F0h ; ð + db 0F8h ; ø +byte_1E364 db 1 ; DATA XREF: sub_B2AB:loc_B34Cr + ; sub_C273+57w ... +byte_1E365 db 0 ; DATA XREF: _main+89r _main+11Ar ... +aHuuma_cfg db 'huuma.cfg',0 ; DATA XREF: sub_C273+5o + db '<',0 + db '~',0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 7Eh ; ~ + db 0 + db 3Ch ; < + db 0 + db 1Eh + db 0 + db 3Fh ; ? + db 0 + db 7Fh ;  + db 80h ; € + db 7Fh ;  + db 80h ; € + db 7Fh ;  + db 80h ; € + db 7Fh ;  + db 80h ; € + db 3Fh ; ? + db 0 + db 1Eh + db 0 + db 0Fh + db 0 + db 1Fh + db 80h ; € + db 3Fh ; ? + db 0C0h ; À + db 3Fh ; ? + db 0C0h ; À + db 3Fh ; ? + db 0C0h ; À + db 3Fh ; ? + db 0C0h ; À + db 1Fh + db 80h ; € + db 0Fh + db 0 + db 7 + db 80h ; € + db 0Fh + db 0C0h ; À + db 1Fh + db 0E0h ; à + db 1Fh + db 0E0h ; à + db 1Fh + db 0E0h ; à + db 1Fh + db 0E0h ; à + db 0Fh + db 0C0h ; À + db 7 + db 80h ; € + db 3 + db 0C0h ; À + db 7 + db 0E0h ; à + db 0Fh + db 0F0h ; ð + db 0Fh + db 0F0h ; ð + db 0Fh + db 0F0h ; ð + db 0Fh + db 0F0h ; ð + db 7 + db 0E0h ; à + db 3 + db 0C0h ; À + db 1 + db 0E0h ; à + db 3 + db 0F0h ; ð + db 7 + db 0F8h ; ø + db 7 + db 0F8h ; ø + db 7 + db 0F8h ; ø + db 7 + db 0F8h ; ø + db 3 + db 0F0h ; ð + db 1 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 1 + db 0F8h ; ø + db 3 + db 0FCh ; ü + db 3 + db 0FCh ; ü + db 3 + db 0FCh ; ü + db 3 + db 0FCh ; ü + db 1 + db 0F8h ; ø + db 0 + db 0F0h ; ð + db 0 + db 78h ; x + db 0 + db 0FCh ; ü + db 1 + db 0FEh ; þ + db 1 + db 0FEh ; þ + db 1 + db 0FEh ; þ + db 1 + db 0FEh ; þ + db 0 + db 0FCh ; ü + db 0 + db 78h ; x +asc_1E3F0 db '«¸¶¾¼',0 ; DATA XREF: sub_FC53+10o +asc_1E3F6 db '«¸¶¾¼',0 ; DATA XREF: sub_FE12+10o +aUqiUx db ' “ïˆÕ“x',0 ; DATA XREF: sub_FC53+40o +aGxgebGw db 'ƒXƒe[ƒW',0 ; DATA XREF: sub_FC53+57o +aGGa db 'ƒ{ƒ€',0 ; DATA XREF: sub_FC53+86o +aGGx db 'ƒ~ƒX',0 ; DATA XREF: sub_FC53+ABo +aSMvpik db 'èËŒ‚‰Šú”',0 ; DATA XREF: sub_FC53+BAo +aSCPik db 'èË–²‰Šú”',0 ; DATA XREF: sub_FC53+DCo +aU_ db '“_',0 ; DATA XREF: sub_FC53+10Eo + ; sub_FE12+CEo +aB db '~',0 ; DATA XREF: sub_FC53+133o + ; sub_FE12+F3o +aBb db '',0 ; DATA XREF: sub_FC53+163o + ; sub_FE12+123o +aGngkga db 'ƒNƒŠƒA',0 ; DATA XREF: sub_FE12+40o +aGGxi db 'ƒ~ƒX‰ñ”',0 ; DATA XREF: sub_FE12+67o +aGGai db 'ƒ{ƒ€‰ñ”',0 ; DATA XREF: sub_FE12+8Co +aGngkgagGcga db 'ƒNƒŠƒAƒ^ƒCƒ€',0 ; DATA XREF: sub_FE12+BBo +aKOO_0 db '°ª·®¸¿®»',0 ; DATA XREF: sub_C31F+3Fo sub_C31F+67o ... +aMO db '¬¸¶½²¶¾®Ý',0 ; DATA XREF: sub_C31F+116o +aO db '®¼',0 ; DATA XREF: sub_C2F4+Ao +asc_1E473 db '¶¸',0 ; DATA XREF: sub_C2F4+1Co + db 0 +aMOn db '¬»®­²½',0 ; DATA XREF: sub_C31F+131o +asc_1E47E db ' ',0 ; DATA XREF: sub_C31F+30o sub_C31F+53o ... + db 0 + db 0E8h ; è + db 3 + db 64h ; d + db 0 + db 0Ah + db 0 + db 1 + db 0 + db 0 + db 38h ; 8 + db 44h ; D + db 82h ; ‚ + db 82h ; ‚ + db 82h ; ‚ + db 44h ; D + db 38h ; 8 + db 0 + db 0 + db 0 + db 6 + db 7Eh ; ~ + db 0 + db 0 + db 0 + db 0 + db 0Ch + db 3Ch ; < + db 0 + db 0 + db 6 + db 7Eh ; ~ + db 0 + db 6 + db 7Eh ; ~ + db 0 + db 6 + db 3Ch ; < + db 0 + db 3 + db 0FFh + db 0 + db 7Eh ; ~ + db 5Ah ; Z + db 7Eh ; ~ + db 42h ; B + db 42h ; B + db 7Eh ; ~ + db 0 + db 0 + db 7Eh ; ~ + db 8 + db 10h + db 7Ch ; | + db 24h ; $ + db 44h ; D + db 0FFh + db 0 + db 18h + db 7Eh ; ~ + db 0 + db 0 + db 24h ; $ + db 42h ; B + db 0 + db 0 + db 20h + db 7Eh ; ~ + db 20h + db 20h + db 3Ch ; < + db 0 + db 0 + db 0 + db 4 + db 24h ; $ + db 22h ; " + db 42h ; B + db 41h ; A + db 0 + db 0 + db 0 + db 10h + db 3Eh ; > + db 24h ; $ + db 26h ; & + db 4Ah ; J + db 8Eh ; Ž + db 0 + db 0 + db 0 + db 24h ; $ + db 18h + db 18h + db 24h ; $ + db 0 + db 0 + db 0 + db 18h + db 18h + db 0 + db 0FFh + db 0 + db 18h + db 18h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_1E500 db 4 ; DATA XREF: sub_B3DA+249w + ; sub_B3DA+3FBw ... +byte_1E501 db 0 ; DATA XREF: sub_BCB1+BAr + ; sub_BCB1+198w ... +byte_1E502 db 0 ; DATA XREF: sub_CA1C+2Ew +byte_1E503 db 0 ; DATA XREF: sub_BCB1:loc_BD62w + ; sub_BCB1+EEw ... + db 27h ; ' + db 0 + db 27h ; ' + db 0 + db 27h ; ' + db 0 + db 28h ; ( + db 0 + db 29h ; ) + db 0 + db 2Fh ; / + db 0 +byte_1E510 db 20h ; DATA XREF: sub_FFF8+115r + ; sub_FFF8+1D7r ... + db 0 +word_1E512 dw 0 ; DATA XREF: sub_EF36+6Dr sub_F1D8+80w ... + db 0 + db 0 +byte_1E516 db 1 ; DATA XREF: sub_C13E+14w sub_C273+5Ew ... +byte_1E517 db 0 ; DATA XREF: sub_C5B0+44w sub_EF36+12r ... +byte_1E518 db 4 ; DATA XREF: sub_C5B0+E9w + ; sub_D488+12Er +byte_1E519 db 40h ; DATA XREF: sub_CA62+63r + ; sub_CB2D+183w ... +byte_1E51A db 4Ch ; DATA XREF: sub_CAD2+4Br + ; sub_F1D8+1AEw ... +byte_1E51B db 48h ; DATA XREF: sub_C5B0+49w sub_C5B0+C9w ... +word_1E51C dw 0 ; DATA XREF: sub_C31F+22Bw + ; sub_D906+51w ... +word_1E51E dw 0 ; DATA XREF: sub_B2AB+9Dw sub_C273+72w ... + db 0 + db 1 + db 0 + db 1 + db 1 + db 0 + db 0 + db 1 + db 1 + db 0 + db 44h ; D + db 45h ; E + db 46h ; F + db 47h ; G + db 57h ; W + db 0 + db 1 + db 0 + db 1 + db 0 + db 2 + db 0 + db 3 + db 0 + db 4 + db 0 + db 5 + db 0 + db 6 + db 0 + db 7 + db 0 + db 8 + db 0 + db 9 + db 0 + db 0Ah + db 0 + db 14h + db 0 + db 1Eh + db 0 + db 28h ; ( + db 0 + db 32h ; 2 + db 0 + db 3Ch ; < + db 0 + db 46h ; F + db 0 + db 50h ; P + db 0 + db 5Ah ; Z + db 0 + db 64h ; d + db 0 + db 96h ; – + db 0 + db 0C8h ; È + db 0 + db 0FAh ; ú + db 0 + db 2Ch ; , + db 1 + db 5Eh ; ^ + db 1 + db 90h ; + db 1 + db 0C2h ;  + db 1 + db 0F4h ; ô + db 1 + db 26h ; & + db 2 + db 58h ; X + db 2 + db 8Ah ; Š + db 2 + db 0BCh ; ¼ + db 2 + db 0EEh ; î + db 2 + db 20h + db 3 + db 52h ; R + db 3 + db 84h ; „ + db 3 + db 0B6h ; ¶ + db 3 + db 0E8h ; è + db 3 + db 1Ah + db 4 + db 4Ch ; L + db 4 + db 0B0h ; ° + db 4 + db 0E2h ; â + db 4 + db 0 + db 5 +word_1E586 dw 0 ; DATA XREF: sub_D906+1C7w + ; sub_DAF0+93w ... +word_1E588 dw 0BCB0h ; DATA XREF: sub_D743+Fr +word_1E58A dw 0D4C8h ; DATA XREF: sub_D743+15r +byte_1E58C db 0E0h ; DATA XREF: sub_D743+1Br +word_1E58D dw 0FFFEh ; DATA XREF: sub_D743+21r +word_1E58F dw 100h ; DATA XREF: sub_D743+27r +byte_1E591 db 2 ; DATA XREF: sub_D743+2Dr +word_1E592 dw 0BCC8h ; DATA XREF: sub_D743+33r +word_1E594 dw 0BCB0h ; DATA XREF: sub_D743+39r +byte_1E596 db 0C8h ; DATA XREF: sub_D743+3Fr +byte_1E597 db 0 ; DATA XREF: sub_DAF0+88w sub_DAF0+8Cr +dword_1E598 dd 0 ; DATA XREF: sub_B2AB+8Cw + ; sub_C31F+1E1r ... +byte_1E59C db 3 ; DATA XREF: sub_C273+49w + ; sub_C31F+204w ... +byte_1E59D db 3 ; DATA XREF: sub_C273+50w + ; sub_C31F+20Bw ... + db 0A0h ;   + db 86h ; † + db 1 + db 0 + db 40h ; @ + db 0Dh + db 3 + db 0 + db 0E0h ; à + db 93h ; “ + db 4 + db 0 + db 20h + db 0A1h ; ¡ + db 7 + db 0 + db 0 + db 35h ; 5 + db 0Ch + db 0 + db 0FFh + db 0E0h ; à + db 0F5h ; õ + db 5 +word_1E5B6 dw 0 ; DATA XREF: sub_DCD1+3w + ; sub_DCD1:loc_DCDCw ... +dword_1E5B8 dd 9C40h ; DATA XREF: sub_DD1B+1Bw + db 40h ; @ + db 42h ; B + db 0Fh + db 0 + db 0A0h ;   + db 86h ; † + db 1 + db 0 + db 10h + db 27h ; ' + db 0 + db 0 + db 0E8h ; è + db 3 + db 0 + db 0 + db 64h ; d + db 0 + db 0 + db 0 + db 0Ah + db 0 + db 0 + db 0 + db 1 + db 0 + db 0 + db 0 +word_1E5D8 dw 4140h ; DATA XREF: sub_DEAD+9r +word_1E5DA dw 4342h ; DATA XREF: sub_DEAD+Fr +word_1E5DC dw 44h ; DATA XREF: sub_DEAD+15r +word_1E5DE dw 4141h ; DATA XREF: sub_DEAD+1Br +word_1E5E0 dw 6141h ; DATA XREF: sub_DEAD+21r +word_1E5E2 dw 2161h ; DATA XREF: sub_DEAD+27r +word_1E5E4 dw 0A181h ; DATA XREF: sub_DEAD+2Dr +byte_1E5E6 db 0C1h ; DATA XREF: sub_DEAD+33r +word_1E5E7 dw 0CFCFh ; DATA XREF: sub_DEAD+39r +word_1E5E9 dw 0CFCFh ; DATA XREF: sub_DEAD+3Fr +word_1E5EB dw 0CFh ; DATA XREF: sub_DEAD+45r +aOk1 db '®ª¼ÂÏÏÏ',0 +aK db '¶¸»·ªµÏ',0 +aKN db '±ª»­ÏÏÏ',0 +aKM db 'µ¾¶ª½²¬',0 +aOK2 db '®Á½»ªÏÏ',0 +asc_1E615 db 'ÄÅÆ',0 ; DATA XREF: sub_E012+Ao + db 0 +asc_1E61A db 'ÎÄÅÆ',0 ; DATA XREF: sub_E012+33o +asc_1E61F db 'ÉÊ',0 ; DATA XREF: sub_E012+5Ao + dw 0 +asc_1E624 db 'ÌÍ',0 ; DATA XREF: sub_E012+6Fo + db 0 + db 0 +asc_1E629 db 'ÇÈ',0 ; DATA XREF: sub_E012+84o + db 0 + db 0 +aMikoft_bft db 'MIKOFT.bft',0 ; DATA XREF: sub_DC38+9o + db 0 + db 1 + db 2 + db 2 + db 3 + db 3 + db 4 + db 4 + db 5 + db 5 + db 6 + db 6 + db 6 + db 7 + db 7 + db 7 + db 8 + db 8 + db 8 + db 8 + db 9 +byte_1E64E db 0 ; DATA XREF: sub_E280+2Cw + ; sub_19949+2Er + db 0 + db 4 + db 0 + db 3 + db 0 + db 3 + db 0 + db 2 + db 0 + db 2 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 + db 0 + db 0 + db 0 + db 2 + db 0 + db 3 + db 0 + db 2 + db 0 + db 1 + db 0 + db 0 + db 0 + db 1 + db 0 + db 2 + db 0 + db 1 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 2 + db 0 + db 3 + db 0 + db 3 + db 0 + db 2 + db 0 + db 3 + db 0 + db 1 + db 0 + db 2 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 2 + db 0 + db 2 + db 0 + db 3 + db 0 + db 1 + db 0 + db 2 + db 0 + db 3 + db 0 + db 2 + db 0 + db 1 + db 0 + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 2 + db 0 + db 2 + db 0 + db 3 + db 0 + db 3 + db 0 + db 4 + db 0 + db 4 + db 0 +aBombs_bft db 'bombs.bft',0 ; DATA XREF: sub_E178+4o +aBomb1_pi db 'bomb1.pi',0 ; DATA XREF: sub_E178+45o +aBomb3_pi db 'bomb3.pi',0 ; DATA XREF: sub_E178+66o +aBomb2_pi db 'bomb2.pi',0 ; DATA XREF: sub_E178+87o +aBomb1_bft db 'bomb1.bft',0 ; DATA XREF: sub_E178+95o +asc_1E6DF db ' ',0 ; DATA XREF: sub_EA6B+37o sub_EA6B+5Do + db 0 + db 0 + db 0 + db 10h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 10h + db 38h ; 8 + db 10h + db 0 + db 0 + db 0 + db 0 + db 10h + db 10h + db 7Ch ; | + db 10h + db 10h + db 0 + db 0 + db 10h + db 10h + db 38h ; 8 + db 0FEh ; þ + db 38h ; 8 + db 10h + db 10h + db 0 + db 3Ch ; < + db 7Eh ; ~ + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 7Eh ; ~ + db 3Ch ; < + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 1Fh + db 0 + db 0F8h ; ø + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 40h ; @ + db 0 + db 21h ; ! + db 0 + db 12h + db 0 + db 1Ch + db 0 + db 38h ; 8 + db 0 + db 48h ; H + db 0 + db 84h ; „ + db 0 + db 2 + db 0 + db 0 + db 0 + db 42h ; B + db 0 + db 24h ; $ + db 0 + db 18h + db 0 + db 18h + db 0 + db 24h ; $ + db 0 + db 42h ; B + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 24h ; $ + db 0 + db 18h + db 0 + db 18h + db 0 + db 24h ; $ + db 0 + db 0 + db 0 + db 0 + db 0 + db 40h ; @ + db 0 + db 21h ; ! + db 0 + db 12h + db 0 + db 1Ch + db 0 + db 38h ; 8 + db 0 + db 48h ; H + db 0 + db 84h ; „ + db 0 + db 2 + db 0 + db 0 + db 0 + db 42h ; B + db 0 + db 24h ; $ + db 0 + db 18h + db 0 + db 18h + db 0 + db 24h ; $ + db 0 + db 42h ; B + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 24h ; $ + db 0 + db 18h + db 0 + db 18h + db 0 + db 24h ; $ + db 0 + db 0 + db 0 + db 0 + db 0 + db 3Ch ; < + db 0 + db 42h ; B + db 0 + db 81h ; + db 0 + db 99h ; ™ + db 0 + db 99h ; ™ + db 0 + db 81h ; + db 0 + db 42h ; B + db 0 + db 3Ch ; < + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 0Fh + db 80h ; € + db 7Ch ; | + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 20h + db 0 + db 10h + db 80h ; € + db 9 + db 0 + db 0Eh + db 0 + db 1Ch + db 0 + db 24h ; $ + db 0 + db 42h ; B + db 0 + db 1 + db 0 + db 0 + db 0 + db 21h ; ! + db 0 + db 12h + db 0 + db 0Ch + db 0 + db 0Ch + db 0 + db 12h + db 0 + db 21h ; ! + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 12h + db 0 + db 0Ch + db 0 + db 0Ch + db 0 + db 12h + db 0 + db 0 + db 0 + db 0 + db 0 + db 20h + db 0 + db 10h + db 80h ; € + db 9 + db 0 + db 0Eh + db 0 + db 1Ch + db 0 + db 24h ; $ + db 0 + db 42h ; B + db 0 + db 1 + db 0 + db 0 + db 0 + db 21h ; ! + db 0 + db 12h + db 0 + db 0Ch + db 0 + db 0Ch + db 0 + db 12h + db 0 + db 21h ; ! + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 12h + db 0 + db 0Ch + db 0 + db 0Ch + db 0 + db 12h + db 0 + db 0 + db 0 + db 0 + db 0 + db 1Eh + db 0 + db 21h ; ! + db 0 + db 40h ; @ + db 80h ; € + db 4Ch ; L + db 80h ; € + db 4Ch ; L + db 80h ; € + db 40h ; @ + db 80h ; € + db 21h ; ! + db 0 + db 1Eh + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 7 + db 0C0h ; À + db 3Eh ; > + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 10h + db 0 + db 8 + db 40h ; @ + db 4 + db 80h ; € + db 7 + db 0 + db 0Eh + db 0 + db 12h + db 0 + db 21h ; ! + db 0 + db 0 + db 80h ; € + db 0 + db 0 + db 10h + db 80h ; € + db 9 + db 0 + db 6 + db 0 + db 6 + db 0 + db 9 + db 0 + db 10h + db 80h ; € + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 9 + db 0 + db 6 + db 0 + db 6 + db 0 + db 9 + db 0 + db 0 + db 0 + db 0 + db 0 + db 10h + db 0 + db 8 + db 40h ; @ + db 4 + db 80h ; € + db 7 + db 0 + db 0Eh + db 0 + db 12h + db 0 + db 21h ; ! + db 0 + db 0 + db 80h ; € + db 0 + db 0 + db 10h + db 80h ; € + db 9 + db 0 + db 6 + db 0 + db 6 + db 0 + db 9 + db 0 + db 10h + db 80h ; € + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 9 + db 0 + db 6 + db 0 + db 6 + db 0 + db 9 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0Fh + db 0 + db 10h + db 80h ; € + db 20h + db 40h ; @ + db 26h ; & + db 40h ; @ + db 26h ; & + db 40h ; @ + db 20h + db 40h ; @ + db 10h + db 80h ; € + db 0Fh + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 3 + db 0E0h ; à + db 1Fh + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 8 + db 0 + db 4 + db 20h + db 2 + db 40h ; @ + db 3 + db 80h ; € + db 7 + db 0 + db 9 + db 0 + db 10h + db 80h ; € + db 0 + db 40h ; @ + db 0 + db 0 + db 8 + db 40h ; @ + db 4 + db 80h ; € + db 3 + db 0 + db 3 + db 0 + db 4 + db 80h ; € + db 8 + db 40h ; @ + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 4 + db 80h ; € + db 3 + db 0 + db 3 + db 0 + db 4 + db 80h ; € + db 0 + db 0 + db 0 + db 0 + db 8 + db 0 + db 4 + db 20h + db 2 + db 40h ; @ + db 3 + db 80h ; € + db 7 + db 0 + db 9 + db 0 + db 10h + db 80h ; € + db 0 + db 40h ; @ + db 0 + db 0 + db 8 + db 40h ; @ + db 4 + db 80h ; € + db 3 + db 0 + db 3 + db 0 + db 4 + db 80h ; € + db 8 + db 40h ; @ + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 4 + db 80h ; € + db 3 + db 0 + db 3 + db 0 + db 4 + db 80h ; € + db 0 + db 0 + db 0 + db 0 + db 7 + db 80h ; € + db 8 + db 40h ; @ + db 10h + db 20h + db 13h + db 20h + db 13h + db 20h + db 10h + db 20h + db 8 + db 40h ; @ + db 7 + db 80h ; € + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0F0h ; ð + db 0Fh + db 80h ; € + db 0 + db 80h ; € + db 0 + db 80h ; € + db 0 + db 80h ; € + db 4 + db 0 + db 2 + db 10h + db 1 + db 20h + db 1 + db 0C0h ; À + db 3 + db 80h ; € + db 4 + db 80h ; € + db 8 + db 40h ; @ + db 0 + db 20h + db 0 + db 0 + db 4 + db 20h + db 2 + db 40h ; @ + db 1 + db 80h ; € + db 1 + db 80h ; € + db 2 + db 40h ; @ + db 4 + db 20h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 2 + db 40h ; @ + db 1 + db 80h ; € + db 1 + db 80h ; € + db 2 + db 40h ; @ + db 0 + db 0 + db 0 + db 0 + db 4 + db 0 + db 2 + db 10h + db 1 + db 20h + db 1 + db 0C0h ; À + db 3 + db 80h ; € + db 4 + db 80h ; € + db 8 + db 40h ; @ + db 0 + db 20h + db 0 + db 0 + db 4 + db 20h + db 2 + db 40h ; @ + db 1 + db 80h ; € + db 1 + db 80h ; € + db 2 + db 40h ; @ + db 4 + db 20h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 2 + db 40h ; @ + db 1 + db 80h ; € + db 1 + db 80h ; € + db 2 + db 40h ; @ + db 0 + db 0 + db 0 + db 0 + db 3 + db 0C0h ; À + db 4 + db 20h + db 8 + db 10h + db 9 + db 90h ; + db 9 + db 90h ; + db 8 + db 10h + db 4 + db 20h + db 3 + db 0C0h ; À + db 0 + db 80h ; € + db 0 + db 80h ; € + db 0 + db 80h ; € + db 0 + db 0F8h ; ø + db 7 + db 0C0h ; À + db 0 + db 40h ; @ + db 0 + db 40h ; @ + db 0 + db 40h ; @ + db 2 + db 0 + db 1 + db 8 + db 0 + db 90h ; + db 0 + db 0E0h ; à + db 1 + db 0C0h ; À + db 2 + db 40h ; @ + db 4 + db 20h + db 0 + db 10h + db 0 + db 0 + db 2 + db 10h + db 1 + db 20h + db 0 + db 0C0h ; À + db 0 + db 0C0h ; À + db 1 + db 20h + db 2 + db 10h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 20h + db 0 + db 0C0h ; À + db 0 + db 0C0h ; À + db 1 + db 20h + db 0 + db 0 + db 0 + db 0 + db 2 + db 0 + db 1 + db 8 + db 0 + db 90h ; + db 0 + db 0E0h ; à + db 1 + db 0C0h ; À + db 2 + db 40h ; @ + db 4 + db 20h + db 0 + db 10h + db 0 + db 0 + db 2 + db 10h + db 1 + db 20h + db 0 + db 0C0h ; À + db 0 + db 0C0h ; À + db 1 + db 20h + db 2 + db 10h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 20h + db 0 + db 0C0h ; À + db 0 + db 0C0h ; À + db 1 + db 20h + db 0 + db 0 + db 0 + db 0 + db 1 + db 0E0h ; à + db 2 + db 10h + db 4 + db 8 + db 4 + db 0C8h ; È + db 4 + db 0C8h ; È + db 4 + db 8 + db 2 + db 10h + db 1 + db 0E0h ; à + db 0 + db 40h ; @ + db 0 + db 40h ; @ + db 0 + db 40h ; @ + db 0 + db 7Ch ; | + db 3 + db 0E0h ; à + db 0 + db 20h + db 0 + db 20h + db 0 + db 20h + db 1 + db 0 + db 0 + db 84h ; „ + db 0 + db 48h ; H + db 0 + db 70h ; p + db 0 + db 0E0h ; à + db 1 + db 20h + db 2 + db 10h + db 0 + db 8 + db 0 + db 0 + db 1 + db 8 + db 0 + db 90h ; + db 0 + db 60h ; ` + db 0 + db 60h ; ` + db 0 + db 90h ; + db 1 + db 8 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 90h ; + db 0 + db 60h ; ` + db 0 + db 60h ; ` + db 0 + db 90h ; + db 0 + db 0 + db 0 + db 0 + db 1 + db 0 + db 0 + db 84h ; „ + db 0 + db 48h ; H + db 0 + db 70h ; p + db 0 + db 0E0h ; à + db 1 + db 20h + db 2 + db 10h + db 0 + db 8 + db 0 + db 0 + db 1 + db 8 + db 0 + db 90h ; + db 0 + db 60h ; ` + db 0 + db 60h ; ` + db 0 + db 90h ; + db 1 + db 8 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 90h ; + db 0 + db 60h ; ` + db 0 + db 60h ; ` + db 0 + db 90h ; + db 0 + db 0 + db 0 + db 0 + db 0 + db 0F0h ; ð + db 1 + db 8 + db 2 + db 4 + db 2 + db 64h ; d + db 2 + db 64h ; d + db 2 + db 4 + db 1 + db 8 + db 0 + db 0F0h ; ð + db 0 + db 20h + db 0 + db 20h + db 0 + db 20h + db 0 + db 3Eh ; > + db 1 + db 0F0h ; ð + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 80h ; € + db 0 + db 42h ; B + db 0 + db 24h ; $ + db 0 + db 38h ; 8 + db 0 + db 70h ; p + db 0 + db 90h ; + db 1 + db 8 + db 0 + db 4 + db 0 + db 0 + db 0 + db 84h ; „ + db 0 + db 48h ; H + db 0 + db 30h ; 0 + db 0 + db 30h ; 0 + db 0 + db 48h ; H + db 0 + db 84h ; „ + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 48h ; H + db 0 + db 30h ; 0 + db 0 + db 30h ; 0 + db 0 + db 48h ; H + db 0 + db 0 + db 0 + db 0 + db 0 + db 80h ; € + db 0 + db 42h ; B + db 0 + db 24h ; $ + db 0 + db 38h ; 8 + db 0 + db 70h ; p + db 0 + db 90h ; + db 1 + db 8 + db 0 + db 4 + db 0 + db 0 + db 0 + db 84h ; „ + db 0 + db 48h ; H + db 0 + db 30h ; 0 + db 0 + db 30h ; 0 + db 0 + db 48h ; H + db 0 + db 84h ; „ + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 48h ; H + db 0 + db 30h ; 0 + db 0 + db 30h ; 0 + db 0 + db 48h ; H + db 0 + db 0 + db 0 + db 0 + db 0 + db 78h ; x + db 0 + db 84h ; „ + db 1 + db 2 + db 1 + db 32h ; 2 + db 1 + db 32h ; 2 + db 1 + db 2 + db 0 + db 84h ; „ + db 0 + db 78h ; x +word_1EB0A dw 0 ; DATA XREF: sub_41AA+43r + ; sub_13671+B5w ... +byte_1EB0C db 0 ; DATA XREF: sub_EFF2+26w + ; sub_19949+21r +byte_1EB0D db 0FFh ; DATA XREF: sub_F1D8+14Br + ; sub_F1D8+152w ... +byte_1EB0E db 0FFh ; DATA XREF: sub_F1D8:loc_F336r + ; sub_F1D8+165w ... + db 1 + db 1 + db 4 + db 8 + db 10h + db 18h + db 20h + db 28h ; ( + db 34h ; 4 + db 40h ; @ + db 0 + 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_1EB26 dw 0 ; DATA XREF: sub_11766+67r + ; sub_11766+6Er ... +word_1EB28 dw 0 ; DATA XREF: sub_11BFE+12r + ; sub_11BFE+1Dr ... + db 1 + db 2 + db 3 + db 4 + db 5 + db 6 + db 7 + db 8 + db 9 + db 0Ah + db 0Bh + db 17h + db 16h + db 15h + db 14h + db 13h + db 12h + db 11h + db 10h + db 0Fh + db 0Eh + db 0Dh + db 0Ch +aBoss2_m db 'boss2.m',0 ; DATA XREF: sub_12754+Fo + db 0 + db 5 + db 0 + db 5 + db 0 + db 4 + db 0 + db 4 + db 0 + db 3 + db 0 + db 3 + db 0 + db 3 + db 0 + db 2 + db 0 + db 2 + db 0 + db 1 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 + db 0 + db 0 + db 0 + db 8 + db 0 + db 8 + db 0 + db 7 + db 0 + db 7 + db 0 + db 6 + db 0 + db 5 + db 0 + db 4 + db 0 + db 3 + db 0 + db 0 + db 0 +byte_1EB88 db 1 ; DATA XREF: sub_1283C+185r + ; sub_1AB35+4w ... + db 0 +aStage_dt1 db 'STAGE .DT1',0 + db 0 +word_1EB96 dw 12D6h ; DATA XREF: sub_13055+Dr + ; sub_13055+20r ... +unk_1EB98 db 0 ; DATA XREF: sub_1300F+Bo + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 10h + db 8 + db 16h + db 0Bh + db 8 + db 3 + db 10h + db 4 + db 0 + db 0 + db 16h + db 6 + db 0 + db 60h ; ` + db 33h ; 3 + db 60h ; ` + db 9 + db 60h ; ` + db 0 + db 60h ; ` + db 63h ; c + db 63h ; c + db 30h ; 0 + db 0Ch + db 63h ; c + db 63h ; c + db 6 + db 63h ; c + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 63h ; c + db 63h ; c + db 39h ; 9 + db 60h ; ` + db 3 + db 63h ; c + db 9 + db 60h ; ` + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 66h ; f + db 66h ; f + db 39h ; 9 + db 3Ch ; < + db 66h ; f + db 66h ; f + db 3Ch ; < + db 9 + db 96h ; – + db 36h ; 6 + db 66h ; f + db 66h ; f + db 60h ; ` + db 36h ; 6 + db 66h ; f + db 3Ch ; < + db 9 + db 66h ; f + db 9 + db 96h ; – + db 39h ; 9 + db 96h ; – + db 9 + db 36h ; 6 + db 39h ; 9 + db 9 + db 60h ; ` + db 96h ; – + db 39h ; 9 + db 60h ; ` + db 36h ; 6 + db 60h ; ` + 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 6 + db 60h ; ` + db 60h ; ` + db 0Ch + db 60h ; ` + db 33h ; 3 + db 60h ; ` + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0Ch + db 60h ; ` + 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 69h ; i + db 6 + db 60h ; ` + db 0Ch + db 6 + db 6 + db 69h ; i + db 69h ; i + db 0Ch + db 60h ; ` + db 6 + db 6 + db 69h ; i + db 69h ; i + db 69h ; i + db 69h ; i + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 93h ; “ + db 0 + db 60h ; ` + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 99h ; ™ + db 0 + db 99h ; ™ + db 3 + db 99h ; ™ + db 6 + db 99h ; ™ + db 99h ; ™ + db 99h ; ™ + db 39h ; 9 + db 99h ; ™ + db 39h ; 9 + db 99h ; ™ + db 39h ; 9 + db 99h ; ™ + db 99h ; ™ + db 39h ; 9 + db 99h ; ™ + db 0Ch + db 60h ; ` + db 0Ch + db 99h ; ™ + db 9 + db 9Ch ; œ + db 9 + db 60h ; ` + db 60h ; ` + 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 +unk_1ECD4 db 39h ; 9 ; DATA XREF: sub_1315B+Bo + db 60h ; ` + db 60h ; ` + db 39h ; 9 + db 60h ; ` + db 39h ; 9 + db 60h ; ` + db 39h ; 9 +unk_1ECDC db 39h ; 9 ; DATA XREF: sub_13187+Bo + db 90h ; + db 6 + db 90h ; + db 90h ; + db 90h ; + db 6 + db 90h ; + db 60h ; ` + db 0 + db 60h ; ` + db 0 +unk_1ECE8 db 6 ; DATA XREF: sub_131D9+Bo + db 13h + db 9 + db 13h + db 0Ch + db 13h + db 0Fh + db 13h + db 12h + db 13h + db 15h + db 13h + db 18h + db 13h + db 1Bh + db 13h + db 1Eh + db 13h + db 21h ; ! + db 13h +unk_1ECFC db 60h ; ` ; DATA XREF: sub_131D9+1Co + db 0 + db 36h ; 6 + db 0 + db 90h ; + db 0 +unk_1ED02 db 90h ; ; DATA XREF: sub_131D9+2Do + db 0 + db 0Ch + db 0 + db 60h ; ` + db 0 + db 39h ; 9 + db 0 + db 90h ; + db 0 +unk_1ED0C db 60h ; ` ; DATA XREF: sub_131D9+3Eo + db 0 + db 60h ; ` + db 0 + db 39h ; 9 + db 0 + db 60h ; ` + db 0 + db 39h ; 9 + db 0 +unk_1ED16 db 69h ; i ; DATA XREF: sub_13337+Bo + db 39h ; 9 + db 69h ; i + db 6 + db 6 + db 69h ; i + db 69h ; i + db 6 + db 69h ; i + db 6 + db 6 + db 60h ; ` + db 6 + db 69h ; i + db 39h ; 9 + db 69h ; i + db 0 + db 60h ; ` + db 6 + db 6 + db 69h ; i + db 69h ; i +unk_1ED2C db 69h ; i ; DATA XREF: sub_13337+1Co + db 0 + db 69h ; i + db 6 + db 69h ; i + db 69h ; i + db 69h ; i + db 69h ; i + db 69h ; i + db 6 + db 69h ; i + db 69h ; i + db 69h ; i + db 6 + db 6 + db 69h ; i + db 69h ; i +unk_1ED3D db 69h ; i ; DATA XREF: sub_133B8+Bo + db 69h ; i + db 6 + db 69h ; i + db 39h ; 9 +dword_1ED42 dd 0C6C066Ch ; DATA XREF: sub_133B8+16r + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + dw 4081h +aB@b@b@b@b@b@b@ db '@@@@@@@@',0 +aStage_txt db 'stage .txt',0 +aVo db '‚O',0 +aVp db '‚P',0 +aVq db '‚Q',0 +aVr db '‚R',0 +aVs db '‚S',0 +aVt db '‚T',0 +aVu db '‚U',0 +aVv1 db '‚V',0 +aVw db '‚W',0 +aVx db '‚X',0 +word_1ED94 dw 0 ; DATA XREF: sub_13671+6r + ; sub_13671+10r ... +word_1ED96 dw 0 ; DATA XREF: sub_137FE+8r + ; sub_137FE+10w ... +word_1ED98 dw 0 ; DATA XREF: sub_13C0C+1Fr + ; sub_13C0C+2Dw ... +aBoss1_m db 'boss1.m',0 ; DATA XREF: sub_13ADE+4o +word_1EDA2 dw 0 ; DATA XREF: sub_140AE:loc_140D4w + ; sub_140AE+2Ar +word_1EDA4 dw 0 ; DATA XREF: sub_13671+BBw + ; sub_13B8B+22w ... +byte_1EDA6 db 1 ; DATA XREF: sub_140AE+3r + ; sub_140AE+1Bw + db 0 +word_1EDA8 dw 0 ; DATA XREF: sub_14169+5r sub_14169+Cr ... +word_1EDAA dw 0 ; DATA XREF: sub_14519+19r + ; sub_14519+34r ... +aBoss4_m db 'boss4.m',0 ; DATA XREF: sub_1523C+6Bo +off_1EDB4 dd aHuuhi_dat ; DATA XREF: sub_1C6C7+4r + ; sub_1C95D+6Er ... + ; "huuhi.dat" +aMO_0 db '±²Ï¼¬¸»®',0 ; DATA XREF: sub_1C785+10o +byte_1EDC1 db 0AAh ; DATA XREF: sub_1C785+9Br + db 0ABh ; « + db 0ACh ; ¬ + db 0ADh ; ­ + db 0AEh ; ® + db 0AFh ; ¯ + db 0B0h ; ° + db 0B1h ; ± + db 0B2h ; ² + db 0B3h ; ³ + db 0B4h ; ´ + db 0B5h ; µ + db 0B7h ; · + db 0B6h ; ¶ + db 0B8h ; ¸ + db 0B9h ; ¹ + db 0BAh ; º + db 0BBh ; » + db 0BCh ; ¼ + db 0BDh ; ½ + db 0BEh ; ¾ + db 0BFh ; ¿ + db 0C0h ; À + db 0C1h ; Á + db 0C2h ;  + db 0C3h ; à + db 0DAh ; Ú + db 0DBh ; Û + db 0DCh ; Ü + db 0DDh ; Ý + db 0DEh ; Þ + db 0E0h ; à + db 2 + db 3 + db 0A0h ;   + db 0A1h ; ¡ + db 0A2h ; ¢ + db 0A3h ; £ + db 0A4h ; ¤ + db 0A5h ; ¥ + db 0A6h ; ¦ + db 0A7h ; § + db 0A8h ; ¨ + db 0A9h ; © + db 0E1h ; á + db 0E2h ; â + db 0E3h ; ã + db 0E4h ; ä + db 0E5h ; å + db 0E6h ; æ + db 0E7h ; ç +aKO db '¶ª·®',0 ; DATA XREF: sub_1C785+22o +asc_1EDF9 db '¹¸²¶½',0 ; DATA XREF: sub_1C785+34o +asc_1EDFF db '¼½',0 ; DATA XREF: sub_1C785+46o +unk_1EE02 db 3Eh ; > ; DATA XREF: sub_1CD8E+Ao + db 1 + db 76h ; v + db 0 + db 0DAh ; Ú + db 0 +unk_1EE08 db 1 ; DATA XREF: sub_1CDD6+Ao + db 2 + db 4 +aHuuhi_dat db 'huuhi.dat',0 ; DATA XREF: dseg:off_1EDB4o + db 0 +word_1EE16 dw 100h ; DATA XREF: sub_1536C+8r +word_1EE18 dw 1002h ; DATA XREF: sub_1536C+Er +word_1EE1A dw 1211h ; DATA XREF: sub_1536C+14r +byte_1EE1C db 9 ; DATA XREF: sub_1536C+1Ar + db 0 + db 3Ch ; < + db 0 + db 2Ch ; , + db 0 + db 4Ch ; L + db 0 + db 1Ch + db 0 + db 5Ch ; \ + db 0 +aStage5b1_bft db 'stage5b1.bft',0 ; DATA XREF: sub_1696B+20o +aStage5b2_bft db 'stage5b2.bft',0 ; DATA XREF: sub_1696B+29o +aBoss5_m db 'boss5.m',0 ; DATA XREF: sub_1696B+9Ao +; char aMaine[] +aMaine db 'maine',0 ; DATA XREF: sub_16A21+38o +word_1EE50 dw 0 ; DATA XREF: sub_16A6B+17w + ; sub_16D9B+8r ... +byte_1EE52 db 0 ; DATA XREF: sub_16C96+EEr + ; sub_16C96+FDw ... + db 0 +word_1EE54 dw 0 ; DATA XREF: sub_17B75+80r + ; sub_17B75+9Ar ... +word_1EE56 dw 0 ; DATA XREF: sub_193A4+73w + ; sub_193A4+84w ... +aMima_bft db 'mima.bft',0 ; DATA XREF: sub_199B3+16o +aMima1_bft db 'mima1.bft',0 ; DATA XREF: sub_199B3+43o +aStage3_b_btt db 'stage3_b.btt',0 ; DATA XREF: sub_199B3+4Co +aMima_m db 'mima.m',0 ; DATA XREF: sub_199B3+187o +; char aMaine_0[] +aMaine_0 db 'maine',0 ; DATA XREF: sub_19C1D+63o +aMima2_bft db 'mima2.bft',0 ; DATA XREF: sub_19C8D+CDo + db 0 + db 0Ah + db 0Ch + db 0Dh + db 0Dh + db 0Ch + db 0Ah +byte_1EE96 db 0 ; DATA XREF: sub_1A7D5+21Dw + ; sub_1AA60+43r ... + db 0 +word_1EE98 dw 0 ; DATA XREF: sub_19FAF+2Er + ; sub_19FAF+36w ... +word_1EE9A dw 0 ; DATA XREF: sub_1AC7B+15r + ; sub_1AC7B+1Cr ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_1EEA4 db 2 ; DATA XREF: sub_1B35F+1Ar + ; sub_1B35F+2Er ... +byte_1EEA5 db 1 ; DATA XREF: sub_1BC43+34r + ; sub_1BC43+47r ... +aMima_bft_0 db 'mima.bft',0 ; DATA XREF: sub_1A7D5+1Co +aStage3_b_bft db 'stage3_b.bft',0 ; DATA XREF: sub_1A7D5+4Eo +aStage3_b_btt_0 db 'stage3_b.btt',0 ; DATA XREF: sub_1A7D5+57o +aBoss3_m db 'boss3.m',0 ; DATA XREF: sub_1A7D5+14Co + db 0 +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_1EEF2 dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_4961r ... +off_1EEF4 dd sub_4B74 ; DATA XREF: sub_4B79+29r _setvbuf+C0w ... +off_1EEF8 dd sub_4B74 ; DATA XREF: sub_4B79+43r +off_1EEFC dd sub_4B74 ; DATA XREF: sub_4B79+47r + db 0 + db 0 +word_1EF02 dw 209h ; DATA XREF: seg000:51BBw seg000:51C5r +byte_1EF04 db 0 ; DATA XREF: seg000:51ACr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 90h ; + db 14h + db 0 + db 0 +word_1EF16 dw 20Ah ; DATA XREF: seg000:51F4w seg000:51FEr +byte_1EF18 db 1 ; DATA XREF: seg000:51E5r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0A4h ; ¤ + db 14h + db 0 + db 0 + db 2 + db 2 +byte_1EF2C 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 0B8h ; ¸ + db 14h + 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 0CCh ; Ì + db 14h + 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 0E0h ; à + db 14h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_1F090 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_1F0BA dw 0 ; DATA XREF: __IOERROR:loc_4DD3w + ; __IOERROR+2Bw + db 0 + db 13h + db 2 + db 2 + db 4 + db 5 + db 6 + db 8 + db 8 + db 8 + db 14h + db 15h + db 5 + db 13h + db 0Eh + db 5 + db 5 + db 11h + db 2 + db 1Eh + db 29h ; ) + db 2Ch ; , + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 29h ; ) + db 2Ch ; , + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 5 + db 5 + db 29h ; ) + db 17h + db 17h + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Fh + db 2Ch ; , + db 23h ; # + db 2 + db 2Ch ; , + db 0Fh + db 2Ah ; * + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 13h + db 1Bh + db 1Ch + db 2 + db 2 + db 5 + db 0Fh + db 2 + db 17h + db 28h ; ( + db 2Ah ; * + db 13h + db 2Ah ; * + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 23h ; # + db 0Eh + db 1Ch + db 28h ; ( + db 17h + db 23h ; # + db 25h ; % + db 13h + db 28h ; ( + db 0 + db 0 + db 0 + db 0 + db 0 +word_1F11A dw 0 ; DATA XREF: seg000:4EAAr +word_1F11C dw 4E6Fh ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_1F11E dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_1F12E 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_1F244 dw 0 ; DATA XREF: __ExceptInit+28w +word_1F246 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_1F35A dw 0 ; DATA XREF: seg000:557Aw seg000:558Dw ... +word_1F35C dw 0 ; DATA XREF: sub_5A20+22r sub_5A20+61w +byte_1F35E db 0 ; DATA XREF: seg000:5D75r seg000:5D8Dw +byte_1F35F db 0 ; DATA XREF: seg000:5D10r seg000:5D23w +word_1F360 dw 0 ; DATA XREF: seg000:5C7Dr seg000:5CB3w +word_1F362 dw 0 ; DATA XREF: seg000:5C79r + ; seg000:loc_5CADw + dw 0 + dw 0 +word_1F368 dw 0 ; DATA XREF: seg000:5B97r seg000:5BCDw ... +word_1F36A dw 0 ; DATA XREF: seg000:5B93r + ; seg000:loc_5BC7w ... + db 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_1F384 dd 0 ; DATA XREF: seg000:5EF1w sub_5F05+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_1F398 dw 0 ; DATA XREF: _setvbuf:loc_69D6r + ; _setvbuf+4Bw +word_1F39A dw 0 ; DATA XREF: _setvbuf:loc_69C0r + ; _setvbuf+35w +word_1F39C dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_1F3B0 dd 0 ; DATA XREF: _getenv+21r seg000:AA40w ... +word_1F3B4 dw 1 ; DATA XREF: seg007:0A54r seg007:0A5Dw +word_1F3B6 dw 0 ; DATA XREF: seg007:0A71r seg007:0A7Aw +word_1F3B8 dw 1 ; DATA XREF: seg007:0A8Er seg007:0A97w +word_1F3BA dw 3Fh ; DATA XREF: sub_1D65F+13r + ; seg007:0AABr ... +word_1F3BC dw 40h ; DATA XREF: sub_1D65F+19r + ; seg007:0AC8r ... +word_1F3BE dw 3Fh ; DATA XREF: seg007:074Ar seg007:07B2r ... +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 +aC db '/c',0 + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 7Dh ; } + db 51h ; Q + db 0 + db 0 + db 0 + db 10h + db 69h ; i + db 55h ; U + db 0 + db 0 + db 0 + db 0Fh + db 0BCh ; ¼ + db 5Eh ; ^ + db 0 + db 0 + db 0 + db 10h + db 2Ah ; * + db 0AAh ; ª + db 0 + db 0 + db 1 + db 20h + dd loc_501D +byte_1F466 db ? ; DATA XREF: sub_B3DA+B3w + ; sub_BCB1+129w ... +byte_1F467 db ? ; DATA XREF: _main:loc_B202r + ; sub_B3DA+103w +byte_1F468 db ? ; DATA XREF: _main+B7r sub_B3DA+132w + db ? +word_1F46A dw ? ; DATA XREF: _main+C5r sub_B3DA+125w +byte_1F46C db ? ; DATA XREF: sub_B3DA+C8w + ; sub_B3DA:loc_B4BBw ... +byte_1F46D db ? ; DATA XREF: sub_B3DA+D2w sub_BFD0+88w ... +byte_1F46E db ? ; DATA XREF: sub_B3DA+DCw sub_BFD0+85r + db ? +dword_1F470 dd ? ; DATA XREF: sub_B3DA+27Aw + ; sub_B3DA+2D6w ... +dword_1F474 dd ? ; DATA XREF: sub_B3DA+26Ew + ; sub_B3DA+2CAw ... +dword_1F478 dd ? ; DATA XREF: sub_B3DA+1C3w + ; sub_BCB1+36r ... +dword_1F47C dd ? ; DATA XREF: sub_B3DA+1CFw + ; sub_BCB1+125r ... +dword_1F480 dd ? ; DATA XREF: sub_B3DA+2AAw + ; sub_B3DA+306w ... +dword_1F484 dd ? ; DATA XREF: sub_B3DA+286w + ; sub_B3DA+2E2w ... +dword_1F488 dd ? ; DATA XREF: sub_B3DA+292w + ; sub_B3DA+2EEw ... +dword_1F48C dd ? ; DATA XREF: sub_B3DA+23Bw + ; sub_BCB1+271r ... +dword_1F490 dd ? ; DATA XREF: sub_B3DA+1DBw + ; sub_B3DA+2B6w ... +dword_1F494 dd ? ; DATA XREF: sub_B3DA+223w + ; sub_BCB1+25Fr ... +dword_1F498 dd ? ; DATA XREF: sub_B3DA+22Fw + ; sub_BCB1+17r ... +dword_1F49C dd ? ; DATA XREF: sub_B3DA+29Ew + ; sub_B3DA+2FAw ... +dword_1F4A0 dd ? ; DATA XREF: sub_B3DA+1E7w + ; sub_B3DA+31Ew ... +dword_1F4A4 dd ? ; DATA XREF: _main:loc_B24Fr + ; sub_B2AB+67w ... +dword_1F4A8 dd ? ; DATA XREF: sub_C13E+Ew + ; sub_C13E:loc_C1D0r ... +byte_1F4AC db ? ; DATA XREF: sub_B2AB+A8w + ; sub_B2AB:loc_B35Aw ... +unk_1F4AD db ? ; ; DATA XREF: sub_B3DA+1A3o + ; sub_B3DA+4F8o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1F4DD db ? ; DATA XREF: sub_B9E2+A0w + ; sub_B9E2:loc_BA8Ew ... +byte_1F4DE db ? ; DATA XREF: sub_B9E2+A5w sub_B9E2+B1w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_1F4F4 dd ? ; DATA XREF: sub_804+17r sub_89C+2Er ... +word_1F4F8 dw ? ; DATA XREF: sub_7B0+32w sub_7B0+46w ... +word_1F4FA dw ? ; DATA XREF: sub_7B0+35w sub_7B0+49w ... +word_1F4FC dw ? ; DATA XREF: sub_7B0+29w sub_804+9r ... +word_1F4FE dw ? ; DATA XREF: sub_7B0+26w sub_804+Cr ... +word_1F500 dw ? ; DATA XREF: sub_7B0+2Cw + ; sub_89C:loc_93Fw ... +word_1F502 dw ? ; DATA XREF: sub_7B0+2Fw + ; sub_804:loc_835w ... +word_1F504 dw ? ; DATA XREF: sub_CC0+67w sub_D5A+20r ... +word_1F506 dw ? ; DATA XREF: sub_CC0+6Aw sub_D5Ar ... +byte_1F508 db ? ; DATA XREF: sub_B3DA+4FCo + ; sub_BF9C+13w ... +byte_1F509 db ? ; DATA XREF: sub_BF9C+18w sub_BFD0+36w ... +byte_1F50A db ? ; DATA XREF: sub_BF9C+1Dw sub_BFD0+3Bw ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_1F511 db ? ; DATA XREF: sub_E618+3Cw sub_E618+72w +byte_1F512 db ? ; DATA XREF: sub_E618+41w sub_E618+78w +byte_1F513 db ? ; DATA XREF: sub_E618+46w sub_E618+7Ew + dd ? + dd ? + dd ? +byte_1F520 db ? ; DATA XREF: sub_13671+39w +byte_1F521 db ? ; DATA XREF: sub_13671+41w +byte_1F522 db ? ; DATA XREF: sub_13671+47w + dd ? + dd ? + dd ? +byte_1F52F db ? ; DATA XREF: sub_13671+7Aw +byte_1F530 db ? ; DATA XREF: sub_13671+80w +byte_1F531 db ? ; DATA XREF: sub_13671+86w +byte_1F532 db ? ; DATA XREF: sub_13671+A6w +byte_1F533 db ? ; DATA XREF: sub_13671+ABw +byte_1F534 db ? ; DATA XREF: sub_13671+B0w + db ? + db ? ; + db ? ; +word_1F538 dw ? ; DATA XREF: sub_2740+1Ew sub_27B4+10w ... +word_1F53A dw ? ; DATA XREF: sub_2740+21w sub_27B4+14w +word_1F53C dw ? ; DATA XREF: sub_2740+37w sub_27EE+2Br +word_1F53E dw ? ; DATA XREF: sub_2740+3Aw sub_27EE+27r +word_1F540 dw ? ; DATA XREF: sub_27B4+Aw +word_1F542 dw ? ; DATA XREF: sub_2932+Fw sub_2994+18r ... +word_1F544 dw ? ; DATA XREF: sub_25A4+20r sub_2932+12w ... +word_1F546 dw ? ; DATA XREF: sub_2932+15w sub_2994+24r ... +word_1F548 dw ? ; DATA XREF: sub_258E+7w sub_25A4+19r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_1FD4A dw ? ; DATA XREF: seg000:337Cw seg000:340Br +dword_1FD4C dd ? ; DATA XREF: sub_F50E+3w sub_17F27+D3r ... +dword_1FD50 dd ? ; DATA XREF: sub_F50E+Cw +dword_1FD54 dd ? ; DATA XREF: sub_F50E+15w +dword_1FD58 dd ? ; DATA XREF: sub_F50E+1Ew +dword_1FD5C dd ? ; DATA XREF: sub_C566+7r +dword_1FD60 dd ? ; DATA XREF: sub_E24A+7r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_1FD74 db ? ; ; DATA XREF: sub_C566+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 ? ; +unk_1FDBC db ? ; ; DATA XREF: sub_E24A+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 ? ; +unk_1FF24 db ? ; ; DATA XREF: seg000:3B13o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FFA4 dw ? ; DATA XREF: sub_3A0C+1Ew sub_3A6C+21r ... +word_1FFA6 dw ? ; DATA XREF: sub_3A0C+24w seg000:3ACCr ... +word_1FFA8 dw ? ; DATA XREF: _main:loc_B249w + ; sub_B9E2+6Fr ... +byte_1FFAA db ? ; DATA XREF: sub_F786+Bw sub_F7A4+Aw ... +byte_1FFAB db ? ; DATA XREF: _main+2Fw _main+4Ew ... +byte_1FFAC db ? ; DATA XREF: sub_F74C+1Ew sub_F7A4w +byte_1FFAD db ? ; DATA XREF: _main+4Br sub_F74C+28w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_1FFBC dd ? ; DATA XREF: sub_3998+27r sub_F4EF+3r ... +unk_1FFC0 db ? ; ; DATA XREF: sub_B3DA+19Fo sub_F86A+6o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1FFF0 dw ? ; DATA XREF: sub_3DDE+15w sub_3E1C+37r ... +word_1FFF2 dw ? ; DATA XREF: sub_3DDE+1Bw sub_3F8A+3Ar ... +word_1FFF4 dw ? ; DATA XREF: sub_3DDE+21w sub_3F8A+44r +word_1FFF6 dw ? ; DATA XREF: sub_3DDE+36w + ; sub_3F8A:loc_4030r ... +byte_1FFF8 db ? ; DATA XREF: sub_3DDE+27w sub_3F8A+Br ... +byte_1FFF9 db ? ; DATA XREF: sub_3DDE+2Cw sub_3EF4+Dr +byte_1FFFA db ? ; DATA XREF: sub_3DDE+31w sub_3F8A+16r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_20164 dw ? ; DATA XREF: sub_3E6A+10r sub_3E6A+26r ... +word_20166 dw ? ; DATA XREF: sub_3E6A+16r sub_3EC2+Dr ... +byte_20168 db ? ; DATA XREF: sub_3F8A+19w +byte_20169 db ? ; DATA XREF: sub_3F8A+1Fw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_2026A db ? ; DATA XREF: sub_C23Dr sub_C23D+4w ... + db ? +dword_2026C dd ? ; DATA XREF: _main:loc_B183r + ; _main:loc_B19Ar ... + db ? ; + db ? ; +word_20272 dw ? ; DATA XREF: sub_BCB1+2A3r + ; sub_BCB1+2A9w ... +word_20274 dw ? ; DATA XREF: sub_4090+21r sub_4090+BAw ... +byte_20276 db ? ; DATA XREF: sub_C764+13w sub_C914+8r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_20340 db ? ; DATA XREF: sub_C764:loc_C78Ew + ; sub_C764:loc_C79Aw ... +byte_20341 db ? ; DATA XREF: sub_C764+2Fw sub_C764+3Bw ... +byte_20342 db ? ; DATA XREF: sub_B3DA+244w + ; sub_B3DA+3F6w ... +byte_20343 db ? ; DATA XREF: sub_BCB1+C1r + ; sub_BCB1:loc_BEDCw ... +word_20344 dw ? ; DATA XREF: sub_41AA:loc_4245r + ; sub_445A+11r ... +word_20346 dw ? ; DATA XREF: sub_CA1C+13w +word_20348 dw ? ; DATA XREF: sub_BCB1+176w + ; sub_BCB1+1D0r ... +word_2034A dw ? ; DATA XREF: sub_BCB1+A3r + ; sub_BCB1+180w ... +word_2034C dw ? ; DATA XREF: sub_BCB1+63r sub_BCB1+6Fw ... +byte_2034E db ? ; DATA XREF: sub_CA1C+29w + db ? +byte_20350 db ? ; DATA XREF: sub_D06B+15w + ; sub_D06B:loc_D158r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_205D8 dw ? ; DATA XREF: sub_C5B0+4Ew + ; sub_CD2A+14Dr ... +word_205DA dw ? ; DATA XREF: sub_C5B0+5Aw + ; sub_CD2A+13Br ... +word_205DC dw ? ; DATA XREF: sub_C5B0+54w + ; sub_CD2A+1E0w ... +byte_205DE db ? ; DATA XREF: sub_C5B0+17w + ; sub_CB2D:loc_CD0Dw ... +byte_205DF db ? ; DATA XREF: sub_C5B0+35w +byte_205E0 db ? ; DATA XREF: sub_C5B0+3Aw + db ? +word_205E2 dw ? ; DATA XREF: sub_CA62+7r sub_CAD2+4r ... +word_205E4 dw ? ; DATA XREF: sub_CA62+33r sub_CB2D+1Aw ... +word_205E6 dw ? ; DATA XREF: sub_B3DA+96w sub_B98E+11w ... +word_205E8 dw ? ; DATA XREF: sub_B3DA+99w sub_B98E+Ew ... +word_205EA dw ? ; DATA XREF: sub_B3DA+9Fw sub_B98E+1Aw ... +word_205EC dw ? ; DATA XREF: sub_B3DA+A2w sub_B98E+17w ... +word_205EE dw ? ; DATA XREF: sub_C6B2+19w sub_C6B2+45r ... +word_205F0 dw ? ; DATA XREF: sub_C6B2+26w sub_C6B2+4Br ... +word_205F2 dw ? ; DATA XREF: sub_C6B2+34w sub_C6B2+5Cr ... +word_205F4 dw ? ; DATA XREF: sub_C6B2+42w sub_C6B2+63r ... +word_205F6 dw ? ; DATA XREF: sub_CA62+1Fr + ; sub_CD2A+150r ... +word_205F8 dw ? ; DATA XREF: sub_CB2D+11r sub_CD2A+15r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_20602 dw ? ; DATA XREF: sub_C5B0:loc_C634w + ; sub_C5B0:loc_C655w ... +byte_20604 db ? ; DATA XREF: sub_C5B0+3Fw sub_DAF0+B3r ... +byte_20605 db ? ; DATA XREF: sub_B98E+20w sub_C5B0+1Cw ... +byte_20606 db ? ; DATA XREF: sub_C5B0+21w sub_E280+16w ... +byte_20607 db ? ; DATA XREF: sub_BCB1+159w + ; sub_BCB1+279r ... +byte_20608 db ? ; DATA XREF: sub_C5B0+2Bw sub_EFF2+1Dw ... +byte_20609 db ? ; DATA XREF: sub_C5B0+30w sub_EFF2+7r ... +byte_2060A db ? ; DATA XREF: sub_C5B0+8Aw sub_C5B0+ABw ... +byte_2060B db ? ; DATA XREF: sub_C5B0+8Fw sub_C5B0+B0w ... +byte_2060C db ? ; DATA XREF: sub_C5B0+94w sub_C5B0+B5w ... +byte_2060D db ? ; DATA XREF: sub_C5B0+99w sub_C5B0+BAw ... +byte_2060E db ? ; DATA XREF: sub_C5B0+9Ew sub_C5B0+BFw ... +byte_2060F db ? ; DATA XREF: sub_C5B0+C4w sub_C5B0+F3w ... +byte_20610 db ? ; DATA XREF: sub_C5B0+60w + ; sub_CB2D+1A9r ... +byte_20611 db ? ; DATA XREF: sub_C5B0+65w +dword_20612 dd ? ; DATA XREF: sub_B3DA+A5w + ; sub_BCB1+26Cw ... +word_20616 dw ? ; DATA XREF: sub_B3DA:loc_B63Cw + ; sub_B3DA:loc_B698w ... +byte_20618 db ? ; DATA XREF: sub_3EF4+26r sub_3EF4+49r ... +byte_20619 db ? ; DATA XREF: sub_3EF4:loc_3F5Er + ; sub_4288:loc_42D2r ... +byte_2061A db ? ; DATA XREF: sub_B3DA+AEw sub_BCB1+3Ar ... + db ? +word_2061C dw ? ; DATA XREF: sub_114D6+67w +word_2061E dw ? ; DATA XREF: sub_114D6+6Dw +word_20620 dw ? ; DATA XREF: sub_114D6+85w +word_20622 dw ? ; DATA XREF: sub_114D6+8Bw + dd ? + dd ? + dd ? +word_20630 dw ? ; DATA XREF: sub_114D6+73w + ; sub_114D6+91r ... +word_20632 dw ? ; DATA XREF: sub_114D6+79w +word_20634 dw ? ; DATA XREF: sub_114D6+94w +word_20636 dw ? ; DATA XREF: sub_114D6+9Aw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_20644 dw ? ; DATA XREF: sub_114D6+7Fw +word_20646 dw ? ; DATA XREF: sub_114D6+9Dw + db ? ; + db ? ; + db ? ; + db ? ; +word_2064C dw ? ; DATA XREF: sub_123A9:loc_125D6r + ; sub_123A9+237w +word_2064E dw ? ; DATA XREF: sub_13ADE+35w + ; sub_13ADE+4Fw ... +word_20650 dw ? ; DATA XREF: sub_1028C+22w + ; sub_11308+2Br ... +word_20652 dw ? ; DATA XREF: sub_13909+1Ew + ; sub_13ADE+1Ew ... +word_20654 dw ? ; DATA XREF: sub_13909+24w + ; sub_13ADE+24w ... +word_20656 dw ? ; DATA XREF: sub_13909+2Aw + ; sub_1424A+33w ... +word_20658 dw ? ; DATA XREF: sub_13909+30w + ; sub_1424A+39w ... +word_2065A dw ? ; DATA XREF: sub_1028C+2Dw + ; sub_13909+36w ... +word_2065C dw ? ; DATA XREF: sub_13786+Dw + ; sub_13786+24r ... +word_2065E dw ? ; DATA XREF: sub_13786+1Aw + ; sub_13786+2Er ... +byte_20660 db ? ; DATA XREF: sub_114D6+Dr + ; sub_123A9+93w ... +byte_20661 db ? ; DATA XREF: sub_123A9+98w + ; sub_123A9:loc_12475r ... +byte_20662 db ? ; DATA XREF: sub_123A9+12Br + ; sub_123A9+132w +byte_20663 db ? ; DATA XREF: sub_123A9:loc_124E0r + ; sub_123A9+13Ew +byte_20664 db ? ; DATA XREF: sub_120F7+B2w + ; sub_121BA+17w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_2066A db ? ; DATA XREF: sub_1028C+28w + ; sub_13786+1Dr ... +byte_2066B db ? ; DATA XREF: sub_1028C+33w + ; sub_17C92+33w ... +byte_2066C db ? ; DATA XREF: sub_3EF4+42r sub_3F8A+CEr ... +byte_2066D db ? ; DATA XREF: sub_B3DA+B8w + ; sub_BCB1:loc_BEE0r ... +word_2066E dw ? ; DATA XREF: sub_11997+Aw + ; sub_11997:loc_119B7w ... +word_20670 dw ? ; DATA XREF: sub_11997+14w + ; sub_11997+2Aw ... +byte_20672 db ? ; DATA XREF: sub_13ADE+8Bw + ; sub_13ADE+A6w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_20682 dd ? ; DATA XREF: sub_FE12+9Br + ; sub_1028C+38w ... +word_20686 dw ? ; DATA XREF: sub_1028C+41w + ; sub_10E95+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 ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + dw ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_21740 dw ? ; DATA XREF: sub_10BC6+7Aw + ; sub_10BC6+8Dr ... +word_21742 dw ? ; DATA XREF: sub_10BC6+86w + ; sub_10BC6+89r +word_21744 dw ? ; DATA XREF: sub_102D6+6Ew + ; sub_1099B+54r ... +word_21746 dw ? ; DATA XREF: sub_102D6+74w + ; sub_1099B+90r ... +word_21748 dw ? ; DATA XREF: sub_102D6+7Aw + ; sub_1099B+114r ... +byte_2174A db ? ; DATA XREF: sub_102D6:loc_1038Aw + ; sub_10716+19r +byte_2174B db ? ; DATA XREF: sub_102D6+Cw + ; sub_102D6:loc_102EEw ... +byte_2174C db ? ; DATA XREF: sub_41AA+85r + ; sub_102D6+11w ... + db ? +word_2174E dw ? ; DATA XREF: sub_1099B+1Fr + ; sub_10BC6+3Fw ... +word_21750 dw ? ; DATA XREF: sub_1099B+Br + ; sub_10BC6+4Fw ... +byte_21752 db ? ; DATA XREF: sub_102D6+B7w + ; sub_102D6:loc_103A4w ... +byte_21753 db ? ; DATA XREF: sub_10716+26w + ; sub_10716+31r +byte_21754 db ? ; DATA XREF: sub_102D6+D6w + ; sub_1078E:loc_10835r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_21896 dw ? ; DATA XREF: sub_DAF0+34w sub_DAF0+46r ... +word_21898 dw ? ; DATA XREF: sub_DAF0+3Aw sub_DAF0+4Fr ... +word_2189A dw ? ; DATA XREF: sub_D906+23r sub_DAF0+5Bw ... +word_2189C dw ? ; DATA XREF: sub_D906+8r sub_D906+83r ... +word_2189E dw ? ; DATA XREF: sub_D629+20w + ; sub_D906:loc_D99Dw ... +byte_218A0 db ? ; DATA XREF: sub_D629+9w sub_D65A+47r ... +byte_218A1 db ? ; DATA XREF: sub_D629+29w sub_D743+98r ... +byte_218A2 db ? ; DATA XREF: sub_D65A:loc_D67Br + ; sub_D65A+24w + db ? +dword_218A4 dd ? ; DATA XREF: sub_D906+57w sub_D906+75w ... +byte_218A8 db ? ; DATA XREF: sub_D906+7Aw + ; sub_D906:loc_D984w ... + db ? +word_218AA dw ? ; DATA XREF: sub_DAF0+Bw +dword_218AC dd ? ; DATA XREF: sub_DAF0+13Cw + ; sub_DCD1+22w ... +word_218B0 dw ? ; DATA XREF: sub_DCFE+15w sub_DD1B+15w ... +byte_218B2 db ? ; DATA XREF: sub_CB2D+36r sub_CD2A+42r ... + db ? +byte_218B4 db ? ; DATA XREF: sub_E271+8w sub_E280+3r ... + db ? +word_218B6 dw ? ; DATA XREF: sub_E280+22w sub_E2D9+1Aw ... + db ? ; + db ? ; +dword_218BA dd ? ; DATA XREF: sub_E178+B2w sub_E178+B9r ... +word_218BE dw ? ; DATA XREF: sub_E178+21w sub_E178+28r ... +word_218C0 dw ? ; DATA XREF: sub_E178+1Ew sub_E5B5+13r +byte_218C2 db ? ; DATA XREF: sub_E271+3w sub_E280+28w ... + db ? +word_218C4 dw ? ; DATA XREF: sub_E280+3Aw sub_E2D9+4Fr ... +word_218C6 dw ? ; DATA XREF: sub_E280+40w sub_E2D9+72r ... +word_218C8 dw ? ; DATA XREF: sub_E280+46w sub_E2D9+11r ... +word_218CA dw ? ; DATA XREF: sub_E280+4Cw + ; sub_E2D9:loc_E38Ar ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_219CA dw ? ; DATA XREF: sub_E178+52w sub_E178+73w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_21A4C db ? ; DATA XREF: sub_E618+98w + ; sub_E618+232r +byte_21A4D db ? ; DATA XREF: sub_E618+211r +byte_21A4E db ? ; DATA XREF: sub_E618+217r +byte_21A4F db ? ; DATA XREF: sub_E618+21Dr +byte_21A50 db ? ; DATA XREF: sub_E618+6Fr +byte_21A51 db ? ; DATA XREF: sub_E618+75r +byte_21A52 db ? ; DATA XREF: sub_E618+7Br +byte_21A53 db ? ; DATA XREF: sub_E89C+37w + ; sub_E89C+17Cr +byte_21A54 db ? ; DATA XREF: sub_EAEB+2Bw + ; sub_EAEB+17Dr +byte_21A55 db ? ; DATA XREF: sub_EAEB+23w + ; sub_EAEB:loc_EB5Dr ... +unk_21A56 db ? ; ; DATA XREF: sub_4320+10o + db ? ; + 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_21A70 dw ? ; DATA XREF: sub_1718+10Bw + ; sub_1718+15Dr ... +word_21A72 dw ? ; DATA XREF: sub_1718+11Bw +dword_21A74 dd ? ; DATA XREF: sub_1718+150w + ; sub_1718+191r ... +word_21A78 dw ? ; DATA XREF: sub_1718+12Dw + ; sub_1718:loc_1BA2r +word_21A7A dw ? ; DATA XREF: sub_1718+130w + ; sub_1718+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_21B7C db ? ; DATA XREF: sub_1718+8Cw + ; sub_1718+16Dw + db ? +word_21B7E dw ? ; DATA XREF: sub_1718+21w + ; sub_1718+4A0r ... +word_21B80 dw ? ; DATA XREF: sub_1718+34w + ; sub_1718+1B1r ... +byte_21B82 db ? ; DATA XREF: sub_1718+25w + ; sub_1718+1A3r ... +byte_21B83 db ? ; DATA XREF: sub_1718+2Aw + ; sub_1718+1A7r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_22796 dw ? ; DATA XREF: sub_42F8w sub_445A+2Cw ... +byte_22798 db ? ; DATA XREF: sub_42F8+6w sub_445A+8r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_22862 dw ? ; DATA XREF: sub_43E0+11r sub_445A+83w ... +word_22864 dw ? ; DATA XREF: sub_43E0+21r sub_445A+89w ... + 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_2287E db ? ; DATA XREF: sub_42F8+10w sub_45FC+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 ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_22D48 db ? ; DATA XREF: sub_42F8+15w + ; sub_4692:loc_46AAr ... + db ? +byte_22D4A db ? ; DATA XREF: sub_F1D8+157w + ; sub_F1D8+197r ... +byte_22D4B db ? ; DATA XREF: sub_F1D8+16Aw + ; sub_F1D8+1E2r ... +word_22D4C dw ? ; DATA XREF: sub_11183+39r + ; sub_111D1+2Fr ... +word_22D4E dw ? ; DATA XREF: sub_123A9+75w + ; sub_123A9+89w + db ? ; + db ? ; + db ? ; + db ? ; +word_22D54 dw ? ; DATA XREF: sub_11766+99r + ; sub_120F7+8Ar ... +byte_22D56 db ? ; DATA XREF: sub_123A9:loc_123E9r + ; sub_123A9+9Dw ... +byte_22D57 db ? ; DATA XREF: sub_123A9+153w + ; sub_123A9+1C5r ... +dword_22D58 dd ? ; DATA XREF: sub_123A9+Bw + ; sub_123A9+B5r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_22D84 dw ? ; DATA XREF: sub_12778+32w +word_22D86 dw ? ; DATA XREF: sub_12778+3Ew +word_22D88 dw ? ; DATA XREF: sub_12778+4Aw +word_22D8A dw ? ; DATA XREF: sub_12778+56w +word_22D8C dw ? ; DATA XREF: sub_11766+59r + ; sub_11766+75r ... +word_22D8E dw ? ; DATA XREF: sub_12778+38w +word_22D90 dw ? ; DATA XREF: sub_12778+44w +word_22D92 dw ? ; DATA XREF: sub_12778+50w +word_22D94 dw ? ; DATA XREF: sub_12778+5Cw +word_22D96 dw ? ; DATA XREF: sub_11766+60r + ; sub_11766+7Cr ... +word_22D98 dw ? ; DATA XREF: sub_11877+105r + ; sub_11BFE+Ar ... +word_22D9A dw ? ; DATA XREF: sub_11877+109r + ; sub_11BFE+Er ... +word_22D9C dw ? ; DATA XREF: sub_1223E+21r + ; sub_1223E+33r ... +word_22D9E dw ? ; DATA XREF: sub_10E95+7Fw + ; sub_10E95+BFw ... +word_22DA0 dw ? ; DATA XREF: sub_10E95+73w + ; sub_10E95+19Br +word_22DA2 dw ? ; DATA XREF: sub_10E95+79w + ; sub_10E95+1BFr +byte_22DA4 db ? ; DATA XREF: sub_10E95+85w + ; sub_10E95+C2w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_22FA6 db ? ; DATA XREF: sub_11308+3Bw +byte_22FA7 db ? ; DATA XREF: sub_11308+40w +byte_22FA8 db ? ; DATA XREF: sub_114D6+A3w + ; sub_114D6+12Ew ... + db ? +word_22FAA dw ? ; DATA XREF: sub_11877+5w + ; sub_123A9+A2w ... +word_22FAC dw ? ; DATA XREF: sub_11D30+13w + ; sub_11D30+31r ... +byte_22FAE db ? ; DATA XREF: sub_11D30+19w + ; sub_11D30:loc_11D4Er ... +word_22FAF dw ? ; DATA XREF: sub_11F2F+12w + ; sub_11F2F+38r ... + db ? ; + db ? ; + db ? ; + db ? ; +word_22FB5 dw ? ; DATA XREF: sub_1200F+B3r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_22FCE db ? ; DATA XREF: sub_121F3+3Ew + ; sub_122B5+26w ... +byte_22FCF db ? ; DATA XREF: sub_121F3+Dr + ; sub_121F3+20r ... +byte_22FD0 db ? ; DATA XREF: sub_1223E+5Fw + ; sub_122B5+2Bw ... + db ? +word_22FD2 dw ? ; DATA XREF: sub_1223E+25r + ; sub_122B5+30w ... +word_22FD4 dw ? ; DATA XREF: sub_1223E+37r + ; sub_122B5+36w ... +word_22FD6 dw ? ; DATA XREF: sub_1223E+53r + ; sub_122B5+3Cw ... +word_22FD8 dw ? ; DATA XREF: sub_445A+36r + ; sub_1C3DF+59w ... + db ? ; +byte_22FDB db ? ; DATA XREF: sub_1C3DF+85w + ; sub_1C3DF:loc_1C518r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_23A6C dw ? ; DATA XREF: sub_12AE2+29r + ; sub_12AE2:loc_12B40r ... +word_23A6E dw ? ; DATA XREF: sub_12AE2+Fr + ; sub_12AE2+15r ... +byte_23A70 db ? ; DATA XREF: sub_11B5D+13w + ; sub_11C37+26w ... + db ? +dword_23A72 dd ? ; DATA XREF: sub_B3DA+1F3w + ; sub_BCB1+54r ... +dword_23A76 dd ? ; DATA XREF: sub_B3DA+1FFw + ; sub_BCB1+13Dr ... +unk_23A7A db ? ; ; DATA XREF: sub_12C72+2Ao + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_24E7A db ? ; DATA XREF: sub_12C72+38w + ; sub_13055+31r ... +byte_24E7B db ? ; DATA XREF: sub_12DE0+5Cw + ; sub_12DE0:loc_12E48w ... +word_24E7C dw ? ; DATA XREF: sub_13C0C+4r + ; sub_13C0C+4Ar ... +word_24E7E dw ? ; DATA XREF: sub_13ADE+55w + ; sub_13ADE+5Ew ... +word_24E80 dw ? ; DATA XREF: sub_13ADE+44w + ; sub_13BB5+36r ... +word_24E82 dw ? ; DATA XREF: sub_13786+73r + ; sub_137FE+75w ... +word_24E84 dw ? ; DATA XREF: sub_13909+3Cw + ; sub_13909+86w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_250DE dw ? ; DATA XREF: sub_13C91+60r + ; sub_13C91+65w ... +word_250E0 dw ? ; DATA XREF: sub_13C91+DFw + ; sub_13C91:loc_13D7Bw ... +word_250E2 dw ? ; DATA XREF: sub_1410A+5Ar + ; sub_14169+5Fw ... +word_250E4 dw ? ; DATA XREF: sub_1403E+11w + ; sub_1403E+1Er ... + 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_250FE dw ? ; DATA XREF: sub_143E5+35r + ; sub_14E9D+70w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_252E0 db ? ; DATA XREF: sub_1469C+36r + ; sub_148FD+47w ... +byte_252E1 db ? ; DATA XREF: sub_14726:loc_147F3r + ; sub_14726:loc_14822w +word_252E2 dw ? ; DATA XREF: sub_1489C+4Dr + ; sub_148FD+4Aw ... +word_252E4 dw ? ; DATA XREF: sub_1489C+55r + ; sub_148FD+3Bw ... +word_252E6 dw ? ; DATA XREF: sub_148FD:loc_1492Dw + ; sub_148FD+43r ... +word_252E8 dw ? ; DATA XREF: sub_14B33+43w + ; sub_14B33+73r ... +word_252EA dw ? ; DATA XREF: sub_14BC2+4Aw + ; sub_14BC2+7Ar ... +word_252EC dw ? ; DATA XREF: sub_14F16+BFw + ; sub_14F16+DEr ... +word_252EE dw ? ; DATA XREF: sub_14F16+C8w + ; sub_14F16+F2r ... +word_252F0 dw ? ; DATA XREF: sub_14F16+AAw + ; sub_14F16+DBr +word_252F2 dw ? ; DATA XREF: sub_14F16+B6w + ; sub_14F16+EFr +word_252F4 dw ? ; DATA XREF: sub_14F16+CBw + ; sub_14F16+E2r ... +byte_252F6 db ? ; DATA XREF: sub_150F4:loc_1512Br + ; sub_150F4:loc_15185r ... +byte_252F7 db ? ; DATA XREF: sub_150F4+3Er + ; sub_150F4+6Cw ... +dword_252F8 dd ? ; DATA XREF: sub_DD41+AEr sub_DD41+B5w ... +byte_252FC db ? ; DATA XREF: sub_E012+4Ar + ; sub_1CD36+52w + db ? +word_252FE dw ? ; DATA XREF: sub_1C647:loc_1C64Fw + ; sub_1C6C7+24o ... +dword_25300 dd ? ; DATA XREF: sub_1CD36:loc_1CD50r + ; sub_1CD36+30r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_25324 dd ? ; DATA XREF: sub_1C9FE+3Ar +dword_25328 dd ? ; DATA XREF: sub_1C95D+4w + ; sub_1C95D+2Ew + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_25372 db ? ; DATA XREF: sub_1C95D+Dw + ; sub_1C95D+3Cw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_2537D db ? ; DATA XREF: sub_1C95D+12w + ; sub_1C95D+44w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_253B0 dd ? ; DATA XREF: sub_1C95D+17w + ; sub_1C95D+58w +byte_253B4 db ? ; DATA XREF: sub_15402+3r + ; sub_1540C+13w ... + db ? +word_253B6 dw ? ; DATA XREF: sub_15E84+52r + ; sub_15F6F+11r ... +word_253B8 dw ? ; DATA XREF: sub_15E84+56r + ; sub_15F6F+15r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_254E6 dw ? ; DATA XREF: sub_158DC+3r + ; sub_158DC+14r ... +word_254E8 dw ? ; DATA XREF: sub_158DC+7r + ; sub_158DC+1Br ... +byte_254EA db ? ; DATA XREF: sub_1540C+Ew + ; sub_1540C+31r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_2558C db ? ; DATA XREF: sub_1566F+2Er + ; sub_15E84+11w ... +byte_2558D db ? ; DATA XREF: sub_1566F+13Cr + ; sub_1566F+164r ... +byte_2558E db ? ; DATA XREF: sub_15A25+1Aw + ; sub_15A25+BFr ... +byte_2558F db ? ; DATA XREF: sub_15A25+17Dw + ; sub_15A25+1B0r ... +byte_25590 db ? ; DATA XREF: sub_15A25+191w + ; sub_15A25+1B8r ... + db ? +word_25592 dw ? ; DATA XREF: sub_15A25+155w + ; sub_15A25+1DBr ... +word_25594 dw ? ; DATA XREF: sub_15A25+165w + ; sub_15A25+1F0r ... +byte_25596 db ? ; DATA XREF: sub_15D56+17w + ; sub_15D56+CBw ... +byte_25597 db ? ; DATA XREF: sub_15D56:loc_15D80w + ; sub_15D56+4Cr ... +byte_25598 db ? ; DATA XREF: sub_15EF7:loc_15F1Bw + ; sub_15EF7+2Er ... + db ? +word_2559A dw ? ; DATA XREF: sub_15F95+47w + ; sub_15F95+9Er ... +word_2559C dw ? ; DATA XREF: sub_15F95+50w + ; sub_15F95+A2r ... +byte_2559E db ? ; DATA XREF: sub_15F95+5Dw + ; sub_15F95+FEr ... + db ? +word_255A0 dw ? ; DATA XREF: sub_1619C+41w + ; sub_1619C+5Br ... +byte_255A2 db ? ; DATA XREF: sub_1619C+47w + ; sub_1619C+66r ... +byte_255A3 db ? ; DATA XREF: sub_162D3+25w + ; sub_162D3:loc_16325r ... +word_255A4 dw ? ; DATA XREF: sub_16421+57o + ; sub_16421+65r ... +word_255A6 dw ? ; DATA XREF: sub_16421+5Bo + ; sub_16421+D0r +word_255A8 dw ? ; DATA XREF: sub_16421+76w + ; sub_16421+95r ... +word_255AA dw ? ; DATA XREF: sub_16421+89w + ; sub_16421+99r ... +word_255AC dw ? ; DATA XREF: sub_16421+6Aw + ; sub_16421+C9r +word_255AE dw ? ; DATA XREF: sub_16421+79w + ; sub_16421+A5r ... +byte_255B0 db ? ; DATA XREF: sub_165A5:loc_165C9w + ; sub_165A5+37r ... +word_255B1 dw ? ; DATA XREF: sub_16650+11w + ; sub_16650+25r ... +byte_255B3 db ? ; DATA XREF: sub_166DE+42w + ; sub_166DE+5Fw ... +byte_255B4 db ? ; DATA XREF: sub_166DE+3r + ; sub_166DE+2Fw ... + db ? +word_255B6 dw ? ; DATA XREF: sub_166DE:loc_166F6r + ; sub_16744+C6w ... +word_255B8 dw ? ; DATA XREF: sub_166DE:loc_166FCr + ; sub_16744+CCw ... +word_255BA dw ? ; DATA XREF: sub_166DE:loc_16702r + ; sub_16744+D2w ... +word_255BC dw ? ; DATA XREF: sub_166DE+4Ar + ; sub_16744+D8w ... +byte_255BE db ? ; DATA XREF: sub_16744+42r + ; sub_16744+47w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26B76 dd ? ; DATA XREF: sub_16D9B+15r + ; sub_1C3DF+1C2r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26C3A dw ? ; DATA XREF: sub_16D9B+Br + ; sub_1C3DF+193w +dword_26C3C dd ? ; DATA XREF: sub_B3DA+20Bw + ; sub_BCB1:loc_BCF9r ... +dword_26C40 dd ? ; DATA XREF: sub_B3DA+217w + ; sub_BCB1+121r ... +word_26C44 dw ? ; DATA XREF: sub_16AFC+38r + ; sub_16B69+13r ... +word_26C46 dw ? ; DATA XREF: sub_16AA7+22r + ; sub_16AFC+31r ... +word_26C48 dw ? ; DATA XREF: sub_16AA7+3r + ; sub_16AA7+11r ... +word_26C4A dw ? ; DATA XREF: sub_16AA7+Ar sub_16ADD+Ar ... +word_26C4C dw ? ; DATA XREF: sub_16AA7+18r + ; sub_16ADD+17r ... +word_26C4E dw ? ; DATA XREF: sub_17562+26r + ; sub_17562+3Cr ... +word_26C50 dw ? ; DATA XREF: sub_17562+1Br + ; sub_17562+73r ... +word_26C52 dw ? ; DATA XREF: sub_16ADD+3r + ; sub_16AFC+47r ... +word_26C54 dw ? ; DATA XREF: sub_16ADD+10r + ; sub_16AFC+50r ... +word_26C56 dw ? ; DATA XREF: sub_181B3:loc_183B2r + ; sub_19456+2Cw +word_26C58 dw ? ; DATA XREF: sub_180EC+91r + ; sub_180EC+AAr ... +word_26C5A dw ? ; DATA XREF: sub_18905+F1r + ; sub_18A1B+80r ... +word_26C5C dw ? ; DATA XREF: sub_19173+31r + ; sub_191CC+24r ... +word_26C5E dw ? ; DATA XREF: sub_181B3+203r + ; sub_19456+50w +word_26C60 dw ? ; DATA XREF: sub_180EC+95r + ; sub_180EC+AEr ... +word_26C62 dw ? ; DATA XREF: sub_18905+F5r + ; sub_18A1B+84r ... +word_26C64 dw ? ; DATA XREF: sub_19173+35r + ; sub_191CC+19r ... +word_26C66 dw ? ; DATA XREF: sub_17C92+38r + ; sub_193A4+23w ... +word_26C68 dw ? ; DATA XREF: sub_18BA6+43r + ; sub_18BA6+80r ... +word_26C6A dw ? ; DATA XREF: sub_193A4+4Br + ; sub_193A4:loc_193FDr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26CBC dw ? ; DATA XREF: sub_17D59+4w + ; sub_17D59+1Aw +word_26CBE dw ? ; DATA XREF: sub_193A4+16r + ; sub_193A4+29w ... +byte_26CC0 db ? ; DATA XREF: sub_180EC+B4r + ; sub_181B3+1EEr ... +byte_26CC1 db ? ; DATA XREF: sub_17A7F+Er + ; sub_17A7F+30r ... +byte_26CC2 db ? ; DATA XREF: sub_17A7F+C6r + ; sub_19456+E1w ... +byte_26CC3 db ? ; DATA XREF: sub_17B75+AEr + ; sub_17B75+FAr ... +byte_26CC4 db ? ; DATA XREF: sub_17B75+7Ar + ; sub_17B75+94r ... +byte_26CC5 db ? ; DATA XREF: sub_17A7F+B5r + ; sub_19456+4B2w ... +byte_26CC6 db ? ; DATA XREF: sub_17F27+11w + ; sub_17F27+15r +byte_26CC7 db ? ; DATA XREF: sub_181B3+55w +byte_26CC8 db ? ; DATA XREF: sub_181B3+5Aw + ; sub_181B3+7Er ... +byte_26CC9 db ? ; DATA XREF: sub_181B3+5Fw + ; sub_181B3+108w ... +byte_26CCA db ? ; DATA XREF: sub_183D0+1D5r + ; sub_188AA+14w ... + db ? +word_26CCC dw ? ; DATA XREF: sub_183D0+28w + ; sub_183D0+37w ... +word_26CCE dw ? ; DATA XREF: sub_183D0+34w + ; sub_183D0+3Cw ... +word_26CD0 dw ? ; DATA XREF: sub_183D0+41w + ; sub_183D0:loc_18451r ... +byte_26CD2 db ? ; DATA XREF: sub_183D0+7Br + ; sub_183D0+125r ... +byte_26CD3 db ? ; DATA XREF: sub_183D0+47w + ; sub_183D0+1CDr ... +byte_26CD4 db ? ; DATA XREF: sub_183D0+4Cw + ; sub_183D0+1FEw ... + db ? +unk_26CD6 db ? ; ; DATA XREF: sub_188AA+40o + ; sub_188AA+4Fo + db ? ; +unk_26CD8 db ? ; ; DATA XREF: sub_188AA+44o + ; sub_188AA+53o + db ? ; +word_26CDA dw ? ; DATA XREF: sub_18905+7Bw + ; sub_18905+88w ... +word_26CDC dw ? ; DATA XREF: sub_18A1B+4Fw + ; sub_18A1B+88r ... +unk_26CDE db ? ; ; DATA XREF: sub_18B4B+40o + ; sub_18B4B+4Fo + db ? ; +unk_26CE0 db ? ; ; DATA XREF: sub_18B4B+44o + ; sub_18B4B+53o + db ? ; +byte_26CE2 db ? ; DATA XREF: sub_18C4A+86w + ; sub_18C4A+D6r ... +byte_26CE3 db ? ; DATA XREF: sub_18C4A:loc_18CE1w + ; sub_18C4A+176r ... +byte_26CE4 db ? ; DATA XREF: sub_18DE0+6Fw + ; sub_18DE0+7Cr ... + db ? +word_26CE6 dw ? ; DATA XREF: sub_18EB8+2Fw + ; sub_18EB8+97r ... +word_26CE8 dw ? ; DATA XREF: sub_18EB8+3Bw + ; sub_18EB8+CFr ... +word_26CEA dw ? ; DATA XREF: sub_18EB8+3Ew + ; sub_18EB8:loc_18F32r ... +byte_26CEC db ? ; DATA XREF: sub_18EB8+47w + ; sub_18EB8+74r ... +word_26CED dw ? ; DATA XREF: sub_19173+11w + ; sub_19173+39r ... +byte_26CEF db ? ; DATA XREF: sub_191CC+31w + ; sub_191CC+67r ... +word_26CF0 dw ? ; DATA XREF: sub_193A4+10r + ; sub_19456+154w ... +word_26CF2 dw ? ; DATA XREF: sub_193A4+19r + ; sub_19456+160w ... +word_26CF4 dw ? ; DATA XREF: sub_193A4+51r + ; sub_19456+166w ... +word_26CF6 dw ? ; DATA XREF: sub_193A4+38r + ; sub_19456+15Aw ... +byte_26CF8 db ? ; DATA XREF: sub_19456+79r + ; sub_19456+7Ew ... +byte_26CF9 db ? ; DATA XREF: sub_19456+DBr + ; sub_19456+12Bw ... +byte_26CFA db ? ; DATA XREF: sub_19456+C0w + ; sub_19456+C4r ... + db ? +word_26CFC dw ? ; DATA XREF: sub_1A1FF+6Fw + ; sub_1A1FF+B1r ... +word_26CFE dw ? ; DATA XREF: sub_19FAF+64w + ; sub_1A0CE+1Ar ... +word_26D00 dw ? ; DATA XREF: sub_1A1B6+2Dr + ; sub_1A1FF+A0w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26D42 dw ? ; DATA XREF: sub_1B7D3+Fw + ; sub_1B7D3:loc_1B88Ew ... +word_26D44 dw ? ; DATA XREF: sub_1B7D3+1Bw + ; sub_1B7D3+C7w ... +word_26D46 dw ? ; DATA XREF: sub_1B7D3+15w + ; sub_1B7D3+C1w ... +word_26D48 dw ? ; DATA XREF: sub_1B7D3+21w + ; sub_1B7D3+CDw ... +word_26D4A dw ? ; DATA XREF: sub_1AA60+2Dr + ; sub_1B555:loc_1B631r ... +byte_26D4C db ? ; DATA XREF: sub_1A7D5+26Cw + ; sub_1BEF2+8Dw ... +byte_26D4D db ? ; DATA XREF: sub_1A7D5+271w + ; sub_1BEF2+EBw ... +byte_26D4E db ? ; DATA XREF: sub_1A7D5+276w + ; sub_1BEF2:loc_1C0BCr ... +byte_26D4F db ? ; DATA XREF: sub_1A7D5+27Bw + ; sub_1BEF2+1E2w ... + db ? ; + db ? ; + db ? ; + db ? ; +word_26D54 dw ? ; DATA XREF: sub_19E2F+5Dw + ; sub_19E2F+66w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26D76 dw ? ; DATA XREF: sub_19F52+31r + ; sub_19F52:loc_19F9Er ... +word_26D78 dw ? ; DATA XREF: sub_19F52+4r + ; sub_19FAF+19r ... +word_26D7A dw ? ; DATA XREF: sub_19EF3+5Ar + ; sub_19FAF+5Ew ... +byte_26D7C db ? ; DATA XREF: sub_1A1FF+8Cw + ; sub_1A1FF+13Bw ... +byte_26D7D db ? ; DATA XREF: sub_1A1FF+87w + ; sub_1A1FF:loc_1A3A3r ... +byte_26D7E db ? ; DATA XREF: sub_1A7D5+24Aw + ; sub_1B24A+2Bw ... +word_26D7F dw ? ; DATA XREF: sub_1B24A+16w + ; sub_1B24A+59r ... +byte_26D81 db ? ; DATA XREF: sub_1B555:loc_1B57Bw + ; sub_1B555:loc_1B592r +word_26D82 dw ? ; DATA XREF: sub_1B555+2Cw + ; sub_1B555+5Br +word_26D84 dw ? ; DATA XREF: sub_1B555+35w + ; sub_1B555+7Cr +byte_26D86 db ? ; DATA XREF: sub_1B555+38w + ; sub_1B555+40w ... +word_26D87 dw ? ; DATA XREF: sub_1B6DA+5Fw + ; sub_1B6DA+8Fr ... +byte_26D89 db ? ; DATA XREF: sub_1BAFF+35w + ; sub_1BAFF+11Cr ... +byte_26D8A db ? ; DATA XREF: sub_1BAFF+3Aw +byte_26D8B db ? ; DATA XREF: sub_1BAFF+3Fw +byte_26D8C db ? ; DATA XREF: sub_1BAFF+44w +byte_26D8D db ? ; DATA XREF: sub_1BAFF+49w +word_26D8E dw ? ; DATA XREF: sub_1BE72:loc_1BE97w + ; sub_1BE72+5Er +word_26D90 dw ? ; DATA XREF: sub_1BE72:loc_1BEC2w + ; sub_1BE72+67r +byte_26D92 db ? ; DATA XREF: sub_1BEF2+F0w + ; sub_1BEF2+1A5r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_26E14 dw ? ; DATA XREF: seg000:5D1Dw +word_26E16 dw ? ; DATA XREF: seg000:5D17w + db ? ; + db ? ; + db ? ; + db ? ; +word_26E1C dw ? ; DATA XREF: seg000:5CBDr seg000:5D8Aw ... +word_26E1E dw ? ; DATA XREF: seg000:5CB9r seg000:5D86w ... +dword_26E20 dd ? ; DATA XREF: sub_8E63+ACw sub_8E63+C2r ... +dword_26E24 dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dd ? + dd ? +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg009 segment byte stack 'STACK' use16 + assume cs:seg009 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing +byte_26E30 db 80h dup(?) +seg009 ends + + + end start