dxIka.asm
GabrielRavier_Ikachan-Decompilation/IDA Output/dxIka.asm
; ---------------------------------------------------------------------------

_SCOPETABLE_ENTRY struc	; (sizeof=0xC, align=0x4, copyof_1) ; XREF: .rdata:stru_4111A0/r
					; .rdata:stru_411558/r ...
EnclosingLevel	dd ?
FilterFunc	dd ?			; offset
HandlerFunc	dd ?			; offset
_SCOPETABLE_ENTRY ends

; ---------------------------------------------------------------------------

CPPEH_RECORD	struc ;	(sizeof=0x18, align=0x4, copyof_6) ; XREF: start/r
					; ___crtGetStringTypeA/r ...
old_esp		dd ?			; XREF:	start+23/w start:loc_40BB61/r ...
exc_ptr		dd ?			; XREF:	start:loc_40BB4D/r ; offset
registration	_EH3_EXCEPTION_REGISTRATION ? ;	XREF: start:loc_40BAE2/w
					; ___crtGetStringTypeA+D2/w ...
CPPEH_RECORD	ends

; ---------------------------------------------------------------------------

_EH3_EXCEPTION_REGISTRATION struc ; (sizeof=0x10, align=0x4, copyof_3)
					; XREF:	CPPEH_RECORD/r
Next		dd ?			; XREF:	___crtGetStringTypeA+13A/r
					; ___crtLCMapStringA+193/r ; offset
ExceptionHandler dd ?			; offset
ScopeTable	dd ?			; offset
TryLevel	dd ?			; XREF:	start:loc_40BAE2/w
					; ___crtGetStringTypeA+D2/w ...
_EH3_EXCEPTION_REGISTRATION ends

; ---------------------------------------------------------------------------

tagRECT		struc ;	(sizeof=0x10, align=0x4, copyof_7) ; XREF: sub_401E90/r
left		dd ?
top		dd ?
right		dd ?
bottom		dd ?
tagRECT		ends

; ---------------------------------------------------------------------------

tagPOINT	struc ;	(sizeof=0x8, align=0x4,	copyof_9) ; XREF: sub_402860/r
x		dd ?
y		dd ?
tagPOINT	ends

; ---------------------------------------------------------------------------

WNDCLASSA	struc ;	(sizeof=0x28, align=0x4, copyof_10) ; XREF: _WinMain@16/r
style		dd ?
lpfnWndProc	dd ?			; offset
cbClsExtra	dd ?
cbWndExtra	dd ?
hInstance	dd ?			; offset
hIcon		dd ?			; offset
hCursor		dd ?			; offset
hbrBackground	dd ?			; offset
lpszMenuName	dd ?			; offset
lpszClassName	dd ?			; offset
WNDCLASSA	ends

; ---------------------------------------------------------------------------

tagMSG		struc ;	(sizeof=0x1C, align=0x4, copyof_28) ; XREF: sub_40B580/r
hwnd		dd ?			; offset
message		dd ?
wParam		dd ?
lParam		dd ?
time		dd ?
pt		POINT ?
tagMSG		ends

; ---------------------------------------------------------------------------

POINT		struc ;	(sizeof=0x8, align=0x4,	copyof_30) ; XREF: tagMSG/r
x		dd ?
y		dd ?
POINT		ends

; ---------------------------------------------------------------------------

_STARTUPINFOA	struc ;	(sizeof=0x44, align=0x4, copyof_31) ; XREF: start/r
					; __ioinit/r
cb		dd ?
lpReserved	dd ?			; offset
lpDesktop	dd ?			; offset
lpTitle		dd ?			; offset
dwX		dd ?
dwY		dd ?
dwXSize		dd ?
dwYSize		dd ?
dwXCountChars	dd ?
dwYCountChars	dd ?
dwFillAttribute	dd ?
dwFlags		dd ?			; XREF:	start+98/w start+AD/r
wShowWindow	dw ?			; XREF:	start+B3/r
cbReserved2	dw ?			; XREF:	__ioinit+5F/r
lpReserved2	dd ?			; XREF:	__ioinit+6B/r ;	offset
hStdInput	dd ?			; offset
hStdOutput	dd ?			; offset
hStdError	dd ?			; offset
_STARTUPINFOA	ends

; ---------------------------------------------------------------------------

_SECURITY_ATTRIBUTES struc ; (sizeof=0xC, align=0x4, copyof_37)	; XREF:	__sopen/r
nLength		dd ?
lpSecurityDescriptor dd	?		; offset
bInheritHandle	dd ?
_SECURITY_ATTRIBUTES ends

; ---------------------------------------------------------------------------

_cpinfo		struc ;	(sizeof=0x14, align=0x4, copyof_40) ; XREF: __setmbcp/r
					; _setSBUpLow/r
MaxCharSize	dd ?
DefaultChar	db 2 dup(?)
LeadByte	db 12 dup(?)
		db ? ; undefined
		db ? ; undefined
_cpinfo		ends

; ---------------------------------------------------------------------------

FILE		struc ;	(sizeof=0x20, align=0x4, copyof_41) ; XREF: _sprintf/r
					; _sscanf/r
_ptr		dd ?			; offset
_cnt		dd ?
_base		dd ?			; offset
_flag		dd ?
_file		dd ?
_charbuf	dd ?
_bufsiz		dd ?
_tmpfname	dd ?			; offset
FILE		ends


;
; +-------------------------------------------------------------------------+
; |   This file	has been generated by The Interactive Disassembler (IDA)    |
; |	      Copyright	(c) 2015 Hex-Rays, <support@hex-rays.com>	    |
; |			 License info: 48-B611-7234-BB			    |
; |		Doskey Lee, Kingsoft Internet Security Software		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	A4479A9B610FA8D658CFB94738BE1439
; Input	CRC32 :	7D39BE32

; File Name   :	C:\Users\Gabriel\OneDrive\Documents\ecole\Franc_sais\3e\Chapitre_1\SNES_ROMs\Platformer\Pixel\Ikachan\ikachan\dxIka.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0000FC26 (  64550.)
; Section size in file		: 00010000 (  65536.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default
; OS type	  :  MS	Windows
; Application type:  Executable	32bit

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 401000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing

; =============== S U B	R O U T	I N E =======================================


sub_401000	proc near		; CODE XREF: sub_404320+A7Cp
					; sub_405350+52p
		xor	eax, eax
		mov	byte_413BE0, 1
		mov	word_413BE2, 0Fh
		mov	word_413BE4, ax
		mov	byte_413BE6, al
		mov	byte_413BE7, al
		mov	word_413BE8, 3E8h
		mov	word_413BEA, 3E9h
		mov	word_413BEC, ax
		mov	byte_413BEE, al
		mov	byte_413BEF, al
		mov	word_413BF0, ax
		mov	byte_413BF2, al
		mov	dword_413BF8, 20C000h
		mov	dword_413BFC, 168000h
		mov	dword_413C00, eax
		mov	dword_413C04, eax
		mov	dword_413C08, 218000h
		mov	dword_413C0C, 16C000h
		mov	dword_413C10, 4000h
		mov	dword_413C14, 800h
		mov	dword_413C18, 0C000h
		mov	dword_413C1C, 5800h
		retn
sub_401000	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4010B0	proc near		; CODE XREF: sub_405350+7E7p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		mov	al, byte_413BE0
		sub	esp, 20h
		test	al, al
		push	esi
		jz	loc_401336
		cmp	byte_413BEE, 2
		jnz	short loc_401102
		movsx	eax, word_413BEC
		and	eax, 80000001h
		jns	short loc_4010DD
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_4010DD:				; CODE XREF: sub_4010B0+26j
		shl	eax, 4
		add	eax, offset dword_412030
		mov	ecx, [eax]
		mov	[esp+24h+var_20], ecx
		mov	edx, [eax+4]
		mov	[esp+24h+var_1C], edx
		mov	ecx, [eax+8]
		mov	[esp+24h+var_18], ecx
		mov	edx, [eax+0Ch]
		mov	[esp+24h+var_14], edx
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_401102:				; CODE XREF: sub_4010B0+18j
		mov	eax, dword_412030
		mov	ecx, dword_412034
		mov	edx, dword_412038
		mov	[esp+24h+var_20], eax
		mov	eax, dword_41203C
		mov	[esp+24h+var_1C], ecx
		mov	[esp+24h+var_18], edx
		mov	[esp+24h+var_14], eax

loc_401128:				; CODE XREF: sub_4010B0+50j
		movsx	ecx, byte_413BEF
		shl	ecx, 4
		add	ecx, offset dword_412030
		mov	edx, [ecx]
		mov	[esp+24h+var_10], edx
		mov	eax, [ecx+4]
		mov	[esp+24h+var_C], eax
		mov	edx, [ecx+8]
		mov	[esp+24h+var_8], edx
		mov	eax, [ecx+0Ch]
		mov	[esp+24h+var_4], eax
		mov	al, byte_413BF2
		test	al, al
		jz	loc_401264
		mov	ecx, [esp+24h+var_20]
		mov	eax, 40h
		add	ecx, eax
		mov	edx, [esp+24h+var_10]
		mov	[esp+24h+var_20], ecx
		mov	ecx, [esp+24h+var_8]
		mov	esi, [esp+24h+var_18]
		add	ecx, eax
		mov	[esp+24h+var_8], ecx
		add	edx, eax
		movsx	ecx, byte_413BE7
		mov	[esp+24h+var_10], edx
		add	ecx, 64h
		add	esi, eax
		mov	eax, dword_413BFC
		lea	edx, [esp+24h+var_20]
		push	ecx
		push	edx
		mov	[esp+2Ch+var_18], esi
		mov	esi, [esp+2Ch+arg_0]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_413BF8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		add	eax, 20h
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		movsx	edx, byte_413BE7
		add	edx, 64h
		lea	eax, [esp+38h+var_10]
		push	edx
		push	eax
		mov	eax, dword_413BFC
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_413BF8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 28h
		pop	esi
		add	esp, 20h
		retn
; ---------------------------------------------------------------------------

loc_401264:				; CODE XREF: sub_4010B0+AAj
		movsx	edx, byte_413BE7
		add	edx, 64h
		lea	eax, [esp+24h+var_20]
		push	edx
		mov	esi, [esp+28h+arg_0]
		push	eax
		mov	eax, dword_413BFC
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_413BF8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		movsx	edx, byte_413BE7
		add	edx, 64h
		lea	eax, [esp+38h+var_10]
		push	edx
		push	eax
		mov	eax, dword_413BFC
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_413BF8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		add	eax, 20h
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 28h

loc_401336:				; CODE XREF: sub_4010B0+Bj
		pop	esi
		add	esp, 20h
		retn
sub_4010B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_401340	proc near		; CODE XREF: sub_405350+7D1p

arg_0		= dword	ptr  4

		cmp	word_413BE4, 0
		jle	short loc_401351
		dec	word_413BE4

loc_401351:				; CODE XREF: sub_401340+8j
		movsx	eax, byte_413BEE
		push	ebp
		push	esi
		sub	eax, 0
		push	edi
		jz	loc_4015EE
		dec	eax
		jz	loc_401470
		dec	eax
		jnz	loc_4017E4
		mov	ecx, dword_413C00
		test	ecx, ecx
		jle	short loc_401387
		sub	ecx, 8
		mov	dword_413C00, ecx
		test	ecx, ecx

loc_401387:				; CODE XREF: sub_401340+3Aj
		jge	short loc_401392
		add	ecx, 8
		mov	dword_413C00, ecx

loc_401392:				; CODE XREF: sub_401340:loc_401387j
		cmp	ecx, 8
		jge	short loc_4013A3
		cmp	ecx, 0FFFFFFF8h
		jle	short loc_4013A3
		mov	byte_413BEE, 1

loc_4013A3:				; CODE XREF: sub_401340+55j
					; sub_401340+5Aj
		mov	ax, word_413BEC
		test	ax, ax
		jle	short loc_4013B6
		dec	ax
		mov	word_413BEC, ax

loc_4013B6:				; CODE XREF: sub_401340+6Cj
		movsx	eax, ax
		cdq
		mov	esi, 5
		idiv	esi
		test	edx, edx
		jnz	short loc_401444
		mov	esi, [esp+0Ch+arg_0]
		push	esi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_40143E
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 0
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 1
		mov	ecx, dword_413BF8
		add	ecx, 8000h
		mov	[eax+4], ecx
		mov	edx, dword_413BFC
		add	edx, 3000h
		mov	[eax+8], edx
		mov	ecx, dword_413C00
		neg	ecx
		mov	[eax+0Ch], ecx
		mov	edx, dword_413C00
		neg	edx
		mov	[eax+10h], edx
		mov	dword ptr [eax+14h], 400h
		mov	dword ptr [eax+18h], 0FFFFFC00h
		mov	dword ptr [eax+1Ch], 10h
		mov	dword ptr [eax+20h], 0Ch

loc_40143E:				; CODE XREF: sub_401340+97j
		mov	ecx, dword_413C00

loc_401444:				; CODE XREF: sub_401340+83j
		mov	edx, dword_413BF8
		mov	eax, dword_413C04
		add	edx, ecx
		mov	ecx, dword_413BFC
		add	ecx, eax
		pop	edi
		pop	esi
		mov	byte_413BEF, 2
		mov	dword_413BF8, edx
		mov	dword_413BFC, ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_401470:				; CODE XREF: sub_401340+25j
		mov	edi, dword_4170F4
		mov	eax, dword_413BF8
		mov	ecx, dword_413C00
		cmp	eax, edi
		jle	short loc_40148E
		sub	ecx, 8
		mov	dword_413C00, ecx

loc_40148E:				; CODE XREF: sub_401340+143j
		cmp	eax, edi
		jge	short loc_40149B
		add	ecx, 8
		mov	dword_413C00, ecx

loc_40149B:				; CODE XREF: sub_401340+150j
		mov	ebp, dword_413BFC
		mov	edx, dword_4170F8
		mov	esi, dword_413C04
		cmp	ebp, edx
		jle	short loc_4014BA
		sub	esi, 8
		mov	dword_413C04, esi

loc_4014BA:				; CODE XREF: sub_401340+16Fj
		cmp	ebp, edx
		jge	short loc_4014C7
		add	esi, 8
		mov	dword_413C04, esi

loc_4014C7:				; CODE XREF: sub_401340+17Cj
		mov	ax, word_413BEC
		test	ax, ax
		jle	short loc_4014DF
		dec	ax
		test	ax, ax
		mov	word_413BEC, ax
		jg	short loc_40152F

loc_4014DF:				; CODE XREF: sub_401340+190j
		cmp	ebp, edx
		jge	short loc_40152F
		lea	eax, [ebp+2000h]
		cmp	eax, edx
		jle	short loc_40152F
		mov	ecx, dword_413BF8
		xor	esi, esi
		add	ecx, 6000h
		mov	word_413BEC, 190h
		cmp	ecx, edi
		mov	dword_413C04, esi
		mov	byte_413BEE, 2
		jle	short loc_401522
		mov	ecx, 0FFFFC000h
		mov	dword_413C00, ecx
		jmp	short loc_401533
; ---------------------------------------------------------------------------

loc_401522:				; CODE XREF: sub_401340+1D3j
		mov	ecx, 4000h
		mov	dword_413C00, ecx
		jmp	short loc_401547
; ---------------------------------------------------------------------------

loc_40152F:				; CODE XREF: sub_401340+19Dj
					; sub_401340+1A1j ...
		test	ecx, ecx
		jge	short loc_401545

loc_401533:				; CODE XREF: sub_401340+1E0j
		cmp	byte_413BF2, 1
		jnz	short loc_401543
		mov	byte_413BF2, 0

loc_401543:				; CODE XREF: sub_401340+1FAj
		test	ecx, ecx

loc_401545:				; CODE XREF: sub_401340+1F1j
		jle	short loc_401557

loc_401547:				; CODE XREF: sub_401340+1EDj
		mov	al, byte_413BF2
		test	al, al
		jnz	short loc_401557
		mov	byte_413BF2, 1

loc_401557:				; CODE XREF: sub_401340:loc_401545j
					; sub_401340+20Ej
		mov	ax, word_413BF0
		inc	ax
		cmp	ax, 4
		mov	word_413BF0, ax
		jle	short loc_401580
		mov	al, byte_413BEF
		mov	word_413BF0, 0
		inc	al
		mov	byte_413BEF, al

loc_401580:				; CODE XREF: sub_401340+229j
		cmp	byte_413BEF, 9
		jle	short loc_401590
		mov	byte_413BEF, 2

loc_401590:				; CODE XREF: sub_401340+247j
		cmp	ecx, 800h
		jle	short loc_40159F
		mov	ecx, 800h
		jmp	short loc_4015AC
; ---------------------------------------------------------------------------

loc_40159F:				; CODE XREF: sub_401340+256j
		cmp	ecx, 0FFFFF800h
		jge	short loc_4015B2
		mov	ecx, 0FFFFF800h

loc_4015AC:				; CODE XREF: sub_401340+25Dj
		mov	dword_413C00, ecx

loc_4015B2:				; CODE XREF: sub_401340+265j
		cmp	esi, 800h
		jle	short loc_4015C1
		mov	esi, 800h
		jmp	short loc_4015CE
; ---------------------------------------------------------------------------

loc_4015C1:				; CODE XREF: sub_401340+278j
		cmp	esi, 0FFFFF800h
		jge	short loc_4015D4
		mov	esi, 0FFFFF800h

loc_4015CE:				; CODE XREF: sub_401340+27Fj
		mov	dword_413C04, esi

loc_4015D4:				; CODE XREF: sub_401340+287j
		mov	edx, dword_413BF8
		pop	edi
		add	edx, ecx
		add	ebp, esi
		mov	dword_413BFC, ebp
		pop	esi
		mov	dword_413BF8, edx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_4015EE:				; CODE XREF: sub_401340+1Ej
		mov	ecx, dword_413BF8
		mov	eax, dword_413C08
		cmp	ecx, eax
		mov	edx, 6
		jle	short loc_401612
		mov	esi, dword_413C00
		sub	esi, edx
		cmp	ecx, eax
		mov	dword_413C00, esi

loc_401612:				; CODE XREF: sub_401340+2C0j
		jge	short loc_40161A
		add	dword_413C00, edx

loc_40161A:				; CODE XREF: sub_401340:loc_401612j
		mov	ecx, dword_413BFC
		mov	eax, dword_413C0C
		cmp	ecx, eax
		mov	edx, 4
		jle	short loc_40163E
		mov	esi, dword_413C04
		sub	esi, edx
		cmp	ecx, eax
		mov	dword_413C04, esi

loc_40163E:				; CODE XREF: sub_401340+2ECj
		jge	short loc_401646
		add	dword_413C04, edx

loc_401646:				; CODE XREF: sub_401340:loc_40163Ej
		mov	eax, dword_413C00
		mov	esi, [esp+0Ch+arg_0]
		test	eax, eax
		mov	edi, 400h
		mov	ebp, 0FFFFFC00h
		jge	short loc_4016CE
		cmp	byte_413BF2, 1
		jnz	short loc_4016CE
		push	esi
		mov	byte_413BF2, 0
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_4016CE
		lea	edx, [eax+eax*8]
		lea	eax, [esi+edx*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 1
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 5
		mov	ecx, dword_413BF8
		add	ecx, 0C000h
		mov	[eax+4], ecx
		mov	edx, dword_413BFC
		add	edx, 3000h
		mov	[eax+0Ch], edi
		mov	[eax+8], edx
		mov	dword ptr [eax+10h], 200h
		mov	[eax+14h], edi
		mov	[eax+18h], ebp
		mov	dword ptr [eax+1Ch], 10h
		mov	dword ptr [eax+20h], 0Ch

loc_4016CE:				; CODE XREF: sub_401340+31Bj
					; sub_401340+324j ...
		mov	eax, dword_413C00
		test	eax, eax
		jle	short loc_401748
		mov	al, byte_413BF2
		test	al, al
		jnz	short loc_401748
		push	esi
		mov	byte_413BF2, 1
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_401748
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 1
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 5
		mov	ecx, dword_413BF8
		add	ecx, 4000h
		mov	[eax+4], ecx
		mov	edx, dword_413BFC
		add	edx, 3000h
		mov	dword ptr [eax+0Ch], 0FFFFFE00h
		mov	[eax+8], edx
		mov	[eax+10h], ebp
		mov	[eax+14h], edi
		mov	[eax+18h], ebp
		mov	dword ptr [eax+1Ch], 10h
		mov	dword ptr [eax+20h], 0Ch

loc_401748:				; CODE XREF: sub_401340+395j
					; sub_401340+39Ej ...
		mov	ax, word_413BF0
		inc	ax
		cmp	ax, 8
		mov	word_413BF0, ax
		jle	short loc_40177C
		mov	al, byte_413BEF
		mov	word_413BF0, 0
		inc	al
		cmp	al, 9
		mov	byte_413BEF, al
		jle	short loc_40177C
		mov	byte_413BEF, 2

loc_40177C:				; CODE XREF: sub_401340+41Aj
					; sub_401340+433j
		mov	ecx, dword_413C00
		cmp	ecx, 800h
		jle	short loc_401791
		mov	ecx, 800h
		jmp	short loc_40179E
; ---------------------------------------------------------------------------

loc_401791:				; CODE XREF: sub_401340+448j
		cmp	ecx, 0FFFFF800h
		jge	short loc_4017A4
		mov	ecx, 0FFFFF800h

loc_40179E:				; CODE XREF: sub_401340+44Fj
		mov	dword_413C00, ecx

loc_4017A4:				; CODE XREF: sub_401340+457j
		mov	eax, dword_413C04
		cmp	eax, 800h
		jle	short loc_4017B7
		mov	eax, 800h
		jmp	short loc_4017C3
; ---------------------------------------------------------------------------

loc_4017B7:				; CODE XREF: sub_401340+46Ej
		cmp	eax, 0FFFFF800h
		jge	short loc_4017C8
		mov	eax, 0FFFFF800h

loc_4017C3:				; CODE XREF: sub_401340+475j
		mov	dword_413C04, eax

loc_4017C8:				; CODE XREF: sub_401340+47Cj
		mov	edx, dword_413BF8
		add	edx, ecx
		mov	ecx, dword_413BFC
		add	ecx, eax
		mov	dword_413BF8, edx
		mov	dword_413BFC, ecx

loc_4017E4:				; CODE XREF: sub_401340+2Cj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_401340	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4017F0	proc near		; CODE XREF: sub_401890+243p
					; sub_401890+257p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		cmp	word_413BE4, 0
		jnz	locret_401887
		push	ebx
		mov	bl, [esp+4+arg_4]
		movsx	ax, bl
		sub	word_413BE2, ax
		push	esi
		mov	word_413BE4, 64h
		jns	short loc_401823
		mov	word_413BE2, 0

loc_401823:				; CODE XREF: sub_4017F0+28j
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		mov	ecx, 1
		jz	short loc_40187A
		lea	edx, [eax+eax*8]
		lea	eax, [esi+edx*4]
		mov	dl, 0Ah
		sub	dl, bl
		mov	[eax], cl
		mov	byte ptr [eax+1], 2
		mov	[eax+2], dl
		mov	[eax+3], cl
		mov	edx, dword_413BF8
		add	edx, 2000h
		mov	[eax+4], edx
		mov	edx, dword_413BFC
		add	edx, 0FFFFF000h
		mov	[eax+1Ch], ecx
		mov	[eax+8], edx
		mov	dword ptr [eax+20h], 0

loc_40187A:				; CODE XREF: sub_4017F0+4Aj
		push	ecx
		push	14h
		call	sub_40A9C0
		add	esp, 8
		pop	esi
		pop	ebx

locret_401887:				; CODE XREF: sub_4017F0+8j
		retn
sub_4017F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_401890	proc near		; CODE XREF: sub_405350+7FCp

var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		mov	al, byte_413BE0
		push	ebx
		push	esi
		push	edi
		test	al, al
		mov	[esp+10h+var_2], 0
		mov	[esp+10h+var_1], 0
		jz	loc_401C44
		mov	eax, dword_413BF8
		mov	ecx, dword_413C18
		mov	esi, dword_4170F4
		mov	edi, dword_413BFC
		mov	edx, dword_4170F8
		add	ecx, eax
		push	ebp
		mov	ebp, dword_413C1C
		cmp	esi, ecx
		jge	short loc_40191C
		lea	eax, [ecx-1400h]
		cmp	esi, eax
		jle	short loc_40191C
		lea	eax, [edi+ebp-1000h]
		cmp	edx, eax
		jge	short loc_40191C
		mov	eax, dword_413C14
		lea	ebx, [edx+4000h]
		lea	eax, [eax+edi+1000h]
		cmp	ebx, eax
		jle	short loc_40191C
		mov	esi, ecx
		mov	dword_4170FC, 0
		mov	dword_4170F4, esi
		mov	[esp+14h+var_2], 1
		mov	[esp+14h+var_1], 1

loc_40191C:				; CODE XREF: sub_401890+43j
					; sub_401890+4Dj ...
		lea	eax, [edi+ebp]
		cmp	edx, eax
		jge	short loc_4019A0
		lea	ebx, [eax-1400h]
		cmp	edx, ebx
		jle	short loc_4019A0
		add	ecx, 0FFFFF000h
		cmp	esi, ecx
		jge	short loc_4019A0
		mov	ecx, dword_413BF8
		mov	ebx, dword_413C10
		lea	ecx, [ebx+ecx+1000h]
		lea	ebx, [esi+4000h]
		cmp	ebx, ecx
		jle	short loc_4019A0
		cmp	dword_417100, 0FFFFFF9Ch
		jge	short loc_40197B
		push	1
		push	4
		call	sub_40A9C0
		mov	ebp, dword_413C1C
		mov	edi, dword_413BFC
		mov	esi, dword_4170F4
		add	esp, 8

loc_40197B:				; CODE XREF: sub_401890+CBj
		mov	cl, [esp+14h+var_2]
		lea	eax, [edi+ebp]
		mov	edx, eax
		or	cl, 2
		mov	dword_4170F8, edx
		mov	dword_417100, 0
		mov	[esp+14h+var_2], cl
		mov	[esp+14h+var_1], 1

loc_4019A0:				; CODE XREF: sub_401890+91j
					; sub_401890+9Bj ...
		mov	ecx, dword_413C10
		mov	ebx, dword_413BF8
		add	ecx, ebx
		lea	ebp, [esi+4000h]
		cmp	ebp, ecx
		jle	short loc_401A06
		lea	ebx, [ecx+1400h]
		cmp	ebp, ebx
		jge	short loc_401A06
		add	eax, 0FFFFF000h
		cmp	edx, eax
		jge	short loc_401A06
		mov	eax, dword_413C14
		lea	ebx, [edx+4000h]
		lea	eax, [eax+edi+1000h]
		cmp	ebx, eax
		jle	short loc_401A06
		mov	al, [esp+14h+var_2]
		lea	esi, [ecx-4000h]
		or	al, 4
		mov	dword_4170F4, esi
		mov	dword_4170FC, 0
		mov	[esp+14h+var_2], al
		mov	[esp+14h+var_1], 1

loc_401A06:				; CODE XREF: sub_401890+126j
					; sub_401890+130j ...
		mov	eax, dword_413C14
		add	edx, 4000h
		add	edi, eax
		pop	ebp
		cmp	edx, edi
		jle	short loc_401A75
		lea	eax, [edi+1400h]
		cmp	edx, eax
		jge	short loc_401A75
		mov	edx, dword_413C18
		mov	eax, dword_413BF8
		lea	edx, [edx+eax-1000h]
		cmp	esi, edx
		jge	short loc_401A75
		lea	eax, [esi+4000h]
		add	ecx, 1000h
		cmp	eax, ecx
		jle	short loc_401A75
		mov	eax, dword_417100
		add	edi, 0FFFFC000h
		test	eax, eax
		mov	byte_417117, 0
		mov	dword_4170F8, edi
		jle	short loc_401A6E
		mov	dword_417100, 0

loc_401A6E:				; CODE XREF: sub_401890+1D2j
		or	[esp+10h+var_2], 8
		jmp	short loc_401A81
; ---------------------------------------------------------------------------

loc_401A75:				; CODE XREF: sub_401890+186j
					; sub_401890+190j ...
		mov	al, [esp+10h+var_1]
		test	al, al
		jz	loc_401C44

loc_401A81:				; CODE XREF: sub_401890+1E3j
		movsx	eax, byte_413BEE
		mov	edi, [esp+10h+arg_0]
		sub	eax, 0
		mov	ebx, 64h
		jz	loc_401BDD
		dec	eax
		jz	loc_401B3A
		dec	eax
		jnz	loc_401C01
		test	[esp+10h+var_2], 2
		jz	short loc_401AF4
		mov	al, byte_4170F2
		mov	dword_413C04, 0FFFFFC00h
		cmp	al, 1
		mov	dword_417100, 400h
		jnz	short loc_401AE0
		mov	ecx, [esp+10h+arg_4]
		push	3
		push	ecx
		call	sub_4017F0
		add	esp, 8
		jmp	loc_401C01
; ---------------------------------------------------------------------------

loc_401AE0:				; CODE XREF: sub_401890+23Aj
		mov	edx, [esp+10h+arg_4]
		push	1
		push	edx
		call	sub_4017F0
		add	esp, 8
		jmp	loc_401C01
; ---------------------------------------------------------------------------

loc_401AF4:				; CODE XREF: sub_401890+21Dj
		cmp	word_417108, 0
		jnz	loc_401C01
		mov	eax, dword_413BF8
		add	eax, 6000h
		cmp	esi, eax
		jge	short loc_401B1A
		mov	dword_4170FC, 0FFFFFC00h

loc_401B1A:				; CODE XREF: sub_401890+27Ej
		jle	short loc_401B26
		mov	dword_4170FC, 400h

loc_401B26:				; CODE XREF: sub_401890:loc_401B1Aj
		mov	ecx, [esp+10h+arg_4]
		push	3
		push	ecx
		call	sub_409030
		add	esp, 8
		jmp	loc_401C01
; ---------------------------------------------------------------------------

loc_401B3A:				; CODE XREF: sub_401890+20Bj
		cmp	word_413BE4, 0
		jnz	loc_401C01
		test	[esp+10h+var_2], 2
		jz	short loc_401B91
		mov	al, byte_4170F2
		mov	dword_413C04, 0FFFFFC00h
		cmp	al, 1
		mov	dword_417100, 400h
		jnz	short loc_401B80
		mov	edx, [esp+10h+arg_4]
		push	3
		push	edx
		call	sub_4017F0
		add	esp, 8
		jmp	loc_401C01
; ---------------------------------------------------------------------------

loc_401B80:				; CODE XREF: sub_401890+2DAj
		mov	eax, [esp+10h+arg_4]
		push	1
		push	eax
		call	sub_4017F0
		add	esp, 8
		jmp	short loc_401C01
; ---------------------------------------------------------------------------

loc_401B91:				; CODE XREF: sub_401890+2BDj
		cmp	byte_4170F2, 1
		jnz	short loc_401C01
		mov	al, byte_417116
		test	al, al
		jnz	short loc_401BBE
		mov	ecx, [esp+10h+arg_4]
		push	3
		push	ecx
		mov	dword_413C00, 0FFFFFC00h
		call	sub_4017F0
		add	esp, 8
		jmp	short loc_401C01
; ---------------------------------------------------------------------------

loc_401BBE:				; CODE XREF: sub_401890+311j
		cmp	al, 1
		jnz	short loc_401BCC
		mov	dword_413C00, 400h

loc_401BCC:				; CODE XREF: sub_401890+330j
		mov	ecx, [esp+10h+arg_4]
		push	3
		push	ecx
		call	sub_4017F0
		add	esp, 8
		jmp	short loc_401C01
; ---------------------------------------------------------------------------

loc_401BDD:				; CODE XREF: sub_401890+204j
		cmp	word_41710A, 0
		jnz	short loc_401C01
		mov	byte ptr [edi],	1
		mov	word ptr [edi+1Ch], 4
		movsx	edx, word_413BE8
		mov	[edi+10h], edx
		mov	word_41710A, bx

loc_401C01:				; CODE XREF: sub_401890+212j
					; sub_401890+24Bj ...
		mov	al, byte_413BEE
		test	al, al
		jz	short loc_401C44
		xor	eax, eax
		cmp	word_413BE2, ax
		jnz	short loc_401C44
		mov	byte ptr [edi],	1
		mov	word ptr [edi+1Ch], 4
		movsx	ecx, word_413BEA
		mov	[edi+10h], ecx
		mov	word_41710A, bx
		mov	byte_413BEE, al
		mov	word_413BE4, ax
		mov	dword_413C00, eax
		mov	dword_413C04, eax

loc_401C44:				; CODE XREF: sub_401890+15j
					; sub_401890+1EBj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_401890	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_401C50(void *)
sub_401C50	proc near		; CODE XREF: sub_401DC0+2Ap

var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		mov	eax, off_4120D0
		sub	esp, 104h
		lea	ecx, [esp+104h+var_104]
		push	esi
		push	eax
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	ecx		; char *
		call	_sprintf
		lea	edx, [esp+118h+var_104]
		push	offset aWb	; "wb"
		push	edx		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_401C91
		pop	esi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_401C91:				; CODE XREF: sub_401C50+37j
		mov	eax, [esp+108h+arg_0]
		push	esi		; FILE *
		push	1		; size_t
		push	8		; size_t
		push	eax		; void *
		call	_fwrite
		push	esi		; FILE *
		call	_fclose
		add	esp, 14h
		mov	eax, 1
		pop	esi
		add	esp, 104h
		retn
sub_401C50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_401CC0(void *)
sub_401CC0	proc near		; CODE XREF: sub_401D40+4Fp

var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 104h
		xor	eax, eax
		push	esi
		push	edi
		mov	edi, [esp+10Ch+arg_0]
		mov	ecx, edi
		mov	[ecx], eax
		mov	[ecx+4], eax
		mov	edx, off_4120D0
		push	edx
		push	offset Filename
		lea	eax, [esp+114h+var_104]
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+11Ch+var_104]
		push	offset aRb	; "rb"
		push	ecx		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_401D14
		pop	edi
		pop	esi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_401D14:				; CODE XREF: sub_401CC0+49j
		push	esi		; FILE *
		push	1		; size_t
		push	8		; size_t
		push	edi		; void *
		call	_fread
		push	esi		; FILE *
		call	_fclose
		add	esp, 14h
		mov	eax, 1
		pop	edi
		pop	esi
		add	esp, 104h
		retn
sub_401CC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_401D40(HWND hDlg)
sub_401D40	proc near		; CODE XREF: DialogFunc+51p

var_14		= byte ptr -14h
wParam		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
hDlg		= dword	ptr  4

		sub	esp, 14h
		push	ebx
		mov	ebx, ds:SendDlgItemMessageA
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+24h+hDlg]
		mov	[esp+24h+var_C], offset	aFullscreen ; "Fullscreen    "
		mov	[esp+24h+var_8], offset	a320x240Windowe	; "320x240 Windowed "
		mov	[esp+24h+var_4], offset	a640x480Windowe	; "640x480 Windowed "
		lea	esi, [esp+24h+var_C]
		mov	ebp, 3

loc_401D72:				; CODE XREF: sub_401D40+48j
		mov	eax, [esi]
		push	eax		; lParam
		push	0		; wParam
		push	143h		; Msg
		push	3EBh		; nIDDlgItem
		push	edi		; hDlg
		call	ebx ; SendDlgItemMessageA
		add	esi, 4
		dec	ebp
		jnz	short loc_401D72
		lea	ecx, [esp+24h+var_14]
		push	ecx		; void *
		call	sub_401CC0
		add	esp, 4
		test	eax, eax
		jnz	short loc_401D9F
		mov	[esp+24h+wParam], eax

loc_401D9F:				; CODE XREF: sub_401D40+59j
		mov	edx, [esp+24h+wParam]
		push	0		; lParam
		push	edx		; wParam
		push	14Eh		; Msg
		push	3EBh		; nIDDlgItem
		push	edi		; hDlg
		call	ebx ; SendDlgItemMessageA
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 14h
		retn
sub_401D40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_401DC0(HWND hDlg)
sub_401DC0	proc near		; CODE XREF: DialogFunc+35p

var_8		= byte ptr -8
var_4		= dword	ptr -4
hDlg		= dword	ptr  4

		sub	esp, 8
		mov	eax, [esp+8+hDlg]
		push	0		; lParam
		push	2		; wParam
		push	147h		; Msg
		push	3EBh		; nIDDlgItem
		push	eax		; hDlg
		call	ds:SendDlgItemMessageA
		lea	ecx, [esp+8+var_8]
		mov	dword_417A54, eax
		push	ecx		; void *
		mov	[esp+0Ch+var_4], eax
		call	sub_401C50
		add	esp, 0Ch
		retn
sub_401DC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; BOOL __stdcall DialogFunc(HWND, UINT,	WPARAM,	LPARAM)
DialogFunc	proc near		; DATA XREF: WinMain(x,x,x,x)+7Co

hDlg		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		sub	eax, 110h
		jz	short loc_401E4C
		dec	eax
		jnz	short loc_401E47
		mov	eax, [esp+arg_8]
		and	eax, 0FFFFh
		dec	eax
		jz	short loc_401E2F
		dec	eax
		jnz	short loc_401E47
		mov	eax, [esp+hDlg]
		push	0		; nResult
		push	eax		; hDlg
		call	ds:EndDialog
		xor	eax, eax
		retn	10h
; ---------------------------------------------------------------------------

loc_401E2F:				; CODE XREF: DialogFunc+18j
		push	esi
		mov	esi, [esp+4+hDlg]
		push	esi		; hDlg
		call	sub_401DC0
		add	esp, 4
		push	1		; nResult
		push	esi		; hDlg
		call	ds:EndDialog
		pop	esi

loc_401E47:				; CODE XREF: DialogFunc+Cj
					; DialogFunc+1Bj
		xor	eax, eax
		retn	10h
; ---------------------------------------------------------------------------

loc_401E4C:				; CODE XREF: DialogFunc+9j
		mov	ecx, [esp+hDlg]
		push	ecx		; hDlg
		call	sub_401D40
		add	esp, 4
		mov	eax, 1
		retn	10h
DialogFunc	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_401E70	proc near		; CODE XREF: WinMain(x,x,x,x)+1C7p
					; WinMain(x,x,x,x)+28Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		mov	dword_413C24, eax
		mov	dword_413C20, ecx
		retn
sub_401E70	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_401E90(HWND hWnd)
sub_401E90	proc near		; CODE XREF: sub_405350+25Ep
					; sub_405350+3F6p ...

Rect		= tagRECT ptr -10h
hWnd		= dword	ptr  4

		sub	esp, 10h
		mov	ecx, [esp+10h+hWnd]
		lea	eax, [esp+10h+Rect]
		push	esi
		push	eax		; lpRect
		push	ecx		; hWnd
		call	ds:GetWindowRect
		mov	eax, [esp+14h+Rect.left]
		mov	ecx, dword_413C24
		mov	edx, dword_413C50
		mov	esi, dword_413C20
		add	eax, ecx
		mov	ecx, [esp+14h+Rect.top]
		mov	[esp+14h+Rect.left], eax
		add	edx, eax
		mov	eax, dword_413C54
		add	ecx, esi
		mov	esi, ds:GetTickCount
		add	eax, ecx
		mov	[esp+14h+Rect.top], ecx
		mov	[esp+14h+Rect.right], edx
		mov	[esp+14h+Rect.bottom], eax
		call	esi ; GetTickCount
		mov	ecx, dword_413C28
		add	ecx, 14h
		cmp	eax, ecx
		jnb	short loc_401EFF

loc_401EF0:				; CODE XREF: sub_401E90+6Dj
		call	esi ; GetTickCount
		mov	edx, dword_413C28
		add	edx, 14h
		cmp	eax, edx
		jb	short loc_401EF0

loc_401EFF:				; CODE XREF: sub_401E90+5Ej
		call	esi ; GetTickCount
		mov	ecx, dword_413C28
		add	ecx, 64h
		cmp	ecx, eax
		jnb	short loc_401F12
		call	esi ; GetTickCount
		jmp	short loc_401F1A
; ---------------------------------------------------------------------------

loc_401F12:				; CODE XREF: sub_401E90+7Cj
		mov	eax, dword_413C28
		add	eax, 14h

loc_401F1A:				; CODE XREF: sub_401E90+80j
		mov	ecx, dword_413C64
		push	0
		push	1000000h
		mov	dword_413C28, eax
		mov	eax, dword_413C60
		push	offset dword_413C38
		push	ecx
		lea	ecx, [esp+24h+Rect]
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		pop	esi
		add	esp, 10h
		retn
sub_401E90	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; signed int __cdecl Init_Direct_Draw(HWND a1, int a2)
Init_Direct_Draw proc near		; CODE XREF: WinMain(x,x,x,x)+237p
					; WinMain(x,x,x,x)+249p ...

var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_58		= dword	ptr -58h
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 6Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi		; pUnkOuter
		push	offset Direct_Draw_Obj ; lplpDD
		push	esi		; lpGUID
		call	DirectDrawCreate
		test	eax, eax
		jz	short loc_401F71
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 6Ch
		retn
; ---------------------------------------------------------------------------

loc_401F71:				; CODE XREF: Init_Direct_Draw+16j
		mov	eax, [esp+78h+arg_4]
		mov	ebx, [esp+78h+arg_0]
		sub	eax, esi
		jz	short loc_401FCA
		dec	eax
		jz	short loc_401FAA
		dec	eax
		jnz	loc_402010
		mov	eax, Direct_Draw_Obj
		mov	dword_412128, 2
		mov	dword_413C58, esi
		push	8
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+50h]
		jmp	short loc_402010
; ---------------------------------------------------------------------------

loc_401FAA:				; CODE XREF: Init_Direct_Draw+31j
		mov	eax, Direct_Draw_Obj
		mov	dword_412128, 1
		mov	dword_413C58, esi
		push	8
		mov	edx, [eax]
		push	ebx
		push	eax
		call	dword ptr [edx+50h]
		jmp	short loc_402010
; ---------------------------------------------------------------------------

loc_401FCA:				; CODE XREF: Init_Direct_Draw+2Ej
		mov	eax, Direct_Draw_Obj
		mov	dword_412128, 2
		mov	dword_413C58, 1
		push	11h
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+50h]
		mov	eax, dword_412128
		mov	edx, Direct_Draw_Obj
		push	10h
		mov	edi, [edx]
		lea	ecx, [eax+eax*2]
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		shl	ecx, 4
		shl	eax, 6
		push	ecx
		push	eax
		push	edx
		call	dword ptr [edi+54h]

loc_402010:				; CODE XREF: Init_Direct_Draw+34j
					; Init_Direct_Draw+58j	...
		mov	ecx, dword_412128
		lea	edi, [esp+78h+var_6C]
		push	esi
		lea	edx, [esp+7Ch+var_6C]
		lea	eax, [ecx+ecx*4]
		lea	ecx, [ecx+ecx*2]
		shl	eax, 6
		lea	ecx, [ecx+ecx*4]
		mov	dword_413C40, eax
		shl	ecx, 4
		mov	dword_413C44, ecx
		mov	dword_413C50, eax
		mov	dword_413C54, ecx
		mov	ecx, 1Bh
		xor	eax, eax
		mov	dword_413C38, esi
		rep stosd
		mov	eax, Direct_Draw_Obj
		mov	dword_413C3C, esi
		mov	[esp+7Ch+var_6C], 6Ch
		mov	[esp+7Ch+var_68], 1
		mov	[esp+7Ch+var_4], 200h
		mov	[esp+7Ch+var_58], esi
		mov	ecx, [eax]
		push	offset dword_413C60
		push	edx
		push	eax
		call	dword ptr [ecx+18h]
		test	eax, eax
		jz	short loc_402093
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 6Ch
		retn
; ---------------------------------------------------------------------------

loc_402093:				; CODE XREF: Init_Direct_Draw+138j
		mov	ecx, 1Bh
		xor	eax, eax
		lea	edi, [esp+78h+var_6C]
		push	esi
		rep stosd
		mov	eax, dword_412128
		mov	[esp+7Ch+var_6C], 6Ch
		mov	[esp+7Ch+var_68], 7
		mov	[esp+7Ch+var_4], 40h
		lea	ecx, [eax+eax*4]
		lea	eax, [eax+eax*2]
		shl	ecx, 6
		lea	edx, [eax+eax*4]
		mov	eax, Direct_Draw_Obj
		shl	edx, 4
		mov	[esp+7Ch+var_64], edx
		lea	edx, [esp+7Ch+var_6C]
		mov	[esp+7Ch+var_60], ecx
		mov	ecx, [eax]
		push	offset dword_413C64
		push	edx
		push	eax
		call	dword ptr [ecx+18h]
		test	eax, eax
		jz	short loc_4020F7
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 6Ch
		retn
; ---------------------------------------------------------------------------

loc_4020F7:				; CODE XREF: Init_Direct_Draw+19Cj
		mov	eax, Direct_Draw_Obj
		push	esi
		push	offset dword_413C30
		push	esi
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	eax, dword_413C30
		push	ebx
		push	esi
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	eax, dword_413C60
		mov	edx, dword_413C30
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+70h]
		pop	edi
		pop	esi
		mov	eax, 1
		pop	ebx
		add	esp, 6Ch
		retn
Init_Direct_Draw endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402140	proc near		; CODE XREF: WinMain(x,x,x,x)+3CDp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_413C68

loc_402146:				; CODE XREF: sub_402140+21j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402158
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword ptr [esi], 0

loc_402158:				; CODE XREF: sub_402140+Aj
		add	esi, 4
		cmp	esi, offset unk_414468
		jl	short loc_402146
		mov	eax, dword_413C60
		pop	esi
		test	eax, eax
		jz	short loc_402173
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]

loc_402173:				; CODE XREF: sub_402140+2Bj
		mov	eax, dword_413C58
		test	eax, eax
		jz	short loc_40218E
		mov	eax, Direct_Draw_Obj
		mov	edx, [esp+arg_0]
		push	8
		push	edx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+50h]

loc_40218E:				; CODE XREF: sub_402140+3Aj
		mov	eax, Direct_Draw_Obj
		test	eax, eax
		jz	short locret_40219D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_40219D:				; CODE XREF: sub_402140+55j
		retn
sub_402140	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4021A0	proc near		; CODE XREF: sub_405350+728p
					; sub_405350+72Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, dword_413C68[esi*4]
		test	eax, eax
		jz	short loc_4021C1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword_413C68[esi*4], 0

loc_4021C1:				; CODE XREF: sub_4021A0+Ej
		pop	esi
		retn
sub_4021A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4021D0	proc near		; CODE XREF: sub_405350+1C8p
					; sub_405350+2D1p ...

hdcDest		= dword	ptr -1B8h
h		= dword	ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
wSrc		= dword	ptr -1A0h
hSrc		= dword	ptr -19Ch
pv		= byte ptr -198h
var_194		= dword	ptr -194h
var_190		= dword	ptr -190h
hDest		= dword	ptr -174h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_108		= dword	ptr -108h
name		= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		sub	esp, 1B8h
		lea	ecx, [esp+1B8h+name]
		push	ebx
		push	ebp
		push	eax
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	ecx		; char *
		call	_sprintf
		mov	eax, [esp+1D0h+arg_4]
		add	esp, 10h
		cmp	eax, 200h
		jle	short loc_402210
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 1B8h
		retn
; ---------------------------------------------------------------------------

loc_402210:				; CODE XREF: sub_4021D0+33j
		lea	ebx, ds:413C68h[eax*4]
		mov	eax, dword_413C68[eax*4]
		test	eax, eax
		jz	short loc_40222D
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 1B8h
		retn
; ---------------------------------------------------------------------------

loc_40222D:				; CODE XREF: sub_4021D0+50j
		push	2010h		; fuLoad
		push	0		; cy
		push	0		; cx
		lea	edx, [esp+1CCh+name]
		push	0		; type
		push	edx		; name
		push	0		; lpModuleName
		call	ds:GetModuleHandleA
		push	eax		; hInst
		call	ds:LoadImageA
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_40225E
		pop	ebp
		pop	ebx
		add	esp, 1B8h
		retn
; ---------------------------------------------------------------------------

loc_40225E:				; CODE XREF: sub_4021D0+83j
		push	esi
		lea	eax, [esp+1C4h+pv]
		push	edi
		push	eax		; pv
		push	18h		; c
		push	ebp		; h
		call	ds:GetObjectA
		mov	ecx, 1Bh
		xor	eax, eax
		lea	edi, [esp+1C8h+var_170]
		push	0
		rep stosd
		mov	eax, dword_412128
		mov	[esp+1CCh+var_170], 6Ch
		mov	ecx, eax
		imul	eax, [esp+1CCh+var_190]
		imul	ecx, [esp+1CCh+var_194]
		mov	[esp+1CCh+var_168], eax
		mov	eax, Direct_Draw_Obj
		mov	[esp+1CCh+var_164], ecx
		lea	ecx, [esp+1CCh+var_170]
		mov	[esp+1CCh+var_16C], 7
		mov	[esp+1CCh+var_108], 40h
		mov	edx, [eax]
		push	ebx
		push	ecx
		push	eax
		call	dword ptr [edx+18h]
		mov	eax, dword_412128
		mov	edx, [esp+1C8h+var_190]
		mov	edi, eax
		imul	eax, edx
		mov	ecx, [esp+1C8h+var_194]
		push	0		; hdc
		mov	[esp+1CCh+wSrc], ecx
		mov	[esp+1CCh+hSrc], edx
		imul	edi, ecx
		mov	[esp+1CCh+hDest], eax
		call	ds:CreateCompatibleDC
		mov	esi, eax
		push	ebp		; h
		push	esi		; hdc
		call	ds:SelectObject
		mov	[esp+1C8h+h], eax
		mov	eax, [ebx]
		lea	ecx, [esp+1C8h+hdcDest]
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+44h]
		mov	edx, [esp+1C8h+hSrc]
		mov	eax, [esp+1C8h+wSrc]
		mov	ecx, [esp+1C8h+hDest]
		push	0CC0020h	; rop
		push	edx		; hSrc
		mov	edx, [esp+1D0h+hdcDest]
		push	eax		; wSrc
		push	0		; ySrc
		push	0		; xSrc
		push	esi		; hdcSrc
		push	ecx		; hDest
		push	edi		; wDest
		push	0		; yDest
		push	0		; xDest
		push	edx		; hdcDest
		call	ds:StretchBlt
		mov	eax, [ebx]
		mov	edx, [esp+1C8h+hdcDest]
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+68h]
		mov	eax, [esp+1C8h+h]
		push	eax		; h
		push	esi		; hdc
		call	ds:SelectObject
		push	esi		; hdc
		call	ds:DeleteDC
		xor	eax, eax
		mov	[esp+1C8h+var_1B0], eax
		mov	[esp+1C8h+var_1AC], eax
		mov	ebx, [ebx]
		lea	edx, [esp+1C8h+var_1B0]
		push	edx
		push	8
		mov	ecx, [ebx]
		push	ebx
		call	dword ptr [ecx+74h]
		push	ebp		; ho
		call	ds:DeleteObject
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 1B8h
		retn
sub_4021D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402380	proc near		; CODE XREF: sub_405350+2F7p
					; sub_405350+305p ...

var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		sub	esp, 74h
		cmp	eax, 200h
		push	esi
		jle	short loc_402396
		xor	eax, eax
		pop	esi
		add	esp, 74h
		retn
; ---------------------------------------------------------------------------

loc_402396:				; CODE XREF: sub_402380+Dj
		lea	esi, ds:413C68h[eax*4]
		mov	eax, dword_413C68[eax*4]
		test	eax, eax
		jz	short loc_4023AF
		xor	eax, eax
		pop	esi
		add	esp, 74h
		retn
; ---------------------------------------------------------------------------

loc_4023AF:				; CODE XREF: sub_402380+26j
		push	edi
		mov	ecx, 1Bh
		xor	eax, eax
		lea	edi, [esp+7Ch+var_6C]
		rep stosd
		mov	eax, dword_412128
		push	0
		mov	ecx, eax
		imul	eax, [esp+80h+arg_4]
		imul	ecx, [esp+80h+arg_0]
		mov	[esp+80h+var_64], eax
		mov	eax, Direct_Draw_Obj
		mov	[esp+80h+var_60], ecx
		lea	ecx, [esp+80h+var_6C]
		mov	[esp+80h+var_6C], 6Ch
		mov	[esp+80h+var_68], 7
		mov	[esp+80h+var_4], 40h
		mov	edx, [eax]
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+18h]
		mov	esi, [esi]
		lea	eax, [esp+7Ch+var_74]
		mov	[esp+7Ch+var_74], 0
		mov	[esp+7Ch+var_70], 0
		mov	edx, [esi]
		push	eax
		push	8
		push	esi
		call	dword ptr [edx+74h]
		pop	edi
		mov	eax, 1
		pop	esi
		add	esp, 74h
		retn
sub_402380	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402440	proc near		; CODE XREF: sub_405350+9CDp

var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 74h
		push	edi
		mov	ecx, 19h
		xor	eax, eax
		lea	edi, [esp+78h+var_64]
		rep stosd
		mov	eax, [esp+78h+arg_4]
		mov	ecx, dword_412128
		mov	[esp+78h+var_64], 64h
		mov	edx, [eax]
		imul	edx, ecx
		mov	[esp+78h+var_74], edx
		mov	edx, [eax+4]
		imul	edx, ecx
		mov	[esp+78h+var_70], edx
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		imul	edx, ecx
		imul	eax, ecx
		mov	ecx, [esp+78h+arg_0]
		mov	[esp+78h+var_68], eax
		mov	[esp+78h+var_6C], edx
		mov	eax, dword_413C68[ecx*4]
		lea	ecx, [esp+78h+var_64]
		push	ecx
		lea	ecx, [esp+7Ch+var_74]
		mov	edx, [eax]
		push	1000000h
		push	ecx
		mov	ecx, dword_413C64
		push	ecx
		lea	ecx, [esp+88h+var_74]
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		pop	edi
		add	esp, 74h
		retn
sub_402440	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4024C0	proc near		; CODE XREF: sub_4010B0+143p
					; sub_4010B0+1A7p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		sub	esp, 20h
		mov	ecx, [esp+20h+arg_C]
		push	ebx
		mov	eax, ecx
		push	ebp
		push	esi
		mov	esi, [ecx]
		mov	edx, [eax]
		push	edi
		mov	[esp+30h+var_20], edx
		mov	edi, [esp+30h+arg_4]
		mov	edx, [eax+4]
		mov	[esp+30h+var_1C], edx
		mov	edx, [eax+8]
		mov	[esp+30h+var_18], edx
		mov	edx, [ecx+8]
		mov	ebx, [eax+0Ch]
		mov	eax, [esp+30h+arg_0]
		mov	ebp, edx
		mov	eax, [eax+8]
		sub	ebp, esi
		add	ebp, edi
		cmp	ebp, eax
		jle	short loc_40250E
		sub	eax, edx
		mov	edx, [esp+30h+var_18]
		sub	eax, edi
		add	eax, esi
		add	edx, eax
		mov	[esp+30h+var_18], edx

loc_40250E:				; CODE XREF: sub_4024C0+3Cj
		mov	esi, [esp+30h+arg_0]
		mov	eax, [esi]
		cmp	edi, eax
		jge	short loc_402528
		mov	edx, eax
		sub	edx, edi
		mov	edi, [esp+30h+var_20]
		add	edi, edx
		mov	[esp+30h+var_20], edi
		mov	edi, eax

loc_402528:				; CODE XREF: sub_4024C0+56j
		mov	edx, [ecx+0Ch]
		mov	ecx, [ecx+4]
		mov	eax, [esi+0Ch]
		mov	esi, [esp+30h+arg_8]
		mov	ebp, edx
		sub	ebp, ecx
		add	ebp, esi
		cmp	ebp, eax
		jle	short loc_402547
		sub	eax, edx
		sub	eax, esi
		add	eax, ecx
		add	ebx, eax

loc_402547:				; CODE XREF: sub_4024C0+7Dj
		mov	eax, [esp+30h+arg_0]
		mov	eax, [eax+4]
		cmp	esi, eax
		jge	short loc_402562
		mov	edx, [esp+30h+var_1C]
		mov	ecx, eax
		sub	ecx, esi
		mov	esi, eax
		add	edx, ecx
		mov	[esp+30h+var_1C], edx

loc_402562:				; CODE XREF: sub_4024C0+90j
		mov	eax, [esp+30h+var_1C]
		mov	ecx, [esp+30h+var_18]
		mov	ebp, [esp+30h+var_20]
		mov	edx, ebx
		sub	edx, eax
		mov	eax, dword_412128
		sub	ecx, ebp
		mov	ebp, eax
		add	ecx, edi
		imul	ebp, edi
		mov	edi, eax
		add	edx, esi
		imul	edi, esi
		mov	esi, eax
		push	0
		imul	esi, ecx
		mov	ecx, eax
		push	1008000h
		imul	ecx, edx
		mov	edx, eax
		mov	[esp+38h+var_4], ecx
		imul	edx, [esp+38h+var_20]
		mov	[esp+38h+var_20], edx
		mov	edx, eax
		imul	edx, [esp+38h+var_18]
		mov	ecx, eax
		imul	eax, ebx
		imul	ecx, [esp+38h+var_1C]
		mov	[esp+38h+var_18], edx
		lea	edx, [esp+38h+var_20]
		push	edx
		mov	edx, [esp+3Ch+arg_10]
		mov	[esp+3Ch+var_14], eax
		mov	eax, dword_413C64
		mov	edx, dword_413C68[edx*4]
		mov	[esp+3Ch+var_10], ebp
		push	edx
		lea	edx, [esp+40h+var_10]
		mov	[esp+40h+var_C], edi
		mov	[esp+40h+var_8], esi
		mov	[esp+40h+var_1C], ecx
		mov	ecx, [eax]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 20h
		retn
sub_4024C0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402600	proc near		; CODE XREF: sub_403920+2F3p
					; sub_405350+212p ...

var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 74h
		push	edi
		mov	ecx, 19h
		xor	eax, eax
		lea	edi, [esp+78h+var_64]
		rep stosd
		mov	eax, [esp+78h+arg_4]
		mov	ecx, dword_412128
		mov	[esp+78h+var_14], eax
		mov	eax, [esp+78h+arg_0]
		mov	[esp+78h+var_64], 64h
		mov	edx, [eax]
		imul	edx, ecx
		mov	[esp+78h+var_74], edx
		mov	edx, [eax+4]
		imul	edx, ecx
		mov	[esp+78h+var_70], edx
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		imul	edx, ecx
		imul	eax, ecx
		mov	[esp+78h+var_6C], edx
		lea	edx, [esp+78h+var_64]
		mov	[esp+78h+var_68], eax
		mov	eax, dword_413C64
		push	edx
		push	1000400h
		mov	ecx, [eax]
		push	0
		lea	edx, [esp+84h+var_74]
		push	0
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		pop	edi
		add	esp, 74h
		retn
sub_402600	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402680	proc near		; CODE XREF: sub_404320+CEDp
					; sub_404320+D1Dp ...

var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 74h
		push	edi
		mov	ecx, 19h
		xor	eax, eax
		lea	edi, [esp+78h+var_64]
		rep stosd
		mov	eax, [esp+78h+arg_4]
		mov	ecx, dword_412128
		mov	[esp+78h+var_14], eax
		mov	eax, [esp+78h+arg_0]
		mov	[esp+78h+var_64], 64h
		mov	edx, [eax]
		imul	edx, ecx
		mov	[esp+78h+var_74], edx
		mov	edx, [eax+4]
		imul	edx, ecx
		mov	[esp+78h+var_70], edx
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		imul	edx, ecx
		imul	eax, ecx
		mov	ecx, [esp+78h+arg_8]
		mov	[esp+78h+var_68], eax
		mov	[esp+78h+var_6C], edx
		mov	eax, dword_413C68[ecx*4]
		lea	ecx, [esp+78h+var_64]
		push	ecx
		push	1000400h
		mov	edx, [eax]
		push	0
		lea	ecx, [esp+84h+var_74]
		push	0
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		pop	edi
		add	esp, 74h
		retn
sub_402680	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_402710(LPCSTR	pszFaceName)
sub_402710	proc near		; CODE XREF: sub_405350+65p
					; WinMain(x,x,x,x):loc_40B08Dp

pszFaceName	= dword	ptr  4

		mov	eax, dword_412128
		dec	eax
		jz	short loc_402727
		dec	eax
		jnz	short loc_402733
		mov	eax, 14h
		mov	ecx, 0Ah
		jmp	short loc_40273B
; ---------------------------------------------------------------------------

loc_402727:				; CODE XREF: sub_402710+6j
		mov	eax, 0Ch
		mov	ecx, 6
		jmp	short loc_40273B
; ---------------------------------------------------------------------------

loc_402733:				; CODE XREF: sub_402710+9j
		mov	eax, [esp+pszFaceName]
		mov	ecx, [esp+pszFaceName]

loc_40273B:				; CODE XREF: sub_402710+15j
					; sub_402710+21j
		mov	edx, [esp+pszFaceName]
		push	edx		; pszFaceName
		push	1		; iPitchAndFamily
		push	0		; iQuality
		push	0		; iClipPrecision
		push	4		; iOutPrecision
		push	1		; iCharSet
		push	0		; bStrikeOut
		push	0		; bUnderline
		push	0		; bItalic
		push	190h		; cWeight
		push	0		; cOrientation
		push	0		; cEscapement
		push	ecx		; cWidth
		push	eax		; cHeight
		call	ds:CreateFontA
		mov	ho, eax
		retn
sub_402710	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_402770(int, int, LPCSTR lpString, COLORREF color, HDC	hdc)
sub_402770	proc near		; CODE XREF: sub_403D40+10p
					; sub_404320+515p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
lpString	= dword	ptr  0Ch
color		= dword	ptr  10h
hdc		= dword	ptr  14h

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+hdc]
		lea	edx, [esp+0Ch+hdc]
		push	edi
		mov	eax, dword_413C68[esi*4]
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]
		mov	eax, ho
		mov	ecx, [esp+10h+hdc]
		mov	ebx, ds:SelectObject
		push	eax		; h
		push	ecx		; hdc
		call	ebx ; SelectObject
		mov	edx, [esp+10h+hdc]
		push	1		; mode
		push	edx		; hdc
		mov	ebp, eax
		call	ds:SetBkMode
		mov	eax, [esp+10h+color]
		mov	ecx, [esp+10h+hdc]
		push	eax		; color
		push	ecx		; hdc
		call	ds:SetTextColor
		mov	edx, [esp+10h+lpString]
		or	ecx, 0FFFFFFFFh
		mov	edi, edx
		xor	eax, eax
		repne scasb
		mov	eax, dword_412128
		not	ecx
		dec	ecx
		push	ecx		; c
		push	edx		; lpString
		mov	edx, eax
		imul	eax, [esp+18h+arg_0]
		imul	edx, [esp+18h+arg_4]
		push	edx		; y
		push	eax		; x
		mov	eax, [esp+20h+hdc]
		push	eax		; hdc
		call	ds:TextOutA
		mov	ecx, [esp+10h+hdc]
		push	ebp		; h
		push	ecx		; hdc
		call	ebx ; SelectObject
		mov	eax, dword_413C68[esi*4]
		mov	ecx, [esp+10h+hdc]
		push	ecx
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+68h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_402770	endp

; ---------------------------------------------------------------------------
		align 10h
; [0000000D BYTES: COLLAPSED FUNCTION __CxxRestoreUnhandledExceptionFilter(void). PRESS	CTRL-NUMPAD+ TO	EXPAND]
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402820	proc near		; CODE XREF: sub_405350+73Cp
		push	68h		; Y
		push	90h		; X
		mov	dword_416C6C, 90h
		mov	dword_416C70, 68h
		call	ds:SetCursorPos
		mov	eax, dword_416C6C
		mov	ecx, dword_416C70
		mov	dword_416C7C, eax
		mov	dword_416C80, ecx
		retn
sub_402820	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402860	proc near		; CODE XREF: sub_405350+BE0p

Point		= tagPOINT ptr -8

		sub	esp, 8
		lea	eax, [esp+8+Point]
		push	esi
		push	edi
		push	eax		; lpPoint
		call	ds:GetCursorPos
		mov	eax, [esp+10h+Point.x]
		mov	ecx, dword_416C6C
		mov	edx, eax
		mov	esi, dword_416C70
		sub	edx, ecx
		mov	ecx, dword_416C7C
		add	ecx, edx
		mov	edx, [esp+10h+Point.y]
		mov	edi, edx
		push	0Eh
		sub	edi, esi
		mov	esi, dword_416C80
		add	esi, edi
		push	offset unk_412130
		push	esi
		push	ecx
		push	offset unk_412680
		mov	dword_416C7C, ecx
		mov	dword_416C80, esi
		mov	dword_416C6C, eax
		mov	dword_416C70, edx
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi
		add	esp, 8
		retn
sub_402860	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4028D0	proc near		; CODE XREF: sub_405350+BCBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		push	0Eh
		mov	eax, [esi+4]
		push	offset unk_412140
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_416C7C
		sar	ecx, 0Ah
		add	ecx, eax
		mov	dword_416C74, ecx
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, dword_416C80
		sar	edi, 0Ah
		add	edi, eax
		mov	eax, ecx
		cdq
		and	edx, 0Fh
		mov	dword_416C78, edi
		add	eax, edx
		mov	ecx, eax
		mov	eax, edi
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	edi, eax
		sar	ecx, 4
		sar	edi, 4
		mov	dword_416C84, ecx
		mov	dword_416C88, edi
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		shl	edi, 4
		sub	edi, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	edi
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		mov	eax, [esi+8]
		mov	ecx, dword_416C84
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	edx, dword_416C88
		sar	eax, 0Ah
		shl	edx, 4
		sub	edx, eax
		mov	eax, [esi+4]
		push	edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		sub	ecx, 18h
		push	ecx
		call	sub_403CC0
		mov	eax, [esi+8]
		mov	ecx, dword_416C88
		cdq
		push	ecx
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		add	ecx, 8
		and	edx, 3FFh
		push	ecx
		mov	ecx, dword_416C84
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		sub	ecx, 18h
		push	ecx
		call	sub_403CC0
		movsx	eax, word_416C6A
		mov	edi, [esp+34h+arg_0]
		add	esp, 2Ch
		lea	edx, [eax+eax*4]
		cmp	byte ptr [edi+edx*8], 0
		jz	loc_402C19
		mov	eax, [esi+8]
		mov	ecx, dword_416C90
		cdq
		and	edx, 3FFh
		push	ebx
		add	eax, edx
		push	0Eh
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		push	offset unk_412160
		add	eax, edx
		mov	edx, dword_416C8C
		sar	eax, 0Ah
		shl	edx, 4
		sub	edx, eax
		push	ecx
		push	edx
		push	offset unk_412680
		call	sub_4024C0
		mov	eax, [esi+8]
		mov	ecx, dword_416C8C
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	edx, dword_416C90
		sar	eax, 0Ah
		shl	edx, 4
		sub	edx, eax
		mov	eax, [esi+4]
		push	edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		sub	ecx, 18h
		push	ecx
		call	sub_403CC0
		mov	eax, [esi+8]
		mov	ecx, dword_416C90
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		mov	eax, [esi+4]
		cdq
		add	ecx, 8
		and	edx, 3FFh
		push	ecx
		mov	ecx, dword_416C8C
		add	eax, edx
		sar	eax, 0Ah
		shl	ecx, 4
		sub	ecx, eax
		sub	ecx, 18h
		push	ecx
		call	sub_403CC0
		movsx	eax, word_416C6A
		push	0Eh
		push	offset unk_412150
		lea	edx, [eax+eax*4]
		mov	eax, [edi+edx*8+24h]
		lea	ecx, [edi+edx*8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ebx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		sar	ebx, 0Ah
		add	eax, edx
		sar	eax, 0Ah
		sub	ebx, eax
		mov	eax, [ecx+20h]
		cdq
		and	edx, 3FFh
		push	ebx
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		movsx	eax, word_416C6A
		add	esp, 40h
		lea	edx, [eax+eax*4]
		mov	eax, [edi+edx*8+20h]
		lea	ebx, [edi+edx*8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		sar	ecx, 0Ah
		mov	eax, ecx
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		push	eax
		mov	eax, [ebx+24h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ebx, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ebx, 0Ah
		sar	eax, 0Ah
		sub	ebx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		sub	ebx, 10h
		add	eax, edx
		push	ebx
		sar	eax, 0Ah
		sub	ecx, eax
		sub	ecx, 8
		push	ecx
		call	sub_403CC0
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		lea	edi, [edi+eax*8]
		mov	eax, [edi+24h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		sar	ecx, 0Ah
		mov	eax, ecx
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		push	eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	ecx, eax
		mov	eax, [edi+20h]
		sub	ecx, 8
		push	ecx
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		sub	ecx, 8
		push	ecx
		call	sub_403CC0
		add	esp, 18h
		pop	ebx

loc_402C19:				; CODE XREF: sub_4028D0+139j
		pop	edi
		pop	esi
		retn
sub_4028D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_402C20	proc near		; CODE XREF: sub_405350+BB9p

arg_0		= dword	ptr  4

		movsx	eax, byte_416C68
		sub	eax, 0
		push	esi
		jz	short loc_402C88
		dec	eax
		jnz	loc_403135
		movsx	eax, word_416C6A
		mov	edx, dword_416C84
		mov	ecx, [esp+4+arg_0]
		lea	eax, [eax+eax*4]
		shl	edx, 0Eh
		mov	[ecx+eax*8+20h], edx
		mov	edx, dword_416C88
		movsx	eax, word_416C6A
		shl	edx, 0Eh
		lea	eax, [eax+eax*4]
		mov	[ecx+eax*8+24h], edx
		mov	al, byte ptr dword_417A48
		test	al, 2
		jnz	loc_403135
		push	1
		push	7
		call	sub_40A9C0
		add	esp, 8
		mov	byte_416C68, 0
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_402C88:				; CODE XREF: sub_402C20+Bj
		mov	al, byte ptr dword_416CA8
		test	al, 2
		jz	loc_402EEC
		mov	eax, dword_416C7C
		cmp	eax, 8
		jle	loc_402E81
		cmp	eax, 0E0h
		jge	loc_402E81
		mov	ecx, dword_416C80
		cmp	ecx, 8
		jle	loc_402E81
		cmp	ecx, 28h
		jge	loc_402E81
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3Ch
		jle	loc_402DB9
		cmp	eax, 54h
		jge	loc_402D5E
		cmp	ecx, 10h
		jle	short loc_402D5E
		cmp	ecx, 18h
		jge	short loc_402D5E
		push	1
		push	1
		call	sub_40A9C0
		mov	ax, word_416C6A
		add	esp, 8
		inc	ax
		cmp	ax, 64h
		mov	word_416C6A, ax
		jl	short loc_402D0F
		xor	ax, ax
		mov	word_416C6A, ax

loc_402D0F:				; CODE XREF: sub_402C20+E4j
		movsx	eax, ax
		lea	ecx, [eax+eax*4]
		mov	eax, [esi+ecx*8+10h]
		cdq
		lea	ecx, [esi+ecx*8]
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	dword_416C8C, eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 0Fh
		mov	ecx, dword_416C80
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	dword_416C90, eax
		mov	eax, dword_416C7C

loc_402D5E:				; CODE XREF: sub_402C20+B6j
					; sub_402C20+BFj ...
		cmp	eax, 3Ch
		jle	short loc_402DB9
		cmp	eax, 54h
		jge	short loc_402DB9
		cmp	ecx, 1Ch
		jle	short loc_402DB9
		cmp	ecx, 24h
		jge	short loc_402DB9
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	edx, [eax+eax*4]
		lea	eax, [esi+edx*8+2]
		mov	dl, [esi+edx*8+2]
		inc	dl
		mov	[eax], dl
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		mov	cl, [esi+eax*8+2]
		lea	eax, [esi+eax*8+2]
		cmp	cl, 9
		jle	short loc_402DAE
		mov	byte ptr [eax],	0

loc_402DAE:				; CODE XREF: sub_402C20+189j
		mov	ecx, dword_416C80
		mov	eax, dword_416C7C

loc_402DB9:				; CODE XREF: sub_402C20+ADj
					; sub_402C20+141j ...
		cmp	eax, 94h
		jle	short loc_402E17
		cmp	eax, 0ACh
		jge	short loc_402E17
		cmp	ecx, 1Ch
		jle	short loc_402E17
		cmp	ecx, 24h
		jge	short loc_402E17
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	ecx, [eax+eax*4]
		inc	word ptr [esi+ecx*8+4]
		lea	eax, [esi+ecx*8+4]
		movsx	eax, word_416C6A
		lea	edx, [eax+eax*4]
		cmp	word ptr [esi+edx*8+4],	100h
		lea	eax, [esi+edx*8+4]
		jl	short loc_402E0C
		mov	word ptr [eax],	0

loc_402E0C:				; CODE XREF: sub_402C20+1E5j
		mov	ecx, dword_416C80
		mov	eax, dword_416C7C

loc_402E17:				; CODE XREF: sub_402C20+19Ej
					; sub_402C20+1A5j ...
		cmp	eax, 0C0h
		jle	loc_403135
		cmp	eax, 0D8h
		jge	loc_403135
		cmp	ecx, 10h
		jle	loc_403135
		cmp	ecx, 18h
		jge	loc_403135
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	eax, [eax+eax*4]
		mov	dl, [esi+eax*8+1]
		lea	eax, [esi+eax*8+1]
		inc	dl
		mov	[eax], dl
		movsx	eax, word_416C6A
		lea	ecx, [eax+eax*4]
		lea	eax, [esi+ecx*8+1]
		mov	cl, [esi+ecx*8+1]
		cmp	cl, 3
		jle	loc_403135
		mov	byte ptr [eax],	0
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_402E81:				; CODE XREF: sub_402C20+7Dj
					; sub_402C20+88j ...
		push	1
		push	6
		call	sub_40A9C0
		mov	eax, dword_416C88
		mov	edx, dword_416C84
		mov	dword_416C90, eax
		mov	byte_416C68, 1
		movsx	eax, word_416C6A
		mov	dword_416C8C, edx
		add	esp, 8
		lea	ecx, [eax+eax*4]
		mov	eax, [esp+4+arg_0]
		pop	esi
		mov	byte ptr [eax+ecx*8], 1
		mov	edx, dword_416C8C
		movsx	ecx, word_416C6A
		shl	edx, 0Eh
		lea	ecx, [ecx+ecx*4]
		mov	[eax+ecx*8+10h], edx
		mov	edx, dword_416C90
		movsx	ecx, word_416C6A
		shl	edx, 0Eh
		lea	ecx, [ecx+ecx*4]
		mov	[eax+ecx*8+14h], edx
		retn
; ---------------------------------------------------------------------------

loc_402EEC:				; CODE XREF: sub_402C20+6Fj
		test	al, 1
		jz	loc_403135
		mov	eax, dword_416C7C
		cmp	eax, 8
		jle	loc_4030CE
		cmp	eax, 0E0h
		jge	loc_4030CE
		mov	ecx, dword_416C80
		cmp	ecx, 8
		jle	loc_4030CE
		cmp	ecx, 28h
		jge	loc_4030CE
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3Ch
		jle	loc_40300C
		cmp	eax, 54h
		jge	short loc_402FB2
		cmp	ecx, 10h
		jle	short loc_402FB2
		cmp	ecx, 18h
		jge	short loc_402FB2
		push	1
		push	1
		call	sub_40A9C0
		add	esp, 8
		dec	word_416C6A
		jns	short loc_402F5F
		mov	word_416C6A, 63h

loc_402F5F:				; CODE XREF: sub_402C20+334j
		movsx	eax, word_416C6A
		lea	edx, [eax+eax*4]
		mov	eax, [esi+edx*8+10h]
		lea	ecx, [esi+edx*8]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	dword_416C8C, eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 0Fh
		mov	ecx, dword_416C80
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	dword_416C90, eax
		mov	eax, dword_416C7C

loc_402FB2:				; CODE XREF: sub_402C20+315j
					; sub_402C20+31Aj ...
		cmp	eax, 3Ch
		jle	short loc_40300C
		cmp	eax, 54h
		jge	short loc_40300C
		cmp	ecx, 1Ch
		jle	short loc_40300C
		cmp	ecx, 24h
		jge	short loc_40300C
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	eax, [eax+eax*4]
		mov	dl, [esi+eax*8+2]
		lea	eax, [esi+eax*8+2]
		dec	dl
		mov	[eax], dl
		movsx	eax, word_416C6A
		lea	ecx, [eax+eax*4]
		lea	eax, [esi+ecx*8+2]
		mov	cl, [esi+ecx*8+2]
		test	cl, cl
		jge	short loc_403001
		mov	byte ptr [eax],	9

loc_403001:				; CODE XREF: sub_402C20+3DCj
		mov	ecx, dword_416C80
		mov	eax, dword_416C7C

loc_40300C:				; CODE XREF: sub_402C20+30Cj
					; sub_402C20+395j ...
		cmp	eax, 94h
		jle	short loc_403069
		cmp	eax, 0ACh
		jge	short loc_403069
		cmp	ecx, 1Ch
		jle	short loc_403069
		cmp	ecx, 24h
		jge	short loc_403069
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	edx, [eax+eax*4]
		dec	word ptr [esi+edx*8+4]
		lea	eax, [esi+edx*8+4]
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		cmp	word ptr [esi+eax*8+4],	0
		lea	eax, [esi+eax*8+4]
		jge	short loc_40305E
		mov	word ptr [eax],	0FFh

loc_40305E:				; CODE XREF: sub_402C20+437j
		mov	ecx, dword_416C80
		mov	eax, dword_416C7C

loc_403069:				; CODE XREF: sub_402C20+3F1j
					; sub_402C20+3F8j ...
		cmp	eax, 0C0h
		jle	loc_403135
		cmp	eax, 0D8h
		jge	loc_403135
		cmp	ecx, 10h
		jle	loc_403135
		cmp	ecx, 18h
		jge	loc_403135
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, word_416C6A
		add	esp, 8
		lea	ecx, [eax+eax*4]
		mov	dl, [esi+ecx*8+1]
		lea	eax, [esi+ecx*8+1]
		dec	dl
		mov	[eax], dl
		movsx	eax, word_416C6A
		lea	edx, [eax+eax*4]
		mov	cl, [esi+edx*8+1]
		lea	eax, [esi+edx*8+1]
		test	cl, cl
		jge	short loc_403135
		mov	byte ptr [eax],	3
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_4030CE:				; CODE XREF: sub_402C20+2DCj
					; sub_402C20+2E7j ...
		mov	eax, [esp+4+arg_0]
		push	edi
		mov	edi, 64h
		lea	esi, [eax+14h]

loc_4030DB:				; CODE XREF: sub_402C20+512j
		mov	eax, [esi-4]
		mov	ecx, dword_416C84
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cmp	ecx, eax
		jnz	short loc_40312E
		mov	eax, [esi]
		mov	ecx, dword_416C88
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cmp	ecx, eax
		jnz	short loc_40312E
		push	1
		push	2
		call	sub_40A9C0
		add	esp, 8
		mov	byte ptr [esi-14h], 0

loc_40312E:				; CODE XREF: sub_402C20+4DBj
					; sub_402C20+4FCj
		add	esi, 28h
		dec	edi
		jnz	short loc_4030DB
		pop	edi

loc_403135:				; CODE XREF: sub_402C20+Ej
					; sub_402C20+4Dj ...
		pop	esi
		retn
sub_402C20	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403140	proc near		; CODE XREF: sub_405350+BDBp

arg_0		= dword	ptr  4

		push	esi
		push	0Fh
		push	offset unk_412170
		push	8
		push	8
		push	offset unk_412680
		call	sub_4024C0
		movsx	eax, word_416C6A
		mov	esi, [esp+18h+arg_0]
		lea	eax, [eax+eax*4]
		movsx	ecx, byte ptr [esi+eax*8+2]
		add	ecx, 50h
		push	ecx
		push	offset unk_412180
		push	8
		push	8
		push	offset unk_412680
		call	sub_4024C0
		movsx	edx, word_416C6A
		push	edx
		push	10h
		push	3Ch
		call	sub_403CC0
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		movsx	ecx, byte ptr [esi+eax*8+2]
		push	ecx
		push	1Ch
		push	3Ch
		call	sub_403CC0
		movsx	eax, word_416C6A
		add	esp, 40h
		lea	edx, [eax+eax*4]
		mov	eax, [esi+edx*8+10h]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		push	eax
		push	10h
		push	68h
		call	sub_403CC0
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		mov	eax, [esi+eax*8+14h]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		push	eax
		push	1Ch
		push	68h
		call	sub_403CC0
		movsx	eax, word_416C6A
		xor	edx, edx
		lea	ecx, [eax+eax*4]
		mov	dl, [esi+ecx*8]
		push	edx
		push	10h
		push	94h
		call	sub_403CC0
		movsx	eax, word_416C6A
		lea	eax, [eax+eax*4]
		movsx	ecx, word ptr [esi+eax*8+4]
		push	ecx
		push	1Ch
		push	94h
		call	sub_403CC0
		movsx	eax, word_416C6A
		push	0Dh
		lea	edx, [eax+eax*4]
		movsx	eax, byte ptr [esi+edx*8+1]
		shl	eax, 4
		add	eax, offset unk_412190
		push	eax
		push	10h
		push	0C0h
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 44h
		pop	esi
		retn
sub_403140	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403270	proc near		; CODE XREF: sub_404320+A4Fp
					; sub_405350+5Fp

var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 104h
		lea	eax, [esp+104h+var_104]
		push	edi
		push	offset aNpchar_dat ; "NPChar.dat"
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+118h+var_104]
		push	offset aRb	; "rb"
		push	ecx		; char *
		call	_fopen
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		jnz	short loc_4032B0
		pop	edi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_4032B0:				; CODE XREF: sub_403270+36j
		mov	edx, [esp+108h+arg_0]
		push	ebx
		push	esi
		mov	ebx, 64h
		lea	esi, [edx+2]

loc_4032C1:				; CODE XREF: sub_403270+D9j
		push	edi		; FILE *
		push	1		; size_t
		lea	eax, [esi-2]
		push	1		; size_t
		push	eax		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	ecx, [esi-1]
		push	1		; size_t
		push	ecx		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	esi		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	edx, [esi+2]
		push	2		; size_t
		push	edx		; void *
		call	_fread
		add	esp, 40h
		lea	eax, [esi+0Ah]
		push	edi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	eax		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	ecx, [esi+0Eh]
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	edx, [esi+12h]
		push	4		; size_t
		push	edx		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	eax, [esi+1Eh]
		push	4		; size_t
		push	eax		; void *
		call	_fread
		add	esp, 40h
		lea	ecx, [esi+22h]
		push	edi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		add	esp, 10h
		add	esi, 28h
		dec	ebx
		jnz	loc_4032C1
		push	edi		; FILE *
		call	_fclose
		add	esp, 4
		mov	eax, 1
		pop	esi
		pop	ebx
		pop	edi
		add	esp, 104h
		retn
sub_403270	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403370	proc near		; CODE XREF: sub_405350+B4Cp

var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 104h
		lea	eax, [esp+104h+var_104]
		push	edi
		push	offset aNpchar_dat ; "NPChar.dat"
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+118h+var_104]
		push	offset aWb	; "wb"
		push	ecx		; char *
		call	_fopen
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		jnz	short loc_4033B0
		pop	edi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_4033B0:				; CODE XREF: sub_403370+36j
		mov	edx, [esp+108h+arg_0]
		push	ebx
		push	esi
		mov	ebx, 64h
		lea	esi, [edx+2]

loc_4033C1:				; CODE XREF: sub_403370+D9j
		push	edi		; FILE *
		push	1		; size_t
		lea	eax, [esi-2]
		push	1		; size_t
		push	eax		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		lea	ecx, [esi-1]
		push	1		; size_t
		push	ecx		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	esi		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		lea	edx, [esi+2]
		push	2		; size_t
		push	edx		; void *
		call	_fwrite
		add	esp, 40h
		lea	eax, [esi+0Ah]
		push	edi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	eax		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		lea	ecx, [esi+0Eh]
		push	4		; size_t
		push	ecx		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		lea	edx, [esi+12h]
		push	4		; size_t
		push	edx		; void *
		call	_fwrite
		push	edi		; FILE *
		push	1		; size_t
		lea	eax, [esi+1Eh]
		push	4		; size_t
		push	eax		; void *
		call	_fwrite
		add	esp, 40h
		lea	ecx, [esi+22h]
		push	edi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	ecx		; void *
		call	_fwrite
		add	esp, 10h
		add	esi, 28h
		dec	ebx
		jnz	loc_4033C1
		push	edi		; FILE *
		call	_fclose
		add	esp, 4
		mov	eax, 1
		pop	esi
		pop	ebx
		pop	edi
		add	esp, 104h
		retn
sub_403370	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403470	proc near		; CODE XREF: sub_403840+31p
					; sub_40A100+4Bp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax

loc_403476:				; CODE XREF: sub_403470+12j
		cmp	byte ptr [ecx],	0
		jz	short locret_403489
		add	ecx, 1Ch
		inc	eax
		cmp	eax, 78h
		jl	short loc_403476
		mov	eax, 0FFFFFFh

locret_403489:				; CODE XREF: sub_403470+9j
		retn
sub_403470	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403490	proc near		; CODE XREF: sub_4037E0+21p
					; DATA XREF: .data:off_4121E0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [ecx+10h]
		mov	edx, [ecx+0Ch]
		mov	esi, [ecx+4]
		add	edi, 20h
		add	esi, edx
		mov	edx, [ecx+8]
		mov	eax, edi
		mov	[ecx+10h], edi
		add	edx, eax
		mov	[ecx+4], esi
		mov	[ecx+8], edx
		mov	eax, edx
		mov	edx, [esp+8+arg_4]
		mov	edi, [edx+8]
		shl	edi, 0Eh
		cmp	esi, edi
		jg	short loc_4034D6
		test	esi, esi
		jl	short loc_4034D6
		mov	edx, [edx+0Ch]
		shl	edx, 0Eh
		cmp	eax, edx
		jg	short loc_4034D6
		test	eax, eax
		jge	short loc_4034D9

loc_4034D6:				; CODE XREF: sub_403490+32j
					; sub_403490+36j ...
		mov	byte ptr [ecx],	0

loc_4034D9:				; CODE XREF: sub_403490+44j
		mov	edi, [ecx+18h]
		inc	edi
		mov	edx, edi
		mov	[ecx+18h], edi
		cmp	edx, 8
		jle	short loc_4034FE
		mov	dl, [ecx+14h]
		mov	dword ptr [ecx+18h], 0
		inc	dl
		cmp	dl, 5
		mov	[ecx+14h], dl
		jle	short loc_4034FE
		mov	byte ptr [ecx],	0

loc_4034FE:				; CODE XREF: sub_403490+55j
					; sub_403490+69j
		cmp	byte ptr [ecx],	0
		jz	short loc_403556
		movsx	edx, byte ptr [ecx+1]
		movsx	ecx, byte ptr [ecx+14h]
		shl	ecx, 4
		add	edx, 3Ch
		add	ecx, offset unk_4121F0
		push	edx
		push	ecx
		mov	ecx, [esp+10h+arg_8]
		mov	edx, [ecx+8]
		mov	edi, [ecx+4]
		sub	eax, edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		mov	eax, esi
		sub	eax, edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_403556:				; CODE XREF: sub_403490+71j
		pop	edi
		pop	esi
		retn
sub_403490	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403560	proc near		; CODE XREF: sub_4037E0+21p
					; DATA XREF: .data:004121E4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [ecx+10h]
		mov	edx, [ecx+0Ch]
		mov	esi, [ecx+4]
		add	edi, 0FFFFFFF0h
		add	esi, edx
		mov	edx, [ecx+8]
		mov	eax, edi
		mov	[ecx+10h], edi
		add	edx, eax
		mov	[ecx+4], esi
		mov	[ecx+8], edx
		mov	eax, edx
		mov	edx, [esp+8+arg_4]
		mov	edi, [edx+8]
		shl	edi, 0Eh
		cmp	esi, edi
		jg	short loc_4035A6
		test	esi, esi
		jl	short loc_4035A6
		mov	edx, [edx+0Ch]
		shl	edx, 0Eh
		cmp	eax, edx
		jg	short loc_4035A6
		test	eax, eax
		jge	short loc_4035A9

loc_4035A6:				; CODE XREF: sub_403560+32j
					; sub_403560+36j ...
		mov	byte ptr [ecx],	0

loc_4035A9:				; CODE XREF: sub_403560+44j
		mov	edi, [ecx+18h]
		inc	edi
		mov	edx, edi
		mov	[ecx+18h], edi
		cmp	edx, 20h
		jle	short loc_4035CE
		mov	dl, [ecx+14h]
		mov	dword ptr [ecx+18h], 0
		inc	dl
		cmp	dl, 5
		mov	[ecx+14h], dl
		jle	short loc_4035CE
		mov	byte ptr [ecx],	0

loc_4035CE:				; CODE XREF: sub_403560+55j
					; sub_403560+69j
		cmp	byte ptr [ecx],	0
		jz	short loc_403626
		movsx	edx, byte ptr [ecx+1]
		movsx	ecx, byte ptr [ecx+14h]
		shl	ecx, 4
		add	edx, 3Ch
		add	ecx, offset unk_4121F0
		push	edx
		push	ecx
		mov	ecx, [esp+10h+arg_8]
		mov	edx, [ecx+8]
		mov	edi, [ecx+4]
		sub	eax, edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		mov	eax, esi
		sub	eax, edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_403626:				; CODE XREF: sub_403560+71j
		pop	edi
		pop	esi
		retn
sub_403560	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403630	proc near		; CODE XREF: sub_4037E0+21p
					; DATA XREF: .data:004121E8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		mov	edx, [esp+arg_4]
		push	esi
		push	edi
		mov	eax, [ecx+8]
		mov	esi, [ecx+4]
		add	eax, 0FFFFFEABh
		mov	[ecx+8], eax
		mov	edi, [edx+8]
		shl	edi, 0Eh
		cmp	esi, edi
		jg	short loc_403664
		test	esi, esi
		jl	short loc_403664
		mov	edx, [edx+0Ch]
		shl	edx, 0Eh
		cmp	eax, edx
		jg	short loc_403664
		test	eax, eax
		jge	short loc_403667

loc_403664:				; CODE XREF: sub_403630+20j
					; sub_403630+24j ...
		mov	byte ptr [ecx],	0

loc_403667:				; CODE XREF: sub_403630+32j
		mov	edi, [ecx+18h]
		inc	edi
		mov	edx, edi
		mov	[ecx+18h], edi
		cmp	edx, 48h
		jle	short loc_403678
		mov	byte ptr [ecx],	0

loc_403678:				; CODE XREF: sub_403630+43j
		cmp	byte ptr [ecx],	0
		jz	short loc_4036D0
		movsx	edx, byte ptr [ecx+1]
		movsx	ecx, byte ptr [ecx+14h]
		shl	ecx, 4
		add	edx, 3Ch
		add	ecx, offset unk_4121F0
		push	edx
		push	ecx
		mov	ecx, [esp+10h+arg_8]
		mov	edx, [ecx+8]
		mov	edi, [ecx+4]
		sub	eax, edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		mov	eax, esi
		sub	eax, edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_4036D0:				; CODE XREF: sub_403630+4Bj
		pop	edi
		pop	esi
		retn
sub_403630	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4036E0	proc near		; CODE XREF: sub_4037E0+21p
					; DATA XREF: .data:004121ECo

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 20h
		mov	ecx, 40h
		mov	eax, 10h
		mov	[esp+20h+var_18], ecx
		mov	[esp+20h+var_8], ecx
		mov	ecx, [esp+20h+arg_0]
		push	ebx
		mov	[esp+24h+var_14], eax
		mov	[esp+24h+var_C], eax
		mov	eax, [ecx+8]
		push	esi
		mov	esi, [ecx+4]
		push	edi
		mov	edi, [esp+2Ch+arg_4]
		add	eax, 0FFFFFEABh
		mov	[ecx+8], eax
		xor	edx, edx
		mov	ebx, [edi+8]
		mov	[esp+2Ch+var_20], edx
		shl	ebx, 0Eh
		cmp	esi, ebx
		mov	[esp+2Ch+var_1C], edx
		mov	[esp+2Ch+var_10], edx
		mov	[esp+2Ch+var_4], 20h
		jg	short loc_403748
		cmp	esi, edx
		jl	short loc_403748
		mov	edi, [edi+0Ch]
		shl	edi, 0Eh
		cmp	eax, edi
		jg	short loc_403748
		cmp	eax, edx
		jge	short loc_40374A

loc_403748:				; CODE XREF: sub_4036E0+54j
					; sub_4036E0+58j ...
		mov	[ecx], dl

loc_40374A:				; CODE XREF: sub_4036E0+66j
		mov	ebx, [ecx+18h]
		inc	ebx
		mov	edi, ebx
		mov	[ecx+18h], ebx
		cmp	edi, 3
		jle	short loc_40376A
		mov	bl, [ecx+14h]
		mov	[ecx+18h], edx
		inc	bl
		cmp	bl, 18h
		mov	[ecx+14h], bl
		jle	short loc_40376A
		mov	[ecx], dl

loc_40376A:				; CODE XREF: sub_4036E0+76j
					; sub_4036E0+86j
		cmp	[ecx], dl
		jz	short loc_4037CA
		movsx	edx, byte ptr [ecx+1]
		movsx	ecx, byte ptr [ecx+14h]
		add	edx, 3Ch
		and	ecx, 80000001h
		push	edx
		jns	short loc_403787
		dec	ecx
		or	ecx, 0FFFFFFFEh
		inc	ecx

loc_403787:				; CODE XREF: sub_4036E0+A0j
		shl	ecx, 4
		lea	edx, [esp+ecx+30h+var_20]
		mov	ecx, [esp+30h+arg_8]
		push	edx
		sub	eax, [ecx+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, [ecx+4]
		sar	eax, 0Ah
		sub	eax, 4
		push	eax
		mov	eax, esi
		sub	eax, edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	eax, 20h
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_4037CA:				; CODE XREF: sub_4036E0+8Cj
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 20h
		retn
sub_4036E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4037E0	proc near		; CODE XREF: sub_405350+930p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, [esp+10h+arg_8]
		mov	ebp, 78h

loc_4037F5:				; CODE XREF: sub_4037E0+2Fj
		cmp	byte ptr [esi],	0
		jz	short loc_40380B
		movsx	eax, byte ptr [esi+1]
		push	edi
		push	ebx
		push	esi
		call	off_4121E0[eax*4]
		add	esp, 0Ch

loc_40380B:				; CODE XREF: sub_4037E0+18j
		add	esi, 1Ch
		dec	ebp
		jnz	short loc_4037F5
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4037E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403820	proc near		; CODE XREF: sub_401340+8Ap
					; sub_401340+32Ep ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax

loc_403826:				; CODE XREF: sub_403820+12j
		cmp	byte ptr [ecx],	0
		jz	short locret_403839
		add	ecx, 24h
		inc	eax
		cmp	eax, 78h
		jl	short loc_403826
		mov	eax, 0FFFFFFh

locret_403839:				; CODE XREF: sub_403820+9j
		retn
sub_403820	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403840	proc near		; CODE XREF: sub_405350+945p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	ebx
		push	ebp
		mov	ebp, [esp+0Ch+arg_4]
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		mov	[esp+14h+var_4], 0Ah
		xor	ebx, ebx

loc_403857:				; CODE XREF: sub_403840+D1j
		cmp	[esi], bl
		jz	loc_403905
		mov	[esi], bl
		mov	al, [esi+3]
		cmp	al, bl
		mov	[esp+14h+arg_4], ebx
		jle	loc_403905

loc_403870:				; CODE XREF: sub_403840+BFj
		push	ebp
		call	sub_403470
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_4038F0
		mov	dl, [esi+1]
		lea	ecx, ds:0[eax*8]
		sub	ecx, eax
		lea	edi, [ebp+ecx*4+0]
		mov	[edi+1], dl
		mov	[edi+18h], ebx
		mov	al, [esi+2]
		mov	[edi+14h], al
		mov	eax, [esi+1Ch]
		push	eax
		neg	eax
		push	eax
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+4]
		shl	eax, 0Ah
		add	eax, ecx
		mov	[edi+4], eax
		mov	eax, [esi+20h]
		push	eax
		neg	eax
		push	eax
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+8]
		shl	eax, 0Ah
		add	eax, ecx
		mov	[edi+8], eax
		mov	ecx, [esi+0Ch]
		mov	edx, [esi+10h]
		push	ecx
		push	edx
		call	Random		; Creates random number	in given range
		mov	[edi+0Ch], eax
		mov	eax, [esi+14h]
		mov	ecx, [esi+18h]
		push	eax
		push	ecx
		call	Random		; Creates random number	in given range
		add	esp, 20h
		mov	[edi+10h], eax
		mov	byte ptr [edi],	1

loc_4038F0:				; CODE XREF: sub_403840+3Ej
		mov	eax, [esp+14h+arg_4]
		movsx	edx, byte ptr [esi+3]
		inc	eax
		cmp	eax, edx
		mov	[esp+14h+arg_4], eax
		jl	loc_403870

loc_403905:				; CODE XREF: sub_403840+19j
					; sub_403840+2Aj
		mov	eax, [esp+14h+var_4]
		add	esi, 24h
		dec	eax
		mov	[esp+14h+var_4], eax
		jnz	loc_403857
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_403840	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403920	proc near		; CODE XREF: sub_405350+247p
					; sub_405350+95Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	ebx
		push	ebp
		xor	ebx, ebx
		movsx	ecx, byte ptr [eax+1]
		push	esi
		cmp	ecx, 4		; switch 5 cases
		push	edi
		ja	loc_403C09	; jumptable 00403937 default case
		jmp	ds:off_403C24[ecx*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40393E:				; CODE XREF: sub_403920+17j
					; DATA XREF: .text:off_403C24o
		mov	[eax+4], ebx	; jumptable 00403937 case 0
		jmp	loc_403C09	; jumptable 00403937 default case
; ---------------------------------------------------------------------------

loc_403946:				; CODE XREF: sub_403920+17j
					; DATA XREF: .text:off_403C24o
		mov	edx, [eax+4]	; jumptable 00403937 case 1
		inc	edx
		mov	ecx, edx
		mov	[eax+4], edx
		cmp	ecx, 3Ch
		jle	short loc_40395F
		pop	edi
		pop	esi
		mov	byte ptr [eax+1], 0
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_40395F:				; CODE XREF: sub_403920+32j
		mov	esi, [esp+10h+arg_4]
		push	0Ah
		push	0FFFFFFF6h
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+4]
		push	0Ah
		shl	eax, 0Ah
		add	ecx, eax
		push	0FFFFFFF6h
		mov	[esi+4], ecx
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+8]
		mov	edi, [esp+20h+arg_8]
		shl	eax, 0Ah
		add	ecx, eax
		push	edi
		mov	[esi+8], ecx
		call	sub_403820
		add	esp, 14h
		cmp	eax, 0FFFFFFh
		mov	ebp, 0A0h
		jz	short loc_4039E6
		lea	eax, [eax+eax*8]
		lea	eax, [edi+eax*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 1
		mov	[eax+2], bl
		mov	byte ptr [eax+3], 2
		mov	ecx, [esi+4]
		add	ecx, 28000h
		mov	[eax+4], ecx
		mov	edx, [esi+8]
		add	edx, 1E000h
		mov	[eax+0Ch], ebx
		mov	[eax+8], edx
		mov	[eax+10h], ebx
		mov	[eax+14h], ebx
		mov	[eax+18h], ebx
		mov	dword ptr [eax+1Ch], 0D5h
		mov	[eax+20h], ebp

loc_4039E6:				; CODE XREF: sub_403920+82j
		push	edi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	loc_403C05
		jmp	loc_403BC4
; ---------------------------------------------------------------------------

loc_4039FF:				; CODE XREF: sub_403920+17j
					; DATA XREF: .text:off_403C24o
		mov	[esp+10h+arg_4], ebx ; jumptable 00403937 case 2
		mov	ebp, 0E0h

loc_403A08:				; CODE XREF: sub_403920+146j
		xor	edi, edi
		xor	esi, esi
		jmp	short loc_403A12
; ---------------------------------------------------------------------------

loc_403A0E:				; CODE XREF: sub_403920+131j
		mov	eax, [esp+10h+arg_0]

loc_403A12:				; CODE XREF: sub_403920+ECj
		mov	eax, [eax+4]
		mov	ecx, [esp+10h+arg_4]
		sub	eax, edi
		sub	eax, ecx
		jns	short loc_403A23
		xor	eax, eax
		jmp	short loc_403A2D
; ---------------------------------------------------------------------------

loc_403A23:				; CODE XREF: sub_403920+FDj
		cmp	eax, 0Fh
		jle	short loc_403A2D
		mov	eax, 0Fh

loc_403A2D:				; CODE XREF: sub_403920+101j
					; sub_403920+106j
		shl	eax, 4
		add	eax, offset unk_412330
		push	12h
		push	eax
		push	ebp
		push	esi
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		add	esi, 10h
		inc	edi
		cmp	esi, 140h
		jl	short loc_403A0E
		mov	edx, [esp+10h+arg_4]
		mov	eax, [esp+10h+arg_0]
		sub	ebp, 10h
		inc	edx
		cmp	ebp, 0FFFFFFF0h
		mov	[esp+10h+arg_4], edx
		jg	short loc_403A08
		mov	edx, [eax+4]
		inc	edx
		mov	ecx, edx
		mov	[eax+4], edx
		cmp	ecx, 32h
		jle	loc_403C05
		pop	edi
		pop	esi
		mov	[eax+1], bl
		pop	ebp
		mov	eax, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_403A87:				; CODE XREF: sub_403920+17j
					; DATA XREF: .text:off_403C24o
		mov	[esp+10h+arg_4], ebx ; jumptable 00403937 case 3
		mov	ebp, 0E0h

loc_403A90:				; CODE XREF: sub_403920+1D0j
		xor	edi, edi
		xor	esi, esi
		jmp	short loc_403A9A
; ---------------------------------------------------------------------------

loc_403A96:				; CODE XREF: sub_403920+1BBj
		mov	eax, [esp+10h+arg_0]

loc_403A9A:				; CODE XREF: sub_403920+174j
		mov	eax, [eax+4]
		mov	ecx, [esp+10h+arg_4]
		sub	eax, edi
		sub	eax, ecx
		jns	short loc_403AAB
		xor	eax, eax
		jmp	short loc_403AB5
; ---------------------------------------------------------------------------

loc_403AAB:				; CODE XREF: sub_403920+185j
		cmp	eax, 0Fh
		jle	short loc_403AB5
		mov	eax, 0Fh

loc_403AB5:				; CODE XREF: sub_403920+189j
					; sub_403920+18Ej
		shl	eax, 4
		mov	ecx, offset unk_412420
		push	12h
		sub	ecx, eax
		push	ecx
		push	ebp
		push	esi
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		add	esi, 10h
		inc	edi
		cmp	esi, 140h
		jl	short loc_403A96
		mov	edx, [esp+10h+arg_4]
		mov	eax, [esp+10h+arg_0]
		sub	ebp, 10h
		inc	edx
		cmp	ebp, 0FFFFFFF0h
		mov	[esp+10h+arg_4], edx
		jg	short loc_403A90
		mov	edx, [eax+4]
		inc	edx
		mov	ecx, edx
		mov	[eax+4], edx
		cmp	ecx, 32h
		jle	loc_403C05
		mov	edx, eax
		pop	edi
		pop	esi
		pop	ebp
		mov	[edx+1], bl
		mov	eax, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_403B13:				; CODE XREF: sub_403920+17j
					; DATA XREF: .text:off_403C24o
		mov	ecx, [eax+4]	; jumptable 00403937 case 4
		inc	ecx
		mov	[eax+4], ecx
		and	ecx, 80000003h
		jns	short loc_403B27
		dec	ecx
		or	ecx, 0FFFFFFFCh
		inc	ecx

loc_403B27:				; CODE XREF: sub_403920+200j
		jnz	loc_403C09	; jumptable 00403937 default case
		mov	esi, [esp+10h+arg_4]
		push	1
		push	0FFFFFFFFh
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+4]
		push	1
		shl	eax, 0Ah
		add	ecx, eax
		push	0FFFFFFFFh
		mov	[esi+4], ecx
		call	Random		; Creates random number	in given range
		mov	ecx, [esi+8]
		mov	edi, [esp+20h+arg_8]
		shl	eax, 0Ah
		add	ecx, eax
		push	edi
		mov	[esi+8], ecx
		call	sub_403820
		add	esp, 14h
		cmp	eax, 0FFFFFFh
		mov	ebp, 0A0h
		jz	short loc_403BB4
		lea	edx, [eax+eax*8]
		lea	eax, [edi+edx*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 1
		mov	[eax+2], bl
		mov	byte ptr [eax+3], 2
		mov	ecx, [esi+4]
		add	ecx, 28000h
		mov	[eax+4], ecx
		mov	edx, [esi+8]
		add	edx, 1E000h
		mov	[eax+0Ch], ebx
		mov	[eax+8], edx
		mov	[eax+10h], ebx
		mov	[eax+14h], ebx
		mov	[eax+18h], ebx
		mov	dword ptr [eax+1Ch], 0D5h
		mov	[eax+20h], ebp

loc_403BB4:				; CODE XREF: sub_403920+250j
		push	edi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_403C05

loc_403BC4:				; CODE XREF: sub_403920+DAj
		lea	eax, [eax+eax*8]
		lea	eax, [edi+eax*4]
		mov	byte ptr [eax],	1
		mov	[eax+1], bl
		mov	[eax+2], bl
		mov	byte ptr [eax+3], 2
		mov	ecx, [esi+4]
		add	ecx, 28000h
		mov	[eax+4], ecx
		mov	edx, [esi+8]
		add	edx, 1E000h
		mov	[eax+8], edx
		mov	[eax+0Ch], ebx
		mov	[eax+10h], ebx
		mov	[eax+14h], ebx
		mov	[eax+18h], ebx
		mov	dword ptr [eax+1Ch], 0D5h
		mov	[eax+20h], ebp

loc_403C05:				; CODE XREF: sub_403920+D4j
					; sub_403920+154j ...
		mov	eax, [esp+10h+arg_0]

loc_403C09:				; CODE XREF: sub_403920+11j
					; sub_403920+21j ...
		cmp	[eax], bl	; jumptable 00403937 default case
		jz	short loc_403C1B
		push	ebx
		push	offset unk_412680
		call	sub_402600
		add	esp, 8

loc_403C1B:				; CODE XREF: sub_403920+2EBj
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
sub_403920	endp

; ---------------------------------------------------------------------------
		align 4
off_403C24	dd offset loc_40393E	; DATA XREF: sub_403920+17r
		dd offset loc_403946	; jump table for switch	statement
		dd offset loc_4039FF
		dd offset loc_403A87
		dd offset loc_403B13
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403C40	proc near		; CODE XREF: sub_40A060+3Dp
					; sub_40A060+4Ep ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ecx
		push	ebx
		mov	ebx, [esp+8+arg_0]
		push	ebp
		mov	ebp, [esp+0Ch+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+14h+arg_8]
		mov	[esp+14h+var_4], 0
		mov	esi, offset unk_412570

loc_403C5E:				; CODE XREF: sub_403C40+6Dj
		mov	ecx, [esi]
		xor	eax, eax
		cmp	edi, ecx
		jl	short loc_403C77
		mov	[esp+14h+var_4], 1

loc_403C6E:				; CODE XREF: sub_403C40+33j
		sub	edi, ecx
		inc	eax
		cmp	edi, ecx
		jge	short loc_403C6E
		jmp	short loc_403C87
; ---------------------------------------------------------------------------

loc_403C77:				; CODE XREF: sub_403C40+24j
		mov	ecx, [esp+14h+var_4]
		test	ecx, ecx
		jnz	short loc_403C87
		cmp	esi, offset unk_412584
		jnz	short loc_403CA1

loc_403C87:				; CODE XREF: sub_403C40+35j
					; sub_403C40+3Dj
		shl	eax, 4
		add	eax, offset unk_412430
		push	4
		push	eax
		push	ebp
		push	ebx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_403CA1:				; CODE XREF: sub_403C40+45j
		add	esi, 4
		add	ebx, 8
		cmp	esi, offset unk_412588
		jl	short loc_403C5E
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_403C40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_403CC0	proc near		; CODE XREF: sub_4028D0+DDp
					; sub_4028D0+11Fp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ecx
		push	ebx
		mov	ebx, [esp+8+arg_0]
		push	ebp
		mov	ebp, [esp+0Ch+arg_4]
		push	esi
		mov	esi, offset unk_412570
		push	edi
		mov	edi, [esp+14h+arg_8]
		mov	[esp+14h+var_4], 0
		sub	ebx, esi

loc_403CE0:				; CODE XREF: sub_403CC0+6Fj
		mov	ecx, [esi]
		xor	eax, eax
		cmp	edi, ecx
		jl	short loc_403CF9
		mov	[esp+14h+var_4], 1

loc_403CF0:				; CODE XREF: sub_403CC0+35j
		sub	edi, ecx
		inc	eax
		cmp	edi, ecx
		jge	short loc_403CF0
		jmp	short loc_403D09
; ---------------------------------------------------------------------------

loc_403CF9:				; CODE XREF: sub_403CC0+26j
		mov	ecx, [esp+14h+var_4]
		test	ecx, ecx
		jnz	short loc_403D09
		cmp	esi, offset unk_412584
		jnz	short loc_403D26

loc_403D09:				; CODE XREF: sub_403CC0+37j
					; sub_403CC0+3Fj
		shl	eax, 4
		add	eax, offset unk_4124D0
		push	4
		push	eax
		lea	eax, [ebx+esi]
		push	ebp
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_403D26:				; CODE XREF: sub_403CC0+47j
		add	esi, 4
		cmp	esi, offset unk_412588
		jl	short loc_403CE0
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_403CC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_403D40(LPCSTR	lpString)
sub_403D40	proc near		; CODE XREF: sub_405350+30Fp
					; sub_4085A0+65p

lpString	= dword	ptr  4

		mov	eax, [esp+lpString]
		push	6		; hdc
		push	0FFFFFFh	; color
		push	eax		; lpString
		push	1		; int
		push	0		; int
		call	sub_402770
		add	esp, 14h
		retn
sub_403D40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_403D60(LPCSTR	lpFileName, int)
sub_403D60	proc near		; CODE XREF: sub_405350+2AEp

lpFileName	= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+lpFileName]
		push	esi
		push	edi
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	ebx		; lpFileName
		call	ds:CreateFileA
		mov	esi, [esp+0Ch+arg_4]
		mov	edi, eax
		push	0		; lpFileSizeHigh
		push	edi		; hFile
		call	ds:GetFileSize
		push	edi		; hObject
		mov	[esi+0Ch], eax
		call	ds:CloseHandle
		mov	eax, [esi+0Ch]
		push	eax		; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc
		push	offset aRb	; "rb"
		push	ebx		; char *
		mov	[esi+4], eax
		call	_fopen
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_403DC0
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_403DC0:				; CODE XREF: sub_403D60+5Aj
		mov	ecx, [esi+0Ch]
		mov	edx, [esi+4]
		push	edi		; FILE *
		push	ecx		; size_t
		push	1		; size_t
		push	edx		; void *
		call	_fread
		push	edi		; FILE *
		call	_fclose
		add	esp, 14h
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403D60	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_403DF0(void *, int, int, int)
sub_403DF0	proc near		; CODE XREF: sub_404320+9E4p

var_104		= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 104h
		lea	eax, [esp+104h+var_104]
		push	esi
		push	offset aIka_rec	; "Ika.rec"
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+118h+var_104]
		push	offset aWb	; "wb"
		push	ecx		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_403E30
		pop	esi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_403E30:				; CODE XREF: sub_403DF0+36j
		push	ebx
		push	ebp
		push	edi
		push	esi		; FILE *
		push	8		; size_t
		push	1		; size_t
		push	offset aIka_en03 ; "ika_en03"
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	offset dword_4170F4 ; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	offset dword_4170F8 ; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	2		; size_t
		push	offset word_41710C ; void *
		call	_fwrite
		add	esp, 40h
		push	esi		; FILE *
		push	1		; size_t
		push	2		; size_t
		push	offset word_41710E ; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	offset byte_417110 ; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	offset byte_4170F3 ; void *
		call	_fwrite
		mov	edx, [esp+144h+arg_0]
		push	esi		; FILE *
		push	20h		; size_t
		push	1		; size_t
		push	edx		; void *
		call	_fwrite
		mov	eax, [esp+154h+arg_4]
		add	esp, 40h
		mov	ecx, [eax]
		push	esi		; FILE *
		push	0Ah		; size_t
		push	1		; size_t
		push	ecx		; void *
		call	_fwrite
		mov	edi, [esp+124h+arg_8]
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		lea	ebx, [edi+8]
		push	ebx		; void *
		call	_fwrite
		push	esi		; FILE *
		lea	ebp, [edi+0Ch]
		push	1		; size_t
		push	4		; size_t
		push	ebp		; void *
		call	_fwrite
		mov	edx, [ebx]
		mov	eax, [edi]
		imul	edx, [ebp+0]
		push	esi		; FILE *
		push	edx		; size_t
		push	1		; size_t
		push	eax		; void *
		call	_fwrite
		mov	ecx, [esp+154h+arg_C]
		add	esp, 40h
		mov	ebx, 64h
		lea	edi, [ecx+14h]

loc_403F0F:				; CODE XREF: sub_403DF0+17Aj
		push	esi		; FILE *
		push	1		; size_t
		lea	edx, [edi-4]
		push	4		; size_t
		push	edx		; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	edi		; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		lea	eax, [edi+0Ch]
		push	4		; size_t
		push	eax		; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		lea	ecx, [edi+10h]
		push	4		; size_t
		push	ecx		; void *
		call	_fwrite
		add	esp, 40h
		lea	edx, [edi+4]
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	edx		; void *
		call	_fwrite
		push	esi		; FILE *
		push	1		; size_t
		lea	eax, [edi+8]
		push	4		; size_t
		push	eax		; void *
		call	_fwrite
		add	esp, 20h
		add	edi, 28h
		dec	ebx
		jnz	short loc_403F0F
		push	esi		; FILE *
		call	_fclose
		add	esp, 4
		mov	eax, 1
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		add	esp, 104h
		retn
sub_403DF0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_403F90(void *, int, int, int)
sub_403F90	proc near		; CODE XREF: sub_404320+A1Ap

var_10C		= byte ptr -10Ch
var_104		= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 10Ch
		lea	eax, [esp+10Ch+var_104]
		push	esi
		push	offset aIka_rec	; "Ika.rec"
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+120h+var_104]
		push	offset aRb	; "rb"
		push	ecx		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_403FD2

loc_403FC8:				; CODE XREF: sub_403F90+62j
		xor	eax, eax
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------

loc_403FD2:				; CODE XREF: sub_403F90+36j
		push	esi		; FILE *
		push	8		; size_t
		lea	edx, [esp+118h+var_10C]
		push	1		; size_t
		push	edx		; void *
		call	_fread
		add	esp, 10h
		xor	eax, eax

loc_403FE6:				; CODE XREF: sub_403F90+68j
		mov	cl, [esp+eax+110h+var_10C]
		mov	dl, byte ptr aIka_en03[eax] ; "ika_en03"
		cmp	cl, dl
		jnz	short loc_403FC8
		inc	eax
		cmp	eax, 8
		jl	short loc_403FE6
		push	ebx
		push	ebp
		push	edi
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	offset dword_4170F4 ; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	offset dword_4170F8 ; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		push	2		; size_t
		push	offset word_41710C ; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		push	2		; size_t
		push	offset word_41710E ; void *
		call	_fread
		add	esp, 40h
		push	esi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	offset byte_417110 ; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	offset byte_4170F3 ; void *
		call	_fread
		mov	edx, [esp+13Ch+arg_0]
		push	esi		; FILE *
		push	20h		; size_t
		push	1		; size_t
		push	edx		; void *
		call	_fread
		mov	eax, [esp+14Ch+arg_4]
		push	esi		; FILE *
		push	0Ah		; size_t
		push	1		; size_t
		mov	ecx, [eax]
		push	ecx		; void *
		call	_fread
		mov	edi, [esp+15Ch+arg_8]
		add	esp, 40h
		push	esi		; FILE *
		lea	ebx, [edi+8]
		push	1		; size_t
		push	4		; size_t
		push	ebx		; void *
		call	_fread
		push	esi		; FILE *
		lea	ebp, [edi+0Ch]
		push	1		; size_t
		push	4		; size_t
		push	ebp		; void *
		call	_fread
		mov	edx, [ebp+0]
		mov	eax, [edi]
		imul	edx, [ebx]
		push	esi		; FILE *
		push	edx		; size_t
		push	1		; size_t
		push	eax		; void *
		call	_fread
		mov	ecx, [esp+14Ch+arg_C]
		add	esp, 30h
		mov	ebx, 64h
		lea	edi, [ecx+14h]

loc_4040CA:				; CODE XREF: sub_403F90+195j
		push	esi		; FILE *
		push	1		; size_t
		lea	edx, [edi-4]
		push	4		; size_t
		push	edx		; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	edi		; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		lea	eax, [edi+0Ch]
		push	4		; size_t
		push	eax		; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		lea	ecx, [edi+10h]
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		add	esp, 40h
		lea	edx, [edi+4]
		push	esi		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	edx		; void *
		call	_fread
		push	esi		; FILE *
		push	1		; size_t
		lea	eax, [edi+8]
		push	4		; size_t
		push	eax		; void *
		call	_fread
		add	esp, 20h
		add	edi, 28h
		dec	ebx
		jnz	short loc_4040CA
		push	esi		; FILE *
		call	_fclose
		add	esp, 4
		mov	eax, 1
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		add	esp, 10Ch
		retn
sub_403F90	endp


; =============== S U B	R O U T	I N E =======================================


sub_404140	proc near		; CODE XREF: sub_404320+697p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	ecx, 100h
		jle	short loc_40414F
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_40414F:				; CODE XREF: sub_404140+Aj
		mov	eax, ecx
		cdq
		and	edx, 7
		add	edx, eax
		mov	eax, [esp+arg_4]
		sar	edx, 3
		add	eax, edx
		and	ecx, 80000007h
		jns	short loc_40416D
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx

loc_40416D:				; CODE XREF: sub_404140+26j
		mov	dl, 1
		shl	dl, cl
		mov	cl, [eax]
		or	cl, dl
		mov	[eax], cl
		mov	eax, 1
		retn
sub_404140	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_404180	proc near		; CODE XREF: sub_404320+6BFp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	ecx, 100h
		jle	short loc_40418F
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_40418F:				; CODE XREF: sub_404180+Aj
		mov	eax, ecx
		cdq
		and	edx, 7
		add	edx, eax
		mov	eax, [esp+arg_4]
		sar	edx, 3
		add	eax, edx
		and	ecx, 80000007h
		jns	short loc_4041AD
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx

loc_4041AD:				; CODE XREF: sub_404180+26j
		mov	dl, 1
		shl	dl, cl
		mov	cl, [eax]
		not	dl
		and	cl, dl
		mov	[eax], cl
		mov	eax, 1
		retn
sub_404180	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4041C0	proc near		; CODE XREF: sub_404320+6E7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 100h
		jle	short loc_4041CE
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_4041CE:				; CODE XREF: sub_4041C0+9j
		mov	ecx, eax
		push	ebx
		and	ecx, 80000007h
		jns	short loc_4041DE
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx

loc_4041DE:				; CODE XREF: sub_4041C0+17j
		cdq
		and	edx, 7
		mov	bl, 1
		add	eax, edx
		shl	bl, cl
		mov	ecx, [esp+4+arg_4]
		sar	eax, 3
		and	bl, [eax+ecx]
		neg	bl
		sbb	ebx, ebx
		neg	ebx
		mov	eax, ebx
		pop	ebx
		retn
sub_4041C0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_404200	proc near		; CODE XREF: sub_404260+2Fp
					; sub_404320+689p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		mov	edx, [ecx+14h]
		mov	eax, [ecx+4]
		movsx	si, byte ptr [eax+edx]
		lea	esi, [esi+esi*4]
		lea	esi, [esi+esi*4]
		lea	esi, [esi+esi*4]
		lea	edi, ds:4480h[esi*8]
		lea	esi, [edx+1]
		mov	[ecx+14h], esi
		movsx	dx, byte ptr [esi+eax]
		sub	edx, 30h
		inc	esi
		mov	[ecx+14h], esi
		lea	edx, [edx+edx*4]
		lea	edx, [edx+edx*4]
		lea	edi, [edi+edx*4]
		movsx	dx, byte ptr [esi+eax]
		sub	edx, 30h
		lea	edx, [edx+edx*4]
		lea	edi, [edi+edx*2]
		lea	edx, [esi+1]
		mov	[ecx+14h], edx
		movsx	ax, byte ptr [edx+eax]
		inc	edx
		lea	eax, [edi+eax-30h]
		pop	edi
		mov	[ecx+14h], edx
		pop	esi
		retn
sub_404200	endp


; =============== S U B	R O U T	I N E =======================================


sub_404260	proc near		; CODE XREF: sub_404320+2Dp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi+0Ch]
		mov	dword ptr [esi+14h], 0
		test	eax, eax
		jbe	short loc_4042D3
		mov	ecx, [esi+4]

loc_404277:				; CODE XREF: sub_404260+71j
		mov	eax, [esi+14h]
		cmp	byte ptr [ecx+eax], 23h
		jnz	short loc_4042C3
		inc	eax
		mov	[esi+14h], eax
		cmp	byte ptr [eax+ecx], 65h
		jnz	short loc_4042C3
		inc	eax
		push	esi
		mov	[esi+14h], eax
		call	sub_404200
		mov	ecx, [esi+4]
		mov	edx, [esi+14h]
		add	esp, 4
		cmp	byte ptr [ecx+edx], 0Ah
		jz	short loc_4042B0

loc_4042A3:				; CODE XREF: sub_404260+4Ej
		mov	edx, [esi+14h]
		inc	edx
		mov	[esi+14h], edx
		cmp	byte ptr [edx+ecx], 0Ah
		jnz	short loc_4042A3

loc_4042B0:				; CODE XREF: sub_404260+41j
		mov	edx, [esi+14h]
		inc	edx
		movsx	eax, ax
		mov	[esi+14h], edx
		mov	edx, [esi+10h]
		cmp	edx, eax
		jz	short loc_4042D8
		jl	short loc_4042D3

loc_4042C3:				; CODE XREF: sub_404260+1Ej
					; sub_404260+28j
		mov	ebx, [esi+14h]
		mov	edx, [esi+0Ch]
		inc	ebx
		mov	eax, ebx
		mov	[esi+14h], ebx
		cmp	eax, edx
		jb	short loc_404277

loc_4042D3:				; CODE XREF: sub_404260+12j
					; sub_404260+61j
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_4042D8:				; CODE XREF: sub_404260+5Fj
		pop	esi
		mov	eax, 1
		pop	ebx
		retn
sub_404260	endp


; =============== S U B	R O U T	I N E =======================================


sub_4042E0	proc near		; CODE XREF: sub_405210+78p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		push	0Eh
		mov	al, [ecx+18h]
		shr	eax, 2
		and	eax, 80000007h
		jns	short loc_4042FA
		dec	eax
		or	eax, 0FFFFFFF8h
		inc	eax

loc_4042FA:				; CODE XREF: sub_4042E0+13j
		shl	eax, 4
		add	eax, offset a8	; "8"
		push	eax
		push	0D6h
		push	124h
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		retn
sub_4042E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_404320(int, void *, int, int,	int, int, int, int)
sub_404320	proc near		; CODE XREF: sub_405350+3BEp
					; sub_405350+992p ...

String		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h
arg_18		= dword	ptr  1Ch
arg_1C		= dword	ptr  20h

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		mov	[esp+14h+String], 0
		movsx	eax, byte ptr [esi]
		dec	eax
		mov	[esp+14h+var_3], 0
		cmp	eax, 8		; switch 9 cases
		mov	[esp+14h+var_2], 0
		ja	loc_4051DB	; jumptable 00404345 default case
		jmp	ds:off_4051E4[eax*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40434C:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		push	esi		; jumptable 00404345 case 0
		call	sub_404260
		add	esp, 4
		test	eax, eax
		jnz	loc_405081
		mov	[esi], al
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404367:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		dec	word ptr [esi+1Ah] ; jumptable 00404345	case 1
		xor	ebp, ebp
		cmp	[esi+1Ah], bp
		jge	loc_4051DB	; jumptable 00404345 default case
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+14h]
		cmp	ecx, eax
		jnb	loc_4047C8
		mov	ecx, [esi+4]
		mov	bl, 65h
		mov	edi, 64h

loc_40438F:				; CODE XREF: sub_404320+4A2j
		mov	eax, [esi+14h]
		cmp	byte ptr [ecx+eax], 2Dh
		jnz	short loc_40439C
		inc	eax
		mov	[esi+14h], eax

loc_40439C:				; CODE XREF: sub_404320+76j
		mov	eax, [esi+14h]
		mov	dl, [ecx+eax]
		test	dl, 80h
		jnz	loc_4047D3
		cmp	dl, 2Bh
		jz	loc_404930
		cmp	dl, 2Fh
		jz	loc_40498B
		cmp	dl, 3Ch
		jz	short loc_4043EF
		cmp	dl, 20h
		jl	loc_4047B9
		cmp	dl, 30h
		jl	loc_404887
		cmp	dl, 39h
		jle	loc_4047B9
		cmp	dl, 7Ah
		jle	loc_404887
		jmp	loc_4047B9
; ---------------------------------------------------------------------------
		db 4 dup(90h)
; ---------------------------------------------------------------------------

loc_4043EF:				; CODE XREF: sub_404320+A0j
		cmp	byte ptr [eax+ecx+1], 66h
		jnz	short loc_404401
		cmp	byte ptr [eax+ecx+2], 2Bh
		jz	loc_40499F

loc_404401:				; CODE XREF: sub_404320+D4j
		cmp	byte ptr [eax+ecx+1], 66h
		jnz	short loc_404413
		cmp	byte ptr [eax+ecx+2], 2Dh
		jz	loc_4049C7

loc_404413:				; CODE XREF: sub_404320+E6j
		cmp	byte ptr [eax+ecx+1], 66h
		jnz	short loc_404425
		cmp	byte ptr [eax+ecx+2], 6Ah
		jz	loc_4049EF

loc_404425:				; CODE XREF: sub_404320+F8j
		cmp	byte ptr [ecx+eax+1], 69h
		jnz	short loc_404437
		cmp	byte ptr [ecx+eax+2], 2Bh
		jz	loc_404A20

loc_404437:				; CODE XREF: sub_404320+10Aj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 69h
		jnz	short loc_404452
		cmp	byte ptr [ecx+eax+2], 2Dh
		jz	loc_404A54

loc_404452:				; CODE XREF: sub_404320+125j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 69h
		jnz	short loc_40446D
		cmp	byte ptr [ecx+eax+2], 6Ah
		jz	loc_404A7C

loc_40446D:				; CODE XREF: sub_404320+140j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_404488
		cmp	byte ptr [ecx+eax+2], 63h
		jz	loc_404AC6

loc_404488:				; CODE XREF: sub_404320+15Bj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 63h
		jnz	short loc_4044A3
		cmp	byte ptr [ecx+eax+2], 6Dh
		jz	loc_404B15

loc_4044A3:				; CODE XREF: sub_404320+176j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 73h
		jnz	short loc_4044BD
		cmp	[ecx+eax+2], bl
		jz	loc_404BC8

loc_4044BD:				; CODE XREF: sub_404320+191j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 77h
		jnz	short loc_4044D8
		cmp	byte ptr [ecx+eax+2], 61h
		jz	loc_404BED

loc_4044D8:				; CODE XREF: sub_404320+1ABj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_4044F2
		cmp	byte ptr [ecx+eax+2], 6Bh
		jz	loc_404C0B

loc_4044F2:				; CODE XREF: sub_404320+1C5j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 6Ch
		jnz	short loc_40450C
		cmp	[ecx+eax+2], bl
		jz	loc_404C27

loc_40450C:				; CODE XREF: sub_404320+1E0j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 66h
		jnz	short loc_404527
		cmp	byte ptr [ecx+eax+2], 6Fh
		jz	loc_404C43

loc_404527:				; CODE XREF: sub_404320+1FAj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 66h
		jnz	short loc_404542
		cmp	byte ptr [ecx+eax+2], 69h
		jz	loc_404C5F

loc_404542:				; CODE XREF: sub_404320+215j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 6Dh
		jnz	short loc_40455D
		cmp	byte ptr [ecx+eax+2], 61h
		jz	loc_404C7E

loc_40455D:				; CODE XREF: sub_404320+230j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 6Eh
		jnz	short loc_404578
		cmp	byte ptr [ecx+eax+2], 6Dh
		jz	loc_404C96

loc_404578:				; CODE XREF: sub_404320+24Bj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 79h
		jnz	short loc_404593
		cmp	byte ptr [ecx+eax+2], 6Eh
		jz	loc_404CAE

loc_404593:				; CODE XREF: sub_404320+266j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 6Dh
		jnz	short loc_4045AE
		cmp	byte ptr [ecx+eax+2], 63h
		jz	loc_404CD2

loc_4045AE:				; CODE XREF: sub_404320+281j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 64h
		jnz	short loc_4045C9
		cmp	byte ptr [ecx+eax+2], 73h
		jz	loc_404CE7

loc_4045C9:				; CODE XREF: sub_404320+29Cj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 64h
		jnz	short loc_4045E4
		cmp	byte ptr [ecx+eax+2], 6Ch
		jz	loc_404D1D

loc_4045E4:				; CODE XREF: sub_404320+2B7j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 6Eh
		jnz	short loc_4045FF
		cmp	byte ptr [ecx+eax+2], 6Ch
		jz	loc_404D6A

loc_4045FF:				; CODE XREF: sub_404320+2D2j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 63h
		jnz	short loc_404619
		cmp	[ecx+eax+2], bl
		jz	loc_404D8F

loc_404619:				; CODE XREF: sub_404320+2EDj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_404633
		cmp	byte ptr [ecx+eax+2], 2Bh
		jz	loc_404DB2

loc_404633:				; CODE XREF: sub_404320+306j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 67h
		jnz	short loc_40464D
		cmp	[ecx+eax+2], bl
		jz	loc_404DE4

loc_40464D:				; CODE XREF: sub_404320+321j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 72h
		jnz	short loc_404667
		cmp	[ecx+eax+2], bl
		jz	loc_404DFF

loc_404667:				; CODE XREF: sub_404320+33Bj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_404681
		cmp	byte ptr [ecx+eax+2], 63h
		jz	loc_404E62

loc_404681:				; CODE XREF: sub_404320+354j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_40469B
		cmp	byte ptr [ecx+eax+2], 6Ah
		jz	loc_404E90

loc_40469B:				; CODE XREF: sub_404320+36Ej
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 66h
		jnz	short loc_4046B6
		cmp	byte ptr [ecx+eax+2], 74h
		jz	loc_404EBC

loc_4046B6:				; CODE XREF: sub_404320+389j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 62h
		jnz	short loc_4046D1
		cmp	byte ptr [ecx+eax+2], 6Fh
		jz	loc_404F03

loc_4046D1:				; CODE XREF: sub_404320+3A4j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_4046EC
		cmp	byte ptr [ecx+eax+2], 70h
		jz	loc_404F24

loc_4046EC:				; CODE XREF: sub_404320+3BFj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_404707
		cmp	byte ptr [ecx+eax+2], 73h
		jz	loc_404F3C

loc_404707:				; CODE XREF: sub_404320+3DAj
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_404722
		cmp	byte ptr [ecx+eax+2], 66h
		jz	loc_404F57

loc_404722:				; CODE XREF: sub_404320+3F5j
		cmp	dl, 3Ch
		jnz	loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_40473D
		cmp	byte ptr [ecx+eax+2], 64h
		jz	loc_404F6F

loc_40473D:				; CODE XREF: sub_404320+410j
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_404754
		cmp	byte ptr [ecx+eax+2], 68h
		jz	loc_404FAB

loc_404754:				; CODE XREF: sub_404320+427j
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	byte ptr [ecx+eax+1], 70h
		jnz	short loc_40476B
		cmp	byte ptr [ecx+eax+2], 6Eh
		jz	loc_404FC3

loc_40476B:				; CODE XREF: sub_404320+43Ej
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	byte ptr [ecx+eax+1], 74h
		jnz	short loc_404781
		cmp	[ecx+eax+2], bl
		jz	loc_404FDB

loc_404781:				; CODE XREF: sub_404320+455j
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_404793
		cmp	byte ptr [ecx+eax+2], 6Eh
		jz	short loc_4047C8

loc_404793:				; CODE XREF: sub_404320+46Aj
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	[ecx+eax+1], bl
		jnz	short loc_4047A9
		cmp	byte ptr [ecx+eax+2], 78h
		jz	loc_404D4A

loc_4047A9:				; CODE XREF: sub_404320+47Cj
		cmp	dl, 3Ch
		jnz	short loc_4047B9
		cmp	byte ptr [ecx+eax+1], 2Ah
		jz	loc_404FE6

loc_4047B9:				; CODE XREF: sub_404320+A5j
					; sub_404320+B7j ...
		mov	edx, [esi+0Ch]
		inc	eax
		cmp	eax, edx
		mov	[esi+14h], eax
		jb	loc_40438F

loc_4047C8:				; CODE XREF: sub_404320+5Fj
					; sub_404320+471j
		mov	byte ptr [esi],	8
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4047D3:				; CODE XREF: sub_404320+85j
		mov	ax, [esi+1Ch]
		mov	byte ptr [esi+8], 1
		mov	[esi+1Ah], ax
		mov	al, byte ptr dword_417A44
		test	al, 40h
		jz	short loc_4047EC
		mov	[esi+1Ah], bp

loc_4047EC:				; CODE XREF: sub_404320+4C6j
		mov	edx, [esi+14h]
		push	1
		push	8
		lea	eax, [ecx+edx]
		mov	cl, [ecx+edx]
		mov	[esp+1Ch+String], cl
		mov	dl, [eax+1]
		mov	[esp+1Ch+var_3], dl
		call	sub_40A9C0
		movsx	eax, byte ptr [esi+1Eh]
		and	eax, 80000001h
		jns	short loc_404819
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_404819:				; CODE XREF: sub_404320+4F2j
		movsx	edx, byte ptr [esi+21h]
		add	eax, 6
		lea	ecx, [esp+1Ch+String]
		push	eax		; hdc
		push	0FF0000h	; color
		push	ecx		; lpString
		lea	eax, ds:1[edx*8]
		push	1		; int
		push	eax		; int
		call	sub_402770
		movsx	ecx, byte ptr [esi+1Eh]
		and	ecx, 80000001h
		jns	short loc_40484B
		dec	ecx
		or	ecx, 0FFFFFFFEh
		inc	ecx

loc_40484B:				; CODE XREF: sub_404320+524j
		movsx	eax, byte ptr [esi+21h]
		add	ecx, 6
		lea	edx, [esp+30h+String]
		push	ecx		; hdc
		push	0FFFFFFh	; color
		push	edx		; lpString
		push	ebp		; int
		shl	eax, 3
		push	eax		; int
		call	sub_402770
		mov	cl, [esi+21h]
		mov	eax, [esi+14h]
		mov	ebx, 2
		add	esp, 30h
		add	cl, bl
		add	eax, ebx
		mov	[esi+21h], cl
		mov	[esi+14h], eax
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404887:				; CODE XREF: sub_404320+AEj
					; sub_404320+C0j
		mov	dx, [esi+1Ch]
		mov	byte ptr [esi+8], 1
		mov	[esi+1Ah], dx
		mov	al, byte ptr dword_417A44
		test	al, 40h
		jz	short loc_4048A0
		mov	[esi+1Ah], bp

loc_4048A0:				; CODE XREF: sub_404320+57Aj
		mov	eax, [esi+14h]
		push	1
		push	8
		mov	cl, [ecx+eax]
		mov	[esp+1Ch+var_3], 0
		mov	[esp+1Ch+String], cl
		call	sub_40A9C0
		movsx	edx, byte ptr [esi+1Eh]
		and	edx, 80000001h
		jns	short loc_4048C9
		dec	edx
		or	edx, 0FFFFFFFEh
		inc	edx

loc_4048C9:				; CODE XREF: sub_404320+5A2j
		movsx	ecx, byte ptr [esi+21h]
		add	edx, 6
		lea	eax, [esp+1Ch+String]
		push	edx		; hdc
		push	0FF0000h	; color
		push	eax		; lpString
		lea	edx, ds:1[ecx*8]
		push	1		; int
		push	edx		; int
		call	sub_402770
		movsx	eax, byte ptr [esi+1Eh]
		and	eax, 80000001h
		jns	short loc_4048FA
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_4048FA:				; CODE XREF: sub_404320+5D3j
		movsx	edx, byte ptr [esi+21h]
		add	eax, 6
		lea	ecx, [esp+30h+String]
		push	eax		; hdc
		push	0FFFFFFh	; color
		push	ecx		; lpString
		push	ebp		; int
		shl	edx, 3
		push	edx		; int
		call	sub_402770
		mov	cl, [esi+21h]
		mov	eax, [esi+14h]
		add	esp, 30h
		inc	cl
		inc	eax
		mov	[esi+21h], cl
		mov	[esi+14h], eax
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404930:				; CODE XREF: sub_404320+8Ej
		mov	eax, [esi+14h]
		mov	cl, [esi+1Eh]
		add	eax, 3
		mov	[esi+1Ah], bp
		mov	[esi+14h], eax
		mov	byte ptr [esi+21h], 0
		movsx	eax, cl
		and	eax, 80000001h
		jns	short loc_404953
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_404953:				; CODE XREF: sub_404320+62Cj
		jnz	short loc_404967
		mov	dl, [esi+20h]
		test	dl, dl
		jnz	short loc_404967
		mov	byte ptr [esi],	5
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404967:				; CODE XREF: sub_404320:loc_404953j
					; sub_404320+63Aj
		cmp	eax, 1
		jnz	short loc_40497E
		mov	al, [esi+1Fh]
		test	al, al
		jnz	short loc_40497E
		mov	byte ptr [esi],	5
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40497E:				; CODE XREF: sub_404320+64Aj
					; sub_404320+651j
		inc	cl
		pop	edi
		mov	[esi+1Eh], cl
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40498B:				; CODE XREF: sub_404320+97j
		mov	eax, [esi+14h]
		mov	byte ptr [esi],	6
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40499F:				; CODE XREF: sub_404320+DBj
		mov	ebx, [esi+14h]
		push	esi
		add	ebx, 3
		mov	[esi+14h], ebx
		call	sub_404200
		mov	ecx, [esp+18h+arg_4]
		movsx	eax, ax
		push	ecx
		push	eax
		call	sub_404140
		add	esp, 0Ch
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4049C7:				; CODE XREF: sub_404320+EDj
		mov	ebp, [esi+14h]
		push	esi
		add	ebp, 3
		mov	[esi+14h], ebp
		call	sub_404200
		mov	edx, [esp+18h+arg_4]
		movsx	eax, ax
		push	edx
		push	eax
		call	sub_404180
		add	esp, 0Ch
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4049EF:				; CODE XREF: sub_404320+FFj
		mov	ecx, [esi+14h]
		push	esi
		add	ecx, 3
		mov	[esi+14h], ecx
		call	sub_404200
		mov	ecx, [esp+18h+arg_4]
		movsx	eax, ax
		push	ecx
		push	eax
		call	sub_4041C0
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_4051DB	; jumptable 00404345 default case
		inc	dword ptr [esi+14h]
		jmp	loc_405181
; ---------------------------------------------------------------------------

loc_404A20:				; CODE XREF: sub_404320+111j
		mov	ebx, 3
		push	1
		push	ebx
		call	sub_40A9C0
		mov	ebp, [esi+14h]
		push	esi
		add	ebp, ebx
		mov	[esi+14h], ebp
		call	sub_404200
		movsx	eax, ax
		push	eax
		mov	eax, [esp+24h+arg_8]
		push	eax
		call	sub_406550
		add	esp, 14h
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404A54:				; CODE XREF: sub_404320+12Cj
		mov	ebp, [esi+14h]
		push	esi
		add	ebp, 3
		mov	[esi+14h], ebp
		call	sub_404200
		mov	ecx, [esp+18h+arg_8]
		movsx	eax, ax
		push	eax
		push	ecx
		call	sub_4065A0
		add	esp, 0Ch
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404A7C:				; CODE XREF: sub_404320+147j
		mov	ecx, [esi+14h]
		push	esi
		add	ecx, 3
		mov	[esi+14h], ecx
		call	sub_404200
		mov	edx, [esp+18h+arg_8]
		movsx	eax, ax
		push	eax
		push	edx
		call	sub_406530
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_4051DB	; jumptable 00404345 default case
		mov	edi, [esi+14h]
		push	esi
		inc	edi
		mov	[esi+14h], edi
		call	sub_404200
		movsx	eax, ax
		add	esp, 4
		mov	[esi+10h], eax
		mov	byte ptr [esi],	1
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404AC6:				; CODE XREF: sub_404320+162j
		mov	edi, [esi+14h]
		push	esi
		add	edi, 3
		mov	[esi+14h], edi
		call	sub_404200
		mov	ebp, [esi+14h]
		push	esi
		inc	ebp
		mov	edi, eax
		mov	[esi+14h], ebp
		call	sub_404200
		mov	ecx, [esi+14h]
		push	esi
		inc	ecx
		mov	ebx, eax
		mov	[esi+14h], ecx
		call	sub_404200
		mov	ecx, [esp+20h+arg_10]
		add	esp, 0Ch
		movsx	edx, bx
		mov	esi, [ecx+8]
		mov	ecx, [ecx]
		imul	esi, edx
		movsx	edx, di
		add	esi, edx
		pop	edi
		mov	[esi+ecx], al
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404B15:				; CODE XREF: sub_404320+17Dj
		mov	ecx, [esi+14h]
		push	esi
		add	ecx, 3
		mov	[esi+14h], ecx
		call	sub_404200
		mov	ebx, [esi+14h]
		push	esi
		inc	ebx
		movsx	edi, ax
		mov	[esi+14h], ebx
		call	sub_404200
		mov	ebp, [esi+14h]
		push	esi
		inc	ebp
		mov	ebx, eax
		mov	[esi+14h], ebp
		call	sub_404200
		mov	ebp, eax
		mov	eax, [esi+14h]
		add	esp, 0Ch
		inc	eax
		mov	[esi+14h], eax
		mov	eax, [esp+14h+arg_C]
		lea	edx, [edi+edi*4]
		mov	esi, ebx
		lea	ecx, [eax+edx*8]
		mov	eax, [eax+edx*8+10h]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		sub	esi, eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		cdq
		and	edx, 3FFh
		add	edx, eax
		mov	eax, ebp
		sar	edx, 0Ah
		sub	eax, edx
		movsx	edx, bx
		shl	edx, 0Eh
		mov	[ecx+10h], edx
		movsx	edx, bp
		shl	edx, 0Eh
		mov	[ecx+14h], edx
		mov	edi, [ecx+20h]
		movsx	edx, si
		shl	edx, 0Eh
		movsx	eax, ax
		add	edi, edx
		mov	[ecx+20h], edi
		mov	edx, [ecx+24h]
		shl	eax, 0Eh
		pop	edi
		add	edx, eax
		pop	esi
		pop	ebp
		mov	[ecx+24h], edx
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404BC8:				; CODE XREF: sub_404320+197j
		mov	ebp, [esi+14h]
		push	esi
		add	ebp, 3
		mov	[esi+14h], ebp
		call	sub_404200
		movsx	ecx, ax
		push	1
		push	ecx
		call	sub_40A9C0
		add	esp, 0Ch
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404BED:				; CODE XREF: sub_404320+1B2j
		mov	edi, [esi+14h]
		push	esi
		add	edi, 3
		mov	[esi+14h], edi
		call	sub_404200
		add	esp, 4
		mov	[esi+1Ah], ax
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C0B:				; CODE XREF: sub_404320+1CCj
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_18]
		pop	esi
		mov	[eax+4], ebp
		mov	byte ptr [eax+1], 1
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C27:				; CODE XREF: sub_404320+1E6j
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_18]
		pop	esi
		mov	[eax+4], ebp
		mov	byte ptr [eax+1], 4
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C43:				; CODE XREF: sub_404320+201j
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_18]
		pop	esi
		mov	[eax+4], ebp
		mov	byte ptr [eax+1], 2
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C5F:				; CODE XREF: sub_404320+21Cj
		mov	eax, [esi+14h]
		mov	ebx, 3
		add	eax, ebx
		pop	edi
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_18]
		pop	esi
		mov	[eax+4], ebp
		mov	[eax+1], bl
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C7E:				; CODE XREF: sub_404320+237j
		mov	eax, [esi+14h]
		mov	edx, [esp+14h+arg_18]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		mov	byte ptr [edx],	1
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404C96:				; CODE XREF: sub_404320+252j
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_18]
		pop	esi
		pop	ebp
		mov	byte ptr [eax],	0
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404CAE:				; CODE XREF: sub_404320+26Dj
		mov	edi, [esi+14h]
		push	1
		add	edi, 3
		push	0Eh
		mov	[esi+14h], edi
		mov	byte ptr [esi+22h], 0
		mov	byte ptr [esi],	9
		call	sub_40A9C0
		add	esp, 8
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404CD2:				; CODE XREF: sub_404320+288j
		mov	eax, [esi+14h]
		mov	byte ptr [esi+8], 0
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404CE7:				; CODE XREF: sub_404320+2A3j
		push	1
		push	0Dh
		call	sub_40A9C0
		mov	ecx, [esp+1Ch+arg_C]
		mov	edx, [esp+1Ch+arg_10]
		mov	eax, [esp+1Ch+arg_8]
		push	ecx		; int
		mov	ecx, [esp+20h+arg_4]
		push	edx		; int
		push	eax		; int
		push	ecx		; void *
		call	sub_403DF0
		mov	eax, [esi+14h]
		add	esp, 18h
		add	eax, 3
		mov	[esi+14h], eax
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404D1D:				; CODE XREF: sub_404320+2BEj
		push	1
		push	0Dh
		call	sub_40A9C0
		mov	edx, [esp+1Ch+arg_C]
		mov	eax, [esp+1Ch+arg_10]
		mov	ecx, [esp+1Ch+arg_8]
		push	edx		; int
		mov	edx, [esp+20h+arg_4]
		push	eax		; int
		push	ecx		; int
		push	edx		; void *
		call	sub_403F90
		add	esp, 18h
		test	eax, eax
		jnz	short loc_404D52
		add	dword ptr [esi+14h], 3

loc_404D4A:				; CODE XREF: sub_404320+483j
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404D52:				; CODE XREF: sub_404320+A24j
		mov	word_41710A, di
		mov	eax, [esi+14h]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		mov	al, 2
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404D6A:				; CODE XREF: sub_404320+2D9j
		mov	eax, [esp+14h+arg_C]
		push	eax
		call	sub_403270
		mov	word_41710A, di
		mov	eax, [esi+14h]
		add	esp, 4
		add	eax, 3
		mov	[esi+14h], eax
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404D8F:				; CODE XREF: sub_404320+2F3j
		mov	ecx, [esp+14h+arg_C]
		push	ecx
		call	sub_408260
		add	esp, 4
		call	sub_401000
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404DB2:				; CODE XREF: sub_404320+30Dj
		movsx	edx, byte_417110
		mov	ax, word_412FFC[edx*2]
		mov	word_41710C, ax

loc_404DC7:				; CODE XREF: sub_404320+ADDj
		mov	edi, [esi+14h]
		push	1
		add	edi, 3
		push	0Ch
		mov	[esi+14h], edi
		call	sub_40A9C0
		add	esp, 8
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404DE4:				; CODE XREF: sub_404320+327j
		mov	ecx, [esp+14h+arg_18]
		mov	ebx, 2
		mov	byte_4170F2, bl
		mov	byte_417116, bl
		mov	byte ptr [ecx+1], 0
		jmp	short loc_404DC7
; ---------------------------------------------------------------------------

loc_404DFF:				; CODE XREF: sub_404320+341j
		movsx	edx, byte_417110
		mov	byte_417119, 0
		mov	byte_4170F0, 1
		mov	ax, word_412FFC[edx*2]
		mov	byte_4170F2, 0
		mov	byte_417104, 0
		mov	word_417106, bp
		mov	word_417108, bp
		mov	word_41710A, di
		mov	dword_417100, ebp
		mov	dword_4170FC, ebp
		mov	word_41710C, ax
		mov	eax, [esi+14h]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404E62:				; CODE XREF: sub_404320+35Bj
		mov	bl, byte_417119
		push	1
		inc	bl
		mov	byte_417119, bl
		mov	edi, [esi+14h]
		mov	ebx, 3
		add	edi, ebx
		push	ebx
		mov	[esi+14h], edi
		call	sub_40A9C0
		add	esp, 8
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404E90:				; CODE XREF: sub_404320+375j
		mov	ebp, [esi+14h]
		push	esi
		add	ebp, 3
		mov	[esi+14h], ebp
		call	sub_404200
		movsx	ecx, byte_417119
		movsx	eax, ax
		add	esp, 4
		cmp	ecx, eax
		jnz	loc_4051DB	; jumptable 00404345 default case
		inc	dword ptr [esi+14h]
		jmp	loc_405181
; ---------------------------------------------------------------------------

loc_404EBC:				; CODE XREF: sub_404320+390j
		movsx	eax, byte_417110
		push	esi
		mov	cx, word_412FFC[eax*2]
		mov	word_41710C, cx
		mov	ecx, [esi+14h]
		add	ecx, 3
		mov	[esi+14h], ecx
		call	sub_404200
		mov	edi, [esp+18h+arg_1C]
		push	esi
		mov	[edi], al
		mov	ebx, [esi+14h]
		inc	ebx
		mov	[esi+14h], ebx
		call	sub_404200
		add	esp, 8
		mov	[edi+2], ax
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404F03:				; CODE XREF: sub_404320+3ABj
		mov	edx, [esi+14h]
		push	esi
		add	edx, 3
		mov	[esi+14h], edx
		call	sub_404200
		add	esp, 4
		mov	byte_413BEE, 1
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404F24:				; CODE XREF: sub_404320+3C6j
		mov	eax, [esi+14h]
		mov	edx, [esp+14h+arg_14]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		mov	byte ptr [edx],	2
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404F3C:				; CODE XREF: sub_404320+3E1j
		mov	eax, [esi+14h]
		mov	ebx, 3
		add	eax, ebx
		pop	edi
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_14]
		pop	esi
		pop	ebp
		mov	[eax], bl
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404F57:				; CODE XREF: sub_404320+3FCj
		mov	eax, [esi+14h]
		mov	ecx, [esp+14h+arg_14]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		mov	byte ptr [ecx],	4
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404F6F:				; CODE XREF: sub_404320+417j
		mov	ecx, [esi+14h]
		push	esi
		add	ecx, 3
		mov	[esi+14h], ecx
		call	sub_404200
		mov	ecx, [esp+18h+arg_14]
		push	0Ch
		push	offset unk_412690
		push	74h
		push	90h
		push	offset unk_412680
		mov	[ecx+1], al
		mov	byte ptr [ecx],	1
		call	sub_4024C0
		add	esp, 18h
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404FAB:				; CODE XREF: sub_404320+42Ej
		mov	eax, [esi+14h]
		mov	edx, [esp+14h+arg_14]
		add	eax, 3
		pop	edi
		mov	[esi+14h], eax
		pop	esi
		pop	ebp
		mov	byte ptr [edx],	5
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404FC3:				; CODE XREF: sub_404320+445j
		mov	eax, [esi+14h]
		pop	edi
		add	eax, 3
		mov	[esi+14h], eax
		mov	eax, [esp+10h+arg_14]
		pop	esi
		pop	ebp
		mov	byte ptr [eax],	6
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404FDB:				; CODE XREF: sub_404320+45Bj
		mov	byte ptr [esi],	7
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404FE6:				; CODE XREF: sub_404320+493j
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 3
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_404FEE:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		mov	bl, [esi+1Fh]	; jumptable 00404345 case 3
		mov	dl, [esi+20h]
		mov	cl, 0FCh
		add	bl, cl
		add	dl, cl
		mov	[esi+1Fh], bl
		mov	al, bl
		mov	[esi+20h], dl
		jnz	short loc_40502C
		push	6
		push	0
		push	offset unk_412588
		call	sub_402680
		mov	al, [esi+1Eh]
		add	esp, 0Ch
		inc	al
		mov	byte ptr [esi+1Fh], 14h
		mov	[esi+1Eh], al
		mov	byte ptr [esi],	2
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40502C:				; CODE XREF: sub_404320+CE2j
		test	al, al
		jnz	loc_4051DB	; jumptable 00404345 default case
		push	7
		push	0
		push	offset unk_412588
		call	sub_402680
		mov	al, [esi+1Eh]
		add	esp, 0Ch
		inc	al
		mov	byte ptr [esi+20h], 14h
		mov	[esi+1Eh], al
		mov	byte ptr [esi],	2
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40505C:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		test	byte ptr dword_416CA0, 40h ; jumptable 00404345	case 4
		jz	loc_4051DB	; jumptable 00404345 default case
		mov	byte ptr [esi],	4
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_405074:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		test	byte ptr dword_416CA0, 40h ; jumptable 00404345	case 5
		jz	loc_4051DB	; jumptable 00404345 default case

loc_405081:				; CODE XREF: sub_404320+37j
		push	6
		push	0
		push	offset unk_412588
		mov	word ptr [esi+1Ah], 0
		mov	byte ptr [esi+1Eh], 0
		mov	byte ptr [esi+1Fh], 0
		mov	byte ptr [esi+20h], 14h
		mov	byte ptr [esi+21h], 0
		call	sub_402680
		push	7
		push	0
		push	offset unk_412588
		call	sub_402680
		add	esp, 18h
		mov	byte ptr [esi],	2
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4050C1:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		test	byte ptr dword_416CA0, 40h ; jumptable 00404345	case 6
		jz	loc_4051DB	; jumptable 00404345 default case

loc_4050CE:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		mov	byte ptr [esi],	0 ; jumptable 00404345 case 7
		mov	byte ptr [esi+8], 0
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4050DD:				; CODE XREF: sub_404320+25j
					; DATA XREF: .text:off_4051E4o
		movsx	eax, byte ptr [esi+22h]	; jumptable 00404345 case 8
		push	10h
		push	offset unk_4125B8
		lea	ecx, [eax+eax*2]
		push	5Dh
		shl	ecx, 5
		add	ecx, 4Fh
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		push	10h
		push	offset unk_412598
		push	64h
		push	58h
		push	offset unk_412680
		call	sub_4024C0
		push	10h
		push	offset unk_4125A8
		push	64h
		push	0B8h
		push	offset unk_412680
		call	sub_4024C0
		mov	al, byte ptr dword_416CA0
		add	esp, 3Ch
		test	al, 1
		jz	short loc_405147
		push	1
		push	6
		mov	byte ptr [esi+22h], 0
		call	sub_40A9C0
		add	esp, 8

loc_405147:				; CODE XREF: sub_404320+E15j
		mov	al, byte ptr dword_416CA0
		mov	ebx, 2
		test	bl, al
		jz	short loc_405165
		push	1
		push	6
		mov	byte ptr [esi+22h], 1
		call	sub_40A9C0
		add	esp, 8

loc_405165:				; CODE XREF: sub_404320+E33j
		test	byte ptr dword_416CA0, 40h
		jz	short loc_4051DB ; jumptable 00404345 default case
		push	1
		push	1
		call	sub_40A9C0
		mov	al, [esi+22h]
		add	esp, 8
		test	al, al
		jnz	short loc_40519B

loc_405181:				; CODE XREF: sub_404320+6FBj
					; sub_404320+B97j
		push	esi
		call	sub_404200
		movsx	edx, ax
		add	esp, 4
		mov	[esi+10h], edx
		mov	byte ptr [esi],	1
		xor	al, al
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40519B:				; CODE XREF: sub_404320+E5Fj
		mov	edi, [esi+14h]
		push	6
		add	edi, 4
		push	0
		push	offset unk_412588
		mov	[esi+14h], edi
		mov	word ptr [esi+1Ah], 0
		mov	byte ptr [esi+1Eh], 0
		mov	byte ptr [esi+1Fh], 0
		mov	byte ptr [esi+20h], 14h
		mov	byte ptr [esi+21h], 0
		call	sub_402680
		push	7
		push	0
		push	offset unk_412588
		call	sub_402680
		add	esp, 18h
		mov	[esi], bl

loc_4051DB:				; CODE XREF: sub_404320+1Fj
					; sub_404320+25j ...
		pop	edi		; jumptable 00404345 default case
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
sub_404320	endp

; ---------------------------------------------------------------------------
		align 4
off_4051E4	dd offset loc_40434C	; DATA XREF: sub_404320+25r
		dd offset loc_404367	; jump table for switch	statement
		dd offset loc_4051DB
		dd offset loc_404FEE
		dd offset loc_40505C
		dd offset loc_405074
		dd offset loc_4050C1
		dd offset loc_4050CE
		dd offset loc_4050DD
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_405210	proc near		; CODE XREF: sub_405350+3E9p
					; sub_405350+9ADp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	byte ptr [esi+8], 1
		jnz	short loc_405290
		mov	dl, [esi+18h]
		push	8
		push	offset unk_412668
		push	0B8h
		inc	dl
		push	8
		push	offset unk_412680
		mov	[esi+18h], dl
		call	sub_4024C0
		movsx	eax, byte ptr [esi+1Fh]
		push	6
		add	eax, 0BEh
		push	offset unk_412588
		push	eax
		push	18h
		push	offset unk_4125C8
		call	sub_4024C0
		movsx	ecx, byte ptr [esi+20h]
		push	7
		add	ecx, 0BEh
		push	offset unk_412588
		push	ecx
		push	18h
		push	offset unk_4125C8
		call	sub_4024C0
		mov	al, [esi]
		add	esp, 3Ch
		cmp	al, 5
		jz	short loc_405287
		cmp	al, 6
		jz	short loc_405287
		cmp	al, 7
		jnz	short loc_405290

loc_405287:				; CODE XREF: sub_405210+6Dj
					; sub_405210+71j
		push	esi
		call	sub_4042E0
		add	esp, 4

loc_405290:				; CODE XREF: sub_405210+9j
					; sub_405210+75j
		pop	esi
		retn
sub_405210	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4052A0	proc near		; CODE XREF: sub_405350+27p

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		mov	ecx, 8
		xor	eax, eax
		rep stosd
		pop	edi
		retn
sub_4052A0	endp


; =============== S U B	R O U T	I N E =======================================


sub_4052B0	proc near		; CODE XREF: sub_405350+3Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	[eax], cl
		mov	[eax+8], cl
		mov	[eax+10h], ecx
		mov	[eax+18h], cl
		mov	[eax+1Ah], cx
		mov	word ptr [eax+1Ch], 4
		mov	[eax+1Eh], cl
		mov	[eax+1Fh], cl
		mov	byte ptr [eax+20h], 14h
		mov	[eax+21h], cl
		retn
sub_4052B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4052E0	proc near		; CODE XREF: sub_405350+207p
					; sub_405350+380p ...
		mov	ecx, dword_416C9C
		mov	eax, dword_417A44
		mov	edx, dword_416CA4
		xor	ecx, eax
		and	ecx, eax
		mov	dword_416C9C, eax
		mov	eax, dword_417A48
		mov	dword_416CA0, ecx
		xor	edx, eax
		mov	dword_416CA4, eax
		and	edx, eax
		test	eax, eax
		mov	dword_416CAC, edx
		jnz	short loc_40531C
		xor	ecx, ecx
		jmp	short loc_405323
; ---------------------------------------------------------------------------

loc_40531C:				; CODE XREF: sub_4052E0+36j
		mov	ecx, dword_416C98
		inc	ecx

loc_405323:				; CODE XREF: sub_4052E0+3Aj
		cmp	ecx, 14h
		mov	dword_416C98, ecx
		mov	dword_416CA8, 0
		jg	short loc_40533D
		cmp	ecx, 1
		jnz	short locret_405342

loc_40533D:				; CODE XREF: sub_4052E0+56j
		mov	dword_416CA8, eax

locret_405342:				; CODE XREF: sub_4052E0+5Bj
		retn
sub_4052E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_405350	proc near		; CODE XREF: WinMain(x,x,x,x)+3B8p

var_1FF4	= dword	ptr -1FF4h
var_1FED	= byte ptr -1FEDh
var_1FEC	= dword	ptr -1FECh
var_1FE8	= dword	ptr -1FE8h
var_1FE4	= dword	ptr -1FE4h
var_1FE0	= dword	ptr -1FE0h
var_1FDC	= dword	ptr -1FDCh
var_1FD8	= dword	ptr -1FD8h
var_1FD4	= byte ptr -1FD4h
var_1FD0	= dword	ptr -1FD0h
var_1FC0	= dword	ptr -1FC0h
lpString	= dword	ptr -1FBCh
var_1FB8	= byte ptr -1FB8h
var_1FB0	= dword	ptr -1FB0h
var_1FA4	= word ptr -1FA4h
var_1F9C	= byte ptr -1F9Ch
var_1F7C	= byte ptr -1F7Ch
var_1F6C	= dword	ptr -1F6Ch
FileName	= byte ptr -1F2Ch
var_1E28	= byte ptr -1E28h
var_1CC0	= dword	ptr -1CC0h
var_D20		= byte ptr -0D20h
hWnd		= dword	ptr  4

		mov	eax, 1FF4h
		call	__alloca_probe
		push	ebx
		push	ebp
		push	esi
		push	edi		; int
		call	sub_4062E0
		xor	ebp, ebp
		push	ebp
		push	ebp
		push	ebp
		push	offset aGameStart ; "game start"
		call	sub_406310
		lea	eax, [esp+2014h+var_1F9C]
		push	eax
		call	sub_4052A0
		lea	ecx, [esp+2018h+var_1FD8]
		push	ecx
		call	sub_406390
		lea	edx, [esp+201Ch+var_1FC0]
		push	edx
		call	sub_4052B0
		call	sub_40A6F0
		lea	eax, [esp+2020h+var_1CC0]
		push	eax
		call	sub_406E10
		call	sub_401000
		lea	ecx, [esp+2024h+var_1CC0]
		push	ecx
		call	sub_403270
		push	ebp		; pszFaceName
		call	sub_402710
		mov	edx, dword_4170F4
		mov	eax, dword_4170F8
		add	esp, 28h
		add	edx, 0FFFDA000h
		add	eax, 0FFFE4000h
		mov	word_416C6A, bp
		mov	[esp+2004h+var_1FE4], eax
		mov	byte_416C68, 0
		mov	[esp+2004h+var_1FE8], edx
		mov	byte ptr [esp+2004h+var_1FE0+1], 0
		mov	byte ptr [esp+2004h+var_1FE0], 0
		lea	eax, [esp+2004h+var_1E28]
		mov	ecx, 0Ah

loc_4053FF:				; CODE XREF: sub_405350+B6j
		mov	byte ptr [eax],	0
		add	eax, 24h
		dec	ecx
		jnz	short loc_4053FF
		lea	eax, [esp+2004h+var_D20]
		mov	ecx, 78h

loc_405414:				; CODE XREF: sub_405350+CBj
		mov	byte ptr [eax],	0
		add	eax, 1Ch
		dec	ecx
		jnz	short loc_405414
		push	1		; int
		push	offset aDash	; "DASH"
		call	sub_40A8A0
		push	2		; int
		push	offset aOuch	; "OUCH"
		call	sub_40A8A0
		push	3		; int
		push	offset aItem	; "ITEM"
		call	sub_40A8A0
		push	4		; int
		push	offset aHithead	; "HITHEAD"
		call	sub_40A8A0
		push	5		; int
		push	offset aCrash	; "CRASH"
		call	sub_40A8A0
		push	6		; int
		push	offset aReady	; "READY"
		call	sub_40A8A0
		push	7		; int
		push	offset aGo	; "GO"
		call	sub_40A8A0
		push	8		; int
		push	offset aMessage	; "MESSAGE"
		call	sub_40A8A0
		add	esp, 40h
		push	9		; int
		push	offset aDead	; "DEAD"
		call	sub_40A8A0
		push	0Ah		; int
		push	offset aWin	; "WIN"
		call	sub_40A8A0
		push	0Bh		; int
		push	offset aLevelup	; "LEVELUP"
		call	sub_40A8A0
		push	0Ch		; int
		push	offset aLifeup	; "LIFEUP"
		call	sub_40A8A0
		push	0Dh		; int
		push	offset aSave	; "SAVE"
		call	sub_40A8A0
		push	0Eh		; int
		push	offset aYesno	; "YESNO"
		call	sub_40A8A0
		push	ebp		; int
		push	offset aNodmg	; "NODMG"
		call	sub_40A8A0
		push	0Fh		; int
		push	offset aQuake	; "QUAKE"
		call	sub_40A8A0
		add	esp, 40h
		push	14h		; int
		push	offset aBossouch ; "BOSSOUCH"
		call	sub_40A8A0
		push	4B0h
		push	ebp
		call	sub_40AA30
		push	2BCh
		push	0Fh
		call	sub_40AA30
		push	4B0h
		push	14h
		call	sub_40AA30
		push	12h
		push	offset aPbmFade_pbm ; "Pbm\\Fade.pbm"
		call	sub_4021D0
		lea	ecx, [esp+202Ch+var_1F7C]
		xor	bl, bl
		push	ecx
		call	sub_4083B0
		lea	edx, [esp+2030h+var_1FF4]
		mov	byte ptr [esp+2030h+var_1FF4+1], 3
		push	edx
		mov	byte ptr [esp+2034h+var_1FF4], 1
		call	sub_408F10
		mov	edi, ds:GetTickCount
		add	esp, 30h

loc_405549:				; CODE XREF: sub_405350+27Fj
		call	edi ; GetTickCount
		mov	esi, eax
		lea	eax, [esp+2004h+var_1FF4]
		push	eax
		call	sub_408F10
		call	sub_4052E0
		push	ebp
		push	offset unk_412680
		call	sub_402600
		mov	al, byte ptr dword_416CA0
		add	esp, 0Ch
		test	al, 40h
		jz	short loc_405578
		mov	byte ptr [esp+2004h+var_1FE0+1], 2

loc_405578:				; CODE XREF: sub_405350+221j
		lea	ecx, [esp+2004h+var_1F7C]
		push	ecx
		call	sub_4083F0
		lea	edx, [esp+2008h+var_1E28]
		lea	eax, [esp+2008h+var_1FEC]
		push	edx
		lea	ecx, [esp+200Ch+var_1FE0]
		push	eax
		push	ecx
		call	sub_403920
		add	esp, 10h
		cmp	eax, 1
		jnz	short loc_4055A6
		mov	bl, 6

loc_4055A6:				; CODE XREF: sub_405350+252j
		mov	edx, [esp+2004h+hWnd]
		push	edx		; hWnd
		call	sub_401E90
		add	esp, 4

loc_4055B6:				; CODE XREF: sub_405350+27Bj
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	short loc_40560A
		call	edi ; GetTickCount
		lea	ecx, [esi+0Dh]
		cmp	eax, ecx
		jb	short loc_4055B6
		test	bl, bl
		jz	loc_405549
		push	offset aEvent_ptx ; "Event.ptx"
		push	offset Filename
		lea	edx, [esp+200Ch+FileName]
		push	offset aSS	; "%s\\%s"
		push	edx		; char *
		call	_sprintf
		lea	eax, [esp+2014h+var_1FC0]
		lea	ecx, [esp+2014h+FileName]
		push	eax		; int
		push	ecx		; lpFileName
		call	sub_403D60
		add	esp, 18h
		test	eax, eax
		jnz	short loc_40561A

loc_40560A:				; CODE XREF: sub_405350+272j
					; sub_405350+40Aj ...
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 1FF4h
		retn
; ---------------------------------------------------------------------------

loc_40561A:				; CODE XREF: sub_405350+2B8j
		push	8
		push	offset aPbmMsgbox_pbm ;	"Pbm\\MsgBox.pbm"
		call	sub_4021D0
		push	0Eh
		push	offset aPbmCursor_pbm ;	"Pbm\\Cursor.pbm"
		call	sub_4021D0
		push	10h
		push	offset aPbmYesno_pbm ; "Pbm\\YesNo.pbm"
		call	sub_4021D0
		push	6
		push	10h
		push	110h
		call	sub_402380
		push	7
		push	10h
		push	110h
		call	sub_402380
		mov	edx, [esp+2034h+lpString]
		push	edx		; lpString
		call	sub_403D40
		push	offset aPbmMap1_pbm ; "Pbm\\Map1.pbm"
		push	offset Filename
		lea	eax, [esp+2040h+FileName]
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		add	esp, 44h
		lea	ecx, [esp+2004h+var_1FD0]
		lea	edx, [esp+2004h+FileName]
		push	ecx		; int
		push	edx		; char *
		call	sub_4065F0
		add	esp, 8
		test	eax, eax
		jz	loc_406057
		cmp	bl, 6
		mov	byte ptr [esp+2004h+var_1FC0], 1
		mov	[esp+2004h+var_1FA4], 4
		mov	[esp+2004h+var_1FB0], 1
		mov	[esp+2004h+var_1FED], 5
		jnz	loc_405772

loc_4056C2:				; CODE XREF: sub_405350+41Cj
		call	edi ; GetTickCount
		mov	esi, eax
		lea	eax, [esp+2004h+var_1FF4]
		push	eax
		call	sub_408F10
		call	sub_4052E0
		push	ebp
		push	offset unk_412680
		call	sub_402600
		lea	ecx, [esp+2010h+var_1FEC]
		lea	edx, [esp+2010h+var_1FE0]
		push	ecx		; int
		lea	eax, [esp+2014h+var_1FF4]
		push	edx		; int
		lea	ecx, [esp+2018h+var_1FD0]
		push	eax		; int
		lea	edx, [esp+201Ch+var_1CC0]
		push	ecx		; int
		lea	eax, [esp+2020h+var_1FD8]
		push	edx		; int
		lea	ecx, [esp+2024h+var_1F9C]
		push	eax		; int
		lea	edx, [esp+2028h+var_1FC0]
		push	ecx		; void *
		push	edx		; int
		call	sub_404320
		add	esp, 2Ch
		cmp	al, 2
		jnz	short loc_405728
		mov	[esp+2004h+var_1FDC], ebp
		mov	byte ptr [esp+2004h+var_1FE0+1], 3
		mov	[esp+2004h+var_1FED], 1

loc_405728:				; CODE XREF: sub_405350+3C8j
		mov	al, byte ptr [esp+2004h+var_1FC0]
		test	al, al
		jnz	short loc_405734
		mov	bl, [esp+2004h+var_1FED]

loc_405734:				; CODE XREF: sub_405350+3DEj
		lea	eax, [esp+2004h+var_1FC0]
		push	eax
		call	sub_405210
		mov	ecx, [esp+2008h+hWnd]
		push	ecx		; hWnd
		call	sub_401E90
		add	esp, 8

loc_40574E:				; CODE XREF: sub_405350+417j
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		lea	edx, [esi+0Dh]
		cmp	eax, edx
		jb	short loc_40574E
		cmp	bl, 6
		jz	loc_4056C2

loc_405772:				; CODE XREF: sub_405350+36Cj
		test	byte ptr dword_417A44, 80h
		jz	short loc_40577F
		mov	bl, 2
		jmp	short loc_4057A8
; ---------------------------------------------------------------------------

loc_40577F:				; CODE XREF: sub_405350+429j
		cmp	bl, 5
		jnz	short loc_4057A8
		lea	eax, [esp+2004h+var_1FF4]
		mov	byte ptr [esp+2004h+var_1FF4+1], 1
		push	eax
		mov	byte ptr [esp+2008h+var_1FF4], 1
		call	sub_408F10
		add	esp, 4
		mov	[esp+2004h+var_1FB0], 2
		mov	byte ptr [esp+2004h+var_1FC0], 1

loc_4057A8:				; CODE XREF: sub_405350+42Dj
					; sub_405350+432j
		push	offset aWords_ptx ; "Words.ptx"
		push	offset Filename
		lea	ecx, [esp+200Ch+FileName]
		push	offset aSS	; "%s\\%s"
		push	ecx		; char *
		call	_sprintf
		lea	edx, [esp+2014h+FileName]
		push	2		; char
		lea	eax, [esp+2018h+var_1F6C]
		push	edx		; lpFileName
		push	eax		; int
		call	sub_4085A0
		add	esp, 1Ch
		cmp	bl, 5
		jnz	short loc_405855

loc_4057E3:				; CODE XREF: sub_405350+503j
		call	edi ; GetTickCount
		mov	esi, eax
		call	sub_4052E0
		lea	ecx, [esp+2004h+var_1FF4]
		push	ecx
		call	sub_408F10
		push	0FFFFh
		push	offset unk_412680
		call	sub_402600
		lea	edx, [esp+2010h+var_1FF4]
		lea	eax, [esp+2010h+var_1F6C]
		push	edx
		push	eax
		call	sub_408620
		add	esp, 14h
		cmp	eax, 1
		jnz	short loc_405825
		mov	bl, al
		mov	byte ptr [esp+2004h+var_1FE0], al

loc_405825:				; CODE XREF: sub_405350+4CDj
		mov	ecx, [esp+2004h+hWnd]
		push	ecx		; hWnd
		call	sub_401E90
		add	esp, 4

loc_405835:				; CODE XREF: sub_405350+4FEj
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		lea	edx, [esi+0Dh]
		cmp	eax, edx
		jb	short loc_405835
		cmp	bl, 5
		jz	short loc_4057E3

loc_405855:				; CODE XREF: sub_405350+491j
		lea	eax, [esp+2004h+var_1F6C]
		push	eax
		call	sub_408820
		push	ebp
		push	offset unk_412680
		call	sub_402600
		push	0Ch
		push	offset aPbmLoading_pbm ; "Pbm\\Loading.pbm"
		call	sub_4021D0
		push	0Ch
		push	offset unk_412690
		push	74h
		push	90h
		push	offset unk_412680
		call	sub_4024C0
		mov	ecx, [esp+202Ch+hWnd]
		push	ecx		; hWnd
		call	sub_401E90
		push	46h
		push	offset aPbmPrtback_pbm ; "Pbm\\PrtBack.pbm"
		call	sub_4021D0
		push	47h
		push	offset aPbmPrtfilt_pbm ; "Pbm\\PrtFilt.pbm"
		call	sub_4021D0
		push	49h
		push	offset aPbmPrtdir_pbm ;	"Pbm\\PrtDir.pbm"
		call	sub_4021D0
		add	esp, 44h
		push	4Ah
		push	offset aPbmPrtblock_pb ; "Pbm\\PrtBlock.pbm"
		call	sub_4021D0
		push	4Bh
		push	offset aPbmPrtdmg_pbm ;	"Pbm\\PrtDmg.pbm"
		call	sub_4021D0
		push	48h
		push	offset aPbmPrtitem_pbm ; "Pbm\\PrtItem.pbm"
		call	sub_4021D0
		push	4Dh
		push	offset aPbmPrtsnack_pb ; "Pbm\\PrtSnack.pbm"
		call	sub_4021D0
		push	0Bh
		push	offset aPbmBack_pbm ; "Pbm\\Back.pbm"
		call	sub_4021D0
		push	ebp
		push	offset aPbmStatus_pbm ;	"Pbm\\Status.pbm"
		call	sub_4021D0
		push	4
		push	offset aPbmFigure_pbm ;	"Pbm\\Figure.pbm"
		call	sub_4021D0
		push	0Ah
		push	offset aPbmItem_pbm ; "Pbm\\Item.pbm"
		call	sub_4021D0
		add	esp, 40h
		push	9
		push	offset aPbmItembox_pbm ; "Pbm\\ItemBox.pbm"
		call	sub_4021D0
		push	50h
		push	offset aPbmHari_pbm ; "Pbm\\Hari.pbm"
		call	sub_4021D0
		push	51h
		push	offset aPbmIsogin_pbm ;	"Pbm\\Isogin.pbm"
		call	sub_4021D0
		push	52h
		push	offset aPbmKani_pbm ; "Pbm\\Kani.pbm"
		call	sub_4021D0
		push	53h
		push	offset aPbmSleep_pbm ; "Pbm\\Sleep.pbm"
		call	sub_4021D0
		push	54h
		push	offset aPbmChibi_pbm ; "Pbm\\Chibi.pbm"
		call	sub_4021D0
		push	55h
		push	offset aPbmHoshi_pbm ; "Pbm\\Hoshi.pbm"
		call	sub_4021D0
		push	56h
		push	offset aPbmDum_pbm ; "Pbm\\Dum.pbm"
		call	sub_4021D0
		add	esp, 40h
		push	57h
		push	offset aPbmCarry_pbm ; "Pbm\\Carry.pbm"
		call	sub_4021D0
		push	58h
		push	offset aPbmJuel_pbm ; "Pbm\\Juel.pbm"
		call	sub_4021D0
		push	59h
		push	offset aPbmUfo_pbm ; "Pbm\\Ufo.pbm"
		call	sub_4021D0
		push	64h
		push	offset aPbmIronhead_pb ; "Pbm\\Ironhead.pbm"
		call	sub_4021D0
		push	2
		push	offset aPbmMychar_pbm ;	"Pbm\\MyChar.pbm"
		call	sub_4021D0
		push	16h
		push	offset aPbmMychar2_pbm ; "Pbm\\MyChar2.pbm"
		call	sub_4021D0
		push	15h
		push	offset aPbmMychar3_pbm ; "Pbm\\MyChar3.pbm"
		call	sub_4021D0
		push	3Ch
		push	offset aPbmStar_pbm ; "Pbm\\Star.pbm"
		call	sub_4021D0
		add	esp, 40h
		push	3Dh
		push	offset aPbmBubble_pbm ;	"Pbm\\Bubble.pbm"
		call	sub_4021D0
		push	3Eh
		push	offset aPbmDamage_pbm ;	"Pbm\\Damage.pbm"
		call	sub_4021D0
		push	3Fh
		push	offset aPbmLevelup_pbm ; "Pbm\\LevelUp.pbm"
		call	sub_4021D0
		push	0Fh
		push	offset aPbmEditor_pbm ;	"Pbm\\Editor.pbm"
		call	sub_4021D0
		push	0Dh
		push	offset aPbmNpctype_pbm ; "Pbm\\NpcType.pbm"
		call	sub_4021D0
		push	13h
		push	0F0h
		push	140h
		call	sub_402380
		lea	edx, [esp+2038h+var_1FF4]
		mov	byte ptr [esp+2038h+var_1FF4+1], 0
		push	edx
		mov	byte ptr [esp+203Ch+var_1FF4], 1
		call	sub_408F10
		mov	eax, dword_4170F4
		mov	ecx, dword_4170F8
		add	eax, 0FFFDA000h
		add	ecx, 0FFFE4000h
		push	11h
		mov	byte ptr [esp+2040h+var_1FEC], 0
		mov	word ptr [esp+2040h+var_1FEC+2], bp
		mov	[esp+2040h+var_1FE8], eax
		mov	[esp+2040h+var_1FE4], ecx
		call	sub_4021A0
		push	14h
		call	sub_4021A0
		add	esp, 40h
		cmp	bl, 2
		jnz	short loc_405A93
		call	sub_402820
		jmp	short loc_405A9C
; ---------------------------------------------------------------------------

loc_405A93:				; CODE XREF: sub_405350+73Aj
		cmp	bl, 7
		jz	loc_405F93

loc_405A9C:				; CODE XREF: sub_405350+741j
					; sub_405350+B18j
		cmp	bl, 1
		jnz	loc_405D8B

loc_405AA5:				; CODE XREF: sub_405350+A35j
		call	edi ; GetTickCount
		lea	edx, [esp+2004h+var_1FF4]
		mov	esi, eax
		push	edx
		call	sub_408F10
		call	sub_4052E0
		push	ebp
		push	offset unk_412680
		call	sub_402600
		lea	eax, [esp+2010h+var_1FD0]
		lea	ecx, [esp+2010h+var_1CC0]
		push	eax
		lea	edx, [esp+2014h+var_1FEC]
		push	ecx
		push	edx
		call	sub_406BE0
		mov	al, byte ptr dword_416CA0
		add	esp, 18h
		test	al, 20h
		jz	short loc_405AF0
		add	dword_4170F4, 200h

loc_405AF0:				; CODE XREF: sub_405350+794j
		lea	eax, [esp+2004h+var_1FEC]
		push	eax
		call	sub_406730
		mov	ecx, [esp+2008h+var_1FE4]
		mov	edx, [esp+2008h+var_1FE8]
		push	ecx
		lea	eax, [esp+200Ch+var_1FD0]
		push	edx
		push	eax
		call	sub_406830
		mov	al, [esp+2014h+var_1FB8]
		add	esp, 10h
		test	al, al
		jnz	short loc_405B29
		lea	ecx, [esp+2004h+var_1E28]
		push	ecx
		call	sub_401340
		add	esp, 4

loc_405B29:				; CODE XREF: sub_405350+7C7j
		cmp	byte_4170F2, 2
		jz	short loc_405B3F
		lea	edx, [esp+2004h+var_1FEC]
		push	edx
		call	sub_4010B0
		add	esp, 4

loc_405B3F:				; CODE XREF: sub_405350+7E0j
		lea	eax, [esp+2004h+var_1E28]
		lea	ecx, [esp+2004h+var_1FC0]
		push	eax
		push	ecx
		call	sub_401890
		lea	edx, [esp+200Ch+var_1E28]
		lea	eax, [esp+200Ch+var_1FD0]
		push	edx
		lea	ecx, [esp+2010h+var_1CC0]
		push	eax
		push	ecx
		call	sub_407CE0
		mov	al, [esp+2018h+var_1FB8]
		add	esp, 14h
		test	al, al
		jnz	short loc_405B86
		lea	edx, [esp+2004h+var_1CC0]
		push	edx
		call	sub_4079B0
		add	esp, 4

loc_405B86:				; CODE XREF: sub_405350+824j
		lea	eax, [esp+2004h+var_1FEC]
		lea	ecx, [esp+2004h+var_1CC0]
		push	eax
		push	ecx
		call	sub_407310
		mov	al, byte_4170F0
		add	esp, 8
		test	al, al
		jz	loc_405C29
		mov	al, [esp+2004h+var_1FB8]
		test	al, al
		jnz	short loc_405BC8
		lea	edx, [esp+2004h+var_1E28]
		lea	eax, [esp+2004h+var_D20]
		push	edx
		push	eax
		call	sub_40A6D0
		add	esp, 8

loc_405BC8:				; CODE XREF: sub_405350+85Ej
		cmp	byte_4170F2, 2
		jz	short loc_405C00
		lea	ecx, [esp+2004h+var_1E28]
		lea	edx, [esp+2004h+var_1FC0]
		push	ecx
		lea	eax, [esp+2008h+var_1CC0]
		push	edx
		push	eax
		call	sub_407E30
		lea	ecx, [esp+2010h+var_1E28]
		lea	edx, [esp+2010h+var_1FD0]
		push	ecx
		push	edx
		call	sub_409CA0
		add	esp, 14h

loc_405C00:				; CODE XREF: sub_405350+87Fj
		movsx	eax, word_417108
		and	eax, 80000001h
		jns	short loc_405C13
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_405C13:				; CODE XREF: sub_405350+8BCj
		jz	short loc_405C1C
		cmp	[esp+2004h+var_1FB8], 1
		jnz	short loc_405C29

loc_405C1C:				; CODE XREF: sub_405350:loc_405C13j
		lea	ecx, [esp+2004h+var_1FEC]
		push	ecx
		call	sub_409F50
		add	esp, 4

loc_405C29:				; CODE XREF: sub_405350+852j
					; sub_405350+8CAj
		mov	al, byte_4170F1
		test	al, al
		jz	short loc_405C46
		mov	byte_4170F1, 0
		mov	byte ptr [esp+2004h+var_1FC0], 1
		mov	[esp+2004h+var_1FB0], 6

loc_405C46:				; CODE XREF: sub_405350+8E0j
		mov	edx, [esp+2004h+var_1FE4]
		mov	eax, [esp+2004h+var_1FE8]
		push	edx
		lea	ecx, [esp+2008h+var_1FD0]
		push	eax
		push	ecx
		call	sub_406950
		mov	edx, [esp+2010h+var_1FE4]
		mov	eax, [esp+2010h+var_1FE8]
		push	edx
		lea	ecx, [esp+2014h+var_1FD0]
		push	eax
		push	ecx
		call	sub_406A50
		lea	edx, [esp+201Ch+var_1FEC]
		lea	eax, [esp+201Ch+var_1FD0]
		push	edx
		lea	ecx, [esp+2020h+var_D20]
		push	eax
		push	ecx
		call	sub_4037E0
		lea	edx, [esp+2028h+var_D20]
		lea	eax, [esp+2028h+var_1E28]
		push	edx
		push	eax
		call	sub_403840
		lea	ecx, [esp+2030h+var_1E28]
		lea	edx, [esp+2030h+var_1FEC]
		push	ecx
		lea	eax, [esp+2034h+var_1FE0]
		push	edx
		push	eax
		call	sub_403920
		lea	ecx, [esp+203Ch+var_1FEC]
		lea	edx, [esp+203Ch+var_1FE0]
		push	ecx		; int
		lea	eax, [esp+2040h+var_1FF4]
		push	edx		; int
		lea	ecx, [esp+2044h+var_1FD0]
		push	eax		; int
		lea	edx, [esp+2048h+var_1CC0]
		push	ecx		; int
		lea	eax, [esp+204Ch+var_1FD8]
		push	edx		; int
		lea	ecx, [esp+2050h+var_1F9C]
		push	eax		; int
		lea	edx, [esp+2054h+var_1FC0]
		push	ecx		; void *
		push	edx		; int
		call	sub_404320
		add	esp, 58h
		cmp	al, 1
		jz	loc_40560A
		cmp	al, 3
		jnz	short loc_405CF8
		mov	bl, 7

loc_405CF8:				; CODE XREF: sub_405350+9A4j
		lea	eax, [esp+2004h+var_1FC0]
		push	eax
		call	sub_405210
		mov	al, byte ptr dword_416CA0
		add	esp, 4
		test	al, 80h
		jz	short loc_405D2C
		mov	al, byte ptr [esp+2004h+var_1FC0]
		test	al, al
		jnz	short loc_405D2C
		push	offset unk_412680
		push	13h
		call	sub_402440
		add	esp, 8
		mov	bl, 3
		mov	[esp+2004h+var_1FD4], 0

loc_405D2C:				; CODE XREF: sub_405350+9BCj
					; sub_405350+9C4j
		call	sub_40A060
		cmp	dword_4170F8, 0FFFF8000h
		jge	short loc_405D57
		mov	al, [esp+2004h+var_1FB8]
		test	al, al
		jnz	short loc_405D57
		mov	[esp+2004h+var_1FB8], 1
		mov	[esp+2004h+var_1FB0], 0FA0h
		mov	byte ptr [esp+2004h+var_1FC0], 1

loc_405D57:				; CODE XREF: sub_405350+9EBj
					; sub_405350+9F3j
		mov	ecx, [esp+2004h+hWnd]
		push	ecx		; hWnd
		call	sub_401E90
		add	esp, 4

loc_405D67:				; CODE XREF: sub_405350+A30j
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		lea	edx, [esi+0Dh]
		cmp	eax, edx
		jb	short loc_405D67
		cmp	bl, 1
		jz	loc_405AA5

loc_405D8B:				; CODE XREF: sub_405350+74Fj
		cmp	bl, 3
		jnz	loc_405E5A

loc_405D94:				; CODE XREF: sub_405350+B04j
		call	edi ; GetTickCount
		mov	esi, eax
		call	sub_4052E0
		lea	eax, [esp+2004h+var_1FF4]
		push	eax
		call	sub_408F10
		push	ebp
		push	offset unk_412680
		call	sub_402600
		mov	al, byte ptr [esp+2010h+var_1FC0]
		add	esp, 0Ch
		test	al, al
		jnz	short loc_405DCF
		lea	ecx, [esp+2004h+var_1FC0]
		lea	edx, [esp+2004h+var_1FD8]
		push	ecx
		push	edx
		call	sub_4064A0
		add	esp, 8

loc_405DCF:				; CODE XREF: sub_405350+A6Bj
		lea	eax, [esp+2004h+var_1FD8]
		push	eax
		call	sub_4063B0
		mov	al, byte ptr dword_416CA0
		add	esp, 4
		test	al, 80h
		jz	short loc_405DE7
		mov	bl, 1

loc_405DE7:				; CODE XREF: sub_405350+A93j
		lea	ecx, [esp+2004h+var_1FEC]
		lea	edx, [esp+2004h+var_1FE0]
		push	ecx		; int
		lea	eax, [esp+2008h+var_1FF4]
		push	edx		; int
		lea	ecx, [esp+200Ch+var_1FD0]
		push	eax		; int
		lea	edx, [esp+2010h+var_1CC0]
		push	ecx		; int
		lea	eax, [esp+2014h+var_1FD8]
		push	edx		; int
		lea	ecx, [esp+2018h+var_1F9C]
		push	eax		; int
		lea	edx, [esp+201Ch+var_1FC0]
		push	ecx		; void *
		push	edx		; int
		call	sub_404320
		lea	eax, [esp+2024h+var_1FC0]
		push	eax
		call	sub_405210
		call	sub_40A060
		mov	ecx, [esp+2028h+hWnd]
		push	ecx		; hWnd
		call	sub_401E90
		add	esp, 28h

loc_405E36:				; CODE XREF: sub_405350+AFFj
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		lea	edx, [esi+0Dh]
		cmp	eax, edx
		jb	short loc_405E36
		cmp	bl, 3
		jz	loc_405D94

loc_405E5A:				; CODE XREF: sub_405350+A3Ej
		cmp	bl, 2
		jz	short loc_405E6D
		cmp	bl, 7
		jz	loc_405F93
		jmp	loc_405A9C
; ---------------------------------------------------------------------------

loc_405E6D:				; CODE XREF: sub_405350+B0Dj
		mov	ebx, [esp+2004h+hWnd]

loc_405E74:				; CODE XREF: sub_405350+C3Ej
		call	edi ; GetTickCount
		mov	esi, eax
		call	sub_4052E0
		push	ebp
		push	offset unk_412680
		call	sub_402600
		mov	al, byte ptr dword_416CA0
		add	esp, 8
		test	al, 80h
		jz	short loc_405EA4
		lea	eax, [esp+2004h+var_1CC0]
		push	eax
		call	sub_403370
		add	esp, 4

loc_405EA4:				; CODE XREF: sub_405350+B42j
		lea	ecx, [esp+2004h+var_1FD0]
		lea	edx, [esp+2004h+var_1FEC]
		push	ecx
		push	edx
		call	sub_406D10
		mov	eax, [esp+200Ch+var_1FE4]
		mov	ecx, [esp+200Ch+var_1FE8]
		push	eax
		lea	edx, [esp+2010h+var_1FD0]
		push	ecx
		push	edx
		call	sub_406830
		lea	eax, [esp+2018h+var_1FEC]
		lea	ecx, [esp+2018h+var_1CC0]
		push	eax
		push	ecx
		call	sub_407310
		mov	edx, [esp+2020h+var_1FE4]
		mov	eax, [esp+2020h+var_1FE8]
		push	edx
		lea	ecx, [esp+2024h+var_1FD0]
		push	eax
		push	ecx
		call	sub_406950
		mov	edx, [esp+202Ch+var_1FE4]
		mov	eax, [esp+202Ch+var_1FE8]
		push	edx
		lea	ecx, [esp+2030h+var_1FD0]
		push	eax
		push	ecx
		call	sub_406A50
		lea	edx, [esp+2038h+var_1CC0]
		push	edx
		call	sub_402C20
		lea	eax, [esp+203Ch+var_1FEC]
		lea	ecx, [esp+203Ch+var_1CC0]
		push	eax
		push	ecx
		call	sub_4028D0
		add	esp, 40h
		lea	edx, [esp+2004h+var_1CC0]
		push	edx
		call	sub_403140
		call	sub_402860
		lea	eax, [esp+2008h+var_1FEC]
		lea	ecx, [esp+2008h+var_1FE0]
		push	eax		; int
		lea	edx, [esp+200Ch+var_1FF4]
		push	ecx		; int
		lea	eax, [esp+2010h+var_1FD0]
		push	edx		; int
		lea	ecx, [esp+2014h+var_1CC0]
		push	eax		; int
		lea	edx, [esp+2018h+var_1FD8]
		push	ecx		; int
		lea	eax, [esp+201Ch+var_1F9C]
		push	edx		; int
		lea	ecx, [esp+2020h+var_1FC0]
		push	eax		; void *
		push	ecx		; int
		call	sub_404320
		lea	edx, [esp+2028h+var_1FC0]
		push	edx
		call	sub_405210
		push	ebx		; hWnd
		call	sub_401E90
		add	esp, 2Ch

loc_405F7B:				; CODE XREF: sub_405350+C3Cj
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		cmp	eax, esi
		jb	short loc_405F7B
		jmp	loc_405E74
; ---------------------------------------------------------------------------

loc_405F93:				; CODE XREF: sub_405350+746j
					; sub_405350+B12j
		lea	eax, [esp+2004h+var_1FF4]
		mov	byte ptr [esp+2004h+var_1FF4+1], 5
		push	eax
		mov	byte ptr [esp+2008h+var_1FF4], 1
		call	sub_408F10
		push	14h
		push	offset aPbmStaff_pbm ; "Pbm\\Staff.pbm"
		call	sub_4021D0
		push	17h
		push	offset aPbmEnd_pbm ; "Pbm\\End.pbm"
		call	sub_4021D0
		push	offset aStaff_ptx ; "Staff.ptx"
		push	offset Filename
		lea	ecx, [esp+2020h+FileName]
		push	offset aSS	; "%s\\%s"
		push	ecx		; char *
		call	_sprintf
		lea	edx, [esp+2028h+FileName]
		push	4		; char
		lea	eax, [esp+202Ch+var_1F6C]
		push	edx		; lpFileName
		push	eax		; int
		call	sub_4085A0
		add	esp, 30h
		cmp	bl, 7
		jnz	short loc_406057
		mov	ebx, [esp+2004h+hWnd]

loc_406001:				; CODE XREF: sub_405350+D05j
		call	edi ; GetTickCount
		mov	esi, eax
		call	sub_4052E0
		lea	ecx, [esp+2004h+var_1FF4]
		push	ecx
		call	sub_408F10
		push	ebp
		push	offset unk_412680
		call	sub_402600
		lea	edx, [esp+2010h+var_1FF4]
		lea	eax, [esp+2010h+var_1F6C]
		push	edx
		push	eax
		call	sub_408620
		push	ebx		; hWnd
		call	sub_401E90
		add	esp, 18h

loc_40603A:				; CODE XREF: sub_405350+D03j
		call	sub_408BA0
		call	sub_40B580
		test	eax, eax
		jz	loc_40560A
		call	edi ; GetTickCount
		lea	ecx, [esi+0Dh]
		cmp	eax, ecx
		jb	short loc_40603A
		jmp	short loc_406001
; ---------------------------------------------------------------------------

loc_406057:				; CODE XREF: sub_405350+34Aj
					; sub_405350+CA8j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 1FF4h
		retn
sub_405350	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406070	proc near		; CODE XREF: sub_40B0F0+273p

var_44		= byte ptr -44h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 44h
		mov	eax, [esp+44h+arg_0]
		mov	ecx, [esp+44h+arg_8]
		push	ebx
		push	esi
		push	edi
		push	eax
		lea	edx, [esp+54h+var_44]
		push	ecx
		push	edx
		push	offset aSDD	; "%s %d %d"
		push	offset aNov92003 ; "Nov	 9 2003"
		mov	[esp+64h+var_34], offset aXxx ;	"XXX"
		mov	[esp+64h+var_30], offset aJan ;	"Jan"
		mov	[esp+64h+var_2C], offset aFeb ;	"Feb"
		mov	[esp+64h+var_28], offset aMar ;	"Mar"
		mov	[esp+64h+var_24], offset aApr ;	"Apr"
		mov	[esp+64h+var_20], offset aMay ;	"May"
		mov	[esp+64h+var_1C], offset aJun ;	"Jun"
		mov	[esp+64h+var_18], offset aJul ;	"Jul"
		mov	[esp+64h+var_14], offset aAug ;	"Aug"
		mov	[esp+64h+var_10], offset aSep ;	"Sep"
		mov	[esp+64h+var_C], offset	aOct ; "Oct"
		mov	[esp+64h+var_8], offset	aNov ; "Nov"
		mov	[esp+64h+var_4], offset	aDec ; "Dec"
		call	_sscanf
		add	esp, 14h
		xor	eax, eax
		lea	edx, [esp+50h+var_34]

loc_406105:				; CODE XREF: sub_406070+ADj
		mov	edi, [edx]
		mov	ecx, 3
		lea	esi, [esp+50h+var_44]
		xor	ebx, ebx
		repe cmpsb
		jz	short loc_40612C
		inc	eax
		add	edx, 4
		cmp	eax, 0Ch
		jl	short loc_406105
		mov	ecx, [esp+50h+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	[ecx], eax
		add	esp, 44h
		retn
; ---------------------------------------------------------------------------

loc_40612C:				; CODE XREF: sub_406070+A4j
		mov	edx, [esp+50h+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	[edx], eax
		add	esp, 44h
		retn
sub_406070	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406140	proc near		; CODE XREF: sub_40B0F0+28Cp

lpBuffer	= dword	ptr -110h
dwHandle	= dword	ptr -10Ch
puLen		= dword	ptr -108h
Filename	= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 110h
		lea	eax, [esp+110h+Filename]
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	104h		; nSize
		push	eax		; lpFilename
		push	ebx		; hModule
		call	ds:GetModuleFileNameA
		lea	ecx, [esp+11Ch+dwHandle]
		lea	edx, [esp+11Ch+Filename]
		push	ecx		; lpdwHandle
		push	edx		; lptstrFilename
		call	GetFileVersionInfoSizeA
		mov	esi, eax
		test	esi, esi
		jz	loc_4061FC
		push	esi		; size_t
		call	_malloc
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_4061FC
		push	edi		; lpData
		push	esi		; dwLen
		lea	eax, [esp+124h+Filename]
		push	ebx		; dwHandle
		push	eax		; lptstrFilename
		call	GetFileVersionInfoA
		test	eax, eax
		jz	short loc_4061F3
		lea	ecx, [esp+11Ch+puLen]
		lea	edx, [esp+11Ch+lpBuffer]
		push	ecx		; puLen
		push	edx		; lplpBuffer
		push	offset SubBlock	; "\\"
		push	edi		; pBlock
		call	VerQueryValueA
		test	eax, eax
		jz	short loc_4061F3
		mov	eax, [esp+11Ch+lpBuffer]
		mov	edx, [esp+11Ch+arg_0]
		mov	ebx, 1
		mov	ecx, [eax+8]
		shr	ecx, 10h
		mov	[edx], ecx
		mov	edx, [esp+11Ch+arg_4]
		xor	ecx, ecx
		mov	cx, [eax+8]
		mov	[edx], ecx
		mov	ecx, [eax+0Ch]
		mov	edx, [esp+11Ch+arg_8]
		shr	ecx, 10h
		mov	[edx], ecx
		mov	edx, [esp+11Ch+arg_C]
		xor	ecx, ecx
		mov	cx, [eax+0Ch]
		mov	[edx], ecx

loc_4061F3:				; CODE XREF: sub_406140+53j
					; sub_406140+6Cj
		push	edi		; void *
		call	_free
		add	esp, 4

loc_4061FC:				; CODE XREF: sub_406140+2Fj
					; sub_406140+42j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		add	esp, 110h
		retn
sub_406140	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_406210(HWND hwnd)
sub_406210	proc near		; CODE XREF: sub_40B0F0+2EBp

var_30D		= byte ptr -30Dh
Buffer		= byte ptr -30Ch
File		= byte ptr -208h
var_104		= byte ptr -104h
hwnd		= dword	ptr  4

		sub	esp, 30Ch
		lea	eax, [esp+30Ch+Buffer]
		push	ebx
		push	esi
		push	edi
		push	104h		; uSize
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA
		lea	ecx, [esp+318h+Buffer]
		lea	edx, [esp+318h+File]
		push	ecx
		push	offset aSSndvol32_exe ;	"%s\\Sndvol32.exe"
		push	edx		; char *
		call	_sprintf
		lea	edi, [esp+324h+Buffer]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 0Ch
		repne scasb
		not	ecx
		dec	ecx
		mov	al, 5Ch
		cmp	[esp+ecx+318h+Buffer], al
		jz	short loc_406262

loc_406259:				; CODE XREF: sub_406210+50j
		mov	dl, [esp+ecx+318h+var_30D]
		dec	ecx
		cmp	dl, al
		jnz	short loc_406259

loc_406262:				; CODE XREF: sub_406210+47j
		lea	eax, [esp+318h+Buffer]
		mov	[esp+ecx+318h+Buffer], 0
		push	eax
		lea	ecx, [esp+31Ch+var_104]
		push	offset aSSndvol32_exe ;	"%s\\Sndvol32.exe"
		push	ecx		; char *
		call	_sprintf
		mov	esi, [esp+324h+hwnd]
		add	esp, 0Ch
		mov	edi, ds:ShellExecuteA
		lea	edx, [esp+318h+File]
		push	5		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		push	edx		; lpFile
		push	offset Operation ; "open"
		push	esi		; hwnd
		call	edi ; ShellExecuteA
		mov	ebx, eax
		push	5		; nShowCmd
		push	0		; lpDirectory
		lea	eax, [esp+320h+var_104]
		push	0		; lpParameters
		push	eax		; lpFile
		push	offset Operation ; "open"
		push	esi		; hwnd
		call	edi ; ShellExecuteA
		pop	edi
		pop	esi
		cmp	ebx, 20h
		pop	ebx
		jg	short loc_4062D2
		cmp	eax, 20h
		jg	short loc_4062D2
		xor	eax, eax
		add	esp, 30Ch
		retn
; ---------------------------------------------------------------------------

loc_4062D2:				; CODE XREF: sub_406210+B2j
					; sub_406210+B7j
		mov	eax, 1
		add	esp, 30Ch
		retn
sub_406210	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4062E0	proc near		; CODE XREF: sub_405350+Ep

FileName	= byte ptr -104h

		sub	esp, 104h
		lea	eax, [esp+104h+FileName]
		push	offset Filename
		push	offset aSDebug_txt ; "%s\\debug.txt"
		push	eax		; char *
		call	_sprintf
		add	esp, 0Ch
		lea	ecx, [esp+104h+FileName]
		push	ecx		; lpFileName
		call	ds:DeleteFileA
		add	esp, 104h
		retn
sub_4062E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406310	proc near		; CODE XREF: sub_405350+1Dp
					; sub_408CE0+1Fp ...

var_104		= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 104h
		lea	eax, [esp+104h+var_104]
		push	esi
		push	offset Filename
		push	offset aSDebug_txt ; "%s\\debug.txt"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+114h+var_104]
		push	offset aAT	; "a+t"
		push	ecx		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 14h
		test	esi, esi
		jnz	short loc_40634B
		pop	esi
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_40634B:				; CODE XREF: sub_406310+31j
		mov	edx, [esp+108h+arg_C]
		mov	eax, [esp+108h+arg_8]
		mov	ecx, [esp+108h+arg_4]
		push	edx
		mov	edx, [esp+10Ch+arg_0]
		push	eax
		push	ecx
		push	edx
		push	offset aSDDD	; "%s,%d,%d,%d\n"
		push	esi		; FILE *
		call	_fprintf
		push	esi		; FILE *
		call	_fclose
		add	esp, 1Ch
		mov	eax, 1
		pop	esi
		add	esp, 104h
		retn
sub_406310	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406390	proc near		; CODE XREF: sub_405350+31p

arg_0		= dword	ptr  4

		push	0Ah		; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc
		mov	ecx, [esp+arg_0]
		mov	[ecx], eax
		xor	eax, eax

loc_4063A2:				; CODE XREF: sub_406390+1Dj
		mov	edx, [ecx]
		inc	eax
		cmp	eax, 0Ah
		mov	byte ptr [edx+eax-1], 0
		jl	short loc_4063A2
		retn
sub_406390	endp


; =============== S U B	R O U T	I N E =======================================


sub_4063B0	proc near		; CODE XREF: sub_405350+A84p

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	13h
		push	offset unk_412680
		push	edi
		mov	eax, 20h
		push	edi
		push	offset unk_412680
		mov	[esp+50h+var_20], edi
		mov	[esp+50h+var_1C], edi
		mov	[esp+50h+var_18], 0B0h
		mov	[esp+50h+var_14], eax
		mov	[esp+50h+var_30], edi
		mov	[esp+50h+var_2C], edi
		mov	[esp+50h+var_28], edi
		mov	[esp+50h+var_24], 10h
		mov	[esp+50h+var_10], eax
		mov	[esp+50h+var_C], edi
		mov	[esp+50h+var_8], 30h
		mov	[esp+50h+var_4], 10h
		call	sub_4024C0
		lea	eax, [esp+50h+var_20]
		push	9
		push	eax
		push	80h
		push	48h
		push	offset unk_412680
		call	sub_4024C0
		mov	ebx, [esp+64h+arg_0]
		add	esp, 28h
		mov	esi, 50h

loc_406434:				; CODE XREF: sub_4063B0+BFj
		mov	ecx, [ebx]
		lea	edx, [esp+3Ch+var_30]
		push	0Ah
		push	edx
		movsx	eax, byte ptr [ecx+edi]
		shl	eax, 4
		sub	eax, 10h
		push	88h
		mov	[esp+48h+var_30], eax
		add	eax, 10h
		push	esi
		push	offset unk_412680
		mov	[esp+50h+var_28], eax
		call	sub_4024C0
		add	esp, 14h
		add	esi, 10h
		inc	edi
		cmp	esi, 0F0h
		jl	short loc_406434
		movsx	ecx, byte ptr [ebx+4]
		lea	eax, [esp+3Ch+var_10]
		add	ecx, 5
		push	0Eh
		push	eax
		shl	ecx, 4
		push	88h
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 30h
		retn
sub_4063B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4064A0	proc near		; CODE XREF: sub_405350+A77p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	al, byte ptr dword_416CA0
		push	esi
		mov	esi, [esp+4+arg_0]
		test	al, 1
		jz	short loc_4064C8
		push	1
		push	1
		call	sub_40A9C0
		mov	al, [esi+4]
		add	esp, 8
		dec	al
		mov	[esi+4], al
		jns	short loc_4064C8
		mov	byte ptr [esi+4], 9

loc_4064C8:				; CODE XREF: sub_4064A0+Cj
					; sub_4064A0+22j
		test	byte ptr dword_416CA0, 2
		jz	short loc_4064EF
		push	1
		push	1
		call	sub_40A9C0
		mov	cl, [esi+4]
		add	esp, 8
		inc	cl
		mov	al, cl
		mov	[esi+4], cl
		cmp	al, 0Ah
		jl	short loc_4064EF
		mov	byte ptr [esi+4], 0

loc_4064EF:				; CODE XREF: sub_4064A0+2Fj
					; sub_4064A0+49j
		test	byte ptr dword_416CA0, 40h
		jz	short loc_406524
		push	1
		push	1
		call	sub_40A9C0
		movsx	eax, byte ptr [esi+4]
		mov	ecx, [esi]
		add	esp, 8
		mov	al, [eax+ecx]
		test	al, al
		jz	short loc_406524
		movsx	edx, al
		mov	eax, [esp+4+arg_4]
		add	edx, 7D0h
		mov	[eax+10h], edx
		mov	byte ptr [eax],	1

loc_406524:				; CODE XREF: sub_4064A0+56j
					; sub_4064A0+6Fj
		pop	esi
		retn
sub_4064A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406530	proc near		; CODE XREF: sub_404320+774p
					; sub_406550+Cp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	ecx, [esp+arg_0]
		mov	dl, [esp+arg_4]
		xor	eax, eax
		mov	ecx, [ecx]

loc_40653C:				; CODE XREF: sub_406530+15j
		cmp	[ecx+eax], dl
		jz	short loc_40654A
		inc	eax
		cmp	eax, 0Ah
		jl	short loc_40653C
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_40654A:				; CODE XREF: sub_406530+Fj
		mov	eax, 1
		retn
sub_406530	endp


; =============== S U B	R O U T	I N E =======================================


sub_406550	proc near		; CODE XREF: sub_404320+724p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	ebx
		push	esi
		call	sub_406530
		add	esp, 8
		test	eax, eax
		jnz	short loc_406576
		mov	ecx, [esi]

loc_40656A:				; CODE XREF: sub_406550+24j
		cmp	byte ptr [ecx+eax], 0
		jz	short loc_40657B
		inc	eax
		cmp	eax, 0Ah
		jl	short loc_40656A

loc_406576:				; CODE XREF: sub_406550+16j
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_40657B:				; CODE XREF: sub_406550+1Ej
		mov	[ecx+eax], bl
		pop	esi
		movsx	eax, bl
		pop	ebx
		mov	cl, byte_412A60[eax]
		mov	al, byte_4170F3
		or	al, cl
		mov	byte_4170F3, al
		mov	eax, 1
		retn
sub_406550	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4065A0	proc near		; CODE XREF: sub_404320+74Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	ebx
		push	esi
		call	sub_406530
		add	esp, 8
		cmp	eax, 1
		jnz	short loc_4065C8
		mov	ecx, [esi]
		xor	eax, eax

loc_4065BD:				; CODE XREF: sub_4065A0+26j
		cmp	[ecx+eax], bl
		jz	short loc_4065CD
		inc	eax
		cmp	eax, 0Ah
		jl	short loc_4065BD

loc_4065C8:				; CODE XREF: sub_4065A0+17j
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_4065CD:				; CODE XREF: sub_4065A0+20j
		mov	byte ptr [ecx+eax], 0
		pop	esi
		movsx	eax, bl
		pop	ebx
		mov	cl, byte_412A60[eax]
		mov	al, byte_4170F3
		not	cl
		and	al, cl
		mov	byte_4170F3, al
		mov	eax, 1
		retn
sub_4065A0	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_4065F0(char *, int)
sub_4065F0	proc near		; CODE XREF: sub_405350+340p

var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= byte ptr -438h
var_434		= dword	ptr -434h
var_430		= dword	ptr -430h
var_42A		= word ptr -42Ah
var_410		= word ptr -410h
var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		sub	esp, 440h
		push	edi
		push	offset aRb	; "rb"
		push	eax		; char *
		call	_fopen
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_406617
		pop	edi
		add	esp, 440h
		retn
; ---------------------------------------------------------------------------

loc_406617:				; CODE XREF: sub_4065F0+1Dj
		push	edi		; FILE *
		push	1		; size_t
		lea	ecx, [esp+44Ch+var_410]
		push	0Eh		; size_t
		push	ecx		; void *
		call	_fread
		push	edi		; FILE *
		push	1		; size_t
		lea	edx, [esp+45Ch+var_438]
		push	28h		; size_t
		push	edx		; void *
		call	_fread
		push	edi		; FILE *
		push	100h		; size_t
		lea	eax, [esp+46Ch+var_400]
		push	4		; size_t
		push	eax		; void *
		call	_fread
		add	esp, 30h
		cmp	[esp+444h+var_410], 4D42h
		jz	short loc_40665D
		xor	eax, eax
		pop	edi
		add	esp, 440h
		retn
; ---------------------------------------------------------------------------

loc_40665D:				; CODE XREF: sub_4065F0+61j
		cmp	[esp+444h+var_42A], 8
		jz	short loc_40666F
		xor	eax, eax
		pop	edi
		add	esp, 440h
		retn
; ---------------------------------------------------------------------------

loc_40666F:				; CODE XREF: sub_4065F0+73j
		mov	eax, [esp+444h+var_430]
		mov	ecx, [esp+444h+var_434]
		push	ebx
		mov	ebx, [esp+448h+arg_4]
		push	ebp
		push	esi
		mov	[ebx+0Ch], eax
		imul	eax, ecx
		push	eax		; size_t
		mov	[ebx+8], ecx
		call	_malloc
		mov	ecx, [esp+454h+var_430]
		mov	[esp+454h+var_440], eax
		imul	ecx, [esp+454h+var_434]
		push	ecx		; size_t
		call	_malloc
		mov	edx, [esp+458h+var_430]
		push	edi		; FILE *
		imul	edx, [esp+45Ch+var_434]
		mov	esi, eax
		push	edx		; size_t
		push	1		; size_t
		push	esi		; void *
		mov	[esp+468h+var_43C], esi
		call	_fread
		push	edi		; FILE *
		call	_fclose
		mov	ecx, [ebx+8]
		mov	edi, [ebx+0Ch]
		mov	ebp, ecx
		add	esp, 1Ch
		imul	ebp, edi
		lea	eax, [edi-1]
		xor	edx, edx
		imul	eax, ecx
		test	ebp, ebp
		jle	short loc_406707

loc_4066DC:				; CODE XREF: sub_4065F0+115j
		mov	edi, [esp+450h+var_440]
		mov	ebp, ecx
		add	esi, edx
		add	edi, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, ebp
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+8]
		mov	esi, [ebx+0Ch]
		imul	esi, ecx
		add	edx, ecx
		sub	eax, ecx
		cmp	edx, esi
		mov	esi, [esp+450h+var_43C]
		jl	short loc_4066DC

loc_406707:				; CODE XREF: sub_4065F0+EAj
		push	esi		; void *
		call	_free
		mov	eax, [esp+454h+var_440]
		add	esp, 4
		mov	[ebx], eax
		mov	eax, 1
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		add	esp, 440h
		retn
sub_4065F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406730	proc near		; CODE XREF: sub_405350+7A5p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 20h
		push	ebx
		push	esi
		xor	esi, esi
		mov	eax, 20h
		push	edi
		mov	edi, [esp+2Ch+arg_0]
		mov	[esp+2Ch+var_20], esi
		mov	[esp+2Ch+var_1C], esi
		mov	[esp+2Ch+var_18], eax
		mov	[esp+2Ch+var_14], eax
		mov	[esp+2Ch+var_10], eax
		mov	[esp+2Ch+var_C], esi
		mov	[esp+2Ch+var_8], 40h
		mov	[esp+2Ch+var_4], eax

loc_406765:				; CODE XREF: sub_406730+E8j
		mov	eax, esi
		push	0Bh
		and	eax, 80000001h
		jns	short loc_406775
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_406775:				; CODE XREF: sub_406730+3Ej
		shl	eax, 4
		lea	ecx, [esp+eax+30h+var_20]
		mov	eax, [edi+8]
		cdq
		and	edx, 3FFh
		push	ecx
		add	eax, edx
		mov	ecx, eax
		mov	eax, 55555556h
		sar	ecx, 0Ah
		shl	ecx, 1
		imul	ecx
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	ecx, edx
		and	ecx, 8000003Fh
		jns	short loc_4067AD
		dec	ecx
		or	ecx, 0FFFFFFC0h
		inc	ecx

loc_4067AD:				; CODE XREF: sub_406730+76j
		mov	eax, 4EC4EC4Fh
		imul	esi
		sar	edx, 2
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	eax, [edi+4]
		shl	edx, 5
		sub	edx, ecx
		push	edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, 55555556h
		sar	ecx, 0Ah
		shl	ecx, 1
		imul	ecx
		mov	ecx, edx
		shr	ecx, 1Fh
		add	edx, ecx
		mov	ecx, edx
		and	ecx, 8000003Fh
		jns	short loc_4067F4
		dec	ecx
		or	ecx, 0FFFFFFC0h
		inc	ecx

loc_4067F4:				; CODE XREF: sub_406730+BDj
		mov	eax, esi
		mov	ebx, 0Dh
		cdq
		idiv	ebx
		shl	edx, 5
		sub	edx, ecx
		push	edx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		inc	esi
		cmp	esi, 8Fh
		jl	loc_406765
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 20h
		retn
sub_406730	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406830	proc near		; CODE XREF: sub_405350+7B9p
					; sub_405350+B72p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 0Ch
		mov	eax, [esp+0Ch+arg_4]
		push	edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	[esp+10h+var_8], eax
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esp+10h+arg_8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	[esp+10h+var_C], eax
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	edi, eax
		sar	edi, 4
		sar	ecx, 4
		lea	edx, [edi+10h]
		mov	[esp+10h+arg_4], ecx
		cmp	edi, edx
		mov	[esp+10h+var_4], edx
		jge	loc_406948
		push	ebx
		push	ebp
		mov	ebp, edi
		push	esi
		lea	eax, [ecx+15h]
		shl	ebp, 4

loc_406890:				; CODE XREF: sub_406830+10Fj
		cmp	ecx, eax
		mov	ebx, ecx
		jge	loc_406939
		mov	esi, ecx
		shl	esi, 4

loc_40689F:				; CODE XREF: sub_406830+FFj
		mov	eax, [esp+1Ch+arg_0]
		mov	edx, edi
		imul	edx, [eax+8]
		add	edx, [eax]
		mov	al, [edx+ebx]
		test	al, al
		mov	byte ptr [esp+1Ch+arg_8], al
		jz	short loc_406926
		mov	eax, [esp+1Ch+arg_8]
		and	eax, 0FFh
		mov	ecx, eax
		and	ecx, 0FFFFFFE0h
		cmp	ecx, 80h
		jz	short loc_4068E5
		test	ecx, ecx
		jz	short loc_4068E5
		cmp	ecx, 0A0h
		jz	short loc_4068E5
		cmp	ecx, 40h
		jz	short loc_4068E5
		cmp	ecx, 0E0h
		jnz	short loc_406922

loc_4068E5:				; CODE XREF: sub_406830+9Aj
					; sub_406830+9Ej ...
		mov	ecx, eax
		shr	ecx, 5
		add	ecx, 46h
		and	eax, 8000001Fh
		push	ecx
		jns	short loc_4068FA
		dec	eax
		or	eax, 0FFFFFFE0h
		inc	eax

loc_4068FA:				; CODE XREF: sub_406830+C3j
		mov	ecx, [esp+20h+var_C]
		mov	edx, ebp
		shl	eax, 4
		add	eax, offset unk_412A70
		sub	edx, ecx
		mov	ecx, [esp+20h+var_8]
		push	eax
		mov	eax, esi
		push	edx
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_406922:				; CODE XREF: sub_406830+B3j
		mov	ecx, [esp+1Ch+arg_4]

loc_406926:				; CODE XREF: sub_406830+84j
		inc	ebx
		lea	eax, [ecx+15h]
		add	esi, 10h
		cmp	ebx, eax
		jl	loc_40689F
		mov	edx, [esp+1Ch+var_4]

loc_406939:				; CODE XREF: sub_406830+64j
		inc	edi
		add	ebp, 10h
		cmp	edi, edx
		jl	loc_406890
		pop	esi
		pop	ebp
		pop	ebx

loc_406948:				; CODE XREF: sub_406830+4Fj
		pop	edi
		add	esp, 0Ch
		retn
sub_406830	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406950	proc near		; CODE XREF: sub_405350+905p
					; sub_405350+B98p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 0Ch
		mov	eax, [esp+0Ch+arg_4]
		push	edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	[esp+10h+var_C], eax
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esp+10h+arg_8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		mov	[esp+10h+arg_8], eax
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	edi, eax
		sar	edi, 4
		sar	ecx, 4
		lea	edx, [edi+10h]
		mov	[esp+10h+var_8], ecx
		cmp	edi, edx
		mov	[esp+10h+var_4], edx
		jge	loc_406A44
		push	ebx
		push	ebp
		mov	ebp, edi
		push	esi
		lea	eax, [ecx+15h]
		shl	ebp, 4

loc_4069B0:				; CODE XREF: sub_406950+EBj
		cmp	ecx, eax
		mov	ebx, ecx
		jge	short loc_406A35
		mov	esi, ecx
		shl	esi, 4

loc_4069BB:				; CODE XREF: sub_406950+DFj
		mov	eax, [esp+1Ch+arg_0]
		mov	edx, edi
		imul	edx, [eax+8]
		add	edx, [eax]
		mov	al, [edx+ebx]
		test	al, al
		mov	byte ptr [esp+1Ch+arg_4], al
		jz	short loc_406A26
		mov	eax, [esp+1Ch+arg_4]
		and	eax, 0FFh
		mov	edx, eax
		and	edx, 0FFFFFFE0h
		cmp	edx, 20h
		jnz	short loc_406A26
		mov	ecx, eax
		shr	ecx, 5
		add	ecx, 46h
		and	eax, 8000001Fh
		push	ecx
		jns	short loc_4069FA
		dec	eax
		or	eax, 0FFFFFFE0h
		inc	eax

loc_4069FA:				; CODE XREF: sub_406950+A3j
		mov	ecx, [esp+20h+arg_8]
		mov	edx, ebp
		shl	eax, 4
		add	eax, offset unk_412A70
		sub	edx, ecx
		mov	ecx, [esp+20h+var_C]
		push	eax
		mov	eax, esi
		push	edx
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		mov	ecx, [esp+30h+var_8]
		add	esp, 14h

loc_406A26:				; CODE XREF: sub_406950+80j
					; sub_406950+93j
		inc	ebx
		lea	eax, [ecx+15h]
		add	esi, 10h
		cmp	ebx, eax
		jl	short loc_4069BB
		mov	edx, [esp+1Ch+var_4]

loc_406A35:				; CODE XREF: sub_406950+64j
		inc	edi
		add	ebp, 10h
		cmp	edi, edx
		jl	loc_4069B0
		pop	esi
		pop	ebp
		pop	ebx

loc_406A44:				; CODE XREF: sub_406950+4Fj
		pop	edi
		add	esp, 0Ch
		retn
sub_406950	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406A50	proc near		; CODE XREF: sub_405350+919p
					; sub_405350+BACp

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 4Ch
		mov	eax, [esp+4Ch+arg_4]
		push	ebx
		cdq
		and	edx, 3FFh
		push	ebp
		add	eax, edx
		push	esi
		mov	ebx, eax
		mov	esi, [esp+58h+arg_0]
		sar	ebx, 0Ah
		mov	eax, ebx
		mov	cl, [esi+4]
		cdq
		and	edx, 0Fh
		add	cl, 2
		add	eax, edx
		push	edi
		mov	ebp, eax
		mov	eax, [esp+5Ch+arg_8]
		cdq
		and	edx, 3FFh
		mov	[esi+4], cl
		add	eax, edx
		sar	eax, 0Ah
		mov	[esp+5Ch+var_48], eax
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	ebp, 4
		sar	eax, 4
		cmp	cl, 10h
		mov	[esp+5Ch+var_4C], ebp
		jb	short loc_406AAD
		mov	byte ptr [esi+4], 0

loc_406AAD:				; CODE XREF: sub_406A50+57j
		xor	ecx, ecx
		mov	[esp+5Ch+var_3C], 0
		mov	cl, [esi+4]
		mov	[esp+5Ch+var_24], 10h
		mov	[esp+5Ch+var_40], ecx
		mov	[esp+5Ch+var_1C], ecx
		lea	edx, [ecx+10h]
		mov	[esp+5Ch+var_18], 10h
		mov	[esp+5Ch+var_38], edx
		mov	edx, 10h
		mov	[esp+5Ch+var_34], edx
		sub	edx, ecx
		mov	[esp+5Ch+var_30], edx
		mov	[esp+5Ch+var_C], edx
		lea	edi, [edx+10h]
		add	edx, 10h
		mov	[esp+5Ch+var_28], edi
		xor	edi, edi
		mov	[esp+5Ch+var_2C], edi
		mov	[esp+5Ch+var_20], edi
		mov	[esp+5Ch+var_10], edi
		mov	[esp+5Ch+var_4], edx
		lea	edi, [eax+10h]
		add	ecx, 10h
		mov	edx, eax
		cmp	eax, edi
		mov	[esp+5Ch+var_14], ecx
		mov	[esp+5Ch+var_8], 10h
		mov	[esp+5Ch+arg_8], edx
		mov	[esp+5Ch+var_44], edi
		jge	loc_406BD6
		shl	eax, 4
		lea	ecx, [ebp+15h]
		mov	[esp+5Ch+arg_4], eax

loc_406B36:				; CODE XREF: sub_406A50+180j
		cmp	ebp, ecx
		jge	loc_406BBE
		mov	edi, ebp
		shl	edi, 4

loc_406B43:				; CODE XREF: sub_406A50+166j
		mov	eax, [esi+8]
		mov	ecx, [esi]
		imul	eax, edx
		add	eax, ecx
		mov	al, [eax+ebp]
		test	al, al
		mov	byte ptr [esp+5Ch+arg_0], al
		jz	short loc_406BA9
		mov	eax, [esp+5Ch+arg_0]
		and	eax, 0FFh
		mov	ecx, eax
		and	ecx, 0FFFFFFE0h
		cmp	ecx, 60h
		jnz	short loc_406BA9
		mov	edx, eax
		shr	edx, 5
		add	edx, 46h
		and	eax, 8000001Fh
		push	edx
		jns	short loc_406B80
		dec	eax
		or	eax, 0FFFFFFE0h
		inc	eax

loc_406B80:				; CODE XREF: sub_406A50+129j
		mov	ecx, [esp+60h+arg_4]
		mov	edx, edi
		shl	eax, 4
		sub	edx, ebx
		lea	eax, [esp+eax+60h+var_40]
		push	eax
		mov	eax, [esp+64h+var_48]
		sub	ecx, eax
		push	ecx
		push	edx
		push	offset unk_412680
		call	sub_4024C0
		mov	edx, [esp+70h+arg_8]
		add	esp, 14h

loc_406BA9:				; CODE XREF: sub_406A50+106j
					; sub_406A50+119j
		mov	eax, [esp+5Ch+var_4C]
		inc	ebp
		add	edi, 10h
		lea	ecx, [eax+15h]
		cmp	ebp, ecx
		jl	short loc_406B43
		mov	edi, [esp+5Ch+var_44]
		mov	ebp, eax

loc_406BBE:				; CODE XREF: sub_406A50+E8j
		mov	eax, [esp+5Ch+arg_4]
		inc	edx
		add	eax, 10h
		cmp	edx, edi
		mov	[esp+5Ch+arg_8], edx
		mov	[esp+5Ch+arg_4], eax
		jl	loc_406B36

loc_406BD6:				; CODE XREF: sub_406A50+D6j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 4Ch
		retn
sub_406A50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406BE0	proc near		; CODE XREF: sub_405350+785p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		push	ebx
		push	esi
		movsx	eax, byte ptr [ecx]
		sub	eax, 0
		jz	short loc_406C1A
		dec	eax
		jz	short loc_406C02
		dec	eax
		jnz	short loc_406C28
		mov	esi, dword_413BF8
		mov	ebx, dword_413BFC
		jmp	short loc_406C30
; ---------------------------------------------------------------------------

loc_406C02:				; CODE XREF: sub_406BE0+Fj
		movsx	eax, word ptr [ecx+2]
		mov	edx, [esp+8+arg_4]
		lea	eax, [eax+eax*4]
		mov	esi, [edx+eax*8+10h]
		mov	ebx, [edx+eax*8+14h]
		lea	eax, [edx+eax*8]
		jmp	short loc_406C30
; ---------------------------------------------------------------------------

loc_406C1A:				; CODE XREF: sub_406BE0+Cj
		mov	esi, dword_4170F4
		mov	ebx, dword_4170F8
		jmp	short loc_406C30
; ---------------------------------------------------------------------------

loc_406C28:				; CODE XREF: sub_406BE0+12j
		mov	esi, [esp+8+arg_0]
		mov	ebx, [esp+8+arg_0]

loc_406C30:				; CODE XREF: sub_406BE0+20j
					; sub_406BE0+38j ...
		push	edi
		mov	edi, [ecx+4]
		lea	eax, [edi+26000h]
		cmp	esi, eax
		jge	short loc_406C55
		mov	eax, esi
		sub	eax, edi
		sub	eax, 26000h
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		add	eax, edi
		mov	[ecx+4], eax

loc_406C55:				; CODE XREF: sub_406BE0+5Cj
		mov	edi, [ecx+4]
		lea	edx, [edi+26000h]
		cmp	esi, edx
		jle	short loc_406C79
		mov	eax, esi
		sub	eax, edi
		sub	eax, 26000h
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		add	eax, edi
		mov	[ecx+4], eax

loc_406C79:				; CODE XREF: sub_406BE0+80j
		mov	esi, [ecx+8]
		pop	edi
		lea	eax, [esi+1E000h]
		cmp	ebx, eax
		jge	short loc_406C9E
		mov	eax, ebx
		sub	eax, esi
		sub	eax, 1E000h
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		add	eax, esi
		mov	[ecx+8], eax

loc_406C9E:				; CODE XREF: sub_406BE0+A5j
		mov	esi, [ecx+8]
		lea	edx, [esi+1E000h]
		cmp	ebx, edx
		jle	short loc_406CC2
		mov	eax, ebx
		sub	eax, esi
		sub	eax, 1E000h
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		add	eax, esi
		mov	[ecx+8], eax

loc_406CC2:				; CODE XREF: sub_406BE0+C9j
		mov	eax, [ecx+4]
		test	eax, eax
		jge	short loc_406CD0
		mov	dword ptr [ecx+4], 0

loc_406CD0:				; CODE XREF: sub_406BE0+E7j
		mov	edx, [esp+8+arg_8]
		mov	esi, [ecx+4]
		mov	eax, [edx+8]
		sub	eax, 14h
		shl	eax, 0Eh
		cmp	esi, eax
		pop	esi
		pop	ebx
		jle	short loc_406CE9
		mov	[ecx+4], eax

loc_406CE9:				; CODE XREF: sub_406BE0+104j
		mov	eax, [ecx+8]
		test	eax, eax
		jge	short loc_406CF7
		mov	dword ptr [ecx+8], 0

loc_406CF7:				; CODE XREF: sub_406BE0+10Ej
		mov	eax, [edx+0Ch]
		mov	edx, [ecx+8]
		sub	eax, 0Fh
		shl	eax, 0Eh
		cmp	edx, eax
		jle	short locret_406D0A
		mov	[ecx+8], eax

locret_406D0A:				; CODE XREF: sub_406BE0+125j
		retn
sub_406BE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406D10	proc near		; CODE XREF: sub_405350+B5Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	al, byte ptr dword_416CA0
		push	esi
		test	al, 1
		mov	eax, [esp+4+arg_0]
		mov	esi, 0FFFFF000h
		jz	short loc_406D26
		add	[eax+4], esi

loc_406D26:				; CODE XREF: sub_406D10+11j
		mov	cl, byte ptr dword_416CA0
		push	edi
		test	cl, 2
		mov	edi, 1000h
		jz	short loc_406D3A
		add	[eax+4], edi

loc_406D3A:				; CODE XREF: sub_406D10+25j
		test	byte ptr dword_416CA0, 4
		jz	short loc_406D46
		add	[eax+8], esi

loc_406D46:				; CODE XREF: sub_406D10+31j
		test	byte ptr dword_416CA0, 8
		jz	short loc_406D52
		add	[eax+8], edi

loc_406D52:				; CODE XREF: sub_406D10+3Dj
		mov	cl, byte ptr dword_417A44
		test	cl, 0Fh
		jz	short loc_406DBC
		mov	edx, dword_416CB0
		inc	edx
		cmp	edx, 14h
		mov	dword_416CB0, edx
		jl	short loc_406DC6
		test	cl, 1
		mov	dword_416CB0, 14h
		jz	short loc_406D8C
		mov	ecx, [eax+4]
		add	ecx, esi
		mov	[eax+4], ecx
		mov	cl, byte ptr dword_417A44

loc_406D8C:				; CODE XREF: sub_406D10+6Cj
		test	cl, 2
		jz	short loc_406D9F
		mov	ecx, [eax+4]
		add	ecx, edi
		mov	[eax+4], ecx
		mov	cl, byte ptr dword_417A44

loc_406D9F:				; CODE XREF: sub_406D10+7Fj
		test	cl, 4
		jz	short loc_406DB2
		mov	ecx, [eax+8]
		add	ecx, esi
		mov	[eax+8], ecx
		mov	cl, byte ptr dword_417A44

loc_406DB2:				; CODE XREF: sub_406D10+92j
		test	cl, 8
		jz	short loc_406DC6
		add	[eax+8], edi
		jmp	short loc_406DC6
; ---------------------------------------------------------------------------

loc_406DBC:				; CODE XREF: sub_406D10+4Bj
		mov	dword_416CB0, 0

loc_406DC6:				; CODE XREF: sub_406D10+5Dj
					; sub_406D10+A5j ...
		mov	ecx, [eax+4]
		pop	edi
		test	ecx, ecx
		jge	short loc_406DD5
		mov	dword ptr [eax+4], 0

loc_406DD5:				; CODE XREF: sub_406D10+BCj
		mov	edx, [esp+4+arg_4]
		mov	esi, [eax+4]
		mov	ecx, [edx+8]
		sub	ecx, 14h
		shl	ecx, 0Eh
		cmp	esi, ecx
		pop	esi
		jle	short loc_406DED
		mov	[eax+4], ecx

loc_406DED:				; CODE XREF: sub_406D10+D8j
		mov	ecx, [eax+8]
		test	ecx, ecx
		jge	short loc_406DFB
		mov	dword ptr [eax+8], 0

loc_406DFB:				; CODE XREF: sub_406D10+E2j
		mov	ecx, [edx+0Ch]
		mov	edx, [eax+8]
		sub	ecx, 0Fh
		shl	ecx, 0Eh
		cmp	edx, ecx
		jle	short locret_406E0E
		mov	[eax+8], ecx

locret_406E0E:				; CODE XREF: sub_406D10+F9j
		retn
sub_406D10	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406E10	proc near		; CODE XREF: sub_405350+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, 64h
		add	eax, 2
		xor	ecx, ecx

loc_406E1E:				; CODE XREF: sub_406E10+41j
		mov	[eax-2], cl
		mov	[eax-1], cl
		mov	[eax], cl
		mov	[eax+2], cx
		mov	[eax+4], cx
		mov	[eax+6], cl
		mov	[eax+7], cl
		mov	[eax+8], cx
		mov	[eax+0Ah], cl
		mov	[eax+0Eh], ecx
		mov	[eax+12h], ecx
		mov	[eax+16h], ecx
		mov	[eax+1Ah], ecx
		mov	[eax+1Eh], ecx
		mov	[eax+22h], ecx
		add	eax, 28h
		dec	edx
		jnz	short loc_406E1E
		retn
sub_406E10	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406E60	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_406EE3
		movsx	eax, byte ptr [ecx+2]
		mov	dl, [ecx+0Ch]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	al, [ecx+9]
		shl	dl, 2
		add	dl, al
		mov	esi, [esp+0Ch+arg_4]
		movsx	eax, dl
		shl	eax, 4
		add	eax, offset unk_412B60
		push	eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		push	edi
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_406EE3:				; CODE XREF: sub_406E60+7j
		retn
sub_406E60	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406EF0	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		sub	esp, 10h
		cmp	byte ptr [ecx],	0
		jz	loc_406FB8
		mov	al, [ecx+0Ch]
		mov	dl, [ecx+9]
		shl	al, 1
		add	al, dl
		push	esi
		movsx	edx, al
		shl	edx, 4
		add	edx, offset unk_412BE0
		push	edi
		mov	edi, [ecx+10h]
		mov	esi, [edx]
		mov	eax, [edx+4]
		mov	[esp+18h+var_C], eax
		mov	eax, [edx+8]
		mov	[esp+18h+var_8], eax
		mov	eax, [ecx+20h]
		mov	edx, [edx+0Ch]
		sub	eax, edi
		mov	[esp+18h+var_4], edx
		cdq
		and	edx, 3FFFh
		add	eax, edx
		lea	edx, [esp+18h+var_10]
		sar	eax, 0Eh
		shl	eax, 4
		add	esi, eax
		movsx	eax, byte ptr [ecx+2]
		add	eax, 50h
		mov	[esp+18h+var_10], esi
		push	eax
		mov	eax, [ecx+14h]
		mov	ecx, [esp+1Ch+arg_4]
		push	edx
		cdq
		and	edx, 3FFh
		add	esi, 10h
		add	eax, edx
		mov	[esp+20h+var_8], esi
		mov	esi, eax
		mov	eax, [ecx+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	esi, 0Ah
		sar	eax, 0Ah
		sub	esi, eax
		mov	eax, [ecx+4]
		cdq
		and	edx, 3FFh
		push	esi
		add	eax, edx
		mov	ecx, eax
		mov	eax, edi
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

loc_406FB8:				; CODE XREF: sub_406EF0+Aj
		add	esp, 10h
		retn
sub_406EF0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_406FC0	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_407043
		movsx	eax, byte ptr [ecx+2]
		mov	dl, [ecx+0Ch]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	al, [ecx+9]
		shl	dl, 2
		add	dl, al
		mov	esi, [esp+0Ch+arg_4]
		movsx	eax, dl
		shl	eax, 4
		add	eax, offset unk_412C20
		push	eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		push	edi
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_407043:				; CODE XREF: sub_406FC0+7j
		retn
sub_406FC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407050	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_4070D0
		movsx	eax, byte ptr [ecx+2]
		movsx	edx, byte ptr [ecx+9]
		push	esi
		add	eax, 50h
		shl	edx, 4
		push	edi
		push	eax
		mov	eax, [ecx+14h]
		add	edx, offset unk_412CA0
		mov	esi, [esp+0Ch+arg_4]
		push	edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		sub	edi, 4
		add	eax, edx
		push	edi
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		sub	ecx, 2
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_4070D0:				; CODE XREF: sub_407050+7j
		retn
sub_407050	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4070E0	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_407168
		movsx	eax, byte ptr [ecx+2]
		mov	dl, [ecx+0Ch]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	al, [ecx+9]
		shl	dl, 1
		add	dl, al
		mov	esi, [esp+0Ch+arg_4]
		movsx	eax, dl
		shl	eax, 4
		add	eax, offset unk_412CE0
		push	eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		add	edi, 4
		add	eax, edx
		push	edi
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		add	ecx, 4
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_407168:				; CODE XREF: sub_4070E0+7j
		retn
sub_4070E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407170	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_4071F2
		movsx	eax, byte ptr [ecx+2]
		mov	dl, [ecx+0Ch]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	al, [ecx+9]
		shl	dl, 1
		add	dl, al
		mov	esi, [esp+0Ch+arg_4]
		movsx	eax, dl
		shl	eax, 4
		add	eax, offset unk_412D40
		push	eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		push	edi
		add	eax, edx
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_4071F2:				; CODE XREF: sub_407170+7j
		retn
sub_407170	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407200	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_407288
		movsx	eax, byte ptr [ecx+2]
		mov	dl, [ecx+0Ch]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	al, [ecx+9]
		shl	dl, 1
		add	dl, al
		mov	esi, [esp+0Ch+arg_4]
		movsx	eax, dl
		shl	eax, 4
		add	eax, offset unk_412DA0
		push	eax
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		sub	edi, 2
		add	eax, edx
		push	edi
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		sub	ecx, 6
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_407288:				; CODE XREF: sub_407200+7j
		retn
sub_407200	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407290	proc near		; CODE XREF: sub_407310+1Bp
					; sub_4079B0+15p
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	byte ptr [ecx],	0
		jz	short locret_407307
		movsx	eax, byte ptr [ecx+2]
		push	esi
		add	eax, 50h
		push	edi
		push	eax
		mov	eax, [ecx+14h]
		mov	esi, [esp+0Ch+arg_4]
		cdq
		and	edx, 3FFh
		push	offset unk_412DE0
		add	eax, edx
		mov	edi, eax
		mov	eax, [esi+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	edi, 0Ah
		sar	eax, 0Ah
		sub	edi, eax
		mov	eax, [ecx+10h]
		cdq
		and	edx, 3FFh
		sub	edi, 10h
		add	eax, edx
		push	edi
		mov	ecx, eax
		mov	eax, [esi+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	ecx, eax
		sub	ecx, 8
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	edi
		pop	esi

locret_407307:				; CODE XREF: sub_407290+7j
		retn
sub_407290	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407310	proc near		; CODE XREF: sub_405350+843p
					; sub_405350+B84p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, 64h

loc_407320:				; CODE XREF: sub_407310+29j
		cmp	byte ptr [esi],	0
		jz	short loc_407335
		movsx	eax, byte ptr [esi+2]
		push	ebx
		push	esi
		call	off_412B38[eax*4]
		add	esp, 8

loc_407335:				; CODE XREF: sub_407310+13j
		add	esi, 28h
		dec	edi
		jnz	short loc_407320
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_407310	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC0		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:NPC_function_Tableo

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		xor	ebx, ebx
		push	esi
		movsx	ecx, byte ptr [eax+8]
		sub	ecx, ebx
		push	edi
		jz	short loc_4073B5
		dec	ecx
		jnz	loc_4074C4
		mov	ecx, [eax+10h]
		mov	edx, dword_4170F4
		cmp	ecx, edx
		jle	short loc_407370
		mov	[eax+0Ch], bl
		mov	edx, dword_4170F4
		cmp	ecx, edx

loc_407370:				; CODE XREF: NPC0+23j
		jge	short loc_407376
		mov	byte ptr [eax+0Ch], 1

loc_407376:				; CODE XREF: NPC0:loc_407370j
		inc	word ptr [eax+0Ah]
		mov	cx, [eax+0Ah]
		cmp	cx, 2
		jle	short loc_40739B
		mov	dl, [eax+9]
		mov	[eax+0Ah], bx
		inc	dl
		mov	cl, dl
		mov	[eax+9], dl
		cmp	cl, 3
		jle	short loc_40739B
		mov	byte ptr [eax+9], 2

loc_40739B:				; CODE XREF: NPC0+42j NPC0+55j
		dec	word ptr [eax+6]
		cmp	word ptr [eax+6], 0C8h
		jg	loc_4074C4
		pop	edi
		mov	[eax+8], bl
		mov	[eax+9], bl
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_4073B5:				; CODE XREF: NPC0+Fj
		mov	ecx, [eax+20h]
		mov	edx, [eax+10h]
		cmp	edx, ecx
		jle	short loc_4073CD
		mov	edx, [eax+18h]
		add	edx, 0FFFFFFFAh
		mov	[eax+18h], edx
		mov	edx, [eax+10h]
		cmp	edx, ecx

loc_4073CD:				; CODE XREF: NPC0+7Dj
		jge	short loc_4073D3
		add	dword ptr [eax+18h], 6

loc_4073D3:				; CODE XREF: NPC0:loc_4073CDj
		mov	ecx, [eax+24h]
		mov	edx, [eax+14h]
		cmp	edx, ecx
		jle	short loc_4073EB
		mov	edx, [eax+1Ch]
		add	edx, 0FFFFFFFCh
		mov	[eax+1Ch], edx
		mov	edx, [eax+14h]
		cmp	edx, ecx

loc_4073EB:				; CODE XREF: NPC0+9Bj
		jge	short loc_4073F1
		add	dword ptr [eax+1Ch], 4

loc_4073F1:				; CODE XREF: NPC0:loc_4073EBj
		mov	ecx, [eax+18h]
		cmp	ecx, ebx
		jge	short loc_4073FB
		mov	[eax+0Ch], bl

loc_4073FB:				; CODE XREF: NPC0+B6j
		jle	short loc_407401
		mov	byte ptr [eax+0Ch], 1

loc_407401:				; CODE XREF: NPC0:loc_4073FBj
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 3Ch
		jle	short loc_407420
		mov	dl, [eax+9]
		mov	[eax+0Ah], bx
		inc	dl
		cmp	dl, 1
		mov	[eax+9], dl
		jle	short loc_407420
		mov	[eax+9], bl

loc_407420:				; CODE XREF: NPC0+CAj NPC0+DBj
		mov	edx, 800h
		cmp	ecx, edx
		jle	short loc_40742C
		mov	[eax+18h], edx

loc_40742C:				; CODE XREF: NPC0+E7j
		mov	esi, [eax+18h]
		mov	ecx, 0FFFFF800h
		cmp	esi, ecx
		jge	short loc_40743B
		mov	[eax+18h], ecx

loc_40743B:				; CODE XREF: NPC0+F6j
		cmp	[eax+1Ch], edx
		jle	short loc_407443
		mov	[eax+1Ch], edx

loc_407443:				; CODE XREF: NPC0+FEj
		cmp	[eax+1Ch], ecx
		jge	short loc_40744B
		mov	[eax+1Ch], ecx

loc_40744B:				; CODE XREF: NPC0+106j
		mov	ecx, [eax+18h]
		mov	edi, [eax+10h]
		mov	esi, [eax+14h]
		add	edi, ecx
		mov	ecx, [eax+1Ch]
		mov	[eax+10h], edi
		add	esi, ecx
		mov	cx, [eax+6]
		cmp	cx, bx
		mov	edx, edi
		mov	[eax+14h], esi
		jle	short loc_407471
		dec	ecx
		mov	[eax+6], cx

loc_407471:				; CODE XREF: NPC0+12Aj
		cmp	[eax+6], bx
		jnz	short loc_4074C4
		test	byte_4170F3, 4
		jnz	short loc_4074C4
		mov	ecx, dword_4170F4
		lea	edi, [edx-0A000h]
		cmp	edi, ecx
		jge	short loc_4074C4
		add	edx, 0A000h
		cmp	edx, ecx
		jle	short loc_4074C4
		mov	ecx, dword_4170F8
		lea	edx, [esi-0A000h]
		cmp	edx, ecx
		jge	short loc_4074C4
		add	esi, 0A000h
		cmp	esi, ecx
		jle	short loc_4074C4
		cmp	byte ptr [eax+1], 2
		jnz	short loc_4074BE
		mov	byte ptr [eax+8], 1

loc_4074BE:				; CODE XREF: NPC0+178j
		mov	word ptr [eax+6], 12Ch

loc_4074C4:				; CODE XREF: NPC0+12j NPC0+65j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
NPC0		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC1_7		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B14o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	ecx, [eax+1Ch]
		inc	word ptr [eax+0Ah]
		mov	si, [eax+0Ah]
		cmp	ecx, 800h
		jge	short loc_4074EE
		add	ecx, 14h
		mov	[eax+1Ch], ecx

loc_4074EE:				; CODE XREF: NPC1_7+16j
		mov	ecx, [eax+1Ch]
		mov	edx, [eax+14h]
		add	edx, ecx
		mov	ecx, [eax+10h]
		mov	[eax+14h], edx
		mov	edx, dword_4170F4
		cmp	ecx, edx
		jge	short loc_40750A
		mov	byte ptr [eax+0Ch], 1

loc_40750A:				; CODE XREF: NPC1_7+34j
		push	edi
		mov	edi, dword_4170F4
		xor	edx, edx
		cmp	ecx, edi
		pop	edi
		jle	short loc_40751B
		mov	[eax+0Ch], dl

loc_40751B:				; CODE XREF: NPC1_7+46j
		cmp	si, 28h
		pop	esi
		jle	short locret_407536
		mov	cl, [eax+9]
		mov	[eax+0Ah], dx
		inc	cl
		cmp	cl, 1
		mov	[eax+9], cl
		jle	short locret_407536
		mov	[eax+9], dl

locret_407536:				; CODE XREF: NPC1_7+50j NPC1_7+61j
		retn
NPC1_7		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC2		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B18o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		movsx	ecx, byte ptr [eax+8]
		sub	ecx, 0
		jz	loc_407602
		dec	ecx
		jnz	loc_4076DE
		inc	word ptr [eax+0Ah]
		mov	cx, [eax+0Ah]
		cmp	cx, 2
		jle	short loc_407580
		mov	dl, [eax+9]
		mov	word ptr [eax+0Ah], 0
		inc	dl
		mov	cl, dl
		mov	[eax+9], dl
		cmp	cl, 3
		jle	short loc_407580
		mov	byte ptr [eax+9], 2

loc_407580:				; CODE XREF: NPC2+25j NPC2+3Aj
		mov	ecx, [eax+20h]
		mov	esi, [eax+10h]
		lea	edx, [ecx-10000h]
		cmp	esi, edx
		jge	short loc_407594
		mov	byte ptr [eax+0Ch], 1

loc_407594:				; CODE XREF: NPC2+4Ej
		add	ecx, 10000h
		cmp	esi, ecx
		jle	short loc_4075A2
		mov	byte ptr [eax+0Ch], 0

loc_4075A2:				; CODE XREF: NPC2+5Cj
		mov	dl, [eax+0Ch]
		test	dl, dl
		jnz	short loc_4075BA
		mov	ecx, [eax+18h]
		cmp	ecx, 0FFFFFE00h
		jle	short loc_4075BA
		add	ecx, 0FFFFFFF0h
		mov	[eax+18h], ecx

loc_4075BA:				; CODE XREF: NPC2+67j NPC2+72j
		cmp	dl, 1
		jnz	short loc_4075D0
		mov	ecx, [eax+18h]
		cmp	ecx, 200h
		jge	short loc_4075D0
		add	ecx, 10h
		mov	[eax+18h], ecx

loc_4075D0:				; CODE XREF: NPC2+7Dj NPC2+88j
		mov	ecx, [eax+1Ch]
		cmp	ecx, 800h
		jge	short loc_4075E1
		add	ecx, 14h
		mov	[eax+1Ch], ecx

loc_4075E1:				; CODE XREF: NPC2+99j
		mov	ecx, [eax+18h]
		add	ecx, esi
		mov	esi, [eax+14h]
		mov	[eax+10h], ecx
		mov	ecx, [eax+1Ch]
		add	esi, ecx
		test	ecx, ecx
		mov	[eax+14h], esi
		jle	loc_4076DE
		mov	byte ptr [eax+8], 0
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_407602:				; CODE XREF: NPC2+Cj
		mov	ecx, [eax+20h]
		mov	esi, [eax+10h]
		lea	edx, [ecx-10000h]
		cmp	esi, edx
		jge	short loc_407616
		mov	byte ptr [eax+0Ch], 1

loc_407616:				; CODE XREF: NPC2+D0j
		add	ecx, 10000h
		cmp	esi, ecx
		jle	short loc_407624
		mov	byte ptr [eax+0Ch], 0

loc_407624:				; CODE XREF: NPC2+DEj
		mov	dl, [eax+0Ch]
		test	dl, dl
		jnz	short loc_40763C
		mov	ecx, [eax+18h]
		cmp	ecx, 0FFFFFE00h
		jle	short loc_40763C
		add	ecx, 0FFFFFFF0h
		mov	[eax+18h], ecx

loc_40763C:				; CODE XREF: NPC2+E9j NPC2+F4j
		cmp	dl, 1
		jnz	short loc_407652
		mov	ecx, [eax+18h]
		cmp	ecx, 200h
		jge	short loc_407652
		add	ecx, 10h
		mov	[eax+18h], ecx

loc_407652:				; CODE XREF: NPC2+FFj NPC2+10Aj
		mov	dl, [eax+0Eh]
		test	dl, dl
		jnz	short loc_40765D
		inc	word ptr [eax+6]

loc_40765D:				; CODE XREF: NPC2+117j
		cmp	word ptr [eax+6], 50h
		jle	short loc_40768F
		mov	cl, [eax+1]
		mov	word ptr [eax+6], 0
		cmp	cl, 2
		jnz	short loc_407688
		test	byte_4170F3, 4
		jnz	short loc_407688
		mov	dword ptr [eax+1Ch], 0FFFFFA00h
		mov	byte ptr [eax+8], 1
		jmp	short loc_40768F
; ---------------------------------------------------------------------------

loc_407688:				; CODE XREF: NPC2+130j	NPC2+139j
		mov	dword ptr [eax+1Ch], 0FFFFFC00h

loc_40768F:				; CODE XREF: NPC2+122j	NPC2+146j
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 0Ah
		jle	short loc_4076B1
		mov	cl, [eax+9]
		mov	word ptr [eax+0Ah], 0
		inc	cl
		cmp	cl, 1
		mov	[eax+9], cl
		jle	short loc_4076B1
		mov	byte ptr [eax+9], 0

loc_4076B1:				; CODE XREF: NPC2+158j	NPC2+16Bj
		mov	ecx, [eax+1Ch]
		cmp	ecx, 800h
		jge	short loc_4076C2
		add	ecx, 14h
		mov	[eax+1Ch], ecx

loc_4076C2:				; CODE XREF: NPC2+17Aj
		mov	ecx, [eax+18h]
		add	ecx, esi
		mov	esi, [eax+14h]
		mov	[eax+10h], ecx
		mov	ecx, [eax+1Ch]
		add	esi, ecx
		cmp	dl, 1
		mov	[eax+14h], esi
		jnz	short loc_4076DE
		mov	byte ptr [eax+9], 2

loc_4076DE:				; CODE XREF: NPC2+13j NPC2+B6j ...
		pop	esi
		retn
NPC2		endp


; =============== S U B	R O U T	I N E =======================================


NPC3		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B1Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+1Ch]
		cmp	ecx, 800h
		jge	short loc_4076F5
		add	ecx, 14h
		mov	[eax+1Ch], ecx

loc_4076F5:				; CODE XREF: NPC3+Dj
		mov	ecx, [eax+1Ch]
		mov	edx, [eax+14h]
		add	edx, ecx
		mov	cl, [eax+8]
		push	esi
		mov	[eax+14h], edx
		test	cl, cl
		mov	esi, edx
		jnz	loc_407792
		mov	cx, [eax+6]
		test	cx, cx
		jle	short loc_40771C
		dec	ecx
		mov	[eax+6], cx

loc_40771C:				; CODE XREF: NPC3+35j
		mov	ecx, [eax+10h]
		mov	edx, dword_4170F4
		push	edi
		lea	edi, [ecx-8000h]
		cmp	edi, edx
		pop	edi
		jge	short loc_407773
		add	ecx, 8000h
		cmp	ecx, edx
		jle	short loc_407773
		mov	ecx, dword_4170F8
		lea	edx, [esi-8000h]
		cmp	edx, ecx
		jge	short loc_407773
		cmp	esi, ecx
		jle	short loc_407773
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 2
		jle	short loc_407792
		mov	cl, [eax+9]
		mov	word ptr [eax+0Ah], 0
		inc	cl
		cmp	cl, 3
		mov	[eax+9], cl
		jle	short loc_407792
		mov	byte ptr [eax+9], 3
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_407773:				; CODE XREF: NPC3+4Fj NPC3+59j ...
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 5
		jle	short loc_407792
		mov	cl, [eax+9]
		mov	word ptr [eax+0Ah], 0
		dec	cl
		mov	[eax+9], cl
		jns	short loc_407792
		mov	byte ptr [eax+9], 0

loc_407792:				; CODE XREF: NPC3+28j NPC3+78j ...
		pop	esi
		retn
NPC3		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC4_5		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B20o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, dword_4170F4
		push	ebx
		push	esi
		mov	esi, [eax+10h]
		push	edi
		cmp	esi, ecx
		jle	short loc_4077C5
		mov	ecx, [eax+18h]
		add	ecx, 0FFFFFFE8h
		mov	[eax+18h], ecx
		mov	ecx, dword_4170F4
		cmp	esi, ecx

loc_4077C5:				; CODE XREF: NPC4_5+12j
		jge	short loc_4077CB
		add	dword ptr [eax+18h], 18h

loc_4077CB:				; CODE XREF: NPC4_5:loc_4077C5j
		mov	edi, [eax+14h]
		mov	ecx, dword_4170F8
		cmp	edi, ecx
		jle	short loc_4077E9
		mov	ecx, [eax+1Ch]
		add	ecx, 0FFFFFFF0h
		mov	[eax+1Ch], ecx
		mov	ecx, dword_4170F8
		cmp	edi, ecx

loc_4077E9:				; CODE XREF: NPC4_5+36j
		jge	short loc_4077EF
		add	dword ptr [eax+1Ch], 10h

loc_4077EF:				; CODE XREF: NPC4_5:loc_4077E9j
		mov	ecx, dword_4170F4
		xor	edx, edx
		cmp	esi, ecx
		jle	short loc_4077FE
		mov	[eax+0Ch], dl

loc_4077FE:				; CODE XREF: NPC4_5+59j
		mov	ebx, dword_4170F4
		mov	cl, 1
		cmp	esi, ebx
		jge	short loc_40780D
		mov	[eax+0Ch], cl

loc_40780D:				; CODE XREF: NPC4_5+68j
		mov	ebx, dword_4170F4
		push	ebp
		lea	ebp, [esi-8000h]
		cmp	ebp, ebx
		jge	short loc_407846
		lea	ebp, [esi+8000h]
		cmp	ebp, ebx
		jle	short loc_407846
		mov	ebx, dword_4170F8
		lea	ebp, [edi-8000h]
		cmp	ebp, ebx
		jge	short loc_407846
		lea	ebp, [edi+8000h]
		cmp	ebp, ebx
		jle	short loc_407846
		mov	byte ptr [eax+0Ch], 2

loc_407846:				; CODE XREF: NPC4_5+7Cj NPC4_5+86j ...
		mov	ebp, dword_4170F8
		lea	ebx, [edi+2000h]
		cmp	ebx, ebp
		pop	ebp
		jle	short loc_40785C
		mov	[eax+8], cl
		jmp	short loc_40785F
; ---------------------------------------------------------------------------

loc_40785C:				; CODE XREF: NPC4_5+B5j
		mov	[eax+8], dl

loc_40785F:				; CODE XREF: NPC4_5+BAj
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 8
		jle	short loc_40787D
		mov	bl, [eax+9]
		mov	[eax+0Ah], dx
		inc	bl
		cmp	bl, cl
		mov	[eax+9], bl
		jle	short loc_40787D
		mov	[eax+9], dl

loc_40787D:				; CODE XREF: NPC4_5+C8j NPC4_5+D8j
		mov	ecx, [eax+18h]
		mov	edx, 400h
		cmp	ecx, edx
		jle	short loc_40788C
		mov	[eax+18h], edx

loc_40788C:				; CODE XREF: NPC4_5+E7j
		mov	ebx, [eax+18h]
		mov	ecx, 0FFFFFC00h
		cmp	ebx, ecx
		jge	short loc_40789B
		mov	[eax+18h], ecx

loc_40789B:				; CODE XREF: NPC4_5+F6j
		cmp	[eax+1Ch], edx
		jle	short loc_4078A3
		mov	[eax+1Ch], edx

loc_4078A3:				; CODE XREF: NPC4_5+FEj
		cmp	[eax+1Ch], ecx
		jge	short loc_4078AB
		mov	[eax+1Ch], ecx

loc_4078AB:				; CODE XREF: NPC4_5+106j
		mov	ebx, [eax+18h]
		mov	ecx, [eax+1Ch]
		add	esi, ebx
		add	ecx, edi
		mov	[eax+10h], esi
		pop	edi
		pop	esi
		mov	[eax+14h], ecx
		pop	ebx
		retn
NPC4_5		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC6_9		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B28o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+1Ch]
		cmp	ecx, 800h
		jge	short loc_4078D5
		add	ecx, 14h
		mov	[eax+1Ch], ecx

loc_4078D5:				; CODE XREF: NPC6_9+Dj
		mov	ecx, [eax+1Ch]
		mov	edx, [eax+14h]
		add	edx, ecx
		mov	[eax+14h], edx
		retn
NPC6_9		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


NPC8		proc near		; CODE XREF: sub_4079B0+15p
					; DATA XREF: .data:00412B30o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	edx, edx
		cmp	[eax+8], dl
		jnz	locret_4079A7
		mov	ecx, [eax+20h]
		push	esi
		push	edi
		mov	edi, [eax+10h]
		cmp	edi, ecx
		jle	short loc_407916
		mov	esi, [eax+18h]
		add	esi, 0FFFFFFF4h
		cmp	edi, ecx
		mov	[eax+18h], esi

loc_407916:				; CODE XREF: NPC8+19j
		jge	short loc_40791C
		add	dword ptr [eax+18h], 0Ch

loc_40791C:				; CODE XREF: NPC8:loc_407916j
		mov	esi, [eax+14h]
		mov	ecx, [eax+24h]
		cmp	esi, ecx
		push	ebx
		jle	short loc_407932
		mov	ebx, [eax+1Ch]
		add	ebx, 0FFFFFFF8h
		cmp	esi, ecx
		mov	[eax+1Ch], ebx

loc_407932:				; CODE XREF: NPC8+35j
		jge	short loc_407938
		add	dword ptr [eax+1Ch], 8

loc_407938:				; CODE XREF: NPC8:loc_407932j
		mov	ecx, [eax+18h]
		cmp	ecx, edx
		jge	short loc_407942
		mov	[eax+0Ch], dl

loc_407942:				; CODE XREF: NPC8+4Dj
		jle	short loc_407948
		mov	byte ptr [eax+0Ch], 1

loc_407948:				; CODE XREF: NPC8:loc_407942j
		inc	word ptr [eax+0Ah]
		cmp	word ptr [eax+0Ah], 1Eh
		jle	short loc_407967
		mov	bl, [eax+9]
		mov	[eax+0Ah], dx
		inc	bl
		cmp	bl, 1
		mov	[eax+9], bl
		jle	short loc_407967
		mov	[eax+9], dl

loc_407967:				; CODE XREF: NPC8+61j NPC8+72j
		mov	edx, 800h
		cmp	ecx, edx
		jle	short loc_407973
		mov	[eax+18h], edx

loc_407973:				; CODE XREF: NPC8+7Ej
		mov	ebx, [eax+18h]
		mov	ecx, 0FFFFF800h
		cmp	ebx, ecx
		jge	short loc_407982
		mov	[eax+18h], ecx

loc_407982:				; CODE XREF: NPC8+8Dj
		mov	ebx, [eax+1Ch]
		cmp	ebx, edx
		pop	ebx
		jle	short loc_40798D
		mov	[eax+1Ch], edx

loc_40798D:				; CODE XREF: NPC8+98j
		cmp	[eax+1Ch], ecx
		jge	short loc_407995
		mov	[eax+1Ch], ecx

loc_407995:				; CODE XREF: NPC8+A0j
		mov	ecx, [eax+18h]
		add	ecx, edi
		pop	edi
		mov	[eax+10h], ecx
		mov	ecx, [eax+1Ch]
		add	esi, ecx
		mov	[eax+14h], esi
		pop	esi

locret_4079A7:				; CODE XREF: NPC8+9j
		retn
NPC8		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4079B0	proc near		; CODE XREF: sub_405350+82Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, 64h

loc_4079BB:				; CODE XREF: sub_4079B0+23j
		cmp	byte ptr [esi],	0
		jz	short loc_4079CF
		movsx	eax, byte ptr [esi+2]
		push	esi
		call	NPC_function_Table[eax*4]
		add	esp, 4

loc_4079CF:				; CODE XREF: sub_4079B0+Ej
		add	esi, 28h
		dec	edi
		jnz	short loc_4079BB
		pop	edi
		pop	esi
		retn
sub_4079B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4079E0	proc near		; CODE XREF: sub_407CE0+F1p

var_1		= byte ptr -1
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= byte ptr  10h

		push	ecx
		mov	dl, [esp+4+arg_C]
		mov	ecx, [esp+4+arg_0]
		push	ebx
		mov	al, dl
		push	ebp
		push	esi
		mov	esi, [esp+10h+arg_8]
		and	al, 1
		push	edi
		mov	edi, [esp+14h+arg_4]
		mov	[esp+14h+var_1], al
		jz	loc_407AA7
		test	dl, 2
		jz	loc_407AA7
		mov	eax, [ecx+10h]
		mov	ebp, edi
		cdq
		and	edx, 3FFh
		shl	ebp, 4
		add	eax, edx
		lea	ebx, [ebp+0Fh]
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_407A5E
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, esi
		shl	edx, 4
		sar	eax, 0Ah
		add	edx, 0Ch
		cmp	eax, edx
		jge	short loc_407A5E
		mov	eax, edi
		mov	dword ptr [ecx+18h], 0
		shl	eax, 0Eh
		add	eax, 3C00h
		mov	[ecx+10h], eax
		mov	al, [ecx+0Dh]
		or	al, 1
		mov	[ecx+0Dh], al

loc_407A5E:				; CODE XREF: sub_4079E0+45j
					; sub_4079E0+60j
		mov	eax, [ecx+14h]
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_407AA7
		mov	eax, [ecx+10h]
		add	ebp, 0Ch
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebp
		jge	short loc_407AA7
		mov	al, [ecx+0Dh]
		lea	edx, [esi+1]
		shl	edx, 0Eh
		or	al, 2
		mov	[ecx+14h], edx
		mov	dword ptr [ecx+1Ch], 0
		mov	[ecx+0Dh], al

loc_407AA7:				; CODE XREF: sub_4079E0+1Dj
					; sub_4079E0+26j ...
		mov	dl, [esp+14h+arg_C]
		mov	al, dl
		and	al, 4
		mov	byte ptr [esp+14h+arg_8], al
		jz	loc_407B62
		test	dl, 2
		jz	loc_407B62
		mov	eax, [ecx+10h]
		mov	ebp, edi
		add	eax, 3FFh
		cdq
		and	edx, 3FFh
		shl	ebp, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ebp-0Eh]
		cmp	eax, edx
		jle	short loc_407B19
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, esi
		shl	edx, 4
		sar	eax, 0Ah
		add	edx, 0Ch
		cmp	eax, edx
		jge	short loc_407B19
		mov	eax, edi
		mov	dword ptr [ecx+18h], 0
		shl	eax, 0Eh
		sub	eax, 3800h
		mov	[ecx+10h], eax
		mov	al, [ecx+0Dh]
		or	al, 4
		mov	[ecx+0Dh], al

loc_407B19:				; CODE XREF: sub_4079E0+100j
					; sub_4079E0+11Bj
		mov	eax, [ecx+14h]
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_407B62
		mov	eax, [ecx+10h]
		add	ebp, 0FFFFFFF4h
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebp
		jle	short loc_407B62
		mov	al, [ecx+0Dh]
		lea	edx, [esi+1]
		shl	edx, 0Eh
		or	al, 2
		mov	[ecx+14h], edx
		mov	dword ptr [ecx+1Ch], 0
		mov	[ecx+0Dh], al

loc_407B62:				; CODE XREF: sub_4079E0+D3j
					; sub_4079E0+DCj ...
		mov	al, [esp+14h+var_1]
		test	al, al
		jz	loc_407C1D
		test	[esp+14h+arg_C], 8
		jz	loc_407C1D
		mov	eax, [ecx+10h]
		mov	ebp, edi
		cdq
		and	edx, 3FFh
		shl	ebp, 4
		add	eax, edx
		lea	ebx, [ebp+0Fh]
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_407BCB
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, esi
		shl	edx, 4
		sar	eax, 0Ah
		sub	edx, 0Ch
		cmp	eax, edx
		jle	short loc_407BCB
		mov	eax, edi
		mov	dword ptr [ecx+18h], 0
		shl	eax, 0Eh
		add	eax, 3C00h
		mov	[ecx+10h], eax
		mov	al, [ecx+0Dh]
		or	al, 1
		mov	[ecx+0Dh], al

loc_407BCB:				; CODE XREF: sub_4079E0+1B2j
					; sub_4079E0+1CDj
		mov	eax, [ecx+14h]
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 10h
		sar	eax, 0Ah
		cmp	eax, ebx
		jl	short loc_407C1D
		mov	eax, [ecx+10h]
		add	ebp, 0Ch
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebp
		jge	short loc_407C1D
		mov	edx, esi
		xor	eax, eax
		shl	edx, 0Eh
		sub	edx, 4000h
		mov	[ecx+0Eh], al
		mov	[ecx+14h], edx
		mov	edx, [ecx+1Ch]
		cmp	edx, eax
		jle	short loc_407C19
		mov	[ecx+1Ch], eax

loc_407C19:				; CODE XREF: sub_4079E0+234j
		or	byte ptr [ecx+0Dh], 8

loc_407C1D:				; CODE XREF: sub_4079E0+188j
					; sub_4079E0+193j ...
		mov	al, byte ptr [esp+14h+arg_8]
		xor	ebx, ebx
		cmp	al, bl
		jz	loc_407CD6
		test	[esp+14h+arg_C], 8
		jz	loc_407CD6
		mov	eax, [ecx+10h]
		mov	ebp, edi
		add	eax, 3FFh
		cdq
		and	edx, 3FFh
		shl	ebp, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ebp-0Eh]
		cmp	eax, edx
		jle	short loc_407C88
		mov	eax, [ecx+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, esi
		shl	edx, 4
		sar	eax, 0Ah
		sub	edx, 0Ch
		cmp	eax, edx
		jle	short loc_407C88
		mov	al, [ecx+0Dh]
		mov	[ecx+18h], ebx
		shl	edi, 0Eh
		sub	edi, 3800h
		or	al, 4
		mov	[ecx+10h], edi
		mov	[ecx+0Dh], al

loc_407C88:				; CODE XREF: sub_4079E0+274j
					; sub_4079E0+28Fj
		mov	eax, [ecx+14h]
		mov	edi, esi
		cdq
		and	edx, 3FFh
		shl	edi, 4
		add	eax, edx
		sub	edi, 10h
		sar	eax, 0Ah
		cmp	eax, edi
		jl	short loc_407CD6
		mov	eax, [ecx+10h]
		add	ebp, 0FFFFFFF4h
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebp
		jle	short loc_407CD6
		mov	eax, [ecx+1Ch]
		mov	[ecx+0Eh], bl
		shl	esi, 0Eh
		sub	esi, 4000h
		cmp	eax, ebx
		mov	[ecx+14h], esi
		jle	short loc_407CD2
		mov	[ecx+1Ch], ebx

loc_407CD2:				; CODE XREF: sub_4079E0+2EDj
		or	byte ptr [ecx+0Dh], 8

loc_407CD6:				; CODE XREF: sub_4079E0+245j
					; sub_4079E0+250j ...
		mov	al, [ecx+0Dh]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_4079E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407CE0	proc near		; CODE XREF: sub_405350+816p

var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 18h
		push	ebx
		mov	ebx, [esp+1Ch+arg_4]
		push	ebp
		mov	ebp, [esp+20h+arg_0]
		xor	ecx, ecx
		mov	al, 1
		push	esi
		push	edi
		mov	[esp+28h+var_10], cl
		mov	[esp+28h+var_F], al
		mov	[esp+28h+var_E], cl
		mov	[esp+28h+var_D], al
		mov	[esp+28h+var_14], cl
		mov	[esp+28h+var_13], cl
		mov	[esp+28h+var_12], al
		mov	[esp+28h+var_11], al
		mov	[esp+28h+var_18], cl
		mov	[esp+28h+var_17], cl
		mov	[esp+28h+var_16], al
		mov	[esp+28h+var_15], al
		mov	[esp+28h+var_C], 3
		mov	[esp+28h+var_B], 6
		mov	[esp+28h+var_A], 9
		mov	[esp+28h+var_9], 0Ch
		mov	[esp+28h+var_8], 64h

loc_407D3F:				; CODE XREF: sub_407CE0+138j
		cmp	[ebp+0], cl
		jz	loc_407E0C
		mov	eax, [ebp+10h]
		mov	byte ptr [esp+28h+arg_4], 2
		cdq
		and	edx, 3FFh
		mov	[ebp+0Dh], cl
		add	eax, edx
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		add	eax, edx
		mov	edi, eax
		mov	eax, [ebp+14h]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		sar	edi, 4
		mov	[esp+28h+arg_0], eax
		xor	esi, esi
		jmp	short loc_407D8E
; ---------------------------------------------------------------------------

loc_407D8A:				; CODE XREF: sub_407CE0+11Bj
		mov	eax, [esp+28h+arg_0]

loc_407D8E:				; CODE XREF: sub_407CE0+A8j
		movsx	ecx, [esp+esi+28h+var_14]
		add	ecx, eax
		mov	eax, [ebx+8]
		imul	eax, ecx
		movsx	edx, [esp+esi+28h+var_10]
		add	eax, [ebx]
		add	eax, edx
		mov	al, [eax+edi]
		cmp	al, 7Fh
		mov	byte ptr [esp+28h+var_4], al
		jbe	short loc_407DB3
		cmp	al, 0A0h
		jb	short loc_407DC7

loc_407DB3:				; CODE XREF: sub_407CE0+CDj
		cmp	al, 0DFh
		jbe	short loc_407DE9
		mov	eax, [esp+28h+var_4]
		and	eax, 0FFh
		cmp	eax, 100h
		jge	short loc_407DE9

loc_407DC7:				; CODE XREF: sub_407CE0+D1j
		mov	al, [esp+esi+28h+var_C]
		add	edx, edi
		push	eax
		push	ecx
		push	edx
		push	ebp
		call	sub_4079E0
		add	esp, 10h
		test	al, 8
		jnz	short loc_407DF7
		mov	cl, [esp+esi+28h+var_18]
		mov	al, byte ptr [esp+28h+arg_4]
		sub	al, cl
		jmp	short loc_407DF3
; ---------------------------------------------------------------------------

loc_407DE9:				; CODE XREF: sub_407CE0+D5j
					; sub_407CE0+E5j
		mov	dl, [esp+esi+28h+var_18]
		mov	al, byte ptr [esp+28h+arg_4]
		sub	al, dl

loc_407DF3:				; CODE XREF: sub_407CE0+107j
		mov	byte ptr [esp+28h+arg_4], al

loc_407DF7:				; CODE XREF: sub_407CE0+FBj
		inc	esi
		cmp	esi, 4
		jl	short loc_407D8A
		mov	cl, byte ptr [esp+28h+arg_4]
		mov	al, 1
		cmp	cl, al
		jge	short loc_407E0A
		mov	[ebp+0Eh], al

loc_407E0A:				; CODE XREF: sub_407CE0+125j
		xor	ecx, ecx

loc_407E0C:				; CODE XREF: sub_407CE0+62j
		mov	eax, [esp+28h+var_8]
		add	ebp, 28h
		dec	eax
		mov	[esp+28h+var_8], eax
		jnz	loc_407D3F
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 18h
		retn
sub_407CE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_407E30	proc near		; CODE XREF: sub_405350+896p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ecx
		mov	eax, dword_4170F8
		push	ebx
		push	ebp
		mov	ebp, dword_4170F4
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		mov	edi, [esp+14h+arg_4]
		mov	[esp+14h+var_4], 64h

loc_407E50:				; CODE XREF: sub_407E30+41Ej
		mov	cl, [esi]
		xor	bl, bl
		test	cl, cl
		jz	loc_408242
		mov	cl, [esi+1]
		cmp	cl, 3
		jz	short loc_407ECC
		cmp	cl, 2
		jnz	short loc_407E73
		cmp	word_417108, 0
		jz	short loc_407ECC

loc_407E73:				; CODE XREF: sub_407E30+37j
		test	cl, cl
		jnz	loc_408242
		cmp	word_41710A, 0
		jnz	loc_408242
		mov	ecx, [esi+10h]
		lea	edx, [ecx+1000h]
		cmp	ebp, edx
		jge	loc_408242
		add	ecx, 0FFFFF000h
		cmp	ebp, ecx
		jle	loc_408242
		mov	ecx, [esi+14h]
		lea	edx, [ecx+1000h]
		cmp	eax, edx
		jge	loc_408242
		add	ecx, 0FFFFF000h
		cmp	eax, ecx
		jle	loc_408242
		jmp	loc_40807A
; ---------------------------------------------------------------------------

loc_407ECC:				; CODE XREF: sub_407E30+32j
					; sub_407E30+41j
		mov	edx, [esi+10h]
		lea	ecx, [edx+3400h]
		cmp	ebp, ecx
		jge	short loc_407F25
		add	edx, 2000h
		cmp	ebp, edx
		jle	short loc_407F25
		mov	edx, [esi+14h]
		lea	ebp, [edx+3000h]
		cmp	eax, ebp
		jge	short loc_407F1F
		add	edx, 0FFFFD000h
		cmp	eax, edx
		jle	short loc_407F1F
		mov	ebp, ecx
		mov	cl, byte_417118
		or	cl, 1
		mov	dword_4170F4, ebp
		mov	dword_4170FC, 0
		mov	byte_417118, cl
		mov	bl, 1
		jmp	short loc_407F25
; ---------------------------------------------------------------------------

loc_407F1F:				; CODE XREF: sub_407E30+BEj
					; sub_407E30+C8j
		mov	ebp, dword_4170F4

loc_407F25:				; CODE XREF: sub_407E30+A7j
					; sub_407E30+B1j ...
		mov	ecx, [esi+14h]
		lea	edx, [ecx+3400h]
		cmp	eax, edx
		jge	short loc_407F96
		add	ecx, 2000h
		cmp	eax, ecx
		jle	short loc_407F96
		mov	ecx, [esi+10h]
		lea	edx, [ecx+3000h]
		cmp	ebp, edx
		jge	short loc_407F96
		add	ecx, 0FFFFD000h
		cmp	ebp, ecx
		jle	short loc_407F96
		cmp	dword_417100, 0FFFFFF9Ch
		jge	short loc_407F6E
		push	1
		push	4
		call	sub_40A9C0
		mov	ebp, dword_4170F4
		add	esp, 8

loc_407F6E:				; CODE XREF: sub_407E30+12Aj
		mov	eax, [esi+14h]
		mov	cl, byte_417118
		add	eax, 3400h
		or	cl, 2
		mov	dword_4170F8, eax
		mov	dword_417100, 0
		mov	byte_417118, cl
		mov	bl, 1

loc_407F96:				; CODE XREF: sub_407E30+100j
					; sub_407E30+10Aj ...
		mov	edx, [esi+10h]
		lea	ecx, [edx-3400h]
		cmp	ebp, ecx
		jle	short loc_407FF5
		add	edx, 0FFFFE000h
		add	ebp, 3FFh
		cmp	ebp, edx
		jge	short loc_407FEF
		mov	edx, [esi+14h]
		lea	ebp, [edx+3000h]
		cmp	eax, ebp
		jge	short loc_407FEF
		add	edx, 0FFFFD000h
		cmp	eax, edx
		jle	short loc_407FEF
		mov	ebp, ecx
		mov	cl, byte_417118
		or	cl, 4
		mov	dword_4170F4, ebp
		mov	dword_4170FC, 0
		mov	byte_417118, cl
		mov	bl, 1
		jmp	short loc_407FF5
; ---------------------------------------------------------------------------

loc_407FEF:				; CODE XREF: sub_407E30+181j
					; sub_407E30+18Ej ...
		mov	ebp, dword_4170F4

loc_407FF5:				; CODE XREF: sub_407E30+171j
					; sub_407E30+1BDj
		mov	ecx, [esi+14h]
		lea	edx, [ecx-3400h]
		cmp	eax, edx
		jl	short loc_408054
		add	ecx, 0FFFFE000h
		cmp	eax, ecx
		jge	short loc_408054
		mov	ecx, [esi+10h]
		lea	edx, [ecx-3000h]
		cmp	ebp, edx
		jle	short loc_408054
		add	ecx, 3000h
		cmp	ebp, ecx
		jge	short loc_408054
		mov	ecx, dword_417100
		mov	byte_417117, 0
		mov	eax, [esi+14h]
		sub	eax, 3400h
		test	ecx, ecx
		mov	dword_4170F8, eax
		jle	short loc_40804B
		mov	dword_417100, 0

loc_40804B:				; CODE XREF: sub_407E30+20Fj
		or	byte_417118, 8
		jmp	short loc_40805C
; ---------------------------------------------------------------------------

loc_408054:				; CODE XREF: sub_407E30+1D0j
					; sub_407E30+1DAj ...
		test	bl, bl
		jz	loc_408242

loc_40805C:				; CODE XREF: sub_407E30+222j
		cmp	word_41710A, 0
		jnz	loc_408242
		movsx	ecx, byte ptr [esi+1]
		sub	ecx, 2
		jz	short loc_4080A3
		dec	ecx
		jnz	loc_408242

loc_40807A:				; CODE XREF: sub_407E30+97j
					; sub_407E30+38Cj ...
		mov	byte ptr [edi],	1
		mov	word ptr [edi+1Ch], 4
		movsx	eax, word ptr [esi+4]
		mov	[edi+10h], eax
		mov	eax, dword_4170F8
		mov	ebp, dword_4170F4
		mov	word_41710A, 64h
		jmp	loc_408242
; ---------------------------------------------------------------------------

loc_4080A3:				; CODE XREF: sub_407E30+241j
		cmp	byte ptr [esi+8], 1
		jnz	short loc_4080EE
		cmp	ebp, [esi+10h]
		jge	short loc_4080BD
		mov	dword_4170FC, 0FFFFFC00h
		mov	eax, [esi+10h]
		cmp	ebp, eax

loc_4080BD:				; CODE XREF: sub_407E30+27Cj
		jle	short loc_4080C9
		mov	dword_4170FC, 400h

loc_4080C9:				; CODE XREF: sub_407E30:loc_4080BDj
		movsx	ecx, byte ptr [esi+2]
		mov	ebx, [esp+14h+arg_8]
		mov	dl, byte_412AF0[ecx]
		push	edx
		push	ebx
		call	sub_409030
		mov	eax, dword_4170F8
		mov	ebp, dword_4170F4
		add	esp, 8
		jmp	short loc_4080F2
; ---------------------------------------------------------------------------

loc_4080EE:				; CODE XREF: sub_407E30+277j
		mov	ebx, [esp+14h+arg_8]

loc_4080F2:				; CODE XREF: sub_407E30+2BCj
		mov	cl, byte_417118
		test	cl, cl
		jz	short loc_40810A
		cmp	byte_4170F2, 1
		jnz	short loc_40810A
		cmp	cl, 8
		jnz	short loc_408120

loc_40810A:				; CODE XREF: sub_407E30+2CAj
					; sub_407E30+2D3j
		test	cl, 2
		jz	loc_408242
		test	byte_4170F3, 1
		jz	loc_408242

loc_408120:				; CODE XREF: sub_407E30+2D8j
		movsx	ecx, byte ptr [esi+2]
		mov	dl, byte_412AF8[ecx]
		mov	cl, byte_417110
		cmp	dl, cl
		jg	loc_408218
		push	1
		push	0Ah
		call	sub_40A9C0
		movsx	eax, byte ptr [esi+2]
		push	ebx
		movsx	cx, byte_412B04[eax]
		add	word_41710E, cx
		call	sub_403820
		add	esp, 0Ch
		cmp	eax, 0FFFFFFh
		jz	short loc_4081AB
		lea	edx, [eax+eax*8]
		lea	eax, [ebx+edx*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 2
		movsx	ecx, byte ptr [esi+2]
		mov	dl, byte_412B04[ecx]
		mov	byte ptr [eax+3], 1
		add	dl, 0Ah
		mov	[eax+2], dl
		mov	ecx, [esi+10h]
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, [esi+14h]
		sub	edx, 1000h
		mov	dword ptr [eax+1Ch], 1
		mov	[eax+8], edx
		mov	dword ptr [eax+20h], 0

loc_4081AB:				; CODE XREF: sub_407E30+332j
		push	ebx
		mov	byte ptr [esi],	0
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	loc_40807A
		lea	eax, [eax+eax*8]
		lea	eax, [ebx+eax*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 0
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 6
		mov	ecx, [esi+10h]
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, [esi+14h]
		mov	ecx, 0FFFFF800h
		add	edx, 2000h
		mov	[eax+10h], ecx
		mov	[eax+18h], ecx
		mov	ecx, 8
		mov	[eax+8], edx
		mov	dword ptr [eax+0Ch], 800h
		mov	dword ptr [eax+14h], 0FFFFFE00h
		mov	[eax+1Ch], ecx
		mov	[eax+20h], ecx
		jmp	loc_40807A
; ---------------------------------------------------------------------------

loc_408218:				; CODE XREF: sub_407E30+302j
		cmp	word_41710A, 0
		jnz	short loc_408239
		push	1
		push	0
		call	sub_40A9C0
		mov	eax, dword_4170F8
		mov	ebp, dword_4170F4
		add	esp, 8

loc_408239:				; CODE XREF: sub_407E30+3F0j
		mov	word_41710A, 64h

loc_408242:				; CODE XREF: sub_407E30+26j
					; sub_407E30+45j ...
		mov	ecx, [esp+14h+var_4]
		add	esi, 28h
		dec	ecx
		mov	[esp+14h+var_4], ecx
		jnz	loc_407E50
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_407E30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408260	proc near		; CODE XREF: sub_404320+A74p

var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_12B		= byte ptr -12Bh
var_12A		= byte ptr -12Ah
var_128		= byte ptr -128h
var_126		= word ptr -126h
var_124		= byte ptr -124h
var_123		= byte ptr -123h
var_122		= word ptr -122h
var_120		= byte ptr -120h
var_11C		= byte ptr -11Ch
var_118		= byte ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
var_108		= byte ptr -108h
var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 134h
		lea	eax, [esp+134h+var_104]
		push	ebx
		push	ebp
		push	offset aNpchar_dat ; "NPChar.dat"
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+14Ch+var_104]
		push	offset aRb	; "rb"
		push	ecx		; char *
		call	_fopen
		mov	ebp, eax
		xor	ebx, ebx
		add	esp, 18h
		cmp	ebp, ebx
		jnz	short loc_4082A6
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 134h
		retn
; ---------------------------------------------------------------------------

loc_4082A6:				; CODE XREF: sub_408260+39j
		push	esi
		push	edi
		mov	edi, [esp+144h+arg_0]
		mov	[esp+144h+var_134], 64h
		mov	[esp+144h+var_130], edi

loc_4082BB:				; CODE XREF: sub_408260+12Cj
		push	ebp		; FILE *
		push	1		; size_t
		lea	edx, [esp+14Ch+var_12C]
		push	1		; size_t
		push	edx		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	eax, [esp+15Ch+var_12B]
		push	1		; size_t
		push	eax		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	ecx, [esp+16Ch+var_12A]
		push	1		; size_t
		push	ecx		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	edx, [esp+17Ch+var_128]
		push	2		; size_t
		push	edx		; void *
		call	_fread
		add	esp, 40h
		lea	eax, [esp+144h+var_120]
		push	ebp		; FILE *
		push	1		; size_t
		push	1		; size_t
		push	eax		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	ecx, [esp+15Ch+var_11C]
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	edx, [esp+16Ch+var_118]
		push	4		; size_t
		push	edx		; void *
		call	_fread
		push	ebp		; FILE *
		push	1		; size_t
		lea	eax, [esp+17Ch+var_10C]
		push	4		; size_t
		push	eax		; void *
		call	_fread
		add	esp, 40h
		lea	ecx, [esp+144h+var_108]
		push	ebp		; FILE *
		push	1		; size_t
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		mov	al, [esp+154h+var_12B]
		add	esp, 10h
		cmp	al, 2
		mov	[esp+144h+var_126], bx
		mov	[esp+144h+var_124], bl
		mov	[esp+144h+var_123], bl
		mov	[esp+144h+var_122], bx
		mov	[esp+144h+var_114], ebx
		mov	[esp+144h+var_110], ebx
		jnz	short loc_408378
		mov	ecx, 0Ah
		lea	esi, [esp+144h+var_12C]
		rep movsd

loc_408378:				; CODE XREF: sub_408260+10Bj
		mov	edi, [esp+144h+var_130]
		mov	eax, [esp+144h+var_134]
		add	edi, 28h
		dec	eax
		mov	[esp+144h+var_130], edi
		mov	[esp+144h+var_134], eax
		jnz	loc_4082BB
		push	ebp		; FILE *
		call	_fclose
		add	esp, 4
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 134h
		retn
sub_408260	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4083B0	proc near		; CODE XREF: sub_405350+1D7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	11h
		push	offset aPbmOpening_pbm ; "Pbm\\Opening.pbm"
		mov	dword ptr [eax], 0FFFFFFADh
		mov	dword ptr [eax+0Ch], 0FFFFFF80h
		mov	dword ptr [eax+8], 0FFFFFFC0h
		mov	dword ptr [eax+4], 140h
		call	sub_4021D0
		push	14h
		push	offset aPbmMaruame_pbm ; "Pbm\\MaruAme.pbm"
		call	sub_4021D0
		add	esp, 10h
		retn
sub_4083B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_4083F0	proc near		; CODE XREF: sub_405350+230p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0FFFFFFh
		push	offset unk_412680
		call	sub_402600
		mov	esi, [esp+10h+arg_0]
		push	11h
		push	offset unk_412E10
		mov	eax, [esi]
		push	eax
		push	41h
		push	offset unk_412680
		call	sub_4024C0
		push	11h
		push	offset unk_412E20
		push	89h
		push	84h
		push	offset unk_412680
		call	sub_4024C0
		mov	ecx, [esi+4]
		push	11h
		push	offset unk_412E30
		push	0CDh
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 44h
		xor	edi, edi

loc_408455:				; CODE XREF: sub_4083F0+B8j
		mov	edx, [esi+8]
		mov	eax, [esi+0Ch]
		push	11h
		add	edx, edi
		push	offset unk_412DF0
		push	edx
		cdq
		sub	eax, edx
		sar	eax, 1
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		mov	eax, [esi+8]
		push	11h
		add	eax, edi
		push	offset unk_412E00
		push	eax
		mov	eax, [esi+0Ch]
		cdq
		sub	eax, edx
		mov	ecx, 110h
		sar	eax, 1
		sub	ecx, eax
		push	ecx
		push	offset unk_412680
		call	sub_4024C0
		add	edi, 40h
		add	esp, 28h
		cmp	edi, 140h
		jl	short loc_408455
		mov	edi, [esi+8]
		mov	eax, [esi]
		inc	edi
		cmp	eax, 2Dh
		mov	[esi+8], edi
		mov	ecx, edi
		jge	short loc_4084BD
		inc	eax
		mov	[esi], eax

loc_4084BD:				; CODE XREF: sub_4083F0+C8j
		test	ecx, ecx
		jl	short loc_4084C7
		add	ecx, 0FFFFFFC0h
		mov	[esi+8], ecx

loc_4084C7:				; CODE XREF: sub_4083F0+CFj
		mov	ecx, [esi+0Ch]
		mov	eax, ecx
		cdq
		sub	eax, edx
		sar	eax, 1
		jns	short loc_4084D7
		inc	ecx
		mov	[esi+0Ch], ecx

loc_4084D7:				; CODE XREF: sub_4083F0+E1j
		mov	eax, [esi+4]
		cmp	eax, 40h
		jle	short loc_4084E8
		add	eax, 0FFFFFFFEh
		pop	edi
		mov	[esi+4], eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_4084E8:				; CODE XREF: sub_4083F0+EDj
		mov	eax, [esi+8]
		cdq
		and	edx, 1Fh
		add	eax, edx
		sar	eax, 5
		and	eax, 80000001h
		jns	short loc_408500
		dec	eax
		or	eax, 0FFFFFFFEh
		inc	eax

loc_408500:				; CODE XREF: sub_4083F0+109j
		jz	short loc_40851D
		push	11h
		push	offset unk_412E40
		push	7Eh
		push	80h
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_40851D:				; CODE XREF: sub_4083F0:loc_408500j
		pop	edi
		pop	esi
		retn
sub_4083F0	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_408520(int, LPCSTR lpFileName)
sub_408520	proc near		; CODE XREF: sub_4085A0+5Dp

arg_0		= dword	ptr  4
lpFileName	= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+lpFileName]
		push	esi
		push	edi
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	ebx		; lpFileName
		call	ds:CreateFileA
		mov	esi, [esp+0Ch+arg_0]
		mov	edi, eax
		push	0		; lpFileSizeHigh
		push	edi		; hFile
		call	ds:GetFileSize
		push	edi		; hObject
		mov	[esi+8], eax
		call	ds:CloseHandle
		mov	eax, [esi+8]
		push	eax		; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc
		push	offset aRb	; "rb"
		push	ebx		; char *
		mov	[esi], eax
		call	_fopen
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_40857F
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_40857F:				; CODE XREF: sub_408520+59j
		mov	ecx, [esi+8]
		mov	edx, [esi]
		push	edi		; FILE *
		push	ecx		; size_t
		push	1		; size_t
		push	edx		; void *
		call	_fread
		push	edi		; FILE *
		call	_fclose
		add	esp, 14h
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_408520	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_4085A0(int, LPCSTR lpFileName, char)
sub_4085A0	proc near		; CODE XREF: sub_405350+486p
					; sub_405350+C9Dp

arg_0		= dword	ptr  4
lpFileName	= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	al, [esp+arg_8]
		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	ebp
		push	esi
		xor	esi, esi
		push	edi
		mov	byte ptr [ebx+3Dh], 0
		mov	[ebx+4], esi
		mov	[ebx+3Ch], al
		mov	[ebx+38h], esi
		lea	ebp, [ebx+0Ch]

loc_4085BE:				; CODE XREF: sub_4085A0+55j
		movsx	eax, byte ptr [ebx+3Ch]
		imul	eax, esi
		lea	edi, [esi+28h]
		lea	ecx, [eax+eax*2]
		push	edi
		shl	ecx, 3
		push	10h
		push	140h
		mov	[ebp+0], ecx
		call	sub_402380
		push	edi
		push	0
		push	offset unk_412E70
		call	sub_402680
		add	esp, 18h
		inc	esi
		add	ebp, 4
		cmp	esi, 0Bh
		jl	short loc_4085BE
		mov	edx, [esp+10h+lpFileName]
		push	edx		; lpFileName
		push	ebx		; int
		call	sub_408520
		mov	eax, [ebx]
		push	eax		; lpString
		call	sub_403D40
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4085A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408620	proc near		; CODE XREF: sub_405350+4C2p
					; sub_405350+CDCp

String		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 2Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	14h
		push	offset unk_412E50
		push	0
		push	0
		push	offset unk_412680
		call	sub_4024C0
		mov	esi, [esp+50h+arg_0]
		add	esp, 14h
		mov	al, [esi+3Dh]
		test	al, al
		jz	short loc_408672
		push	17h
		push	offset unk_412E60
		push	6Ah
		push	88h
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_408665:				; CODE XREF: sub_408620+120j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 2Ch
		retn
; ---------------------------------------------------------------------------

loc_408672:				; CODE XREF: sub_408620+28j
		mov	ebx, 28h
		lea	ebp, [esi+0Ch]

loc_40867A:				; CODE XREF: sub_408620+1CAj
		mov	eax, [ebp+0]
		push	ebx
		movsx	ecx, byte ptr [esi+3Ch]
		cdq
		idiv	ecx
		push	offset unk_412E70
		push	eax
		push	0
		push	offset unk_412680
		call	sub_4024C0
		mov	eax, [ebp+0]
		add	esp, 14h
		add	eax, 0FFFFFFFEh
		mov	[ebp+0], eax
		mov	cl, byte ptr dword_417A44
		test	cl, 10h
		jz	short loc_4086B4
		add	eax, 0FFFFFFFAh
		mov	[ebp+0], eax

loc_4086B4:				; CODE XREF: sub_408620+8Cj
		mov	eax, [ebp+0]
		movsx	ecx, byte ptr [esi+3Ch]
		cdq
		idiv	ecx
		cmp	eax, 0FFFFFFE8h
		jge	loc_4087E3
		lea	eax, [ecx+ecx*2]
		push	ebx
		push	0
		push	offset unk_412E70
		lea	edx, [eax+eax*4]
		shl	edx, 4
		mov	[ebp+0], edx
		call	sub_402680
		add	esp, 0Ch
		xor	eax, eax

loc_4086E5:				; CODE XREF: sub_408620+1BDj
		mov	edx, [esi+4]
		mov	ecx, [esi]
		lea	edi, [edx+ecx]
		mov	cl, [edx+ecx]
		cmp	cl, 20h
		jnz	short loc_4086FE
		mov	[esp+eax+3Ch+String], cl
		jmp	loc_4087D5
; ---------------------------------------------------------------------------

loc_4086FE:				; CODE XREF: sub_408620+D3j
		test	cl, 80h
		jz	short loc_408717
		mov	[esp+eax+3Ch+String], cl
		mov	cl, [edi+1]
		mov	[esp+eax+3Ch+var_2B], cl
		inc	eax
		add	edx, 2
		jmp	loc_4087D6
; ---------------------------------------------------------------------------

loc_408717:				; CODE XREF: sub_408620+E1j
		cmp	cl, 41h
		jl	short loc_408725
		cmp	cl, 7Ah
		jle	loc_4087D1

loc_408725:				; CODE XREF: sub_408620+FAj
		cmp	cl, 2Eh
		jz	loc_4087D1
		cmp	cl, 2Ch
		jz	loc_4087D1
		cmp	cl, 3Ch
		jnz	short loc_408746
		cmp	byte ptr [edi+1], 65h
		jz	loc_408665

loc_408746:				; CODE XREF: sub_408620+11Aj
		cmp	cl, 2Bh
		jnz	short loc_4087AC
		mov	edx, [esi+38h]
		mov	[esp+eax+3Ch+String], 0
		add	edx, 28h
		lea	eax, [esp+3Ch+String]
		push	edx		; hdc
		push	0FF0000h	; color
		push	eax		; lpString
		push	1		; int
		push	8		; int
		call	sub_402770
		mov	ecx, [esi+38h]
		lea	edx, [esp+50h+String]
		add	ecx, 28h
		push	ecx		; hdc
		push	0FF8800h	; color
		push	edx		; lpString
		push	0		; int
		push	8		; int
		call	sub_402770
		mov	ecx, [esi+38h]
		add	esp, 28h
		inc	ecx
		mov	eax, ecx
		mov	[esi+38h], ecx
		cmp	eax, 0Ah
		jle	short loc_40879C
		mov	dword ptr [esi+38h], 0

loc_40879C:				; CODE XREF: sub_408620+173j
		mov	eax, [esi+4]
		add	eax, 3
		mov	[esi+4], eax
		mov	eax, 3E7h
		jmp	short loc_4087D9
; ---------------------------------------------------------------------------

loc_4087AC:				; CODE XREF: sub_408620+129j
		cmp	cl, 3Ch
		jnz	short loc_4087D5
		cmp	byte ptr [edi+1], 70h
		jnz	short loc_4087D5
		cmp	byte ptr [edi+2], 66h
		jnz	short loc_4087D5
		mov	eax, [esp+3Ch+arg_4]
		add	edx, 5
		mov	[esi+4], edx
		mov	byte ptr [eax],	4
		mov	eax, 3E7h
		jmp	short loc_4087D9
; ---------------------------------------------------------------------------

loc_4087D1:				; CODE XREF: sub_408620+FFj
					; sub_408620+108j ...
		mov	[esp+eax+3Ch+String], cl

loc_4087D5:				; CODE XREF: sub_408620+D9j
					; sub_408620+18Fj ...
		inc	edx

loc_4087D6:				; CODE XREF: sub_408620+F2j
		mov	[esi+4], edx

loc_4087D9:				; CODE XREF: sub_408620+18Aj
					; sub_408620+1AFj
		inc	eax
		cmp	eax, 28h
		jl	loc_4086E5

loc_4087E3:				; CODE XREF: sub_408620+A1j
		add	ebp, 4
		inc	ebx
		cmp	ebx, 33h
		jl	loc_40867A
		mov	al, [esi+3Dh]
		test	al, al
		jz	short loc_408812
		push	17h
		push	offset unk_412E60
		push	6Ah
		push	88h
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h

loc_408812:				; CODE XREF: sub_408620+1D5j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 2Ch
		retn
sub_408620	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408820	proc near		; CODE XREF: sub_405350+50Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	ecx, [eax]
		push	ecx		; hMem
		call	ds:LocalFree
		xor	esi, esi

loc_408830:				; CODE XREF: sub_408820+20j
		lea	edx, [esi+28h]
		push	edx
		call	sub_4021A0
		add	esp, 4
		inc	esi
		cmp	esi, 0Bh
		jl	short loc_408830
		pop	esi
		retn
sub_408820	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408850	proc near		; CODE XREF: WinMain(x,x,x,x)+3B2p
		push	1D8h		; int
		push	offset aBass1	; "BASS1"
		call	sub_40A8A0
		add	esp, 8
		test	eax, eax
		jnz	short loc_408867
		retn
; ---------------------------------------------------------------------------

loc_408867:				; CODE XREF: sub_408850+14j
		push	esi
		push	edi		; int
		push	1D9h		; int
		push	offset aBass1	; "BASS1"
		mov	dword_4170EC, 1
		call	sub_40A8A0
		push	1DAh		; int
		push	offset aBass2	; "BASS2"
		call	sub_40A8A0
		push	1DBh		; int
		push	offset aBass2	; "BASS2"
		call	sub_40A8A0
		push	1DCh		; int
		push	offset aSnare1	; "SNARE1"
		call	sub_40A8A0
		push	1DDh		; int
		push	offset aSnare1	; "SNARE1"
		call	sub_40A8A0
		push	1DEh		; int
		push	offset aSnare1	; "SNARE1"
		call	sub_40A8A0
		push	1DFh		; int
		push	offset aSnare1	; "SNARE1"
		call	sub_40A8A0
		push	1E0h		; int
		push	offset aHat1	; "HAT1"
		call	sub_40A8A0
		add	esp, 40h
		push	1E1h		; int
		push	offset aHat1	; "HAT1"
		call	sub_40A8A0
		push	1E2h		; int
		push	offset aHat2	; "HAT2"
		call	sub_40A8A0
		push	1E3h		; int
		push	offset aHat2	; "HAT2"
		call	sub_40A8A0
		push	1E4h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1E5h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1E6h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1E7h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1E8h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		add	esp, 40h
		push	1E9h		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1EAh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1EBh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1ECh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1EDh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1EEh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		push	1EFh		; int
		push	offset aSymbal1	; "SYMBAL1"
		call	sub_40A8A0
		mov	esi, ds:LocalAlloc
		add	esp, 38h
		push	0FA0h		; uBytes
		push	40h		; uFlags
		call	esi ; LocalAlloc
		mov	hMem, eax
		push	0FA0h		; uBytes
		push	40h		; uFlags
		call	esi ; LocalAlloc
		push	0FA0h		; uBytes
		push	40h		; uFlags
		mov	dword_4170E0, eax
		call	esi ; LocalAlloc
		push	0FA0h		; uBytes
		push	40h		; uFlags
		mov	dword_4170E4, eax
		call	esi ; LocalAlloc
		mov	esi, ds:LocalFree
		mov	ecx, eax
		mov	eax, hMem
		xor	edi, edi
		cmp	eax, edi
		mov	dword_4170E8, ecx
		jz	short loc_408A44
		cmp	dword_4170E0, edi
		jz	short loc_408A3B
		cmp	dword_4170E4, edi
		jz	short loc_408A3B
		cmp	ecx, edi
		jnz	short loc_408A7A

loc_408A3B:				; CODE XREF: sub_408850+1DDj
					; sub_408850+1E5j
		push	eax		; hMem
		call	esi ; LocalFree
		mov	hMem, edi

loc_408A44:				; CODE XREF: sub_408850+1D5j
		mov	eax, dword_4170E0
		cmp	eax, edi
		jz	short loc_408A56
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E0, edi

loc_408A56:				; CODE XREF: sub_408850+1FBj
		mov	eax, dword_4170E4
		cmp	eax, edi
		jz	short loc_408A68
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E4, edi

loc_408A68:				; CODE XREF: sub_408850+20Dj
		mov	eax, dword_4170E8
		cmp	eax, edi
		jz	short loc_408A7A
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E8, edi

loc_408A7A:				; CODE XREF: sub_408850+1E9j
					; sub_408850+21Fj
		pop	edi
		mov	eax, 1
		pop	esi
		retn
sub_408850	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408A90	proc near		; CODE XREF: WinMain(x,x,x,x)+3BDp
		mov	eax, hMem
		push	esi
		mov	esi, ds:LocalFree
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_408AAC
		push	eax		; hMem
		call	esi ; LocalFree
		mov	hMem, edi

loc_408AAC:				; CODE XREF: sub_408A90+11j
		mov	eax, dword_4170E0
		cmp	eax, edi
		jz	short loc_408ABE
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E0, edi

loc_408ABE:				; CODE XREF: sub_408A90+23j
		mov	eax, dword_4170E4
		cmp	eax, edi
		jz	short loc_408AD0
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E4, edi

loc_408AD0:				; CODE XREF: sub_408A90+35j
		mov	eax, dword_4170E8
		cmp	eax, edi
		jz	short loc_408AE2
		push	eax		; hMem
		call	esi ; LocalFree
		mov	dword_4170E8, edi

loc_408AE2:				; CODE XREF: sub_408A90+47j
		pop	edi
		pop	esi
		retn
sub_408A90	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_408AF0(char *)
sub_408AF0	proc near		; CODE XREF: sub_408F10+6Fp

arg_0		= dword	ptr  4

		mov	eax, dword_4170EC
		push	esi
		test	eax, eax
		jnz	short loc_408AFE
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_408AFE:				; CODE XREF: sub_408AF0+8j
		mov	eax, [esp+4+arg_0]
		push	offset aRb	; "rb"
		push	eax		; char *
		call	_fopen
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_408B18
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_408B18:				; CODE XREF: sub_408AF0+24j
		push	esi		; FILE *
		push	1		; size_t
		push	418h		; size_t
		push	offset unk_416CB8 ; void *
		call	_fread
		mov	ecx, dword_416CCC
		mov	edx, hMem
		push	esi		; FILE *
		push	ecx		; size_t
		push	4		; size_t
		push	edx		; void *
		call	_fread
		mov	eax, dword_416CCC
		mov	ecx, dword_4170E0
		push	esi		; FILE *
		push	eax		; size_t
		push	4		; size_t
		push	ecx		; void *
		call	_fread
		mov	edx, dword_416CCC
		mov	eax, dword_4170E4
		push	esi		; FILE *
		push	edx		; size_t
		push	4		; size_t
		push	eax		; void *
		call	_fread
		mov	ecx, dword_416CCC
		mov	edx, dword_4170E8
		add	esp, 40h
		push	esi		; FILE *
		push	ecx		; size_t
		push	4		; size_t
		push	edx		; void *
		call	_fread
		push	esi		; FILE *
		call	_fclose
		add	esp, 14h
		mov	dword_4170D4, 0FFFFFFFFh
		mov	eax, 1
		pop	esi
		retn
sub_408AF0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408BA0	proc near		; CODE XREF: sub_405350:loc_4055B6p
					; sub_405350:loc_40574Ep ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 28h
		mov	eax, dword_4170EC
		mov	[esp+28h+var_20], 0
		test	eax, eax
		mov	[esp+28h+var_1C], 60h
		mov	[esp+28h+var_18], 0B4h
		mov	[esp+28h+var_14], 0E0h
		mov	[esp+28h+var_10], 100h
		mov	[esp+28h+var_C], 120h
		mov	[esp+28h+var_8], 14Ch
		mov	[esp+28h+var_4], 1A4h
		jz	loc_408CDA
		cmp	byte_4170D0, 1
		jnz	loc_408CDA
		call	ds:GetTickCount
		mov	ecx, dword_4170D8
		mov	edx, dword_416CC0
		add	edx, ecx
		cmp	eax, edx
		jbe	loc_408CDA
		mov	ecx, dword_4170D4
		mov	eax, dword_416CC8
		inc	ecx
		dec	eax
		cmp	ecx, eax
		mov	dword_4170D4, ecx
		jg	short loc_408C3B
		mov	edx, dword_416CCC
		dec	edx
		cmp	ecx, edx
		jle	short loc_408C47

loc_408C3B:				; CODE XREF: sub_408BA0+8Ej
		mov	ecx, dword_416CC4
		mov	dword_4170D4, ecx

loc_408C47:				; CODE XREF: sub_408BA0+99j
		push	ebx
		push	ebp
		push	esi
		mov	esi, 190h
		mov	eax, offset hMem
		push	edi
		mov	[esp+38h+var_28], esi
		mov	[esp+38h+var_24], eax
		jmp	short loc_408C65
; ---------------------------------------------------------------------------

loc_408C5F:				; CODE XREF: sub_408BA0+129j
		mov	ecx, dword_4170D4

loc_408C65:				; CODE XREF: sub_408BA0+BDj
		mov	eax, [eax]
		mov	ebx, [eax+ecx*4]
		test	ebx, 0FF000000h
		jz	short loc_408C8E
		mov	eax, ebx
		mov	edi, 18h
		sar	eax, 18h
		mov	ebp, [esp+eax*4+38h+var_20]

loc_408C80:				; CODE XREF: sub_408BA0+ECj
		push	ebp
		push	esi
		call	sub_40AA90
		add	esp, 8
		inc	esi
		dec	edi
		jnz	short loc_408C80

loc_408C8E:				; CODE XREF: sub_408BA0+D0j
		xor	esi, esi

loc_408C90:				; CODE XREF: sub_408BA0+10Cj
		test	bl, 1
		jz	short loc_408CA6
		mov	ecx, [esp+38h+var_28]
		push	1
		add	ecx, esi
		push	ecx
		call	sub_40A9C0
		add	esp, 8

loc_408CA6:				; CODE XREF: sub_408BA0+F3j
		sar	ebx, 1
		inc	esi
		cmp	esi, 18h
		jl	short loc_408C90
		mov	eax, [esp+38h+var_24]
		mov	esi, [esp+38h+var_28]
		add	eax, 4
		add	esi, 18h
		cmp	eax, offset dword_4170EC
		mov	[esp+38h+var_24], eax
		mov	[esp+38h+var_28], esi
		jl	short loc_408C5F
		call	ds:GetTickCount
		pop	edi
		pop	esi
		pop	ebp
		mov	dword_4170D8, eax
		pop	ebx

loc_408CDA:				; CODE XREF: sub_408BA0+4Aj
					; sub_408BA0+57j ...
		add	esp, 28h
		retn
sub_408BA0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408CE0	proc near		; CODE XREF: sub_408F10+77p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		mov	eax, dword_4170EC
		sub	esp, 8
		test	eax, eax
		jz	loc_408E1C
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	0
		push	0
		push	0
		push	offset aGbgcgugGkgebGa ; "ÉÅÉCÉìÉ{ÉäÉÖÅ[ÉÄÅiÉÅÉçÉfÉBÅj"
		call	sub_406310
		add	esp, 10h
		mov	[esp+18h+var_8], 0
		mov	ebx, 190h
		mov	esi, offset unk_416CD4

loc_408D19:				; CODE XREF: sub_408CE0+CEj
		mov	cl, [esi-4]
		mov	edi, 1
		shl	edi, cl
		mov	ebp, ebx
		mov	[esp+18h+var_4], 18h

loc_408D2D:				; CODE XREF: sub_408CE0+60j
		push	ebp
		call	sub_40A870
		mov	eax, [esp+1Ch+var_4]
		add	esp, 4
		inc	ebp
		dec	eax
		mov	[esp+18h+var_4], eax
		jnz	short loc_408D2D
		mov	eax, [esi]
		push	ebx		; void *
		push	eax		; size_t
		lea	ecx, [esi+110h]
		push	edi		; int
		lea	edx, [esi+10h]
		push	ecx		; int
		push	edx		; int
		call	sub_40AAC0
		add	esp, 14h
		cmp	eax, 1
		push	0
		push	0
		jnz	short loc_408D6F
		mov	eax, [esp+20h+var_8]
		push	eax
		push	offset unk_412F80
		jmp	short loc_408D79
; ---------------------------------------------------------------------------

loc_408D6F:				; CODE XREF: sub_408CE0+81j
		mov	ecx, [esp+20h+var_8]
		push	ecx
		push	offset unk_412F6C

loc_408D79:				; CODE XREF: sub_408CE0+8Dj
		call	sub_406310
		add	esp, 10h
		mov	edi, 18h

loc_408D86:				; CODE XREF: sub_408CE0+B5j
		mov	edx, [esi+4]
		push	edx
		push	ebx
		call	sub_40AA60
		add	esp, 8
		inc	ebx
		dec	edi
		jnz	short loc_408D86
		mov	edx, [esp+18h+var_8]
		add	esi, 154h
		inc	edx
		cmp	esi, offset byte_4170D0
		mov	[esp+18h+var_8], edx
		mov	ebx, ebp
		jl	loc_408D19
		push	0
		push	0
		push	0
		push	offset aGbgcgugGkgeb_0 ; "ÉÅÉCÉìÉ{ÉäÉÖÅ[ÉÄÅiÉhÉâÉÄÅj"
		call	sub_406310
		add	esp, 10h
		mov	esi, 1D9h

loc_408DCC:				; CODE XREF: sub_408CE0+136j
		mov	eax, dword_4170CC
		lea	ecx, [esi-1]
		push	eax
		push	ecx
		call	sub_40AA60
		mov	ecx, dword_4170CC
		lea	eax, ds:0[ecx*8]
		sub	eax, ecx
		lea	ecx, [eax+eax*4]
		mov	eax, 51EB851Fh
		shl	ecx, 1
		imul	ecx
		sar	edx, 5
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		push	edx
		push	esi
		call	sub_40AA60
		add	esi, 2
		add	esp, 10h
		lea	ecx, [esi-1D9h]
		cmp	ecx, 18h
		jl	short loc_408DCC
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx

loc_408E1C:				; CODE XREF: sub_408CE0+Aj
		add	esp, 8
		retn
sub_408CE0	endp


; =============== S U B	R O U T	I N E =======================================


sub_408E20	proc near		; CODE XREF: sub_408F10+A4p
					; sub_408F10+CDp ...

arg_0		= dword	ptr  4

		mov	eax, dword_4170EC
		test	eax, eax
		jz	locret_408F02
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	0
		push	0
		push	0
		push	offset aGtgfbGhbigbgng ; "ÉtÉFÅ[ÉhÅiÉÅÉçÉfÉBÅj"
		call	sub_406310
		mov	edi, [esp+20h+arg_0]
		add	esp, 10h
		mov	esi, 190h
		mov	ebx, offset unk_416CD8

loc_408E52:				; CODE XREF: sub_408E20+59j
		mov	ebp, 18h

loc_408E57:				; CODE XREF: sub_408E20+4Bj
		movsx	eax, word ptr [edi+4]
		mov	ecx, [ebx]
		sub	ecx, eax
		push	ecx
		push	esi
		call	sub_40AA60
		add	esp, 8
		inc	esi
		dec	ebp
		jnz	short loc_408E57
		add	ebx, 154h
		cmp	ebx, offset dword_4170D4
		jl	short loc_408E52
		push	0
		push	0
		push	0
		push	offset aGtgfbGhbighgig ; "ÉtÉFÅ[ÉhÅiÉhÉâÉÄÅj"
		call	sub_406310
		add	esp, 10h
		mov	esi, 1D9h

loc_408E93:				; CODE XREF: sub_408E20+C9j
		movsx	edx, word ptr [edi+4]
		mov	eax, dword_4170CC
		lea	ecx, [esi-1]
		sub	eax, edx
		push	eax
		push	ecx
		call	sub_40AA60
		mov	ecx, dword_4170CC
		lea	eax, ds:0[ecx*8]
		sub	eax, ecx
		lea	ecx, [eax+eax*4]
		mov	eax, 51EB851Fh
		shl	ecx, 1
		imul	ecx
		movsx	ecx, word ptr [edi+4]
		sar	edx, 5
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		sub	edx, ecx
		push	edx
		push	esi
		call	sub_40AA60
		add	esi, 2
		add	esp, 10h
		lea	edx, [esi-1D9h]
		cmp	edx, 18h
		jl	short loc_408E93
		push	0
		push	0
		push	0
		push	offset aGGkgebGaokvV ; "É{ÉäÉÖÅ[ÉÄOKÇ≈Ç∑"
		call	sub_406310
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx

locret_408F02:				; CODE XREF: sub_408E20+7j
		retn
sub_408E20	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_408F10	proc near		; CODE XREF: sub_405350+1EBp
					; sub_405350+202p ...

var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		mov	eax, dword_4170EC
		sub	esp, 104h
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		push	esi
		jz	loc_408FBE	; jumptable 00408F3B default case
		mov	esi, [esp+10Ch+arg_0]
		movsx	eax, byte ptr [esi]
		dec	eax
		cmp	eax, 5		; switch 6 cases
		ja	loc_408FBE	; jumptable 00408F3B default case
		jmp	ds:off_409018[eax*4] ; switch jump
; ---------------------------------------------------------------------------

loc_408F42:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		mov	al, [esi+1]	; jumptable 00408F3B case 0
		mov	cl, [esi+2]
		cmp	al, cl
		jnz	short loc_408F54
		cmp	byte_4170D0, bl
		jnz	short loc_408FBC

loc_408F54:				; CODE XREF: sub_408F10+3Aj
		mov	byte_4170D0, bl
		lea	eax, [esp+10Ch+var_104]
		movsx	ecx, byte ptr [esi+1]
		mov	edx, off_412EA0[ecx*4]
		push	edx
		push	offset Filename
		push	offset aSS	; "%s\\%s"
		push	eax		; char *
		call	_sprintf
		lea	ecx, [esp+11Ch+var_104]
		push	ecx		; char *
		call	sub_408AF0
		add	esp, 14h
		call	sub_408CE0
		mov	dl, [esi+1]
		mov	byte ptr [esi],	2
		mov	[esi+2], dl
		pop	esi
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_408F9E:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		mov	dword_4170D4, 0FFFFFFFFh ; jumptable 00408F3B case 1
		mov	byte_4170D0, 1

loc_408FAF:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		push	esi		; jumptable 00408F3B case 5
		mov	[esi+4], bx
		call	sub_408E20
		add	esp, 4

loc_408FBC:				; CODE XREF: sub_408F10+42j
		mov	[esi], bl

loc_408FBE:				; CODE XREF: sub_408F10+11j
					; sub_408F10+25j ...
		pop	esi		; jumptable 00408F3B default case
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_408FC7:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		mov	byte_4170D0, bl	; jumptable 00408F3B case 2
		mov	[esi], bl
		pop	esi
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_408FD8:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		inc	word ptr [esi+4] ; jumptable 00408F3B case 3
		push	esi
		call	sub_408E20
		add	esp, 4
		cmp	word ptr [esi+4], 0FAh
		jle	short loc_408FBE ; jumptable 00408F3B default case
		mov	[esi], bl
		mov	byte_4170D0, bl
		pop	esi
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------

loc_408FFE:				; CODE XREF: sub_408F10+2Bj
					; DATA XREF: .text:off_409018o
		push	esi		; jumptable 00408F3B case 4
		mov	word ptr [esi+4], 64h
		call	sub_408E20
		add	esp, 4
		mov	[esi], bl
		pop	esi
		pop	ebx
		add	esp, 104h
		retn
sub_408F10	endp

; ---------------------------------------------------------------------------
off_409018	dd offset loc_408F42	; DATA XREF: sub_408F10+2Br
		dd offset loc_408F9E	; jump table for switch	statement
		dd offset loc_408FC7
		dd offset loc_408FD8
		dd offset loc_408FFE
		dd offset loc_408FAF

; =============== S U B	R O U T	I N E =======================================


sub_409030	proc near		; CODE XREF: sub_401890+29Dp
					; sub_407E30+2A9p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	ebx
		xor	ebx, ebx
		cmp	word_417108, bx
		push	esi
		jnz	loc_409148
		movsx	ax, [esp+8+arg_4]
		sub	word_41710C, ax
		mov	word_417108, 64h
		jns	short loc_409060
		mov	word_41710C, bx

loc_409060:				; CODE XREF: sub_409030+27j
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_4090B8
		lea	ecx, [eax+eax*8]
		mov	dl, 0Ah
		lea	eax, [esi+ecx*4]
		mov	cl, [esp+8+arg_4]
		sub	dl, cl
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 2
		mov	[eax+2], dl
		mov	byte ptr [eax+3], 1
		mov	ecx, dword_4170F4
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, dword_4170F8
		add	edx, 0FFFFF000h
		mov	dword ptr [eax+1Ch], 1
		mov	[eax+8], edx
		mov	[eax+20h], ebx

loc_4090B8:				; CODE XREF: sub_409030+42j
		cmp	word_41710C, bx
		push	1
		jnz	short loc_40913E
		push	9
		call	sub_40A9C0
		push	esi
		mov	byte_4170F0, bl
		mov	byte_4170F1, 1
		call	sub_403820
		add	esp, 0Ch
		cmp	eax, 0FFFFFFh
		jz	short loc_409148
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		pop	esi
		mov	byte ptr [eax],	1
		mov	[eax+1], bl
		mov	[eax+2], bl
		mov	byte ptr [eax+3], 1Eh
		mov	ecx, dword_4170F4
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, dword_4170F8
		add	edx, 2000h
		mov	ecx, 0FFFFF400h
		mov	[eax+20h], ebx
		mov	[eax+8], edx
		mov	dword ptr [eax+0Ch], 0C00h
		mov	[eax+10h], ecx
		mov	dword ptr [eax+14h], 200h
		mov	[eax+18h], ecx
		mov	dword ptr [eax+1Ch], 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_40913E:				; CODE XREF: sub_409030+91j
		push	2
		call	sub_40A9C0
		add	esp, 8

loc_409148:				; CODE XREF: sub_409030+Bj
					; sub_409030+B5j
		pop	esi
		pop	ebx
		retn
sub_409030	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409150	proc near		; CODE XREF: sub_409CA0+E1p

var_1		= byte ptr -1
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	ecx
		mov	cl, [esp+4+arg_8]
		push	ebx
		mov	al, cl
		push	ebp
		mov	ebp, [esp+0Ch+arg_4]
		and	al, 1
		push	esi
		push	edi
		mov	[esp+14h+var_1], al
		jz	loc_409276
		test	cl, 2
		jz	loc_409276
		mov	ecx, dword_4170F4
		mov	edi, [esp+14h+arg_0]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		shl	edi, 4
		add	eax, edx
		lea	esi, [edi+0Fh]
		sar	eax, 0Ah
		cmp	eax, esi
		jge	short loc_4091FF
		mov	esi, dword_4170F8
		mov	ebx, ebp
		mov	eax, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409205
		cmp	dword_4170FC, 0FFFFFC00h
		jge	short loc_4091D4
		push	1
		push	4
		call	sub_40A9C0
		mov	esi, dword_4170F8
		add	esp, 8

loc_4091D4:				; CODE XREF: sub_409150+70j
		mov	ecx, [esp+14h+arg_0]
		mov	al, byte_417118
		shl	ecx, 0Eh
		add	ecx, 3C00h
		or	al, 1
		mov	dword_4170F4, ecx
		mov	dword_4170FC, 0
		mov	byte_417118, al
		jmp	short loc_409205
; ---------------------------------------------------------------------------

loc_4091FF:				; CODE XREF: sub_409150+44j
		mov	esi, dword_4170F8

loc_409205:				; CODE XREF: sub_409150+64j
					; sub_409150+ADj
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409282
		mov	eax, ecx
		add	edi, 0Ch
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, edi
		jge	short loc_409282
		cmp	dword_417100, 0FFFFFC00h
		jge	short loc_409252
		push	1
		push	4
		call	sub_40A9C0
		mov	ecx, dword_4170F4
		add	esp, 8

loc_409252:				; CODE XREF: sub_409150+EEj
		mov	al, byte_417118
		lea	esi, [ebp+1]
		shl	esi, 0Eh
		or	al, 2
		mov	dword_4170F8, esi
		mov	dword_417100, 0
		mov	byte_417118, al
		jmp	short loc_409282
; ---------------------------------------------------------------------------

loc_409276:				; CODE XREF: sub_409150+15j
					; sub_409150+1Ej
		mov	esi, dword_4170F8
		mov	ecx, dword_4170F4

loc_409282:				; CODE XREF: sub_409150+CDj
					; sub_409150+E2j ...
		mov	dl, [esp+14h+arg_8]
		mov	al, dl
		and	al, 4
		mov	byte ptr [esp+14h+arg_4], al
		jz	loc_40938D
		test	dl, 2
		jz	loc_40938D
		mov	edi, [esp+14h+arg_0]
		lea	eax, [ecx+3FFh]
		cdq
		and	edx, 3FFh
		shl	edi, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [edi-0Eh]
		cmp	eax, edx
		jle	short loc_40931E
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_40931E
		cmp	dword_4170FC, 400h
		jle	short loc_4092F5
		push	1
		push	4
		call	sub_40A9C0
		mov	esi, dword_4170F8
		add	esp, 8

loc_4092F5:				; CODE XREF: sub_409150+191j
		mov	ecx, [esp+14h+arg_0]
		mov	al, byte_417118
		shl	ecx, 0Eh
		sub	ecx, 3800h
		or	al, 4
		mov	dword_4170F4, ecx
		mov	dword_4170FC, 0
		mov	byte_417118, al

loc_40931E:				; CODE XREF: sub_409150+16Bj
					; sub_409150+185j
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_40938D
		mov	eax, ecx
		add	edi, 0FFFFFFF4h
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, edi
		jle	short loc_40938D
		cmp	dword_417100, 0FFFFFC00h
		jge	short loc_40936B
		push	1
		push	4
		call	sub_40A9C0
		mov	ecx, dword_4170F4
		add	esp, 8

loc_40936B:				; CODE XREF: sub_409150+207j
		mov	al, byte_417118
		lea	esi, [ebp+1]
		shl	esi, 0Eh
		or	al, 2
		mov	dword_4170F8, esi
		mov	dword_417100, 0
		mov	byte_417118, al

loc_40938D:				; CODE XREF: sub_409150+13Ej
					; sub_409150+147j ...
		mov	al, [esp+14h+var_1]
		test	al, al
		jz	loc_40947E
		test	[esp+14h+arg_8], 8
		jz	loc_40947E
		mov	edi, [esp+14h+arg_0]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		shl	edi, 4
		add	eax, edx
		lea	ebx, [edi+0Fh]
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409421
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_409421
		cmp	dword_4170FC, 0FFFFFC00h
		jge	short loc_4093F8
		push	1
		push	4
		call	sub_40A9C0
		mov	esi, dword_4170F8
		add	esp, 8

loc_4093F8:				; CODE XREF: sub_409150+294j
		mov	ecx, [esp+14h+arg_0]
		mov	al, byte_417118
		shl	ecx, 0Eh
		add	ecx, 3C00h
		or	al, 1
		mov	dword_4170F4, ecx
		mov	dword_4170FC, 0
		mov	byte_417118, al

loc_409421:				; CODE XREF: sub_409150+26Ej
					; sub_409150+288j
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 10h
		sar	eax, 0Ah
		cmp	eax, ebx
		jl	short loc_40947E
		mov	eax, ecx
		add	edi, 0Ch
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, edi
		jge	short loc_40947E
		mov	edx, dword_417100
		mov	esi, ebp
		shl	esi, 0Eh
		xor	eax, eax
		sub	esi, 4000h
		cmp	edx, eax
		mov	byte_417117, al
		mov	dword_4170F8, esi
		jle	short loc_409477
		mov	dword_417100, eax

loc_409477:				; CODE XREF: sub_409150+320j
		or	byte_417118, 8

loc_40947E:				; CODE XREF: sub_409150+243j
					; sub_409150+24Ej ...
		mov	al, byte ptr [esp+14h+arg_4]
		test	al, al
		jz	loc_40957C
		test	[esp+14h+arg_8], 8
		jz	loc_40957C
		mov	edi, [esp+14h+arg_0]
		lea	eax, [ecx+3FFh]
		cdq
		and	edx, 3FFh
		shl	edi, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [edi-0Eh]
		cmp	eax, edx
		jle	short loc_409516
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_409516
		cmp	dword_4170FC, 400h
		jle	short loc_4094ED
		push	1
		push	4
		call	sub_40A9C0
		mov	esi, dword_4170F8
		add	esp, 8

loc_4094ED:				; CODE XREF: sub_409150+389j
		mov	ecx, [esp+14h+arg_0]
		mov	al, byte_417118
		shl	ecx, 0Eh
		sub	ecx, 3800h
		or	al, 4
		mov	dword_4170F4, ecx
		mov	dword_4170FC, 0
		mov	byte_417118, al

loc_409516:				; CODE XREF: sub_409150+363j
					; sub_409150+37Dj
		mov	eax, esi
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 10h
		sar	eax, 0Ah
		cmp	eax, ebx
		jl	short loc_40957C
		mov	eax, ecx
		add	edi, 0FFFFFFF4h
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, edi
		jle	short loc_40957C
		mov	ecx, dword_417100
		xor	eax, eax
		shl	ebp, 0Eh
		sub	ebp, 4000h
		cmp	ecx, eax
		mov	byte_417117, al
		mov	dword_4170F8, ebp
		jle	short loc_40956A
		mov	dword_417100, eax

loc_40956A:				; CODE XREF: sub_409150+413j
		mov	al, byte_417118
		pop	edi
		or	al, 8
		pop	esi
		pop	ebp
		mov	byte_417118, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40957C:				; CODE XREF: sub_409150+334j
					; sub_409150+33Fj ...
		mov	al, byte_417118
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_409150	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409590	proc near		; CODE XREF: sub_409CA0+199p

var_1		= byte ptr -1
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	ecx
		mov	cl, byte ptr [esp+4+arg_8]
		push	ebx
		mov	al, cl
		push	ebp
		mov	ebp, [esp+0Ch+arg_0]
		and	al, 1
		push	esi
		mov	esi, [esp+10h+arg_4]
		push	edi
		mov	byte_417118, 0
		mov	[esp+14h+var_1], al
		jz	loc_40968F
		test	cl, 2
		jz	loc_40968F
		mov	ecx, dword_4170F4
		mov	eax, ebp
		shl	eax, 4
		mov	[esp+14h+arg_0], eax
		lea	edi, [eax+0Fh]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, edi
		mov	edi, dword_4170F8
		jge	short loc_40962F
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_40962F
		mov	cl, byte_4170F2
		mov	al, 1
		cmp	cl, al
		jz	short loc_409619
		mov	dword_4170FC, 0

loc_409619:				; CODE XREF: sub_409590+7Dj
		mov	ecx, ebp
		mov	byte_417118, al
		shl	ecx, 0Eh
		add	ecx, 3C00h
		mov	dword_4170F4, ecx

loc_40962F:				; CODE XREF: sub_409590+57j
					; sub_409590+71j
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_40969B
		mov	eax, [esp+14h+arg_0]
		lea	ebx, [eax+0Ch]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_40969B
		cmp	byte_4170F2, 1
		jz	short loc_409675
		mov	dword_417100, 0

loc_409675:				; CODE XREF: sub_409590+D9j
		mov	al, byte_417118
		lea	edi, [esi+1]
		shl	edi, 0Eh
		or	al, 2
		mov	dword_4170F8, edi
		mov	byte_417118, al
		jmp	short loc_40969B
; ---------------------------------------------------------------------------

loc_40968F:				; CODE XREF: sub_409590+20j
					; sub_409590+29j
		mov	edi, dword_4170F8
		mov	ecx, dword_4170F4

loc_40969B:				; CODE XREF: sub_409590+B7j
					; sub_409590+D0j ...
		mov	dl, byte ptr [esp+14h+arg_8]
		mov	al, dl
		and	al, 4
		mov	byte ptr [esp+14h+arg_4], al
		jz	loc_409780
		test	dl, 2
		jz	loc_409780
		lea	eax, [ecx+3FFh]
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		mov	[esp+14h+arg_0], ebx
		sar	eax, 0Ah
		add	ebx, 0FFFFFFF2h
		cmp	eax, ebx
		jle	short loc_409722
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409722
		cmp	byte_4170F2, 1
		jz	short loc_409705
		mov	dword_4170FC, 0

loc_409705:				; CODE XREF: sub_409590+169j
		mov	al, byte_417118
		mov	ecx, ebp
		shl	ecx, 0Eh
		sub	ecx, 3800h
		or	al, 4
		mov	dword_4170F4, ecx
		mov	byte_417118, al

loc_409722:				; CODE XREF: sub_409590+146j
					; sub_409590+160j
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		add	ebx, 0Fh
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409780
		mov	edx, [esp+14h+arg_0]
		mov	eax, ecx
		lea	ebx, [edx-0Ch]
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_409780
		cmp	byte_4170F2, 1
		jz	short loc_409768
		mov	dword_417100, 0

loc_409768:				; CODE XREF: sub_409590+1CCj
		mov	al, byte_417118
		lea	edi, [esi+1]
		shl	edi, 0Eh
		or	al, 2
		mov	dword_4170F8, edi
		mov	byte_417118, al

loc_409780:				; CODE XREF: sub_409590+117j
					; sub_409590+120j ...
		mov	al, [esp+14h+var_1]
		test	al, al
		jz	loc_409877
		test	byte ptr [esp+14h+arg_8], 8
		jz	loc_409877
		mov	eax, ebp
		shl	eax, 4
		mov	[esp+14h+arg_0], eax
		lea	ebx, [eax+0Fh]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409804
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_409804
		mov	cl, byte_4170F2
		mov	al, 1
		cmp	cl, al
		jz	short loc_4097E5
		mov	dword_4170FC, 0

loc_4097E5:				; CODE XREF: sub_409590+249j
		mov	dl, byte_417118
		mov	ecx, ebp
		shl	ecx, 0Eh
		add	ecx, 3C00h
		or	dl, al
		mov	dword_4170F4, ecx
		mov	byte_417118, dl

loc_409804:				; CODE XREF: sub_409590+223j
					; sub_409590+23Dj
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 10h
		sar	eax, 0Ah
		cmp	eax, ebx
		jl	short loc_409877
		mov	eax, [esp+14h+arg_0]
		lea	ebx, [eax+0Ch]
		mov	eax, ecx
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebx
		jge	short loc_409877
		cmp	byte_4170F2, 1
		jz	short loc_40985A
		mov	eax, dword_417100
		mov	byte_417117, 0
		test	eax, eax
		jle	short loc_40985A
		mov	dword_417100, 0

loc_40985A:				; CODE XREF: sub_409590+2AEj
					; sub_409590+2BEj
		mov	al, byte_417118
		mov	edi, esi
		shl	edi, 0Eh
		sub	edi, 4000h
		or	al, 8
		mov	dword_4170F8, edi
		mov	byte_417118, al

loc_409877:				; CODE XREF: sub_409590+1F6j
					; sub_409590+201j ...
		mov	al, byte ptr [esp+14h+arg_4]
		test	al, al
		jz	loc_409973
		test	byte ptr [esp+14h+arg_8], 8
		jz	loc_409973
		lea	eax, [ecx+3FFh]
		mov	ebx, ebp
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		mov	[esp+14h+arg_0], ebx
		sar	eax, 0Ah
		lea	edx, [ebx-0Eh]
		cmp	eax, edx
		jle	short loc_4098FE
		mov	eax, edi
		mov	ebx, esi
		cdq
		and	edx, 3FFh
		shl	ebx, 4
		add	eax, edx
		sub	ebx, 0Ch
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_4098FA
		cmp	byte_4170F2, 1
		jz	short loc_4098DD
		mov	dword_4170FC, 0

loc_4098DD:				; CODE XREF: sub_409590+341j
		mov	al, byte_417118
		mov	ecx, ebp
		shl	ecx, 0Eh
		sub	ecx, 3800h
		or	al, 4
		mov	dword_4170F4, ecx
		mov	byte_417118, al

loc_4098FA:				; CODE XREF: sub_409590+338j
		mov	ebx, [esp+14h+arg_0]

loc_4098FE:				; CODE XREF: sub_409590+31Ej
		mov	edx, esi
		mov	eax, edi
		shl	edx, 4
		sub	edx, 10h
		mov	[esp+14h+arg_8], edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	edx, [esp+14h+arg_8]
		sar	eax, 0Ah
		cmp	eax, edx
		jl	short loc_409973
		mov	eax, ecx
		add	ebx, 0FFFFFFF4h
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	eax, 0Ah
		cmp	eax, ebx
		jle	short loc_409973
		cmp	byte_4170F2, 1
		jz	short loc_409958
		mov	eax, dword_417100
		mov	byte_417117, 0
		test	eax, eax
		jle	short loc_409958
		mov	dword_417100, 0

loc_409958:				; CODE XREF: sub_409590+3ACj
					; sub_409590+3BCj
		mov	eax, esi
		shl	eax, 0Eh
		sub	eax, 4000h
		mov	dword_4170F8, eax
		mov	al, byte_417118
		or	al, 8
		mov	byte_417118, al

loc_409973:				; CODE XREF: sub_409590+2EDj
					; sub_409590+2F8j ...
		mov	al, byte_4170F2
		cmp	al, 1
		mov	al, byte_417118
		jnz	short loc_409989
		cmp	al, 8
		jz	short loc_409989
		test	al, al
		jnz	short loc_40999E

loc_409989:				; CODE XREF: sub_409590+3EFj
					; sub_409590+3F3j
		test	byte_4170F3, 1
		jz	loc_409A20
		test	al, 2
		jz	loc_409A20

loc_40999E:				; CODE XREF: sub_409590+3F7j
		push	1
		push	5
		call	sub_40A9C0
		mov	eax, [esp+1Ch+arg_10]
		mov	edi, [esp+1Ch+arg_C]
		push	edi
		mov	ecx, [eax+8]
		mov	edx, [eax]
		imul	ecx, esi
		add	ecx, edx
		mov	byte ptr [ecx+ebp], 0
		call	sub_403820
		add	esp, 0Ch
		cmp	eax, 0FFFFFFh
		jz	short loc_409A1B
		lea	edx, [eax+eax*8]
		mov	ecx, 0FFFFFC00h
		shl	ebp, 0Eh
		lea	eax, [edi+edx*4]
		add	ebp, 2000h
		shl	esi, 0Eh
		mov	[eax+10h], ecx
		mov	[eax+18h], ecx
		add	esi, 2000h
		mov	edx, 400h
		mov	ecx, 8
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 1
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 5
		mov	[eax+4], ebp
		mov	[eax+8], esi
		mov	[eax+0Ch], edx
		mov	[eax+14h], edx
		mov	[eax+1Ch], ecx
		mov	[eax+20h], ecx

loc_409A1B:				; CODE XREF: sub_409590+43Bj
		mov	al, byte_417118

loc_409A20:				; CODE XREF: sub_409590+400j
					; sub_409590+408j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_409590	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409A30	proc near		; CODE XREF: sub_409CA0+13Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, dword_4170F4
		mov	ecx, [esp+arg_0]
		cdq
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+0Ah]
		cmp	eax, edx
		jge	short locret_409A8B
		add	ecx, 0FFFFFFF6h
		cmp	eax, ecx
		jle	short locret_409A8B
		mov	eax, dword_4170F8
		mov	ecx, [esp+arg_4]
		cdq
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+0Ah]
		cmp	eax, edx
		jge	short locret_409A8B
		add	ecx, 0FFFFFFF6h
		cmp	eax, ecx
		jle	short locret_409A8B
		mov	eax, [esp+arg_8]
		push	3
		push	eax
		call	sub_409030
		add	esp, 8

locret_409A8B:				; CODE XREF: sub_409A30+1Dj
					; sub_409A30+24j ...
		retn
sub_409A30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409A90	proc near		; CODE XREF: sub_409CA0+123p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, dword_4170F4
		mov	ecx, [esp+arg_0]
		cdq
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+8]
		cmp	eax, edx
		jge	short locret_409B13 ; jumptable	00409AED default case
		add	ecx, 0FFFFFFF8h
		cmp	eax, ecx
		jl	short locret_409B13 ; jumptable	00409AED default case
		mov	eax, dword_4170F8
		mov	ecx, [esp+arg_4]
		cdq
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+8]
		cmp	eax, edx
		jge	short locret_409B13 ; jumptable	00409AED default case
		add	ecx, 0FFFFFFF8h
		cmp	eax, ecx
		jl	short locret_409B13 ; jumptable	00409AED default case
		mov	eax, [esp+arg_8]
		and	eax, 0FFh
		add	eax, 0FFFFFFA0h	; switch 4 cases
		cmp	eax, 3
		ja	short locret_409B13 ; jumptable	00409AED default case
		jmp	ds:off_409B14[eax*4] ; switch jump
; ---------------------------------------------------------------------------

loc_409AF4:				; CODE XREF: sub_409A90+5Dj
					; DATA XREF: .text:off_409B14o
		sub	dword_4170FC, 32h ; jumptable 00409AED case 96
		retn
; ---------------------------------------------------------------------------

loc_409AFC:				; CODE XREF: sub_409A90+5Dj
					; DATA XREF: .text:off_409B14o
		add	dword_4170FC, 32h ; jumptable 00409AED case 97
		retn
; ---------------------------------------------------------------------------

loc_409B04:				; CODE XREF: sub_409A90+5Dj
					; DATA XREF: .text:off_409B14o
		sub	dword_417100, 32h ; jumptable 00409AED case 98
		retn
; ---------------------------------------------------------------------------

loc_409B0C:				; CODE XREF: sub_409A90+5Dj
					; DATA XREF: .text:off_409B14o
		add	dword_417100, 32h ; jumptable 00409AED case 99

locret_409B13:				; CODE XREF: sub_409A90+1Dj
					; sub_409A90+24j ...
		retn			; jumptable 00409AED default case
sub_409A90	endp

; ---------------------------------------------------------------------------
off_409B14	dd offset loc_409AF4	; DATA XREF: sub_409A90+5Dr
		dd offset loc_409AFC	; jump table for switch	statement
		dd offset loc_409B04
		dd offset loc_409B0C
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409B30	proc near		; CODE XREF: sub_409CA0+163p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, dword_4170F4
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		cdq
		mov	ecx, edi
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+8]
		cmp	eax, edx
		jge	loc_409C90
		add	ecx, 0FFFFFFF8h
		cmp	eax, ecx
		jle	loc_409C90
		mov	eax, dword_4170F8
		mov	esi, [esp+0Ch+arg_4]
		cdq
		mov	ecx, esi
		and	edx, 3FFh
		shl	ecx, 4
		add	eax, edx
		sar	eax, 0Ah
		lea	edx, [ecx+8]
		cmp	eax, edx
		jge	loc_409C90
		add	ecx, 0FFFFFFF8h
		cmp	eax, ecx
		jle	loc_409C90
		mov	eax, [esp+0Ch+arg_C]
		mov	ecx, [eax+8]
		mov	ebx, [eax]
		imul	ecx, esi
		add	ecx, ebx
		xor	ebx, ebx
		mov	[ecx+edi], bl
		mov	edi, 1
		push	edi
		push	3
		call	sub_40A9C0
		movsx	edx, byte_417110
		mov	cx, word_41710C
		add	esp, 8
		mov	ax, word_412FFC[edx*2]
		inc	cx
		inc	word_41710E
		cmp	cx, ax
		mov	word_41710C, cx
		jle	short loc_409BE7
		mov	word_41710C, ax

loc_409BE7:				; CODE XREF: sub_409B30+AFj
		mov	esi, [esp+0Ch+arg_8]
		push	esi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_409C34
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 2
		mov	byte ptr [eax+2], 0Bh
		mov	byte ptr [eax+3], 1
		mov	ecx, dword_4170F4
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, dword_4170F8
		add	edx, 0FFFFF000h
		mov	[eax+1Ch], edi
		mov	[eax+8], edx
		mov	[eax+20h], ebx

loc_409C34:				; CODE XREF: sub_409B30+C9j
		push	esi
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_409C90
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		mov	byte ptr [eax],	1
		mov	[eax+1], bl
		mov	[eax+2], bl
		mov	byte ptr [eax+3], 4
		mov	ecx, dword_4170F4
		add	ecx, 2000h
		mov	[eax+4], ecx
		mov	edx, dword_4170F8
		add	edx, 2000h
		mov	ecx, 0FFFFF800h
		mov	[eax+8], edx
		mov	dword ptr [eax+0Ch], 800h
		mov	[eax+10h], ecx
		mov	[eax+14h], ebx
		mov	[eax+18h], ecx
		mov	[eax+1Ch], edi
		mov	[eax+20h], ebx

loc_409C90:				; CODE XREF: sub_409B30+22j
					; sub_409B30+2Dj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409B30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409CA0	proc near		; CODE XREF: sub_405350+8A8p

var_1D		= byte ptr -1Dh
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 20h
		mov	eax, dword_4170F4
		push	ebx
		cdq
		and	edx, 3FFh
		push	ebp
		add	eax, edx
		push	esi
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		push	edi
		add	eax, edx
		mov	[esp+30h+var_C], 0
		mov	esi, eax
		mov	eax, dword_4170F8
		cdq
		and	edx, 3FFh
		mov	[esp+30h+var_B], 1
		add	eax, edx
		mov	[esp+30h+var_A], 0
		sar	eax, 0Ah
		cdq
		and	edx, 0Fh
		mov	[esp+30h+var_9], 1
		add	eax, edx
		mov	[esp+30h+var_10], 0
		sar	esi, 4
		sar	eax, 4
		xor	ecx, ecx
		mov	[esp+30h+var_F], 0
		mov	[esp+30h+var_E], 1
		mov	[esp+30h+var_D], 1
		mov	[esp+30h+var_1C], 0
		mov	[esp+30h+var_1B], 0
		mov	[esp+30h+var_1A], 1
		mov	[esp+30h+var_19], 1
		mov	[esp+30h+var_14], 3
		mov	[esp+30h+var_13], 6
		mov	[esp+30h+var_12], 9
		mov	[esp+30h+var_11], 0Ch
		mov	[esp+30h+var_4], eax
		mov	[esp+30h+var_1D], 4
		mov	byte_417118, 0
		mov	[esp+30h+var_18], ecx
		jmp	short loc_409D49
; ---------------------------------------------------------------------------

loc_409D45:				; CODE XREF: sub_409CA0+1D7j
		mov	eax, [esp+30h+var_4]

loc_409D49:				; CODE XREF: sub_409CA0+A3j
		movsx	edx, [esp+ecx+30h+var_10]
		movsx	ebp, [esp+ecx+30h+var_C]
		lea	edi, [edx+eax]
		mov	eax, [esp+30h+arg_0]
		mov	edx, [eax+8]
		mov	ebx, [eax]
		imul	edx, edi
		add	edx, ebp
		add	edx, ebx
		mov	bl, [edx+esi]
		cmp	bl, 7Fh
		mov	byte ptr [esp+30h+var_8], bl
		jbe	short loc_409DA1
		cmp	bl, 0A0h
		jnb	short loc_409DA1
		mov	al, [esp+ecx+30h+var_14]
		lea	ecx, [esi+ebp]
		push	eax
		push	edi
		push	ecx
		call	sub_409150
		add	esp, 0Ch
		test	al, 8
		jnz	short loc_409DAF
		mov	edx, [esp+30h+var_18]
		mov	cl, [esp+30h+var_1D]
		mov	al, [esp+edx+30h+var_1C]
		sub	cl, al
		mov	[esp+30h+var_1D], cl
		jmp	short loc_409DAF
; ---------------------------------------------------------------------------

loc_409DA1:				; CODE XREF: sub_409CA0+D0j
					; sub_409CA0+D5j
		mov	cl, [esp+ecx+30h+var_1C]
		mov	al, [esp+30h+var_1D]
		sub	al, cl
		mov	[esp+30h+var_1D], al

loc_409DAF:				; CODE XREF: sub_409CA0+EBj
					; sub_409CA0+FFj
		cmp	bl, 5Fh
		jbe	short loc_409DCB
		cmp	bl, 80h
		jnb	short loc_409DCB
		mov	edx, [esp+30h+var_8]
		lea	eax, [esi+ebp]
		push	edx
		push	edi
		push	eax
		call	sub_409A90
		add	esp, 0Ch

loc_409DCB:				; CODE XREF: sub_409CA0+112j
					; sub_409CA0+117j
		cmp	bl, 9Fh
		jbe	short loc_409DEB
		cmp	bl, 0C0h
		jnb	short loc_409DEB
		mov	ecx, [esp+30h+arg_4]
		add	ebp, esi
		push	ecx
		push	edi
		push	ebp
		call	sub_409A30
		add	esp, 0Ch
		jmp	loc_409E6B
; ---------------------------------------------------------------------------

loc_409DEB:				; CODE XREF: sub_409CA0+12Ej
					; sub_409CA0+133j
		cmp	bl, 3Fh
		jbe	short loc_409E0D
		cmp	bl, 60h
		jnb	short loc_409E0D
		mov	edx, [esp+30h+arg_0]
		mov	eax, [esp+30h+arg_4]
		push	edx
		push	eax
		add	ebp, esi
		push	edi
		push	ebp
		call	sub_409B30
		add	esp, 10h
		jmp	short loc_409E6B
; ---------------------------------------------------------------------------

loc_409E0D:				; CODE XREF: sub_409CA0+14Ej
					; sub_409CA0+153j
		cmp	bl, 0DFh
		jbe	short loc_409E59
		mov	eax, [esp+30h+var_8]
		and	eax, 0FFh
		cmp	eax, 100h
		jge	short loc_409E59
		mov	ecx, [esp+30h+arg_0]
		mov	eax, [esp+30h+var_18]
		mov	edx, [esp+30h+arg_4]
		push	ecx
		mov	cl, [esp+eax+34h+var_14]
		push	edx
		push	ecx
		add	ebp, esi
		push	edi
		push	ebp
		call	sub_409590
		add	esp, 14h
		test	al, 8
		jnz	short loc_409E6B
		mov	edx, [esp+30h+var_18]
		mov	cl, [esp+30h+var_1D]
		mov	al, [esp+edx+30h+var_1C]
		sub	cl, al
		mov	[esp+30h+var_1D], cl
		jmp	short loc_409E6B
; ---------------------------------------------------------------------------

loc_409E59:				; CODE XREF: sub_409CA0+170j
					; sub_409CA0+180j
		mov	ecx, [esp+30h+var_18]
		mov	al, [esp+30h+var_1D]
		mov	dl, [esp+ecx+30h+var_1C]
		sub	al, dl
		mov	[esp+30h+var_1D], al

loc_409E6B:				; CODE XREF: sub_409CA0+146j
					; sub_409CA0+16Bj ...
		mov	ecx, [esp+30h+var_18]
		inc	ecx
		cmp	ecx, 4
		mov	[esp+30h+var_18], ecx
		jl	loc_409D45
		mov	al, byte_417110
		movsx	ecx, al
		mov	cx, word_41300C[ecx*2]
		cmp	word_41710E, cx
		jl	loc_409F2B
		sub	word_41710E, cx
		inc	al
		cmp	al, 6
		mov	byte_417110, al
		jle	short loc_409EB5
		mov	byte_417110, 6
		jmp	short loc_409EC1
; ---------------------------------------------------------------------------

loc_409EB5:				; CODE XREF: sub_409CA0+20Aj
		push	1
		push	0Bh
		call	sub_40A9C0
		add	esp, 8

loc_409EC1:				; CODE XREF: sub_409CA0+213j
		movsx	edx, byte_417110
		mov	esi, [esp+30h+arg_4]
		mov	ax, word_412FFC[edx*2]
		push	esi
		mov	word_41710C, ax
		call	sub_403820
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	short loc_409F2B
		lea	ecx, [eax+eax*8]
		lea	eax, [esi+ecx*4]
		mov	byte ptr [eax],	1
		mov	byte ptr [eax+1], 3
		mov	byte ptr [eax+2], 0
		mov	byte ptr [eax+3], 1
		mov	edx, dword_4170F4
		add	edx, 2000h
		mov	[eax+4], edx
		mov	ecx, dword_4170F8
		add	ecx, 0FFFFF000h
		mov	dword ptr [eax+1Ch], 1
		mov	[eax+8], ecx
		mov	dword ptr [eax+20h], 0

loc_409F2B:				; CODE XREF: sub_409CA0+1F4j
					; sub_409CA0+248j
		mov	al, [esp+30h+var_1D]
		pop	edi
		pop	esi
		pop	ebp
		cmp	al, 1
		pop	ebx
		jge	short loc_409F3E
		mov	byte_417117, 1

loc_409F3E:				; CODE XREF: sub_409CA0+295j
		add	esp, 20h
		retn
sub_409CA0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_409F50	proc near		; CODE XREF: sub_405350+8D1p

arg_0		= dword	ptr  4

		mov	al, byte_417116
		mov	cl, byte_417104
		shl	al, 2
		add	al, cl
		mov	cl, byte_4170F3
		test	cl, 8
		push	esi
		jz	short loc_409FDD
		mov	ecx, [esp+4+arg_0]
		push	15h
		movsx	eax, al
		shl	eax, 4
		add	eax, offset unk_4130E0
		push	eax
		mov	eax, [ecx+8]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	esi, eax
		mov	eax, dword_4170F8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	esi, 0Ah
		sar	eax, 0Ah
		sub	eax, esi
		sub	eax, 0Ch
		push	eax
		mov	eax, [ecx+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_4170F4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		sub	eax, 0Ch
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_409FDD:				; CODE XREF: sub_409F50+1Aj
		test	cl, 1
		jz	short loc_409FE6
		push	2
		jmp	short loc_409FE8
; ---------------------------------------------------------------------------

loc_409FE6:				; CODE XREF: sub_409F50+90j
		push	16h

loc_409FE8:				; CODE XREF: sub_409F50+94j
		mov	ecx, [esp+8+arg_0]
		movsx	edx, al
		mov	eax, [ecx+8]
		shl	edx, 4
		add	edx, offset unk_413020
		push	edx
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	esi, eax
		mov	eax, dword_4170F8
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	esi, 0Ah
		sar	eax, 0Ah
		sub	eax, esi
		push	eax
		mov	eax, [ecx+4]
		cdq
		and	edx, 3FFh
		add	eax, edx
		mov	ecx, eax
		mov	eax, dword_4170F4
		cdq
		and	edx, 3FFh
		add	eax, edx
		sar	ecx, 0Ah
		sar	eax, 0Ah
		sub	eax, ecx
		push	eax
		push	offset unk_412680
		call	sub_4024C0
		add	esp, 14h
		pop	esi
		retn
sub_409F50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A060	proc near		; CODE XREF: sub_405350:loc_405D2Cp
					; sub_405350+AD1p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 10h
		xor	eax, eax
		mov	[esp+10h+var_8], 58h
		mov	[esp+10h+var_10], eax
		mov	[esp+10h+var_C], eax
		push	eax
		lea	eax, [esp+14h+var_10]
		push	eax
		push	8
		push	8
		push	offset unk_412680
		mov	[esp+24h+var_4], 20h
		call	sub_4024C0
		movsx	ecx, byte_417110
		push	ecx
		push	8
		push	10h
		call	sub_403C40
		movsx	edx, word_41710E
		push	edx
		push	10h
		push	10h
		call	sub_403C40
		movsx	eax, byte_417110
		movsx	ecx, word_41300C[eax*2]
		push	ecx
		push	10h
		push	30h
		call	sub_403C40
		movsx	edx, word_41710C
		push	edx
		push	18h
		push	10h
		call	sub_403C40
		movsx	eax, byte_417110
		add	esp, 44h
		movsx	ecx, word_412FFC[eax*2]
		push	ecx
		push	18h
		push	30h
		call	sub_403C40
		add	esp, 1Ch
		retn
sub_40A060	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A100	proc near		; CODE XREF: sub_40A6D0+11p
					; DATA XREF: .data:off_412FF0o

arg_0		= dword	ptr  4

		mov	dl, byte ptr dword_417A44
		push	ebx
		mov	ebx, 1
		push	esi
		test	bl, dl
		push	edi
		mov	byte_417116, 2
		jz	short loc_40A120
		mov	byte_417116, 0

loc_40A120:				; CODE XREF: sub_40A100+17j
		test	dl, 2
		jz	short loc_40A12B
		mov	byte_417116, bl

loc_40A12B:				; CODE XREF: sub_40A100+23j
		test	byte ptr dword_416CA0, 40h
		jz	loc_40A274
		cmp	word_417112, 0
		mov	esi, [esp+0Ch+arg_0]
		jnz	loc_40A278
		push	esi
		call	sub_403470
		mov	edi, eax
		add	esp, 4
		cmp	edi, 0FFFFFFh
		jz	loc_40A21A
		push	ebx
		push	ebx
		call	sub_40A9C0
		lea	eax, ds:0[edi*8]
		xor	ecx, ecx
		sub	eax, edi
		add	esp, 8
		lea	esi, [esi+eax*4]
		xor	eax, eax
		mov	[esi+1], bl
		mov	cl, byte_417116
		mov	edx, dword_4131E0[ecx*4]
		neg	edx
		mov	[esi+0Ch], edx
		mov	al, byte_417116
		mov	ecx, dword_4131EC[eax*4]
		xor	eax, eax
		neg	ecx
		mov	[esi+10h], ecx
		mov	[esi], bl
		mov	byte ptr [esi+14h], 0
		mov	dword ptr [esi+18h], 0
		mov	al, byte_417116
		sub	eax, 0
		jz	short loc_40A1FE
		dec	eax
		jz	short loc_40A1DE
		dec	eax
		jnz	short loc_40A21A
		mov	edx, dword_4170F4
		add	edx, 2400h
		mov	[esi+4], edx
		mov	eax, dword_4170F8
		add	eax, 3800h
		mov	[esi+8], eax
		jmp	short loc_40A21A
; ---------------------------------------------------------------------------

loc_40A1DE:				; CODE XREF: sub_40A100+BBj
		mov	ecx, dword_4170F4
		add	ecx, 800h
		mov	[esi+4], ecx
		mov	edx, dword_4170F8
		add	edx, 3000h
		mov	[esi+8], edx
		jmp	short loc_40A21A
; ---------------------------------------------------------------------------

loc_40A1FE:				; CODE XREF: sub_40A100+B8j
		mov	eax, dword_4170F4
		add	eax, 3800h
		mov	[esi+4], eax
		mov	ecx, dword_4170F8
		add	ecx, 3000h
		mov	[esi+8], ecx

loc_40A21A:				; CODE XREF: sub_40A100+5Bj
					; sub_40A100+BEj ...
		cmp	word_417106, 64h
		mov	word_417112, 8
		mov	byte_417104, bl
		jge	short loc_40A23B
		add	word_417106, 0Ah

loc_40A23B:				; CODE XREF: sub_40A100+131j
		mov	ecx, dword_4170FC
		xor	edx, edx
		mov	dl, byte_417116
		shl	edx, 2
		mov	eax, dword_4131E0[edx]
		mov	edi, dword_4131EC[edx]
		mov	dl, byte ptr dword_417A44
		add	ecx, eax
		mov	eax, dword_417100
		mov	dword_4170FC, ecx
		add	eax, edi
		mov	dword_417100, eax
		jmp	short loc_40A283
; ---------------------------------------------------------------------------

loc_40A274:				; CODE XREF: sub_40A100+32j
		mov	esi, [esp+0Ch+arg_0]

loc_40A278:				; CODE XREF: sub_40A100+44j
		mov	eax, dword_417100
		mov	ecx, dword_4170FC

loc_40A283:				; CODE XREF: sub_40A100+172j
		test	dl, 40h
		jz	short loc_40A2DB
		test	byte_4170F3, 2
		jz	short loc_40A2DB
		cmp	word_417114, 1Fh
		jnz	short loc_40A2B1
		push	ebx
		push	6
		call	sub_40A9C0
		mov	eax, dword_417100
		mov	ecx, dword_4170FC
		add	esp, 8

loc_40A2B1:				; CODE XREF: sub_40A100+199j
		mov	dx, word_417114
		mov	edi, 20h
		inc	dx
		cmp	dx, di
		mov	word_417114, dx
		jle	loc_40A3E5
		mov	word_417114, di
		jmp	loc_40A3E5
; ---------------------------------------------------------------------------

loc_40A2DB:				; CODE XREF: sub_40A100+186j
					; sub_40A100+18Fj
		mov	edi, 20h
		cmp	word_417114, di
		jnz	loc_40A3DC
		push	ebx
		push	7
		call	sub_40A9C0
		push	esi
		call	sub_403470
		add	esp, 0Ch
		cmp	eax, 0FFFFFFh
		jz	loc_40A3B3
		lea	edx, ds:0[eax*8]
		sub	edx, eax
		xor	eax, eax
		lea	ecx, [esi+edx*4]
		mov	[ecx+1], bl
		mov	al, byte_417116
		mov	eax, dword_4131F8[eax*4]
		cdq
		and	edx, 7
		add	eax, edx
		xor	edx, edx
		sar	eax, 3
		neg	eax
		mov	[ecx+0Ch], eax
		mov	dl, byte_417116
		mov	eax, dword_413204[edx*4]
		mov	[ecx], bl
		cdq
		and	edx, 7
		mov	byte ptr [ecx+14h], 0
		add	eax, edx
		mov	dword ptr [ecx+18h], 0
		sar	eax, 3
		neg	eax
		mov	[ecx+10h], eax
		xor	eax, eax
		mov	al, byte_417116
		sub	eax, 0
		jz	short loc_40A397
		dec	eax
		jz	short loc_40A38B
		dec	eax
		jnz	short loc_40A3B3
		mov	eax, dword_4170F4
		add	eax, 2400h
		mov	[ecx+4], eax
		mov	edx, dword_4170F8
		add	edx, 3800h
		jmp	short loc_40A3B0
; ---------------------------------------------------------------------------

loc_40A38B:				; CODE XREF: sub_40A100+26Bj
		mov	eax, dword_4170F4
		add	eax, 800h
		jmp	short loc_40A3A1
; ---------------------------------------------------------------------------

loc_40A397:				; CODE XREF: sub_40A100+268j
		mov	eax, dword_4170F4
		add	eax, 3800h

loc_40A3A1:				; CODE XREF: sub_40A100+295j
		mov	[ecx+4], eax
		mov	edx, dword_4170F8
		add	edx, 3000h

loc_40A3B0:				; CODE XREF: sub_40A100+289j
		mov	[ecx+8], edx

loc_40A3B3:				; CODE XREF: sub_40A100+203j
					; sub_40A100+26Ej
		xor	eax, eax
		mov	byte_4170F2, bl
		mov	al, byte_417116
		shl	eax, 2
		mov	ecx, dword_4131F8[eax]
		mov	eax, dword_413204[eax]
		mov	dword_4170FC, ecx
		mov	dword_417100, eax
		jmp	short loc_40A3E5
; ---------------------------------------------------------------------------

loc_40A3DC:				; CODE XREF: sub_40A100+1E7j
		mov	word_417114, 0

loc_40A3E5:				; CODE XREF: sub_40A100+1C9j
					; sub_40A100+1D6j ...
		cmp	word_417106, 0
		jle	short loc_40A3F8
		dec	word_417106
		jmp	short loc_40A3FF
; ---------------------------------------------------------------------------

loc_40A3F8:				; CODE XREF: sub_40A100+2EDj
		mov	byte_417104, 0

loc_40A3FF:				; CODE XREF: sub_40A100+2F6j
		cmp	word_417112, 0
		jle	short loc_40A410
		dec	word_417112

loc_40A410:				; CODE XREF: sub_40A100+307j
		cmp	word_417114, di
		pop	edi
		pop	esi
		pop	ebx
		jnz	short loc_40A423
		mov	byte_417104, 2

loc_40A423:				; CODE XREF: sub_40A100+31Aj
		cmp	eax, 800h
		jge	short loc_40A432
		add	eax, 14h
		mov	dword_417100, eax

loc_40A432:				; CODE XREF: sub_40A100+328j
		cmp	eax, 0FFFFF800h
		jge	short loc_40A440
		mov	eax, 0FFFFF800h
		jmp	short loc_40A44C
; ---------------------------------------------------------------------------

loc_40A440:				; CODE XREF: sub_40A100+337j
		cmp	eax, 800h
		jle	short loc_40A451
		mov	eax, 800h

loc_40A44C:				; CODE XREF: sub_40A100+33Ej
		mov	dword_417100, eax

loc_40A451:				; CODE XREF: sub_40A100+345j
		cmp	ecx, 0FFFFF800h
		jge	short loc_40A460
		mov	ecx, 0FFFFF800h
		jmp	short loc_40A480
; ---------------------------------------------------------------------------

loc_40A460:				; CODE XREF: sub_40A100+357j
		cmp	ecx, 800h
		jle	short loc_40A46F
		mov	ecx, 800h
		jmp	short loc_40A473
; ---------------------------------------------------------------------------

loc_40A46F:				; CODE XREF: sub_40A100+366j
		test	ecx, ecx
		jle	short loc_40A47E

loc_40A473:				; CODE XREF: sub_40A100+36Dj
		sub	ecx, 8
		mov	dword_4170FC, ecx
		test	ecx, ecx

loc_40A47E:				; CODE XREF: sub_40A100+371j
		jge	short loc_40A489

loc_40A480:				; CODE XREF: sub_40A100+35Ej
		add	ecx, 8
		mov	dword_4170FC, ecx

loc_40A489:				; CODE XREF: sub_40A100:loc_40A47Ej
		mov	dl, byte_417117
		test	dl, dl
		jnz	short loc_40A4AD
		test	ecx, ecx
		jle	short loc_40A4A2
		sub	ecx, 18h
		mov	dword_4170FC, ecx
		test	ecx, ecx

loc_40A4A2:				; CODE XREF: sub_40A100+395j
		jge	short loc_40A4AD
		add	ecx, 18h
		mov	dword_4170FC, ecx

loc_40A4AD:				; CODE XREF: sub_40A100+391j
					; sub_40A100:loc_40A4A2j
		cmp	ecx, 8
		jge	short loc_40A4B7
		cmp	ecx, 0FFFFFFF8h
		jg	short loc_40A4BD

loc_40A4B7:				; CODE XREF: sub_40A100+3B0j
		add	dword_4170F4, ecx

loc_40A4BD:				; CODE XREF: sub_40A100+3B5j
		mov	ecx, dword_4170F8
		add	ecx, eax
		cmp	word_417108, 0
		mov	dword_4170F8, ecx
		jz	short loc_40A4DC
		dec	word_417108

loc_40A4DC:				; CODE XREF: sub_40A100+3D3j
		cmp	word_41710A, 0
		jz	short locret_40A4ED
		dec	word_41710A

locret_40A4ED:				; CODE XREF: sub_40A100+3E4j
		retn
sub_40A100	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A4F0	proc near		; CODE XREF: sub_40A6D0+11p
					; DATA XREF: .data:00412FF4o

arg_0		= dword	ptr  4

		mov	ax, word_417114
		dec	ax
		test	ax, ax
		mov	word_417114, ax
		jg	short loc_40A50A
		mov	byte_4170F2, 0

loc_40A50A:				; CODE XREF: sub_40A4F0+11j
		movsx	eax, ax
		and	eax, 80000003h
		push	esi
		jns	short loc_40A51A
		dec	eax
		or	eax, 0FFFFFFFCh
		inc	eax

loc_40A51A:				; CODE XREF: sub_40A4F0+23j
		jnz	loc_40A5D1
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_403470
		add	esp, 4
		cmp	eax, 0FFFFFFh
		jz	loc_40A5D1
		lea	ecx, ds:0[eax*8]
		push	200h
		sub	ecx, eax
		push	0FFFFFE00h
		lea	esi, [esi+ecx*4]
		mov	byte ptr [esi+1], 1
		call	Random		; Creates random number	in given range
		xor	edx, edx
		mov	ecx, eax
		mov	dl, byte_417116
		push	200h
		push	0FFFFFE00h
		mov	eax, dword_4131F8[edx*4]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		sub	ecx, eax
		mov	[esi+0Ch], ecx
		call	Random		; Creates random number	in given range
		xor	edx, edx
		mov	ecx, eax
		mov	dl, byte_417116
		add	esp, 10h
		mov	eax, dword_413204[edx*4]
		mov	byte ptr [esi],	1
		cdq
		and	edx, 7
		mov	byte ptr [esi+14h], 0
		add	eax, edx
		mov	dword ptr [esi+18h], 0
		sar	eax, 3
		sub	ecx, eax
		mov	[esi+10h], ecx
		mov	eax, dword_4170F4
		add	eax, 2000h
		mov	[esi+4], eax
		mov	ecx, dword_4170F8
		add	ecx, 2000h
		mov	[esi+8], ecx

loc_40A5D1:				; CODE XREF: sub_40A4F0:loc_40A51Aj
					; sub_40A4F0+42j
		mov	edx, dword_4170FC
		mov	esi, dword_4170F4
		mov	eax, dword_417100
		mov	ecx, dword_4170F8
		add	esi, edx
		add	ecx, eax
		cmp	word_417108, 0
		mov	dword_4170F4, esi
		mov	dword_4170F8, ecx
		mov	byte_417104, 3
		pop	esi
		jz	short locret_40A611
		dec	word_417108

locret_40A611:				; CODE XREF: sub_40A4F0+118j
		retn
sub_40A4F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A620	proc near		; CODE XREF: sub_40A6D0+11p
					; DATA XREF: .data:00412FF8o

arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	esi
		call	sub_403820
		add	esp, 4
		xor	ecx, ecx
		cmp	eax, 0FFFFFFh
		jz	short loc_40A687
		lea	eax, [eax+eax*8]
		lea	eax, [esi+eax*4]
		mov	byte ptr [eax],	1
		mov	[eax+1], cl
		mov	[eax+2], cl
		mov	byte ptr [eax+3], 1
		mov	edx, dword_4170F4
		add	edx, 2000h
		mov	[eax+4], edx
		mov	edx, dword_4170F8
		add	edx, 6000h
		mov	dword ptr [eax+10h], 0FFFFF400h
		mov	[eax+8], edx
		mov	edx, 0C00h
		mov	[eax+0Ch], edx
		mov	[eax+14h], edx
		mov	[eax+18h], ecx
		mov	dword ptr [eax+1Ch], 1
		mov	[eax+20h], ecx

loc_40A687:				; CODE XREF: sub_40A620+15j
		mov	eax, dword_417100
		mov	edx, dword_4170F8
		sub	eax, 10h
		mov	dword_4170FC, ecx
		add	edx, eax
		cmp	word_417108, cx
		mov	dword_417100, eax
		mov	dword_4170F8, edx
		mov	byte_417104, 3
		pop	esi
		jz	short locret_40A6C0
		mov	word_417108, cx

locret_40A6C0:				; CODE XREF: sub_40A620+97j
		retn
sub_40A620	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A6D0	proc near		; CODE XREF: sub_405350+870p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	edx, [esp+arg_0]
		xor	eax, eax
		push	ecx
		mov	al, byte_4170F2
		push	edx
		call	off_412FF0[eax*4]
		add	esp, 8
		retn
sub_40A6D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A6F0	proc near		; CODE XREF: sub_405350+40p
		mov	dx, word_412FFC
		mov	cl, 1
		xor	eax, eax
		mov	byte_4170F0, cl
		mov	byte_4170F3, al
		mov	byte_4170F1, al
		mov	byte_417110, al
		mov	word_41710C, dx
		mov	word_41710E, ax
		mov	dword_4170F4, 0A0000h
		mov	dword_4170F8, 1A0000h
		mov	dword_417100, eax
		mov	dword_4170FC, eax
		mov	byte_417117, cl
		mov	word_417106, ax
		mov	byte_417104, al
		mov	byte_417116, al
		mov	byte_417118, al
		mov	byte_4170F2, al
		mov	word_417108, ax
		mov	word_41710A, 64h
		mov	word_417114, ax
		mov	word_417112, ax
		mov	byte_417119, al
		retn
sub_40A6F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A780	proc near		; CODE XREF: WinMain(x,x,x,x)+380p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 14h
		push	0		; LPUNKNOWN
		push	offset dword_41711C ; LPDIRECTSOUND *
		push	0		; LPGUID
		call	DirectSoundCreate
		test	eax, eax
		jz	short loc_40A79B
		xor	eax, eax
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------

loc_40A79B:				; CODE XREF: sub_40A780+13j
		mov	eax, dword_41711C
		mov	edx, [esp+14h+arg_0]
		push	edi
		push	3
		mov	ecx, [eax]
		push	edx
		push	eax
		call	dword ptr [ecx+18h]
		xor	eax, eax
		push	0
		mov	[esp+1Ch+var_14], eax
		lea	edx, [esp+1Ch+var_14]
		mov	[esp+1Ch+var_10], eax
		mov	[esp+1Ch+var_14], 14h
		mov	[esp+1Ch+var_C], eax
		mov	[esp+1Ch+var_10], 1
		mov	[esp+1Ch+var_8], eax
		push	offset dword_417120
		mov	[esp+20h+var_4], eax
		mov	eax, dword_41711C
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	ecx, 200h
		xor	eax, eax
		mov	edi, offset dword_417124
		rep stosd
		mov	eax, 1
		pop	edi
		add	esp, 14h
		retn
sub_40A780	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A810	proc near		; CODE XREF: WinMain(x,x,x,x)+3C7p
		push	esi
		mov	esi, offset dword_417124

loc_40A816:				; CODE XREF: sub_40A810+21j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40A828
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword ptr [esi], 0

loc_40A828:				; CODE XREF: sub_40A810+Aj
		add	esi, 4
		cmp	esi, offset unk_417144
		jl	short loc_40A816
		mov	eax, dword_417120
		pop	esi
		test	eax, eax
		jz	short loc_40A84D
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]
		mov	dword_417120, 0

loc_40A84D:				; CODE XREF: sub_40A810+2Bj
		mov	eax, dword_41711C
		test	eax, eax
		jz	short locret_40A866
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword_41711C, 0

locret_40A866:				; CODE XREF: sub_40A810+44j
		retn
sub_40A810	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A870	proc near		; CODE XREF: sub_408CE0+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, dword_417124[esi*4]
		test	eax, eax
		jz	short loc_40A891
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword_417124[esi*4], 0

loc_40A891:				; CODE XREF: sub_40A870+Ej
		pop	esi
		retn
sub_40A870	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_40A8A0(LPCSTR	lpName,	int, int)
sub_40A8A0	proc near		; CODE XREF: sub_405350+D4p
					; sub_405350+E0p ...

var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpName		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+lpName]
		sub	esp, 20h
		push	ebx
		push	ebp
		push	offset Type	; "WAVE"
		push	eax		; lpName
		push	0		; hModule
		call	ds:FindResourceA
		test	eax, eax
		jnz	short loc_40A8C1
		pop	ebp
		pop	ebx
		add	esp, 20h
		retn
; ---------------------------------------------------------------------------

loc_40A8C1:				; CODE XREF: sub_40A8A0+19j
		push	eax		; hResInfo
		push	0		; hModule
		call	ds:LoadResource
		push	eax		; hResData
		call	ds:LockResource
		xor	ecx, ecx
		mov	ebx, eax
		mov	[esp+28h+var_14], ecx
		mov	[esp+28h+var_14], 14h
		mov	[esp+28h+var_10], ecx
		mov	[esp+28h+var_10], 40E2h
		mov	[esp+28h+var_C], ecx
		lea	eax, [ebx+14h]
		mov	[esp+28h+var_8], ecx
		push	0
		mov	[esp+2Ch+var_4], ecx
		mov	ecx, [esp+2Ch+arg_4]
		mov	edx, [ebx+36h]
		mov	[esp+2Ch+var_4], eax
		mov	eax, dword_41711C
		lea	ebp, ds:417124h[ecx*4]
		lea	ecx, [esp+2Ch+var_14]
		mov	[esp+2Ch+var_C], edx
		mov	edx, [eax]
		push	ebp
		push	ecx
		push	eax
		call	dword ptr [edx+0Ch]
		test	eax, eax
		jz	short loc_40A931
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 20h
		retn
; ---------------------------------------------------------------------------

loc_40A931:				; CODE XREF: sub_40A8A0+87j
		push	esi
		push	edi
		lea	ecx, [esp+30h+var_20]
		push	0
		push	ecx
		lea	ecx, [esp+38h+var_1C]
		mov	eax, [ebp+0]
		push	ecx
		lea	ecx, [esp+3Ch+lpName]
		mov	edx, [eax]
		push	ecx
		lea	ecx, [esp+40h+var_18]
		push	ecx
		mov	ecx, [ebx+36h]
		push	ecx
		push	0
		push	eax
		call	dword ptr [edx+2Ch]
		mov	ecx, [esp+28h+arg_8]
		mov	edi, [esp+28h+var_10]
		mov	edx, ecx
		lea	esi, [ebx+3Ah]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+28h+var_18]
		test	ecx, ecx
		jz	short loc_40A997
		mov	eax, [esp+28h+arg_8]
		mov	edi, [esp+28h+var_14]
		mov	edx, ecx
		lea	esi, [eax+ebx+3Ah]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+28h+var_18]

loc_40A997:				; CODE XREF: sub_40A8A0+D7j
		mov	ebp, [ebp+0]
		mov	edx, [esp+28h+arg_8]
		push	ecx
		mov	ecx, [esp+2Ch+var_14]
		mov	eax, [ebp+0]
		push	ecx
		mov	ecx, [esp+30h+var_10]
		push	edx
		push	ecx
		push	ebp
		call	dword ptr [eax+4Ch]
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 20h
		retn
sub_40A8A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40A9C0	proc near		; CODE XREF: sub_4017F0+8Dp
					; sub_401890+D1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, dword_417124[esi*4]
		test	eax, eax
		jz	short loc_40AA20
		mov	ecx, [esp+4+arg_4]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_40AA14
		test	ecx, ecx
		jz	short loc_40AA0C
		cmp	ecx, 1
		jnz	short loc_40AA20
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+48h]
		mov	eax, dword_417124[esi*4]
		push	0
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+34h]
		mov	eax, dword_417124[esi*4]
		push	0
		push	0
		push	0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+30h]
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40AA0C:				; CODE XREF: sub_40A9C0+1Bj
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+48h]
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40AA14:				; CODE XREF: sub_40A9C0+17j
		mov	ecx, [eax]
		push	1
		push	0
		push	0
		push	eax
		call	dword ptr [ecx+30h]

loc_40AA20:				; CODE XREF: sub_40A9C0+Ej
					; sub_40A9C0+20j
		pop	esi
		retn
sub_40A9C0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40AA30	proc near		; CODE XREF: sub_405350+1A4p
					; sub_405350+1B0p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, dword_417124[eax*4]
		test	eax, eax
		jz	short locret_40AA50
		mov	ecx, [esp+arg_4]
		mov	edx, [eax]
		lea	ecx, [ecx+ecx*4+32h]
		shl	ecx, 1
		push	ecx
		push	eax
		call	dword ptr [edx+44h]

locret_40AA50:				; CODE XREF: sub_40AA30+Dj
		retn
sub_40AA30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40AA60	proc near		; CODE XREF: sub_408CE0+ABp
					; sub_408CE0+F6p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, dword_417124[eax*4]
		test	eax, eax
		jz	short locret_40AA81
		mov	edx, [esp+arg_4]
		mov	ecx, [eax]
		lea	edx, ds:0FFFFF6A0h[edx*8]
		push	edx
		push	eax
		call	dword ptr [ecx+3Ch]

locret_40AA81:				; CODE XREF: sub_40AA60+Dj
		retn
sub_40AA60	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40AA90	proc near		; CODE XREF: sub_408BA0+E2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, dword_417124[eax*4]
		test	eax, eax
		jz	short locret_40AAB3
		mov	ecx, [esp+arg_4]
		mov	edx, [eax]
		lea	ecx, [ecx+ecx*4-500h]
		shl	ecx, 1
		push	ecx
		push	eax
		call	dword ptr [edx+40h]

locret_40AAB3:				; CODE XREF: sub_40AA90+Dj
		retn
sub_40AA90	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_40AAC0(int, int, int,	size_t,	void *)
sub_40AAC0	proc near		; CODE XREF: sub_408CE0+72p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		sub	esp, 2Ch
		mov	ecx, [esp+2Ch+arg_10]
		xor	eax, eax
		mov	[esp+2Ch+var_14], eax
		push	ebx
		mov	[esp+30h+var_10], eax
		push	ebp
		mov	[esp+34h+var_C], eax
		push	esi
		push	edi
		mov	edi, [esp+3Ch+arg_C]
		mov	[esp+3Ch+var_8], eax
		lea	ebp, ds:417124h[ecx*4]
		mov	[esp+3Ch+var_4], eax
		mov	[esp+3Ch+var_14], 14h
		mov	[esp+3Ch+var_C], edi
		mov	[esp+3Ch+var_10], 40E2h
		mov	[esp+3Ch+var_4], offset	unk_413224
		xor	ebx, ebx
		mov	esi, ebp

loc_40AB0C:				; CODE XREF: sub_40AAC0+6Aj
		mov	eax, dword_41711C
		push	0
		lea	ecx, [esp+40h+var_14]
		push	esi
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+0Ch]
		test	eax, eax
		jnz	short loc_40AB4C
		inc	ebx
		add	esi, 4
		cmp	ebx, 18h
		jl	short loc_40AB0C
		push	edi		; size_t
		call	_malloc
		add	esp, 4
		mov	[esp+3Ch+arg_10], eax
		mov	[esp+3Ch+var_24], 0
		mov	ebx, offset unk_413238
		mov	[esp+3Ch+var_18], ebp
		jmp	short loc_40AB5A
; ---------------------------------------------------------------------------

loc_40AB4C:				; CODE XREF: sub_40AAC0+61j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 2Ch
		retn
; ---------------------------------------------------------------------------

loc_40AB56:				; CODE XREF: sub_40AAC0+1CDj
		mov	edi, [esp+3Ch+arg_C]

loc_40AB5A:				; CODE XREF: sub_40AAC0+8Aj
		xor	ecx, ecx
		xor	esi, esi
		test	edi, edi
		jle	loc_40ABE6
		xor	edi, edi

loc_40AB68:				; CODE XREF: sub_40AAC0+11Ej
		mov	eax, ecx
		cdq
		and	edx, 0FFh
		add	eax, edx
		mov	edx, [esp+3Ch+arg_0]
		sar	eax, 8
		and	eax, 0FFh
		movsx	ebp, byte ptr [eax+edx]
		mov	eax, edi
		cdq
		idiv	[esp+3Ch+arg_C]
		mov	edx, [esp+3Ch+arg_4]
		movsx	eax, byte ptr [eax+edx]
		imul	eax, ebp
		cdq
		and	edx, 7Fh
		add	eax, edx
		mov	edx, [esp+3Ch+arg_10]
		sar	eax, 7
		add	al, 80h
		cmp	ebx, offset Type ; "WAVE"
		mov	[esi+edx], al
		jge	short loc_40ABC1
		mov	eax, [esp+3Ch+arg_8]
		imul	eax, [ebx]
		cdq
		and	edx, 0Fh
		add	eax, edx
		sar	eax, 4
		jmp	short loc_40ABD2
; ---------------------------------------------------------------------------

loc_40ABC1:				; CODE XREF: sub_40AAC0+EDj
		mov	eax, [ebx-30h]
		imul	eax, [esp+3Ch+arg_8]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3

loc_40ABD2:				; CODE XREF: sub_40AAC0+FFj
		add	ecx, eax
		mov	eax, [esp+3Ch+arg_C]
		inc	esi
		add	edi, 40h
		cmp	esi, eax
		jl	short loc_40AB68
		mov	ebp, [esp+3Ch+var_18]
		mov	edi, eax

loc_40ABE6:				; CODE XREF: sub_40AAC0+A0j
		lea	edx, [esp+3Ch+var_2C]
		push	0
		mov	eax, [ebp+0]
		push	edx
		lea	edx, [esp+44h+var_20]
		mov	[esp+44h+var_2C], 0
		mov	ecx, [eax]
		push	edx
		lea	edx, [esp+48h+var_28]
		push	edx
		lea	edx, [esp+4Ch+var_1C]
		push	edx
		push	edi
		push	0
		push	eax
		call	dword ptr [ecx+2Ch]
		test	eax, eax
		jnz	loc_40AC99
		mov	ecx, [esp+3Ch+var_28]
		mov	esi, [esp+3Ch+arg_10]
		mov	edi, [esp+3Ch+var_1C]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+3Ch+var_2C]
		test	ecx, ecx
		jz	short loc_40AC5B
		mov	edx, [esp+3Ch+var_28]
		mov	eax, [esp+3Ch+arg_10]
		mov	edi, [esp+3Ch+var_20]
		lea	esi, [edx+eax]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+3Ch+var_2C]

loc_40AC5B:				; CODE XREF: sub_40AAC0+178j
		mov	eax, [ebp+0]
		push	ecx
		mov	ecx, [esp+40h+var_20]
		mov	edx, [eax]
		push	ecx
		mov	ecx, [esp+44h+var_28]
		push	ecx
		mov	ecx, [esp+48h+var_1C]
		push	ecx
		push	eax
		call	dword ptr [edx+4Ch]
		mov	esi, [esp+3Ch+var_24]
		add	ebx, 4
		inc	esi
		add	ebp, 4
		cmp	ebx, offset a04d02d02dByPix ; "	- %04d/%02d/%02d\r\nBy Pixel	   "
		mov	[esp+3Ch+var_24], esi
		mov	[esp+3Ch+var_18], ebp
		jl	loc_40AB56
		mov	esi, [esp+3Ch+arg_C]
		jmp	short loc_40AC9B
; ---------------------------------------------------------------------------

loc_40AC99:				; CODE XREF: sub_40AAC0+152j
		xor	esi, esi

loc_40AC9B:				; CODE XREF: sub_40AAC0+1D7j
		cmp	[esp+3Ch+var_24], 18h
		jnz	short loc_40ACA7
		mov	esi, 1

loc_40ACA7:				; CODE XREF: sub_40AAC0+1E0j
		mov	edx, [esp+3Ch+arg_10]
		push	edx		; void *
		call	_free
		add	esp, 4
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 2Ch
		retn
sub_40AAC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Creates random number	in given range

; int __cdecl Random(signed int	Minimum, signed	int Maximum)
Random		proc near		; CODE XREF: sub_403840+63p
					; sub_403840+7Ap ...

Minimum		= dword	ptr  4
Maximum		= dword	ptr  8

		push	esi
		call	_rand
		mov	esi, [esp+4+Maximum]
		mov	ecx, [esp+4+Minimum]
		sub	esi, ecx
		cdq
		inc	esi
		idiv	esi
		pop	esi
		mov	eax, edx
		add	eax, ecx
		retn
Random		endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
_WinMain@16	proc near		; CODE XREF: start+C9p

Y		= dword	ptr -54h
nWidth		= dword	ptr -50h
hMutex		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
WndClass	= WNDCLASSA ptr	-28h
hInstance	= dword	ptr  4
hPrevInstance	= dword	ptr  8
lpCmdLine	= dword	ptr  0Ch
nShowCmd	= dword	ptr  10h

		sub	esp, 54h
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		push	offset Name	; "Ikachan"
		push	ebp		; bInheritHandle
		push	1F0001h		; dwDesiredAccess
		call	ds:OpenMutexA
		cmp	eax, ebp
		jz	short loc_40AD11
		push	eax		; hObject
		call	ds:CloseHandle
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40AD11:				; CODE XREF: WinMain(x,x,x,x)+1Cj
		push	offset Name	; "Ikachan"
		push	ebp		; bInitialOwner
		push	ebp		; lpMutexAttributes
		call	ds:CreateMutexA
		push	104h		; nSize
		push	offset Filename	; lpFilename
		push	ebp		; hModule
		mov	[esp+70h+hMutex], eax
		call	ds:GetModuleFileNameA
		mov	edi, offset Filename
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	al, 5Ch
		cmp	Filename[ecx], al
		jz	short loc_40AD57

loc_40AD4C:				; CODE XREF: WinMain(x,x,x,x)+75j
		mov	dl, byte_417937[ecx]
		dec	ecx
		cmp	dl, al
		jnz	short loc_40AD4C

loc_40AD57:				; CODE XREF: WinMain(x,x,x,x)+6Aj
		mov	ebx, [esp+64h+hInstance]
		push	ebp		; dwInitParam
		push	offset DialogFunc ; lpDialogFunc
		push	ebp		; hWndParent
		push	offset TemplateName ; "DLG_START"
		push	ebx		; hInstance
		mov	Filename[ecx], 0
		call	ds:DialogBoxParamA
		test	eax, eax
		jz	loc_40B0C0
		push	ebp		; fuLoad
		push	20h		; cy
		push	20h		; cx
		mov	ecx, 0Ah
		xor	eax, eax
		lea	edi, [esp+70h+WndClass]
		push	1		; type
		push	offset name	; "0"
		rep stosd
		push	ebx		; hInst
		mov	[esp+7Ch+WndClass.lpfnWndProc],	offset sub_40B0F0
		mov	[esp+7Ch+WndClass.hInstance], ebx
		call	ds:LoadImageA
		push	3		; i
		mov	[esp+68h+WndClass.hCursor], ebp
		mov	[esp+68h+WndClass.hIcon], eax
		call	ds:GetStockObject
		mov	[esp+64h+WndClass.lpszClassName], offset Caption ; "Ikachan"
		mov	[esp+64h+WndClass.hbrBackground], eax
		mov	eax, dword_417A54
		cmp	eax, ebp
		jz	loc_40AF38
		jle	loc_40AFE3
		cmp	eax, 2
		jg	loc_40AFE3
		lea	eax, [esp+64h+WndClass]
		mov	[esp+64h+WndClass.lpszMenuName], offset	aMenu_main ; "MENU_MAIN"
		push	eax		; lpWndClass
		call	ds:RegisterClassA
		test	ax, ax
		jnz	short loc_40AE05
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40AE05:				; CODE XREF: WinMain(x,x,x,x)+117j
		cmp	dword_417A54, 1
		jnz	short loc_40AE24
		mov	dword_417930, 140h
		mov	dword_417924, 0F0h
		jmp	short loc_40AE38
; ---------------------------------------------------------------------------

loc_40AE24:				; CODE XREF: WinMain(x,x,x,x)+12Cj
		mov	dword_417930, 280h
		mov	dword_417924, 1E0h

loc_40AE38:				; CODE XREF: WinMain(x,x,x,x)+142j
		mov	esi, ds:GetSystemMetrics
		push	7		; nIndex
		call	esi ; GetSystemMetrics
		mov	ecx, dword_417930
		push	8		; nIndex
		lea	ebx, [ecx+eax*2]
		mov	[esp+68h+nWidth], ebx
		call	esi ; GetSystemMetrics
		push	0Fh		; nIndex
		mov	edi, eax
		call	esi ; GetSystemMetrics
		push	4		; nIndex
		lea	edi, [eax+edi*2]
		call	esi ; GetSystemMetrics
		mov	edx, dword_417924
		push	ebp		; nIndex
		mov	[esp+68h+Y], edi
		mov	edi, eax
		mov	eax, [esp+68h+Y]
		add	edx, eax
		add	edi, edx
		call	esi ; GetSystemMetrics
		sub	eax, ebx
		push	1		; nIndex
		cdq
		sub	eax, edx
		mov	ebp, eax
		sar	ebp, 1
		call	esi ; GetSystemMetrics
		sub	eax, edi
		push	0Fh		; nIndex
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[esp+68h+Y], eax
		call	esi ; GetSystemMetrics
		push	8		; nIndex
		mov	ebx, eax
		call	esi ; GetSystemMetrics
		push	4		; nIndex
		add	ebx, eax
		call	esi ; GetSystemMetrics
		add	ebx, eax
		push	ebx
		push	7		; nIndex
		call	esi ; GetSystemMetrics
		push	eax
		call	sub_401E70
		mov	ebx, [esp+6Ch+hInstance]
		mov	ecx, [esp+6Ch+nWidth]
		mov	edx, [esp+6Ch+Y]
		add	esp, 8
		push	0		; lpParam
		push	ebx		; hInstance
		push	0		; hMenu
		push	0		; hWndParent
		push	edi		; nHeight
		push	ecx		; nWidth
		push	edx		; Y
		push	ebp		; X
		push	10CA0000h	; dwStyle
		push	offset Caption	; "Ikachan"
		push	offset Caption	; "Ikachan"
		push	0		; dwExStyle
		call	ds:CreateWindowExA
		mov	esi, eax
		test	esi, esi
		mov	hWnd, esi
		jnz	short loc_40AEF3
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40AEF3:				; CODE XREF: WinMain(x,x,x,x)+207j
		push	offset TableName ; "ACCEL"
		push	ebx		; hInstance
		call	ds:LoadAcceleratorsA
		push	esi		; hWnd
		mov	dword ptr unk_417934, eax
		call	ds:GetMenu
		cmp	dword_417A54, 1
		jnz	short loc_40AF26
		push	1
		push	esi
		call	Init_Direct_Draw
		add	esp, 8
		xor	ebp, ebp
		jmp	loc_40AFE7
; ---------------------------------------------------------------------------

loc_40AF26:				; CODE XREF: WinMain(x,x,x,x)+232j
		push	2
		push	esi
		call	Init_Direct_Draw
		add	esp, 8
		xor	ebp, ebp
		jmp	loc_40AFE7
; ---------------------------------------------------------------------------

loc_40AF38:				; CODE XREF: WinMain(x,x,x,x)+ECj
		lea	eax, [esp+64h+WndClass]
		push	eax		; lpWndClass
		call	ds:RegisterClassA
		test	ax, ax
		jnz	short loc_40AF54
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40AF54:				; CODE XREF: WinMain(x,x,x,x)+266j
		push	ebp
		push	ebp
		mov	dword_417930, 280h
		mov	dword_417924, 1E0h
		call	sub_401E70
		mov	esi, ds:GetSystemMetrics
		add	esp, 8
		push	ebp		; lpParam
		push	ebx		; hInstance
		push	ebp		; hMenu
		push	ebp		; hWndParent
		push	1		; nIndex
		call	esi ; GetSystemMetrics
		push	eax		; nHeight
		push	ebp		; nIndex
		call	esi ; GetSystemMetrics
		push	eax		; nWidth
		push	ebp		; Y
		push	ebp		; X
		push	90080000h	; dwStyle
		push	offset Caption	; "Ikachan"
		push	offset Caption	; "Ikachan"
		push	ebp		; dwExStyle
		call	ds:CreateWindowExA
		mov	esi, eax
		cmp	esi, ebp
		mov	hWnd, esi
		jnz	short loc_40AFB5
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40AFB5:				; CODE XREF: WinMain(x,x,x,x)+2C7j
		push	ebp
		push	esi
		call	Init_Direct_Draw
		mov	eax, dword_417924
		add	esp, 8
		cdq
		sub	eax, edx
		mov	edi, ds:SetCursorPos
		sar	eax, 1
		push	eax		; Y
		mov	eax, dword_417930
		cdq
		sub	eax, edx
		sar	eax, 1
		push	eax		; X
		call	edi ; SetCursorPos
		push	ebp		; Y
		push	ebp		; X
		call	edi ; SetCursorPos
		jmp	short loc_40AFE7
; ---------------------------------------------------------------------------

loc_40AFE3:				; CODE XREF: WinMain(x,x,x,x)+F2j
					; WinMain(x,x,x,x)+FBj
		mov	esi, [esp+64h+hInstance]

loc_40AFE7:				; CODE XREF: WinMain(x,x,x,x)+241j
					; WinMain(x,x,x,x)+253j ...
		push	offset CursorName ; "PIXELCURSOR"
		push	ebx		; hInstance
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		push	18h
		push	offset aPbmLoading2_pb ; "Pbm\\Loading2.pbm"
		mov	[esp+6Ch+var_38], ebp
		mov	[esp+6Ch+var_34], ebp
		mov	[esp+6Ch+var_30], 40h
		mov	[esp+6Ch+var_2C], 8
		mov	[esp+6Ch+var_48], ebp
		mov	[esp+6Ch+var_44], ebp
		mov	[esp+6Ch+var_40], 140h
		mov	[esp+6Ch+var_3C], 0F0h
		call	sub_4021D0
		lea	ecx, [esp+6Ch+var_48]
		push	ebp
		push	ecx
		call	sub_402600
		lea	edx, [esp+74h+var_38]
		push	18h
		push	edx
		push	74h
		lea	eax, [esp+80h+var_48]
		push	80h
		push	eax
		call	sub_4024C0
		push	esi		; hWnd
		call	sub_401E90
		push	esi
		call	sub_40A780
		add	esp, 2Ch
		test	eax, eax
		push	ebp		; pszFaceName
		jnz	short loc_40B08D
		push	offset Caption	; "Ikachan"
		push	offset Text	; "ÉTÉEÉìÉhÇÃèâä"
		push	esi		; hWnd
		call	ds:MessageBoxA
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 54h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B08D:				; CODE XREF: WinMain(x,x,x,x)+38Bj
		call	sub_402710
		call	sub_408850
		push	esi
		call	sub_405350
		call	sub_408A90
		call	?__CxxRestoreUnhandledExceptionFilter@@YAXXZ ; __CxxRestoreUnhandledExceptionFilter(void)
		call	sub_40A810
		push	esi
		call	sub_402140
		mov	ecx, [esp+70h+hMutex]
		add	esp, 0Ch
		push	ecx		; hMutex
		call	ds:ReleaseMutex

loc_40B0C0:				; CODE XREF: WinMain(x,x,x,x)+97j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 54h
		retn	10h
_WinMain@16	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40B0D0	proc near		; CODE XREF: sub_40B0F0+52p
		mov	dword_417A50, 0
		retn
sub_40B0D0	endp

; ---------------------------------------------------------------------------
		align 10h
; [0000000B BYTES: COLLAPSED FUNCTION ___setargv. PRESS	CTRL-NUMPAD+ TO	EXPAND]
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40B0F0	proc near		; DATA XREF: WinMain(x,x,x,x)+B7o

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= byte ptr -44h
Text		= byte ptr -40h
hWnd		= dword	ptr  4
Msg		= dword	ptr  8
wParam		= dword	ptr  0Ch
lParam		= dword	ptr  10h

		mov	eax, [esp+Msg]
		sub	esp, 50h
		cmp	eax, 111h
		ja	loc_40B40C
		jz	loc_40B308
		cmp	eax, 5
		ja	short loc_40B15C
		jz	short loc_40B132
		mov	ecx, eax
		dec	ecx
		jz	loc_40B466	; jumptable 0040B189 default case
		dec	ecx
		jnz	loc_40B46E	; jumptable 0040B417 default case
		push	0		; nExitCode
		call	ds:PostQuitMessage
		mov	eax, 1
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B132:				; CODE XREF: sub_40B0F0+1Dj
		mov	eax, [esp+50h+wParam]
		sub	eax, 0
		jz	short loc_40B14F
		dec	eax
		jnz	loc_40B466	; jumptable 0040B189 default case
		call	sub_40B0D0
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B14F:				; CODE XREF: sub_40B0F0+49j
		call	___setargv
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B15C:				; CODE XREF: sub_40B0F0+1Bj
		mov	ecx, eax
		sub	ecx, 100h
		jz	loc_40B230
		dec	ecx
		jnz	loc_40B46E	; jumptable 0040B417 default case
		mov	eax, [esp+50h+wParam]
		add	eax, 0FFFFFFE0h	; switch 59 cases
		cmp	eax, 3Ah
		ja	loc_40B466	; jumptable 0040B189 default case
		xor	ecx, ecx
		mov	cl, ds:byte_40B4B0[eax]
		jmp	ds:off_40B48C[ecx*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40B190:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 32
		and	al, 0EFh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B1A4:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 37
		and	al, 0FEh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B1B8:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 39
		and	al, 0FDh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B1CC:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 38
		and	al, 0FBh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B1E0:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 40
		and	al, 0F7h
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B1F4:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 88
		and	al, 0DFh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B208:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 90
		and	al, 0BFh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B21C:				; CODE XREF: sub_40B0F0+99j
					; DATA XREF: .text:off_40B48Co
		mov	eax, dword_417A44 ; jumptable 0040B189 case 83
		and	al, 7Fh
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B230:				; CODE XREF: sub_40B0F0+74j
		mov	edx, [esp+50h+wParam]
		lea	eax, [edx-1Bh]	; switch 64 cases
		cmp	eax, 3Fh
		ja	loc_40B466	; jumptable 0040B189 default case
		xor	ecx, ecx
		mov	cl, ds:byte_40B514[eax]
		jmp	ds:off_40B4EC[ecx*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40B24F:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	edx, [esp+50h+hWnd] ; jumptable	0040B248 case 27
		push	0		; lParam
		push	0		; wParam
		push	10h		; Msg
		push	edx		; hWnd
		call	ds:PostMessageA
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B268:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 32
		or	al, 10h
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B27C:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 37
		or	al, 1
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B290:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 39
		or	al, 2
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B2A4:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 38
		or	al, 4
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B2B8:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 40
		or	al, 8
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B2CC:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 88
		or	al, 20h
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B2E0:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 90
		or	al, 40h
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B2F4:				; CODE XREF: sub_40B0F0+158j
					; DATA XREF: .text:off_40B4ECo
		mov	eax, dword_417A44 ; jumptable 0040B248 case 83
		or	al, 80h
		mov	dword_417A44, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B308:				; CODE XREF: sub_40B0F0+12j
		mov	eax, [esp+50h+wParam]
		and	eax, 0FFFFh
		add	eax, 0FFFF63BFh	; switch 4 cases
		cmp	eax, 3
		ja	loc_40B466	; jumptable 0040B189 default case
		jmp	ds:off_40B554[eax*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40B326:				; CODE XREF: sub_40B0F0+22Fj
					; DATA XREF: .text:off_40B554o
		mov	ecx, [esp+50h+hWnd] ; jumptable	0040B31F case 40001
		push	0		; lParam
		push	0		; wParam
		push	2		; Msg
		push	ecx		; hWnd
		call	ds:PostMessageA
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B33F:				; CODE XREF: sub_40B0F0+22Fj
					; DATA XREF: .text:off_40B554o
		mov	edx, [esp+50h+hWnd] ; jumptable	0040B31F case 40004
		push	6		; nCmdShow
		push	edx		; hWnd
		call	ds:ShowWindow
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B354:				; CODE XREF: sub_40B0F0+22Fj
					; DATA XREF: .text:off_40B554o
		lea	eax, [esp+50h+wParam] ;	jumptable 0040B31F case	40002
		lea	ecx, [esp+50h+Msg]
		push	eax
		lea	edx, [esp+54h+lParam]
		push	ecx
		push	edx
		call	sub_406070
		lea	eax, [esp+5Ch+var_44]
		lea	ecx, [esp+5Ch+var_50]
		push	eax
		lea	edx, [esp+60h+var_4C]
		push	ecx
		lea	eax, [esp+64h+var_48]
		push	edx
		push	eax
		call	sub_406140
		mov	ecx, [esp+6Ch+wParam]
		mov	edx, [esp+6Ch+Msg]
		mov	eax, [esp+6Ch+lParam]
		push	ecx
		mov	ecx, [esp+70h+var_50]
		push	edx
		mov	edx, [esp+74h+var_4C]
		push	eax
		mov	eax, [esp+78h+var_48]
		push	ecx
		mov	ecx, off_413278
		push	edx
		push	eax
		lea	edx, [esp+84h+Text]
		push	ecx		; char *
		push	edx		; char *
		call	_sprintf
		mov	ecx, [esp+8Ch+hWnd]
		add	esp, 3Ch
		lea	eax, [esp+50h+Text]
		push	0		; uType
		push	offset Caption	; "Ikachan"
		push	eax		; lpText
		push	ecx		; hWnd
		call	ds:MessageBoxA
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B3D5:				; CODE XREF: sub_40B0F0+22Fj
					; DATA XREF: .text:off_40B554o
		push	esi		; jumptable 0040B31F case 40003
		mov	esi, [esp+54h+hWnd]
		push	esi		; hwnd
		call	sub_406210
		add	esp, 4
		test	eax, eax
		jnz	short loc_40B3F9
		push	eax		; uType
		push	offset Caption	; "Ikachan"
		push	offset aGGkgebGarTsv ; "É{ÉäÉÖÅ[ÉÄê›íËÇ"
		push	esi		; hWnd
		call	ds:MessageBoxA

loc_40B3F9:				; CODE XREF: sub_40B0F0+2F5j
		mov	dword_417A3C, 32h
		pop	esi
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B40C:				; CODE XREF: sub_40B0F0+Cj
		lea	ecx, [eax-201h]	; switch 5 cases
		cmp	ecx, 4
		ja	short loc_40B46E ; jumptable 0040B417 default case
		jmp	ds:off_40B564[ecx*4] ; switch jump
; ---------------------------------------------------------------------------

loc_40B41E:				; CODE XREF: sub_40B0F0+327j
					; DATA XREF: .text:off_40B564o
		mov	eax, dword_417A48 ; jumptable 0040B417 case 513
		or	al, 2
		mov	dword_417A48, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B432:				; CODE XREF: sub_40B0F0+327j
					; DATA XREF: .text:off_40B564o
		mov	eax, dword_417A48 ; jumptable 0040B417 case 514
		and	al, 0FDh
		mov	dword_417A48, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B446:				; CODE XREF: sub_40B0F0+327j
					; DATA XREF: .text:off_40B564o
		mov	eax, dword_417A48 ; jumptable 0040B417 case 516
		or	al, 1
		mov	dword_417A48, eax
		xor	eax, eax
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B45A:				; CODE XREF: sub_40B0F0+327j
					; DATA XREF: .text:off_40B564o
		mov	eax, dword_417A48 ; jumptable 0040B417 case 517
		and	al, 0FEh
		mov	dword_417A48, eax

loc_40B466:				; CODE XREF: sub_40B0F0+22j
					; sub_40B0F0+4Cj ...
		xor	eax, eax	; jumptable 0040B189 default case
		add	esp, 50h
		retn	10h
; ---------------------------------------------------------------------------

loc_40B46E:				; CODE XREF: sub_40B0F0+29j
					; sub_40B0F0+7Bj ...
		mov	edx, [esp+50h+lParam] ;	jumptable 0040B417 default case
		mov	ecx, [esp+50h+wParam]
		push	edx		; lParam
		mov	edx, [esp+54h+hWnd]
		push	ecx		; wParam
		push	eax		; Msg
		push	edx		; hWnd
		call	ds:DefWindowProcA
		add	esp, 50h
		retn	10h
sub_40B0F0	endp

; ---------------------------------------------------------------------------
		align 4
off_40B48C	dd offset loc_40B190, offset loc_40B1A4, offset	loc_40B1CC
					; DATA XREF: sub_40B0F0+99r
		dd offset loc_40B1B8, offset loc_40B1E0, offset	loc_40B21C ; jump table	for switch statement
		dd offset loc_40B1F4, offset loc_40B208, offset	loc_40B466
byte_40B4B0	db	0,     8,     8,     8 ; DATA XREF: sub_40B0F0+93r
		db	8,     1,     2,     3 ; indirect table	for switch statement
		db	4,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     8
		db	8,     8,     8,     5
		db	8,     8,     8,     8
		db	6,     8,     7
		align 4
off_40B4EC	dd offset loc_40B24F, offset loc_40B268, offset	loc_40B27C
					; DATA XREF: sub_40B0F0+158r
		dd offset loc_40B2A4, offset loc_40B290, offset	loc_40B2B8 ; jump table	for switch statement
		dd offset loc_40B2F4, offset loc_40B2CC, offset	loc_40B2E0
		dd offset loc_40B466
byte_40B514	db	0,     9,     9,     9 ; DATA XREF: sub_40B0F0+152r
		db	9,     1,     9,     9 ; indirect table	for switch statement
		db	9,     9,     2,     3
		db	4,     5,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	9,     9,     9,     9
		db	6,     9,     9,     9
		db	9,     7,     9,     8
off_40B554	dd offset loc_40B326	; DATA XREF: sub_40B0F0+22Fr
		dd offset loc_40B354	; jump table for switch	statement
		dd offset loc_40B3D5
		dd offset loc_40B33F
off_40B564	dd offset loc_40B41E	; DATA XREF: sub_40B0F0+327r
		dd offset loc_40B432	; jump table for switch	statement
		dd offset loc_40B46E
		dd offset loc_40B446
		dd offset loc_40B45A
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_40B580	proc near		; CODE XREF: sub_405350+26Bp
					; sub_405350+403p ...

Msg		= tagMSG ptr -1Ch

		sub	esp, 1Ch
		push	ebx
		mov	ebx, ds:TranslateMessage
		push	ebp
		mov	ebp, ds:DispatchMessageA
		push	esi
		mov	esi, ds:PeekMessageA
		push	edi
		mov	edi, ds:GetMessageA

loc_40B59F:				; CODE XREF: sub_40B580+80j
					; sub_40B580+90j
		push	0		; wRemoveMsg
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		lea	eax, [esp+38h+Msg]
		push	0		; hWnd
		push	eax		; lpMsg
		call	esi ; PeekMessageA
		test	eax, eax
		jnz	short loc_40B5C6
		mov	eax, dword_417A50
		test	eax, eax
		jz	short loc_40B5C6
		mov	eax, dword_417A3C
		test	eax, eax
		jz	short loc_40B612
		jmp	short loc_40B5CF
; ---------------------------------------------------------------------------

loc_40B5C6:				; CODE XREF: sub_40B580+30j
					; sub_40B580+39j
		mov	eax, dword_417A3C
		test	eax, eax
		jz	short loc_40B5D5

loc_40B5CF:				; CODE XREF: sub_40B580+44j
		dec	dword_417A3C

loc_40B5D5:				; CODE XREF: sub_40B580+4Dj
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		lea	ecx, [esp+34h+Msg]
		push	0		; hWnd
		push	ecx		; lpMsg
		call	edi ; GetMessageA
		test	eax, eax
		jz	short loc_40B61F
		mov	eax, dword ptr unk_417934
		mov	ecx, hWnd
		lea	edx, [esp+2Ch+Msg]
		push	edx		; lpMsg
		push	eax		; hAccTable
		push	ecx		; hWnd
		call	ds:TranslateAcceleratorA
		test	eax, eax
		jnz	short loc_40B59F
		lea	edx, [esp+2Ch+Msg]
		push	edx		; lpMsg
		call	ebx ; TranslateMessage
		lea	eax, [esp+2Ch+Msg]
		push	eax		; lpMsg
		call	ebp ; DispatchMessageA
		jmp	short loc_40B59F
; ---------------------------------------------------------------------------

loc_40B612:				; CODE XREF: sub_40B580+42j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 1Ch
		retn
; ---------------------------------------------------------------------------

loc_40B61F:				; CODE XREF: sub_40B580+64j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 1Ch
		retn
sub_40B580	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION VerQueryValueA. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoA. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoSizeA. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk

; HRESULT __stdcall DirectDrawCreate(GUID *lpGUID, LPDIRECTDRAW	*lplpDD, IUnknown *pUnkOuter)
DirectDrawCreate proc near		; CODE XREF: Init_Direct_Draw+Fp

lpGUID		= dword	ptr  4
lplpDD		= dword	ptr  8
pUnkOuter	= dword	ptr  0Ch

		jmp	ds:__imp_DirectDrawCreate
DirectDrawCreate endp

; [00000006 BYTES: COLLAPSED FUNCTION DirectSoundCreate. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================

; Attributes: library function

; int __cdecl fclose(FILE *)
_fclose		proc near		; CODE XREF: sub_401C50+54p
					; sub_401CC0+60p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		mov	eax, [esi+0Ch]
		test	al, 40h
		jz	short loc_40B663
		or	eax, 0FFFFFFFFh
		jmp	short loc_40B69D
; ---------------------------------------------------------------------------

loc_40B663:				; CODE XREF: _fclose+Ej
		test	al, 83h
		jz	short loc_40B69B
		push	esi
		call	__flush
		push	esi
		mov	edi, eax
		call	__freebuf
		push	dword ptr [esi+10h] ; int
		call	__close
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_40B689
		or	edi, 0FFFFFFFFh
		jmp	short loc_40B69B
; ---------------------------------------------------------------------------

loc_40B689:				; CODE XREF: _fclose+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_40B69B
		push	eax		; void *
		call	_free
		and	dword ptr [esi+1Ch], 0
		pop	ecx

loc_40B69B:				; CODE XREF: _fclose+17j _fclose+39j ...
		mov	eax, edi

loc_40B69D:				; CODE XREF: _fclose+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
_fclose		endp

; [0000010A BYTES: COLLAPSED FUNCTION _fwrite. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000020 BYTES: COLLAPSED FUNCTION __fsopen.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000013 BYTES: COLLAPSED FUNCTION _fopen. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000052 BYTES: COLLAPSED FUNCTION _sprintf.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [000000E8 BYTES: COLLAPSED FUNCTION _fread. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [0000002F BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000034 BYTES: COLLAPSED FUNCTION _sscanf. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000002F BYTES: COLLAPSED FUNCTION _free. PRESS CTRL-NUMPAD+	TO EXPAND]
; [00000012 BYTES: COLLAPSED FUNCTION _malloc. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000002C BYTES: COLLAPSED FUNCTION __nh_malloc. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000036 BYTES: COLLAPSED FUNCTION __heap_alloc. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000032 BYTES: COLLAPSED FUNCTION _fprintf.	PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================

; Attributes: library function

; int __cdecl rand()
_rand		proc near		; CODE XREF: Random+1p
		mov	eax, dword_413350
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	dword_413350, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
_rand		endp

; [000000F6 BYTES: COLLAPSED FUNCTION start. PRESS CTRL-NUMPAD+	TO EXPAND]
; [00000022 BYTES: COLLAPSED FUNCTION __amsg_exit. PRESS CTRL-NUMPAD+ TO EXPAND]
; ---------------------------------------------------------------------------
		pop	ecx
		pop	ecx
		retn
; [00000023 BYTES: COLLAPSED FUNCTION _fast_error_exit.	PRESS CTRL-NUMPAD+ TO EXPAND]
; ---------------------------------------------------------------------------
		retn
; [000000B3 BYTES: COLLAPSED FUNCTION __close. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000002B BYTES: COLLAPSED FUNCTION __freebuf. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000003B BYTES: COLLAPSED FUNCTION _fflush. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000005C BYTES: COLLAPSED FUNCTION __flush. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================


sub_40BD2A	proc near		; CODE XREF: .text:___endstdiop
		push	1
		call	_flsall
		pop	ecx
		retn
sub_40BD2A	endp

; [0000006D BYTES: COLLAPSED FUNCTION _flsall. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000115 BYTES: COLLAPSED FUNCTION __flsbuf.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [000001AD BYTES: COLLAPSED FUNCTION __write. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000335 BYTES: COLLAPSED FUNCTION _memcpy. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000170 BYTES: COLLAPSED FUNCTION __openfile. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [00000078 BYTES: COLLAPSED FUNCTION __getstream. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000721 BYTES: COLLAPSED FUNCTION __output.	PRESS CTRL-NUMPAD+ TO EXPAND]
off_40CCAE	dd offset $NORMAL_STATE$1535 ; DATA XREF: __output+6Er
		dd offset loc_40C602	; jump table for switch	statement
		dd offset loc_40C61D
		dd offset loc_40C669
		dd offset loc_40C6A0
		dd offset loc_40C6A8
		dd offset loc_40C6DD
		dd offset loc_40C770
; [00000035 BYTES: COLLAPSED FUNCTION _write_char. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000031 BYTES: COLLAPSED FUNCTION _write_multi_char. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000038 BYTES: COLLAPSED FUNCTION _write_string. PRESS CTRL-NUMPAD+	TO EXPAND]
; [0000000D BYTES: COLLAPSED FUNCTION _get_int_arg. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000010 BYTES: COLLAPSED FUNCTION _get_int64_arg. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000000E BYTES: COLLAPSED FUNCTION _get_short_arg. PRESS CTRL-NUMPAD+ TO EXPAND]
; [000000D9 BYTES: COLLAPSED FUNCTION __filbuf.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [000001F6 BYTES: COLLAPSED FUNCTION __read. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000A25 BYTES: COLLAPSED FUNCTION __input. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000037 BYTES: COLLAPSED FUNCTION __hextodec. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [0000001A BYTES: COLLAPSED FUNCTION _fgetc. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000017 BYTES: COLLAPSED FUNCTION __un_inc.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000024 BYTES: COLLAPSED FUNCTION __whiteout. PRESS	CTRL-NUMPAD+ TO	EXPAND]
		align 10h
; [0000007B BYTES: COLLAPSED FUNCTION _strlen. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000003C BYTES: COLLAPSED FUNCTION __heap_init. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000003E BYTES: COLLAPSED FUNCTION ___sbh_heap_init.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000002B BYTES: COLLAPSED FUNCTION ___sbh_find_block. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000032B BYTES: COLLAPSED FUNCTION ___sbh_free_block. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000309 BYTES: COLLAPSED FUNCTION ___sbh_alloc_block. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [000000B1 BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_region. PRESS CTRL-NUMPAD+ TO EXPAND]
; [000000FB BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_group. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000001B BYTES: COLLAPSED FUNCTION __callnewh. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [0000008D BYTES: COLLAPSED FUNCTION __stbuf. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000003D BYTES: COLLAPSED FUNCTION __ftbuf. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000002D BYTES: COLLAPSED FUNCTION __cinit. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION _exit. PRESS CTRL-NUMPAD+	TO EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __exit. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000099 BYTES: COLLAPSED FUNCTION _doexit. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000001A BYTES: COLLAPSED FUNCTION __initterm. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [0000009A BYTES: COLLAPSED FUNCTION __lseek. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000141 BYTES: COLLAPSED FUNCTION __XcptFilter. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000043 BYTES: COLLAPSED FUNCTION _xcptlookup. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000058 BYTES: COLLAPSED FUNCTION __wincmdln. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [000000B9 BYTES: COLLAPSED FUNCTION __setenvp. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000099 BYTES: COLLAPSED FUNCTION __setargv. PRESS CTRL-NUMPAD+ TO EXPAND]
; [000001B4 BYTES: COLLAPSED FUNCTION _parse_cmdline. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000132 BYTES: COLLAPSED FUNCTION ___crtGetEnvironmentStringsA. PRESS CTRL-NUMPAD+ TO EXPAND]
; [000001AB BYTES: COLLAPSED FUNCTION __ioinit.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000020 BYTES: COLLAPSED FUNCTION __global_unwind2.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000022 BYTES: COLLAPSED FUNCTION __unwind_handler.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000068 BYTES: COLLAPSED FUNCTION __local_unwind2. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000023 BYTES: COLLAPSED FUNCTION __abnormal_termination. PRESS CTRL-NUMPAD+ TO EXPAND]
; ---------------------------------------------------------------------------

__NLG_Notify1:
		push	ebx
		push	ecx
		mov	ebx, offset unk_413418
		jmp	short __NLG_Go
; [00000018 BYTES: COLLAPSED FUNCTION __NLG_Notify. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh
; [000000BD BYTES: COLLAPSED FUNCTION __except_handler3. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000001B BYTES: COLLAPSED FUNCTION _seh_longjmp_unwind(x). PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000039 BYTES: COLLAPSED FUNCTION __FF_MSGBANNER. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000153 BYTES: COLLAPSED FUNCTION __NMSG_WRITE. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000067 BYTES: COLLAPSED FUNCTION __dosmaperr. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000095 BYTES: COLLAPSED FUNCTION __alloc_osfhnd. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000077 BYTES: COLLAPSED FUNCTION __set_osfhnd. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000007A BYTES: COLLAPSED FUNCTION __free_osfhnd. PRESS CTRL-NUMPAD+	TO EXPAND]
; [0000003D BYTES: COLLAPSED FUNCTION __get_osfhandle. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000057 BYTES: COLLAPSED FUNCTION __commit.	PRESS CTRL-NUMPAD+ TO EXPAND]
; ---------------------------------------------------------------------------

___initstdio:
		mov	eax, dword_418E60
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_40F451
		mov	eax, 200h
		jmp	short loc_40F457
; ---------------------------------------------------------------------------

loc_40F451:				; CODE XREF: .text:0040F448j
		cmp	eax, esi
		jge	short loc_40F45C
		mov	eax, esi

loc_40F457:				; CODE XREF: .text:0040F44Fj
		mov	dword_418E60, eax

loc_40F45C:				; CODE XREF: .text:0040F453j
		push	4
		push	eax
		call	_calloc
		pop	ecx
		mov	dword_417E48, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_40F490
		push	4
		push	esi
		mov	dword_418E60, esi
		call	_calloc
		pop	ecx
		mov	dword_417E48, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_40F490
		push	1Ah
		call	__amsg_exit
; ---------------------------------------------------------------------------
		db  59h	; Y
; ---------------------------------------------------------------------------

loc_40F490:				; CODE XREF: .text:0040F46Dj
					; .text:0040F486j
		xor	ecx, ecx
		mov	eax, offset off_413620

loc_40F497:				; CODE XREF: .text:0040F4ABj
		mov	edx, dword_417E48
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset off_4138A0
		jl	short loc_40F497
		xor	edx, edx
		mov	ecx, offset unk_413630

loc_40F4B4:				; CODE XREF: .text:0040F4DEj
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, dword_418E80[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F4D1
		test	eax, eax
		jnz	short loc_40F4D4

loc_40F4D1:				; CODE XREF: .text:0040F4CBj
		or	dword ptr [ecx], 0FFFFFFFFh

loc_40F4D4:				; CODE XREF: .text:0040F4CFj
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset unk_413690
		jl	short loc_40F4B4
		pop	esi
		retn
; ---------------------------------------------------------------------------

___endstdio:
		call	sub_40BD2A
		cmp	byte_417AB4, 0
		jz	short locret_40F4F5
		jmp	__fcloseall
; ---------------------------------------------------------------------------

locret_40F4F5:				; CODE XREF: .text:0040F4EEj
		retn
; [00000044 BYTES: COLLAPSED FUNCTION __getbuf.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000026 BYTES: COLLAPSED FUNCTION __isatty.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [000002B9 BYTES: COLLAPSED FUNCTION __sopen. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000068 BYTES: COLLAPSED FUNCTION _wctomb. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000068 BYTES: COLLAPSED FUNCTION __aulldiv. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000075 BYTES: COLLAPSED FUNCTION __aullrem. PRESS CTRL-NUMPAD+ TO EXPAND]
; [000000C8 BYTES: COLLAPSED FUNCTION _mbtowc. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000058 BYTES: COLLAPSED FUNCTION _memset. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000028 BYTES: COLLAPSED FUNCTION _isspace.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000075 BYTES: COLLAPSED FUNCTION __isctype. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000034 BYTES: COLLAPSED FUNCTION __allmul.	PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [0000001F BYTES: COLLAPSED FUNCTION __allshl.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000006E BYTES: COLLAPSED FUNCTION _ungetc. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000335 BYTES: COLLAPSED FUNCTION _memcpy_0. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __ismbblead. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000031 BYTES: COLLAPSED FUNCTION _x_ismbbtype. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000199 BYTES: COLLAPSED FUNCTION __setmbcp. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000004A BYTES: COLLAPSED FUNCTION _getSystemCP. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000033 BYTES: COLLAPSED FUNCTION _CPtoLCID. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000029 BYTES: COLLAPSED FUNCTION _setSBCS.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000185 BYTES: COLLAPSED FUNCTION _setSBUpLow. PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000001C BYTES: COLLAPSED FUNCTION ___initmbctable. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [00000007 BYTES: COLLAPSED FUNCTION _strcpy. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [000000E0 BYTES: COLLAPSED FUNCTION _strcat. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000089 BYTES: COLLAPSED FUNCTION ___crtMessageBoxA. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
; [000000FE BYTES: COLLAPSED FUNCTION _strncpy.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [0000007D BYTES: COLLAPSED FUNCTION _calloc. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000058 BYTES: COLLAPSED FUNCTION __fcloseall. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000146 BYTES: COLLAPSED FUNCTION __chsize.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000007 BYTES: COLLAPSED FUNCTION __fptrap.	PRESS CTRL-NUMPAD+ TO EXPAND]
		db  59h	; Y
		db 0C3h	; √
; [00000149 BYTES: COLLAPSED FUNCTION ___crtGetStringTypeA. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000224 BYTES: COLLAPSED FUNCTION ___crtLCMapStringA. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [0000002B BYTES: COLLAPSED FUNCTION _strncnt.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000076 BYTES: COLLAPSED FUNCTION __setmode. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 400h
_text		ends

; Section 2. (virtual address 00011000)
; Virtual size			: 00000E56 (   3670.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00011000
; Flags	40000040: Data Readable
; Alignment	: default
;
; Imports from DDRAW.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; HRESULT __stdcall DirectDrawCreate(GUID *lpGUID, LPDIRECTDRAW	*lplpDD, IUnknown *pUnkOuter)
		extrn __imp_DirectDrawCreate:dword ; DATA XREF:	DirectDrawCreater
					; .rdata:004115A4o

;
; Imports from DSOUND.dll
;
; HRESULT __stdcall DirectSoundCreate(LPGUID, LPDIRECTSOUND *, LPUNKNOWN)
		extrn __imp_DirectSoundCreate:dword ; DATA XREF: DirectSoundCreater
					; .rdata:004115B8o

;
; Imports from GDI32.dll
;
; COLORREF __stdcall SetTextColor(HDC hdc, COLORREF color)
		extrn SetTextColor:dword ; CODE	XREF: sub_402770+46p
					; DATA XREF: sub_402770+46r ...
; int __stdcall	SetBkMode(HDC hdc, int mode)
		extrn SetBkMode:dword	; CODE XREF: sub_402770+36p
					; DATA XREF: sub_402770+36r
; HGDIOBJ __stdcall GetStockObject(int i)
		extrn GetStockObject:dword ; CODE XREF:	WinMain(x,x,x,x)+D3p
					; DATA XREF: WinMain(x,x,x,x)+D3r
; BOOL __stdcall StretchBlt(HDC	hdcDest, int xDest, int	yDest, int wDest, int hDest, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop)
		extrn StretchBlt:dword	; CODE XREF: sub_4021D0+159p
					; DATA XREF: sub_4021D0+159r
; BOOL __stdcall TextOutA(HDC hdc, int x, int y, LPCSTR	lpString, int c)
		extrn TextOutA:dword	; CODE XREF: sub_402770+76p
					; DATA XREF: sub_402770+76r
; HFONT	__stdcall CreateFontA(int cHeight, int cWidth, int cEscapement,	int cOrientation, int cWeight, DWORD bItalic, DWORD bUnderline,	DWORD bStrikeOut, DWORD	iCharSet, DWORD	iOutPrecision, DWORD iClipPrecision, DWORD iQuality, DWORD iPitchAndFamily, LPCSTR pszFaceName)
		extrn CreateFontA:dword	; CODE XREF: sub_402710+4Bp
					; DATA XREF: sub_402710+4Br
; int __stdcall	GetObjectA(HANDLE h, int c, LPVOID pv)
		extrn GetObjectA:dword	; CODE XREF: sub_4021D0+98p
					; DATA XREF: sub_4021D0+98r
; HDC __stdcall	CreateCompatibleDC(HDC hdc)
		extrn CreateCompatibleDC:dword ; CODE XREF: sub_4021D0+115p
					; DATA XREF: sub_4021D0+115r
; HGDIOBJ __stdcall SelectObject(HDC hdc, HGDIOBJ h)
		extrn SelectObject:dword ; CODE	XREF: sub_4021D0+11Fp
					; sub_4021D0+172p ...
; BOOL __stdcall DeleteDC(HDC hdc)
		extrn DeleteDC:dword	; CODE XREF: sub_4021D0+179p
					; DATA XREF: sub_4021D0+179r
; BOOL __stdcall DeleteObject(HGDIOBJ ho)
		extrn DeleteObject:dword ; CODE	XREF: sub_4021D0+199p
					; __CxxRestoreUnhandledExceptionFilter(void)+6p
					; DATA XREF: ...

;
; Imports from KERNEL32.dll
;
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
		extrn DeleteFileA:dword	; CODE XREF: sub_4062E0+22p
					; DATA XREF: sub_4062E0+22r ...
; HLOCAL __stdcall LocalFree(HLOCAL hMem)
		extrn LocalFree:dword	; CODE XREF: sub_408820+8p
					; sub_408850+1ECp ...
; LPVOID __stdcall LockResource(HGLOBAL	hResData)
		extrn LockResource:dword ; CODE	XREF: sub_40A8A0+2Bp
					; DATA XREF: sub_40A8A0+2Br
; HGLOBAL __stdcall LoadResource(HMODULE hModule, HRSRC	hResInfo)
		extrn LoadResource:dword ; CODE	XREF: sub_40A8A0+24p
					; DATA XREF: sub_40A8A0+24r
; HRSRC	__stdcall FindResourceA(HMODULE	hModule, LPCSTR	lpName,	LPCSTR lpType)
		extrn FindResourceA:dword ; CODE XREF: sub_40A8A0+11p
					; DATA XREF: sub_40A8A0+11r
; BOOL __stdcall ReleaseMutex(HANDLE hMutex)
		extrn ReleaseMutex:dword ; CODE	XREF: WinMain(x,x,x,x)+3DAp
					; DATA XREF: WinMain(x,x,x,x)+3DAr
; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName)
		extrn CreateMutexA:dword ; CODE	XREF: WinMain(x,x,x,x)+38p
					; DATA XREF: WinMain(x,x,x,x)+38r
; HANDLE __stdcall OpenMutexA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName)
		extrn OpenMutexA:dword	; CODE XREF: WinMain(x,x,x,x)+14p
					; DATA XREF: WinMain(x,x,x,x)+14r
; BOOL __stdcall SetEndOfFile(HANDLE hFile)
		extrn SetEndOfFile:dword ; CODE	XREF: __chsize+F9p
					; DATA XREF: __chsize+F9r
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn LoadLibraryA:dword ; CODE	XREF: ___crtMessageBoxA+12p
					; DATA XREF: ___crtMessageBoxA+12r
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn GetProcAddress:dword ; CODE XREF:	___crtMessageBoxA+2Ap
					; ___crtMessageBoxA+3Bp ...
; UINT __stdcall GetOEMCP()
		extrn GetOEMCP:dword	; DATA XREF: _getSystemCP+1Ar
; UINT __stdcall GetACP()
		extrn GetACP:dword	; DATA XREF: _getSystemCP+2Fr
; BOOL __stdcall GetCPInfo(UINT	CodePage, LPCPINFO lpCPInfo)
		extrn GetCPInfo:dword	; CODE XREF: __setmbcp+48p
					; _setSBUpLow+14p
					; DATA XREF: ...
; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize)
		extrn GetSystemDirectoryA:dword	; CODE XREF: sub_406210+13p
					; DATA XREF: sub_406210+13r
; BOOL __stdcall FlushFileBuffers(HANDLE hFile)
		extrn FlushFileBuffers:dword ; CODE XREF: __commit+2Cp
					; DATA XREF: __commit+2Cr
; BOOL __stdcall SetStdHandle(DWORD nStdHandle,	HANDLE hHandle)
		extrn SetStdHandle:dword ; CODE	XREF: __set_osfhnd:loc_40F308p
					; __free_osfhnd:loc_40F382p
					; DATA XREF: ...
; void __stdcall RtlUnwind(PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD	ExceptionRecord, PVOID ReturnValue)
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
; DWORD	__stdcall GetFileType(HANDLE hFile)
		extrn GetFileType:dword	; CODE XREF: __ioinit+FFp
					; __ioinit+166p ...
; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
		extrn GetStdHandle:dword ; CODE	XREF: __ioinit+158p
					; __NMSG_WRITE+143p
					; DATA XREF: ...
; UINT __stdcall SetHandleCount(UINT uNumber)
		extrn SetHandleCount:dword ; CODE XREF:	__ioinit+19Dp
					; DATA XREF: __ioinit+19Dr
; LPWCH	__stdcall GetEnvironmentStringsW()
		extrn GetEnvironmentStringsW:dword
					; CODE XREF: ___crtGetEnvironmentStringsA+1Bp
					; ___crtGetEnvironmentStringsA+5Bp
					; DATA XREF: ...
; LPCH __stdcall GetEnvironmentStrings()
		extrn GetEnvironmentStrings:dword
					; CODE XREF: ___crtGetEnvironmentStringsA:loc_40EBB2p
					; ___crtGetEnvironmentStringsA+E1p
					; DATA XREF: ...
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cbMultiByte, LPCSTR	lpDefaultChar, LPBOOL lpUsedDefaultChar)
		extrn WideCharToMultiByte:dword
					; CODE XREF: ___crtGetEnvironmentStringsA+93p
					; ___crtGetEnvironmentStringsA+B5p ...
; BOOL __stdcall FreeEnvironmentStringsW(LPWCH)
		extrn FreeEnvironmentStringsW:dword
					; CODE XREF: ___crtGetEnvironmentStringsA+CEp
					; DATA XREF: ___crtGetEnvironmentStringsA+CEr
; BOOL __stdcall FreeEnvironmentStringsA(LPCH)
		extrn FreeEnvironmentStringsA:dword
					; CODE XREF: ___crtGetEnvironmentStringsA+11Fp
					; DATA XREF: ___crtGetEnvironmentStringsA+11Fr
; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
		extrn UnhandledExceptionFilter:dword ; CODE XREF: __XcptFilter+138p
					; DATA XREF: __XcptFilter+138r
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn SetFilePointer:dword ; CODE XREF:	__lseek+4Fp
					; DATA XREF: __lseek+4Fr
; HANDLE __stdcall GetCurrentProcess()
		extrn GetCurrentProcess:dword ;	CODE XREF: _doexit+10p
					; DATA XREF: _doexit+10r
; BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT	uExitCode)
		extrn TerminateProcess:dword ; CODE XREF: _doexit+17p
					; DATA XREF: _doexit+17r
; LPVOID __stdcall HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes)
		extrn HeapReAlloc:dword	; CODE XREF: ___sbh_alloc_new_region+28p
					; DATA XREF: ___sbh_alloc_new_region+28r
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn VirtualAlloc:dword ; CODE	XREF: ___sbh_alloc_new_region+76p
					; ___sbh_alloc_new_group+51p
					; DATA XREF: ...
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename,	DWORD nSize)
		extrn GetModuleFileNameA:dword ; CODE XREF: sub_406140+16p
					; WinMain(x,x,x,x)+4Dp	...
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn CreateFileA:dword	; CODE XREF: sub_403D60+1Ap
					; sub_408520+1Ap ...
; int __stdcall	LCMapStringW(LCID Locale, DWORD	dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int	cchDest)
		extrn LCMapStringW:dword ; CODE	XREF: ___crtLCMapStringA+42p
					; ___crtLCMapStringA+14Dp ...
; DWORD	__stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
		extrn GetFileSize:dword	; CODE XREF: sub_403D60+29p
					; sub_408520+29p
					; DATA XREF: ...
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_403D60+33p
					; sub_408520+33p ...
; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes)
		extrn LocalAlloc:dword	; CODE XREF: sub_403D60+3Fp
					; sub_406390+4p ...
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn GetModuleHandleA:dword ; CODE XREF: sub_4021D0+72p
					; start+C2p
					; DATA XREF: ...
; DWORD	__stdcall GetTickCount()
		extrn GetTickCount:dword ; CODE	XREF: sub_401E90+51p
					; sub_401E90:loc_401EF0p ...
; BOOL __stdcall GetStringTypeA(LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr,	int cchSrc, LPWORD lpCharType)
		extrn GetStringTypeA:dword ; CODE XREF:	___crtGetStringTypeA+59p
					; ___crtGetStringTypeA+8Dp
					; DATA XREF: ...
; BOOL __stdcall GetStringTypeW(DWORD dwInfoType, LPCWSTR lpSrcStr, int	cchSrc,	LPWORD lpCharType)
		extrn GetStringTypeW:dword ; CODE XREF:	___crtGetStringTypeA+3Fp
					; ___crtGetStringTypeA+12Dp
					; DATA XREF: ...
; int __stdcall	LCMapStringA(LCID Locale, DWORD	dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest)
		extrn LCMapStringA:dword ; CODE	XREF: ___crtLCMapStringA+5Ep
					; ___crtLCMapStringA+A7p
					; DATA XREF: ...
; int __stdcall	MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr,	int cchWideChar)
		extrn MultiByteToWideChar:dword	; CODE XREF: _mbtowc+79p
					; _mbtowc+B8p ...
; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType)
		extrn VirtualFree:dword	; CODE XREF: ___sbh_free_block+257p
					; ___sbh_free_block+2B2p
					; DATA XREF: ...
; HANDLE __stdcall HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize)
		extrn HeapCreate:dword	; CODE XREF: __heap_init+11p
					; DATA XREF: __heap_init+11r
; BOOL __stdcall HeapFree(HANDLE hHeap,	DWORD dwFlags, LPVOID lpMem)
		extrn HeapFree:dword	; CODE XREF: _free+27p
					; ___sbh_free_block+2C4p ...
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes)
		extrn HeapAlloc:dword	; CODE XREF: __heap_alloc+2Ep
					; ___sbh_heap_init+Dp ...
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn GetStartupInfoA:dword ; CODE XREF: start+9Fp
					; __ioinit+59p
					; DATA XREF: ...
; LPSTR	__stdcall GetCommandLineA()
		extrn GetCommandLineA:dword ; CODE XREF: start+74p
					; DATA XREF: start+74r
; DWORD	__stdcall GetVersion()
		extrn GetVersion:dword	; CODE XREF: start+26p
					; DATA XREF: start+26r
; void __stdcall __noreturn ExitProcess(UINT uExitCode)
		extrn ExitProcess:dword	; CODE XREF: _fast_error_exit+1Dp
					; _doexit+91p
					; DATA XREF: ...
; DWORD	__stdcall GetLastError()
		extrn GetLastError:dword ; CODE	XREF: __close+6Fp
					; __write:loc_40BFDAp ...
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn WriteFile:dword	; CODE XREF: __write+D8p __write+13Dp	...
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn ReadFile:dword	; CODE XREF: __read+84p __read+155p
					; DATA XREF: ...
; BOOL __stdcall HeapDestroy(HANDLE hHeap)
		extrn HeapDestroy:dword	; CODE XREF: __heap_init+2Fp
					; DATA XREF: __heap_init+2Fr

;
; Imports from SHELL32.dll
;
; HINSTANCE __stdcall ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd)
		extrn ShellExecuteA:dword ; CODE XREF: sub_406210+92p
					; sub_406210+AAp
					; DATA XREF: ...

;
; Imports from USER32.dll
;
; BOOL __stdcall TranslateMessage(const	MSG *lpMsg)
		extrn TranslateMessage:dword ; CODE XREF: sub_40B580+87p
					; DATA XREF: sub_40B580+4r ...
; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg)
		extrn DispatchMessageA:dword ; CODE XREF: sub_40B580+8Ep
					; DATA XREF: sub_40B580+Br
; BOOL __stdcall PeekMessageA(LPMSG lpMsg, HWND	hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg)
		extrn PeekMessageA:dword ; CODE	XREF: sub_40B580+2Cp
					; DATA XREF: sub_40B580+12r
; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
		extrn GetMessageA:dword	; CODE XREF: sub_40B580+60p
					; DATA XREF: sub_40B580+19r
; int __stdcall	TranslateAcceleratorA(HWND hWnd, HACCEL	hAccTable, LPMSG lpMsg)
		extrn TranslateAcceleratorA:dword ; CODE XREF: sub_40B580+78p
					; DATA XREF: sub_40B580+78r
; void __stdcall PostQuitMessage(int nExitCode)
		extrn PostQuitMessage:dword ; CODE XREF: sub_40B0F0+31p
					; DATA XREF: sub_40B0F0+31r
; BOOL __stdcall PostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
		extrn PostMessageA:dword ; CODE	XREF: sub_40B0F0+16Ap
					; sub_40B0F0+241p
					; DATA XREF: ...
; BOOL __stdcall ShowWindow(HWND hWnd, int nCmdShow)
		extrn ShowWindow:dword	; CODE XREF: sub_40B0F0+256p
					; DATA XREF: sub_40B0F0+256r
; LRESULT __stdcall DefWindowProcA(HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)
		extrn DefWindowProcA:dword ; CODE XREF:	sub_40B0F0+38Ep
					; DATA XREF: sub_40B0F0+38Er
; INT_PTR __stdcall DialogBoxParamA(HINSTANCE hInstance, LPCSTR	lpTemplateName,	HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
		extrn DialogBoxParamA:dword ; CODE XREF: WinMain(x,x,x,x)+8Fp
					; DATA XREF: WinMain(x,x,x,x)+8Fr
; ATOM __stdcall RegisterClassA(const WNDCLASSA	*lpWndClass)
		extrn RegisterClassA:dword ; CODE XREF:	WinMain(x,x,x,x)+10Ep
					; WinMain(x,x,x,x)+25Dp
					; DATA XREF: ...
; int __stdcall	GetSystemMetrics(int nIndex)
		extrn GetSystemMetrics:dword ; CODE XREF: WinMain(x,x,x,x)+160p
					; WinMain(x,x,x,x)+171p ...
; HWND __stdcall CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y,	int nWidth, int	nHeight, HWND hWndParent, HMENU	hMenu, HINSTANCE hInstance, LPVOID lpParam)
		extrn CreateWindowExA:dword ; CODE XREF: WinMain(x,x,x,x)+1F7p
					; WinMain(x,x,x,x)+2B7p
					; DATA XREF: ...
; HACCEL __stdcall LoadAcceleratorsA(HINSTANCE hInstance, LPCSTR lpTableName)
		extrn LoadAcceleratorsA:dword ;	CODE XREF: WinMain(x,x,x,x)+219p
					; DATA XREF: WinMain(x,x,x,x)+219r
; HMENU	__stdcall GetMenu(HWND hWnd)
		extrn GetMenu:dword	; CODE XREF: WinMain(x,x,x,x)+225p
					; DATA XREF: WinMain(x,x,x,x)+225r
; HCURSOR __stdcall LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName)
		extrn LoadCursorA:dword	; CODE XREF: WinMain(x,x,x,x)+30Dp
					; DATA XREF: WinMain(x,x,x,x)+30Dr
; HCURSOR __stdcall SetCursor(HCURSOR hCursor)
		extrn SetCursor:dword	; CODE XREF: WinMain(x,x,x,x)+314p
					; DATA XREF: WinMain(x,x,x,x)+314r
; BOOL __stdcall GetCursorPos(LPPOINT lpPoint)
		extrn GetCursorPos:dword ; CODE	XREF: sub_402860+Ap
					; DATA XREF: sub_402860+Ar
; BOOL __stdcall SetCursorPos(int X, int Y)
		extrn SetCursorPos:dword ; CODE	XREF: sub_402820+1Bp
					; WinMain(x,x,x,x)+2FBp ...
; int __stdcall	MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption,	UINT uType)
		extrn MessageBoxA:dword	; CODE XREF: WinMain(x,x,x,x)+398p
					; sub_40B0F0+2D7p ...
; HANDLE __stdcall LoadImageA(HINSTANCE	hInst, LPCSTR name, UINT type, int cx, int cy, UINT fuLoad)
		extrn LoadImageA:dword	; CODE XREF: sub_4021D0+79p
					; WinMain(x,x,x,x)+C3p
					; DATA XREF: ...
; BOOL __stdcall GetWindowRect(HWND hWnd, LPRECT lpRect)
		extrn GetWindowRect:dword ; CODE XREF: sub_401E90+Ep
					; DATA XREF: sub_401E90+Er
; BOOL __stdcall EndDialog(HWND	hDlg, INT_PTR nResult)
		extrn EndDialog:dword	; CODE XREF: DialogFunc+24p
					; DialogFunc+40p
					; DATA XREF: ...
; LRESULT __stdcall SendDlgItemMessageA(HWND hDlg, int nIDDlgItem, UINT	Msg, WPARAM wParam, LPARAM lParam)
		extrn SendDlgItemMessageA:dword	; CODE XREF: sub_401D40+42p
					; sub_401D40+71p ...
		extrn byte_41118C:byte:4 ; DATA	XREF: __output+4Ar
;
; Imports from VERSION.dll
;
; DWORD	__stdcall GetFileVersionInfoSizeA(LPCSTR lptstrFilename, LPDWORD lpdwHandle)
		extrn __imp_GetFileVersionInfoSizeA:dword
					; DATA XREF: GetFileVersionInfoSizeAr
					; .rdata:00411590o
; BOOL __stdcall GetFileVersionInfoA(LPCSTR lptstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID	lpData)
		extrn __imp_GetFileVersionInfoA:dword ;	DATA XREF: GetFileVersionInfoAr
; BOOL __stdcall VerQueryValueA(LPCVOID	pBlock,	LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
		extrn __imp_VerQueryValueA:dword ; DATA	XREF: VerQueryValueAr


; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 4111A0h
stru_4111A0	_SCOPETABLE_ENTRY <0FFFFFFFFh, offset loc_40BB4D, offset loc_40BB61>
					; DATA XREF: start+5o
					; SEH scope table for function 40BA76
byte_4111AC	db 6			; DATA XREF: __output:loc_40C5E4r
		db    0
		db    0
		db    6
		db    0
		db    1
		db    0
		db    0
		db  10h
		db    0
		db    3
		db    6
		db    0
		db    6
		db    2
		db  10h
		db    4
		db  45h	; E
		db  45h	; E
		db  45h	; E
		db    5
		db    5
		db    5
		db    5
		db    5
		db  35h	; 5
		db  30h	; 0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    0
		db  20h
		db  28h	; (
		db  38h	; 8
		db  50h	; P
		db  58h	; X
		db    7
		db    8
		db    0
		db  37h	; 7
		db  30h	; 0
		db  30h	; 0
		db  57h	; W
		db  50h	; P
		db    7
		db    0
		db    0
		db  20h
		db  20h
		db    8
		db    0
		db    0
		db    0
		db    0
		db    8
		db  60h	; `
		db  68h	; h
		db  60h	; `
		db  60h	; `
		db  60h	; `
		db  60h	; `
		db    0
		db    0
		db  70h	; p
		db  70h	; p
		db  78h	; x
		db  78h	; x
		db  78h	; x
		db  78h	; x
		db    8
		db    7
		db    8
		db    0
		db    0
		db    7
		db    0
		db    8
		db    8
		db    8
		db    0
		db    0
		db    8
		db    0
		db    8
		db    0
		db    7
		db    8
		db    0
		db    0
		db    0
aNull_0:				; DATA XREF: .data:off_413364o
		unicode	0, <(null)>,0
		align 4
aNull		db '(null)',0           ; DATA XREF: .data:off_413360o
		align 10h
aRuntimeError	db 'runtime error ',0
		align 10h
		db 0Dh,0Ah,0
		align 4
aTlossError	db 'TLOSS error',0Dh,0Ah,0
		align 4
aSingError	db 'SING error',0Dh,0Ah,0
		align 4
aDomainError	db 'DOMAIN error',0Dh,0Ah,0
		align 4
aR6028UnableToI	db 'R6028',0Dh,0Ah
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_41342Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: __NMSG_WRITE+119o
		align 4
; char asc_4114D4[]
asc_4114D4	db 0Ah			; DATA XREF: __NMSG_WRITE+F1o
		db 0Ah,0
		align 4
; char aRuntimeErrorPr[]
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: __NMSG_WRITE+D3o
		db 0Ah
		db 'Program: ',0
		align 4
; char a___[]
a___		db '...',0              ; DATA XREF: __NMSG_WRITE+BFo
; char aProgramNameUnk[]
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: __NMSG_WRITE+7Do
		align 10h
; CHAR aGetlastactivep[]
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: ___crtMessageBoxA+3Do
		align 4
; CHAR aGetactivewindo[]
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: ___crtMessageBoxA+35o
; CHAR ProcName[]
ProcName	db 'MessageBoxA',0      ; DATA XREF: ___crtMessageBoxA+24o
; CHAR LibFileName[]
LibFileName	db 'user32.dll',0       ; DATA XREF: ___crtMessageBoxA+Do
		align 4
; CHAR byte_41154C[4]
byte_41154C	db 4 dup(0)		; DATA XREF: ___crtGetStringTypeA+52o
					; ___crtLCMapStringA+57o
; const	WCHAR SrcStr
SrcStr		dw 0			; DATA XREF: ___crtGetStringTypeA+39o
					; ___crtLCMapStringA+36o
		align 8
stru_411558	_SCOPETABLE_ENTRY <0FFFFFFFFh, offset loc_41090B, offset loc_41090F>
					; DATA XREF: ___crtGetStringTypeA+5o
					; SEH scope table for function 410812
		align 8
stru_411568	_SCOPETABLE_ENTRY <0FFFFFFFFh, offset loc_410A6B, offset loc_410A6F>
					; DATA XREF: ___crtLCMapStringA+5o
		_SCOPETABLE_ENTRY <0FFFFFFFFh, offset loc_410B1F, offset loc_410B23> ; SEH scope table for function 41095B
__IMPORT_DESCRIPTOR_VERSION dd rva off_4117B0 ;	Import Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aVersion_dll	; DLL Name
		dd rva __imp_GetFileVersionInfoSizeA ; Import Address Table
__IMPORT_DESCRIPTOR_DDRAW dd rva off_411620 ; Import Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aDdraw_dll	; DLL Name
		dd rva __imp_DirectDrawCreate ;	Import Address Table
__IMPORT_DESCRIPTOR_DSOUND dd rva dword_411628 ; Import	Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aDsound_dll	; DLL Name
		dd rva __imp_DirectSoundCreate ; Import	Address	Table
__IMPORT_DESCRIPTOR_KERNEL32 dd	rva off_411660 ; Import	Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aKernel32_dll	; DLL Name
		dd rva DeleteFileA	; Import Address Table
__IMPORT_DESCRIPTOR_USER32 dd rva off_41174C ; Import Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aUser32_dll	; DLL Name
		dd rva TranslateMessage	; Import Address Table
__IMPORT_DESCRIPTOR_GDI32 dd rva off_411630 ; Import Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aGdi32_dll	; DLL Name
		dd rva SetTextColor	; Import Address Table
__IMPORT_DESCRIPTOR_SHELL32 dd rva off_411744 ;	Import Name Table
		dd 0			; Time stamp
		dd 0			; Forwarder Chain
		dd rva aShell32_dll	; DLL Name
		dd rva ShellExecuteA	; Import Address Table
		align 20h
;
; Import names for DDRAW.dll
;
off_411620	dd rva word_41180E	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_DDRAWo
		dd 0
;
; Import names for DSOUND.dll
;
dword_411628	dd 80000001h		; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_DSOUNDo
		dd 0
;
; Import names for GDI32.dll
;
off_411630	dd rva word_411B5A	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_GDI32o
		dd rva word_411B6A
		dd rva word_411B76
		dd rva word_411AFE
		dd rva word_411B4E
		dd rva word_411B40
		dd rva word_411B32
		dd rva word_411B1C
		dd rva word_411B0C
		dd rva word_411AF2
		dd rva word_411AE2
		dd 0
;
; Import names for KERNEL32.dll
;
off_411660	dd rva word_4118C0	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_KERNEL32o
		dd rva word_4118CE
		dd rva word_4118DA
		dd rva word_4118EA
		dd rva word_4118FA
		dd rva word_41190A
		dd rva word_41191A
		dd rva word_41192A
		dd rva word_411E02
		dd rva word_411DF2
		dd rva word_411DE0
		dd rva word_411DD4
		dd rva word_411DCA
		dd rva word_411DBE
		dd rva word_4118AA
		dd rva word_411D94
		dd rva word_411D84
		dd rva word_411D78
		dd rva word_411D6A
		dd rva word_411D5A
		dd rva word_411D48
		dd rva word_411D2E
		dd rva word_411D16
		dd rva word_411D00
		dd rva word_411CE6
		dd rva word_411CCC
		dd rva word_411CB0
		dd rva word_411C9E
		dd rva word_411C8A
		dd rva word_411C76
		dd rva word_411C68
		dd rva word_411C58
		dd rva word_411894
		dd rva word_411886
		dd rva word_411E46
		dd rva word_411878
		dd rva word_41186A
		dd rva word_41185C
		dd rva word_411848
		dd rva word_411838
		dd rva word_411E12
		dd rva word_411E24
		dd rva word_411E36
		dd rva word_411DA8
		dd rva word_411C4A
		dd rva word_411C3C
		dd rva word_411BAE
		dd rva word_411BBA
		dd rva word_411BC6
		dd rva word_411BD8
		dd rva word_411BEA
		dd rva word_411BF8
		dd rva word_411C06
		dd rva word_411C16
		dd rva word_411C22
		dd rva word_411C2E
		dd 0
;
; Import names for SHELL32.dll
;
off_411744	dd rva word_411B92	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_SHELL32o
		dd 0
;
; Import names for USER32.dll
;
off_41174C	dd rva word_411AC2	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_USER32o
		dd rva word_411AAE
		dd rva word_411A9E
		dd rva word_411A90
		dd rva word_411A78
		dd rva word_411A66
		dd rva word_411A56
		dd rva word_411A48
		dd rva word_411A36
		dd rva word_411A24
		dd rva word_411A12
		dd rva word_4119FE
		dd rva word_4119EC
		dd rva word_4119D8
		dd rva word_4119CE
		dd rva word_4119C0
		dd rva word_4119B4
		dd rva word_4119A4
		dd rva word_411994
		dd rva word_411986
		dd rva word_411978
		dd rva word_411968
		dd rva word_41195C
		dd rva word_411946
		dd 0
;
; Import names for VERSION.dll
;
off_4117B0	dd rva word_4117E8	; DATA XREF: .rdata:__IMPORT_DESCRIPTOR_VERSIONo
		dd rva word_4117D2
		dd rva word_4117C0
		dd 0
word_4117C0	dw 0Ah			; DATA XREF: .rdata:004117B8o
		db 'VerQueryValueA',0
		align 2
word_4117D2	dw 0			; DATA XREF: .rdata:004117B4o
		db 'GetFileVersionInfoA',0
word_4117E8	dw 1			; DATA XREF: .rdata:off_4117B0o
		db 'GetFileVersionInfoSizeA',0
aVersion_dll	db 'VERSION.dll',0      ; DATA XREF: .rdata:0041158Co
word_41180E	dw 7			; DATA XREF: .rdata:off_411620o
		db 'DirectDrawCreate',0
		align 2
aDdraw_dll	db 'DDRAW.dll',0        ; DATA XREF: .rdata:004115A0o
aDsound_dll	db 'DSOUND.dll',0       ; DATA XREF: .rdata:004115B4o
		align 4
word_411838	dw 16Dh			; DATA XREF: .rdata:004116FCo
		db 'GetTickCount',0
		align 4
word_411848	dw 126h			; DATA XREF: .rdata:004116F8o
		db 'GetModuleHandleA',0
		align 4
word_41185C	dw 1C8h			; DATA XREF: .rdata:004116F4o
		db 'LocalAlloc',0
		align 2
word_41186A	dw 1Bh			; DATA XREF: .rdata:004116F0o
		db 'CloseHandle',0
word_411878	dw 112h			; DATA XREF: .rdata:004116ECo
		db 'GetFileSize',0
word_411886	dw 34h			; DATA XREF: .rdata:004116E4o
		db 'CreateFileA',0
word_411894	dw 124h			; DATA XREF: .rdata:004116E0o
		db 'GetModuleFileNameA',0
		align 2
word_4118AA	dw 159h			; DATA XREF: .rdata:00411698o
		db 'GetSystemDirectoryA',0
word_4118C0	dw 57h			; DATA XREF: .rdata:off_411660o
		db 'DeleteFileA',0
word_4118CE	dw 1CCh			; DATA XREF: .rdata:00411664o
		db 'LocalFree',0
word_4118DA	dw 1D5h			; DATA XREF: .rdata:00411668o
		db 'LockResource',0
		align 2
word_4118EA	dw 1C7h			; DATA XREF: .rdata:0041166Co
		db 'LoadResource',0
		align 2
word_4118FA	dw 0A3h			; DATA XREF: .rdata:00411670o
		db 'FindResourceA',0
word_41190A	dw 225h			; DATA XREF: .rdata:00411674o
		db 'ReleaseMutex',0
		align 2
word_41191A	dw 3Fh			; DATA XREF: .rdata:00411678o
		db 'CreateMutexA',0
		align 2
word_41192A	dw 1EDh			; DATA XREF: .rdata:0041167Co
		db 'OpenMutexA',0
		align 4
aKernel32_dll	db 'KERNEL32.dll',0     ; DATA XREF: .rdata:004115C8o
		align 2
word_411946	dw 20Fh			; DATA XREF: .rdata:004117A8o
		db 'SendDlgItemMessageA',0
word_41195C	dw 0B9h			; DATA XREF: .rdata:004117A4o
		db 'EndDialog',0
word_411968	dw 15Ch			; DATA XREF: .rdata:004117A0o
		db 'GetWindowRect',0
word_411978	dw 1A0h			; DATA XREF: .rdata:0041179Co
		db 'LoadImageA',0
		align 2
word_411986	dw 1BEh			; DATA XREF: .rdata:00411798o
		db 'MessageBoxA',0
word_411994	dw 228h			; DATA XREF: .rdata:00411794o
		db 'SetCursorPos',0
		align 4
word_4119A4	dw 0FCh			; DATA XREF: .rdata:00411790o
		db 'GetCursorPos',0
		align 4
word_4119B4	dw 226h			; DATA XREF: .rdata:0041178Co
		db 'SetCursor',0
word_4119C0	dw 19Ah			; DATA XREF: .rdata:00411788o
		db 'LoadCursorA',0
word_4119CE	dw 11Ch			; DATA XREF: .rdata:00411784o
		db 'GetMenu',0
word_4119D8	dw 196h			; DATA XREF: .rdata:00411780o
		db 'LoadAcceleratorsA',0
word_4119EC	dw 59h			; DATA XREF: .rdata:0041177Co
		db 'CreateWindowExA',0
word_4119FE	dw 146h			; DATA XREF: .rdata:00411778o
		db 'GetSystemMetrics',0
		align 2
word_411A12	dw 1F2h			; DATA XREF: .rdata:00411774o
		db 'RegisterClassA',0
		align 4
word_411A24	dw 93h			; DATA XREF: .rdata:00411770o
		db 'DialogBoxParamA',0
word_411A36	dw 84h			; DATA XREF: .rdata:0041176Co
		db 'DefWindowProcA',0
		align 4
word_411A48	dw 26Ah			; DATA XREF: .rdata:00411768o
		db 'ShowWindow',0
		align 2
word_411A56	dw 1DEh			; DATA XREF: .rdata:00411764o
		db 'PostMessageA',0
		align 2
word_411A66	dw 1E0h			; DATA XREF: .rdata:00411760o
		db 'PostQuitMessage',0
word_411A78	dw 27Fh			; DATA XREF: .rdata:0041175Co
		db 'TranslateAcceleratorA',0
word_411A90	dw 12Ah			; DATA XREF: .rdata:00411758o
		db 'GetMessageA',0
word_411A9E	dw 1DCh			; DATA XREF: .rdata:00411754o
		db 'PeekMessageA',0
		align 2
word_411AAE	dw 95h			; DATA XREF: .rdata:00411750o
		db 'DispatchMessageA',0
		align 2
word_411AC2	dw 282h			; DATA XREF: .rdata:off_41174Co
		db 'TranslateMessage',0
		align 2
aUser32_dll	db 'USER32.dll',0       ; DATA XREF: .rdata:004115DCo
		align 2
word_411AE2	dw 53h			; DATA XREF: .rdata:00411658o
		db 'DeleteObject',0
		align 2
word_411AF2	dw 50h			; DATA XREF: .rdata:00411654o
		db 'DeleteDC',0
		align 2
word_411AFE	dw 200h			; DATA XREF: .rdata:0041163Co
		db 'StretchBlt',0
		align 4
word_411B0C	dw 1C7h			; DATA XREF: .rdata:00411650o
		db 'SelectObject',0
		align 4
word_411B1C	dw 2Ah			; DATA XREF: .rdata:0041164Co
		db 'CreateCompatibleDC',0
		align 2
word_411B32	dw 14Fh			; DATA XREF: .rdata:00411648o
		db 'GetObjectA',0
		align 10h
word_411B40	dw 36h			; DATA XREF: .rdata:00411644o
		db 'CreateFontA',0
word_411B4E	dw 205h			; DATA XREF: .rdata:00411640o
		db 'TextOutA',0
		align 2
word_411B5A	dw 1F3h			; DATA XREF: .rdata:off_411630o
		db 'SetTextColor',0
		align 2
word_411B6A	dw 1CEh			; DATA XREF: .rdata:00411634o
		db 'SetBkMode',0
word_411B76	dw 15Fh			; DATA XREF: .rdata:00411638o
		db 'GetStockObject',0
		align 4
aGdi32_dll	db 'GDI32.dll',0        ; DATA XREF: .rdata:004115F0o
word_411B92	dw 72h			; DATA XREF: .rdata:off_411744o
		db 'ShellExecuteA',0
aShell32_dll	db 'SHELL32.dll',0      ; DATA XREF: .rdata:00411604o
word_411BAE	dw 19Fh			; DATA XREF: .rdata:00411718o
		db 'HeapFree',0
		align 2
word_411BBA	dw 199h			; DATA XREF: .rdata:0041171Co
		db 'HeapAlloc',0
word_411BC6	dw 150h			; DATA XREF: .rdata:00411720o
		db 'GetStartupInfoA',0
word_411BD8	dw 0CAh			; DATA XREF: .rdata:00411724o
		db 'GetCommandLineA',0
word_411BEA	dw 174h			; DATA XREF: .rdata:00411728o
		db 'GetVersion',0
		align 4
word_411BF8	dw 7Dh			; DATA XREF: .rdata:0041172Co
		db 'ExitProcess',0
word_411C06	dw 11Ah			; DATA XREF: .rdata:00411730o
		db 'GetLastError',0
		align 2
word_411C16	dw 2DFh			; DATA XREF: .rdata:00411734o
		db 'WriteFile',0
word_411C22	dw 218h			; DATA XREF: .rdata:00411738o
		db 'ReadFile',0
		align 2
word_411C2E	dw 19Dh			; DATA XREF: .rdata:0041173Co
		db 'HeapDestroy',0
word_411C3C	dw 19Bh			; DATA XREF: .rdata:00411714o
		db 'HeapCreate',0
		align 2
word_411C4A	dw 2BFh			; DATA XREF: .rdata:00411710o
		db 'VirtualFree',0
word_411C58	dw 2BBh			; DATA XREF: .rdata:004116DCo
		db 'VirtualAlloc',0
		align 4
word_411C68	dw 1A2h			; DATA XREF: .rdata:004116D8o
		db 'HeapReAlloc',0
word_411C76	dw 29Eh			; DATA XREF: .rdata:004116D4o
		db 'TerminateProcess',0
		align 2
word_411C8A	dw 0F7h			; DATA XREF: .rdata:004116D0o
		db 'GetCurrentProcess',0
word_411C9E	dw 26Ah			; DATA XREF: .rdata:004116CCo
		db 'SetFilePointer',0
		align 10h
word_411CB0	dw 2ADh			; DATA XREF: .rdata:004116C8o
		db 'UnhandledExceptionFilter',0
		align 4
word_411CCC	dw 0B2h			; DATA XREF: .rdata:004116C4o
		db 'FreeEnvironmentStringsA',0
word_411CE6	dw 0B3h			; DATA XREF: .rdata:004116C0o
		db 'FreeEnvironmentStringsW',0
word_411D00	dw 2D2h			; DATA XREF: .rdata:004116BCo
		db 'WideCharToMultiByte',0
word_411D16	dw 106h			; DATA XREF: .rdata:004116B8o
		db 'GetEnvironmentStrings',0
word_411D2E	dw 108h			; DATA XREF: .rdata:004116B4o
		db 'GetEnvironmentStringsW',0
		align 4
word_411D48	dw 26Dh			; DATA XREF: .rdata:004116B0o
		db 'SetHandleCount',0
		align 2
word_411D5A	dw 152h			; DATA XREF: .rdata:004116ACo
		db 'GetStdHandle',0
		align 2
word_411D6A	dw 115h			; DATA XREF: .rdata:004116A8o
		db 'GetFileType',0
word_411D78	dw 22Fh			; DATA XREF: .rdata:004116A4o
		db 'RtlUnwind',0
word_411D84	dw 27Ch			; DATA XREF: .rdata:004116A0o
		db 'SetStdHandle',0
		align 4
word_411D94	dw 0AAh			; DATA XREF: .rdata:0041169Co
		db 'FlushFileBuffers',0
		align 4
word_411DA8	dw 1E4h			; DATA XREF: .rdata:0041170Co
		db 'MultiByteToWideChar',0
word_411DBE	dw 0BFh			; DATA XREF: .rdata:00411694o
		db 'GetCPInfo',0
word_411DCA	dw 0B9h			; DATA XREF: .rdata:00411690o
		db 'GetACP',0
		align 4
word_411DD4	dw 131h			; DATA XREF: .rdata:0041168Co
		db 'GetOEMCP',0
		align 10h
word_411DE0	dw 13Eh			; DATA XREF: .rdata:00411688o
		db 'GetProcAddress',0
		align 2
word_411DF2	dw 1C2h			; DATA XREF: .rdata:00411684o
		db 'LoadLibraryA',0
		align 2
word_411E02	dw 261h			; DATA XREF: .rdata:00411680o
		db 'SetEndOfFile',0
		align 2
word_411E12	dw 153h			; DATA XREF: .rdata:00411700o
		db 'GetStringTypeA',0
		align 4
word_411E24	dw 156h			; DATA XREF: .rdata:00411704o
		db 'GetStringTypeW',0
		align 2
word_411E36	dw 1BFh			; DATA XREF: .rdata:00411708o
		db 'LCMapStringA',0
		align 2
word_411E46	dw 1C0h			; DATA XREF: .rdata:004116E8o
		db 'LCMapStringW',0
		align 200h
_rdata		ends

; Section 3. (virtual address 00012000)
; Virtual size			: 00006FB8 (  28600.)
; Section size in file		: 00002000 (   8192.)
; Offset to raw	data for section: 00012000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 412000h
unk_412000	db    0			; DATA XREF: __cinit+1Fo
		db    0
		db    0
		db    0
unk_412004	db    0			; DATA XREF: __cinit+1Ao
		db    0
		db    0
		db    0
unk_412008	db    0			; DATA XREF: __cinit+10o
		db    0
		db    0
		db    0
		db  3Dh	; =
		db 0F4h	; Ù
		db  40h	; @
		db    0
		db  4Bh	; K
		db    3
		db  41h	; A
		db    0
unk_412014	db    0			; DATA XREF: __cinit:loc_40E510o
		db    0
		db    0
		db    0
unk_412018	db    0			; DATA XREF: _doexit+65o
		db    0
		db    0
		db    0
		db 0E2h	; ‚
		db 0F4h	; Ù
		db  40h	; @
		db    0
unk_412020	db    0			; DATA XREF: _doexit:loc_40E5B4o
		db    0
		db    0
		db    0
unk_412024	db    0			; DATA XREF: _doexit+76o
		db    0
		db    0
		db    0
unk_412028	db    0			; DATA XREF: _doexit:loc_40E5C5o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_412030	dd 0			; DATA XREF: sub_4010B0+30o
					; sub_4010B0:loc_401102r ...
dword_412034	dd 0			; DATA XREF: sub_4010B0+57r
dword_412038	dd 20h			; DATA XREF: sub_4010B0+5Dr
dword_41203C	dd 18h			; DATA XREF: sub_4010B0+67r
		db    0
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  60h	; `
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
off_4120D0	dd offset aOption_bin	; DATA XREF: sub_401C50r
					; sub_401CC0+18r
					; "Option.bin"
aOption_bin	db 'Option.bin',0       ; DATA XREF: .data:off_4120D0o
		align 10h
; char aWb[3]
aWb		db 'wb',0               ; DATA XREF: sub_401C50+25o
					; sub_403370+24o ...
		align 4
; char aSS[]
aSS		db '%s\%s',0            ; DATA XREF: sub_401C50+16o
					; sub_401CC0+28o ...
		align 4
; char aRb[]
aRb		db 'rb',0               ; DATA XREF: sub_401CC0+37o
					; sub_403270+24o ...
		align 10h
a640x480Windowe	db '640x480 Windowed ',0 ; DATA XREF: sub_401D40+21o
		align 4
a320x240Windowe	db '320x240 Windowed ',0 ; DATA XREF: sub_401D40+19o
		align 4
aFullscreen	db 'Fullscreen    ',0   ; DATA XREF: sub_401D40+11o
		align 4
dword_412128	dd 1			; DATA XREF: Init_Direct_Draw+3Fw
					; Init_Direct_Draw+5Fw	...
		align 10h
unk_412130	db    0			; DATA XREF: sub_402860+3Eo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412140	db  20h			; DATA XREF: sub_4028D0+Bo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412150	db  30h	; 0		; DATA XREF: sub_4028D0+211o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412160	db  20h			; DATA XREF: sub_4028D0+166o
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412170	db    0			; DATA XREF: sub_403140+3o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0D8h	; ÿ
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412180	db    0			; DATA XREF: sub_403140+2Do
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412190	db    0			; DATA XREF: sub_403140+113o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
aNpchar_dat	db 'NPChar.dat',0       ; DATA XREF: sub_403270+Bo
					; sub_403370+Bo ...
		align 10h
off_4121E0	dd offset sub_403490	; DATA XREF: sub_4037E0+21r
		dd offset sub_403560
		dd offset sub_403630
		dd offset sub_4036E0
unk_4121F0	db    0			; DATA XREF: sub_403490+81o
					; sub_403560+81o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412330	db    0			; DATA XREF: sub_403920+110o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  60h	; `
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  60h	; `
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  80h	; Ä
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  80h	; Ä
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  90h	; ê
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  90h	; ê
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0A0h	; †
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0A0h	; †
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0B0h	; ∞
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0B0h	; ∞
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0C0h	; ¿
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0C0h	; ¿
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0D0h	; –
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0D0h	; –
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0E0h	; ‡
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0E0h	; ‡
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0F0h	; 
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412420	db 0F0h	; 		; DATA XREF: sub_403920+198o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    1
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412430	db    0			; DATA XREF: sub_403C40+4Ao
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
unk_4124D0	db    0			; DATA XREF: sub_403CC0+4Co
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  1Ch
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  1Ch
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  24h	; $
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  24h	; $
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412570	db 0A0h	; †		; DATA XREF: sub_403C40+19o
					; sub_403CC0+Co
		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
unk_412584	db    1			; DATA XREF: sub_403C40+3Fo
					; sub_403CC0+41o
		db    0
		db    0
		db    0
unk_412588	db    0			; DATA XREF: sub_403C40+67o
					; sub_403CC0+69o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    1
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412598	db    0			; DATA XREF: sub_404320+DE0o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_4125A8	db    0			; DATA XREF: sub_404320+DF5o
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_4125B8	db  30h	; 0		; DATA XREF: sub_404320+DC3o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_4125C8	db  18h			; DATA XREF: sub_405210+3Eo
					; sub_405210+5Co
		db    0
		db    0
		db    0
		db 0BEh	; æ
		db    0
		db    0
		db    0
		db  28h	; (
		db    1
		db    0
		db    0
		db 0E2h	; ‚
		db    0
		db    0
		db    0
aIka_en03	db 'ika_en03',0         ; DATA XREF: sub_403DF0+48o
					; sub_403F90+5Ar
		align 8
a8		db '8',0                ; DATA XREF: sub_4042E0+1Do
		align 4
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  38h	; 8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412668	db    0			; DATA XREF: sub_405210+10o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  2Ch	; ,
		db    1
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
aIka_rec	db 'Ika.rec',0          ; DATA XREF: sub_403DF0+Bo
					; sub_403F90+Bo
unk_412680	db    0			; DATA XREF: sub_4010B0+13Eo
					; sub_4010B0+1A2o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    1
		db    0
		db    0
		db 0F0h	; 
		db    0
		db    0
		db    0
unk_412690	db    0			; DATA XREF: sub_404320+C64o
					; sub_405350+52Bo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
aStaff_ptx	db 'Staff.ptx',0        ; DATA XREF: sub_405350+C6Fo
		align 4
aPbmEnd_pbm	db 'Pbm\End.pbm',0      ; DATA XREF: sub_405350+C65o
aPbmStaff_pbm	db 'Pbm\Staff.pbm',0    ; DATA XREF: sub_405350+C59o
		align 4
aPbmNpctype_pbm	db 'Pbm\NpcType.pbm',0  ; DATA XREF: sub_405350+6CFo
aPbmEditor_pbm	db 'Pbm\Editor.pbm',0   ; DATA XREF: sub_405350+6C3o
		align 4
aPbmLevelup_pbm	db 'Pbm\LevelUp.pbm',0  ; DATA XREF: sub_405350+6B7o
aPbmDamage_pbm	db 'Pbm\Damage.pbm',0   ; DATA XREF: sub_405350+6ABo
		align 4
aPbmBubble_pbm	db 'Pbm\Bubble.pbm',0   ; DATA XREF: sub_405350+69Fo
		align 4
aPbmStar_pbm	db 'Pbm\Star.pbm',0     ; DATA XREF: sub_405350+690o
		align 4
aPbmMychar3_pbm	db 'Pbm\MyChar3.pbm',0  ; DATA XREF: sub_405350+684o
aPbmMychar2_pbm	db 'Pbm\MyChar2.pbm',0  ; DATA XREF: sub_405350+678o
aPbmMychar_pbm	db 'Pbm\MyChar.pbm',0   ; DATA XREF: sub_405350+66Co
		align 4
aPbmIronhead_pb	db 'Pbm\Ironhead.pbm',0 ; DATA XREF: sub_405350+660o
		align 4
aPbmUfo_pbm	db 'Pbm\Ufo.pbm',0      ; DATA XREF: sub_405350+654o
aPbmJuel_pbm	db 'Pbm\Juel.pbm',0     ; DATA XREF: sub_405350+648o
		align 4
aPbmCarry_pbm	db 'Pbm\Carry.pbm',0    ; DATA XREF: sub_405350+63Co
		align 4
aPbmDum_pbm	db 'Pbm\Dum.pbm',0      ; DATA XREF: sub_405350+62Do
aPbmHoshi_pbm	db 'Pbm\Hoshi.pbm',0    ; DATA XREF: sub_405350+621o
		align 4
aPbmChibi_pbm	db 'Pbm\Chibi.pbm',0    ; DATA XREF: sub_405350+615o
		align 4
aPbmSleep_pbm	db 'Pbm\Sleep.pbm',0    ; DATA XREF: sub_405350+609o
		align 4
aPbmKani_pbm	db 'Pbm\Kani.pbm',0     ; DATA XREF: sub_405350+5FDo
		align 4
aPbmIsogin_pbm	db 'Pbm\Isogin.pbm',0   ; DATA XREF: sub_405350+5F1o
		align 4
aPbmHari_pbm	db 'Pbm\Hari.pbm',0     ; DATA XREF: sub_405350+5E5o
		align 4
aPbmItembox_pbm	db 'Pbm\ItemBox.pbm',0  ; DATA XREF: sub_405350+5D9o
aPbmItem_pbm	db 'Pbm\Item.pbm',0     ; DATA XREF: sub_405350+5CAo
		align 4
aPbmFigure_pbm	db 'Pbm\Figure.pbm',0   ; DATA XREF: sub_405350+5BEo
		align 4
aPbmStatus_pbm	db 'Pbm\Status.pbm',0   ; DATA XREF: sub_405350+5B2o
		align 4
aPbmBack_pbm	db 'Pbm\Back.pbm',0     ; DATA XREF: sub_405350+5A7o
		align 4
aPbmPrtsnack_pb	db 'Pbm\PrtSnack.pbm',0 ; DATA XREF: sub_405350+59Bo
		align 4
aPbmPrtitem_pbm	db 'Pbm\PrtItem.pbm',0  ; DATA XREF: sub_405350+58Fo
aPbmPrtdmg_pbm	db 'Pbm\PrtDmg.pbm',0   ; DATA XREF: sub_405350+583o
		align 4
aPbmPrtblock_pb	db 'Pbm\PrtBlock.pbm',0 ; DATA XREF: sub_405350+577o
		align 4
aPbmPrtdir_pbm	db 'Pbm\PrtDir.pbm',0   ; DATA XREF: sub_405350+568o
		align 4
aPbmPrtfilt_pbm	db 'Pbm\PrtFilt.pbm',0  ; DATA XREF: sub_405350+55Co
aPbmPrtback_pbm	db 'Pbm\PrtBack.pbm',0  ; DATA XREF: sub_405350+550o
aPbmLoading_pbm	db 'Pbm\Loading.pbm',0  ; DATA XREF: sub_405350+51Fo
aWords_ptx	db 'Words.ptx',0        ; DATA XREF: sub_405350:loc_4057A8o
		align 4
aPbmMap1_pbm	db 'Pbm\Map1.pbm',0     ; DATA XREF: sub_405350+314o
		align 4
aPbmYesno_pbm	db 'Pbm\YesNo.pbm',0    ; DATA XREF: sub_405350+2E4o
		align 4
aPbmCursor_pbm	db 'Pbm\Cursor.pbm',0   ; DATA XREF: sub_405350+2D8o
		align 4
aPbmMsgbox_pbm	db 'Pbm\MsgBox.pbm',0   ; DATA XREF: sub_405350+2CCo
		align 4
aEvent_ptx	db 'Event.ptx',0        ; DATA XREF: sub_405350+285o
		align 4
aPbmFade_pbm	db 'Pbm\Fade.pbm',0     ; DATA XREF: sub_405350+1C3o
		align 4
; CHAR aBossouch[]
aBossouch	db 'BOSSOUCH',0         ; DATA XREF: sub_405350+194o
		align 10h
; CHAR aQuake[]
aQuake		db 'QUAKE',0            ; DATA XREF: sub_405350+185o
		align 4
; CHAR aNodmg[]
aNodmg		db 'NODMG',0            ; DATA XREF: sub_405350+179o
		align 10h
; CHAR aYesno[]
aYesno		db 'YESNO',0            ; DATA XREF: sub_405350+16Eo
		align 4
; CHAR aSave[]
aSave		db 'SAVE',0             ; DATA XREF: sub_405350+162o
		align 10h
; CHAR aLifeup[]
aLifeup		db 'LIFEUP',0           ; DATA XREF: sub_405350+156o
		align 4
; CHAR aLevelup[]
aLevelup	db 'LEVELUP',0          ; DATA XREF: sub_405350+14Ao
; CHAR aWin[]
aWin		db 'WIN',0              ; DATA XREF: sub_405350+13Eo
; CHAR aDead[]
aDead		db 'DEAD',0             ; DATA XREF: sub_405350+132o
		align 4
; CHAR aMessage[]
aMessage	db 'MESSAGE',0          ; DATA XREF: sub_405350+123o
; CHAR aGo[]
aGo		db 'GO',0               ; DATA XREF: sub_405350+117o
		align 4
; CHAR aReady[]
aReady		db 'READY',0            ; DATA XREF: sub_405350+10Bo
		align 10h
; CHAR aCrash[]
aCrash		db 'CRASH',0            ; DATA XREF: sub_405350+FFo
		align 4
; CHAR aHithead[]
aHithead	db 'HITHEAD',0          ; DATA XREF: sub_405350+F3o
; CHAR aItem[]
aItem		db 'ITEM',0             ; DATA XREF: sub_405350+E7o
		align 4
; CHAR aOuch[]
aOuch		db 'OUCH',0             ; DATA XREF: sub_405350+DBo
		align 10h
; CHAR aDash[]
aDash		db 'DASH',0             ; DATA XREF: sub_405350+CFo
		align 4
aGameStart	db 'game start',0       ; DATA XREF: sub_405350+18o
		align 4
aDec		db 'Dec',0              ; DATA XREF: sub_406070+7Fo
aNov		db 'Nov',0              ; DATA XREF: sub_406070+77o
aOct		db 'Oct',0              ; DATA XREF: sub_406070+6Fo
aSep		db 'Sep',0              ; DATA XREF: sub_406070+67o
aAug		db 'Aug',0              ; DATA XREF: sub_406070+5Fo
aJul		db 'Jul',0              ; DATA XREF: sub_406070+57o
aJun		db 'Jun',0              ; DATA XREF: sub_406070+4Fo
aMay		db 'May',0              ; DATA XREF: sub_406070+47o
aApr		db 'Apr',0              ; DATA XREF: sub_406070+3Fo
aMar		db 'Mar',0              ; DATA XREF: sub_406070+37o
aFeb		db 'Feb',0              ; DATA XREF: sub_406070+2Fo
aJan		db 'Jan',0              ; DATA XREF: sub_406070+27o
aXxx		db 'XXX',0              ; DATA XREF: sub_406070+1Fo
; char aNov92003[]
aNov92003	db 'Nov  9 2003',0      ; DATA XREF: sub_406070+1Ao
; char aSDD[]
aSDD		db '%s %d %d',0         ; DATA XREF: sub_406070+15o
		align 10h
; CHAR SubBlock[]
SubBlock	db '\',0                ; DATA XREF: sub_406140+5Fo
		align 4
; CHAR Operation[]
Operation	db 'open',0             ; DATA XREF: sub_406210+8Co
					; sub_406210+A4o
		align 4
; char aSSndvol32_exe[]
aSSndvol32_exe	db '%s\Sndvol32.exe',0  ; DATA XREF: sub_406210+25o
					; sub_406210+63o
; char aSDebug_txt[]
aSDebug_txt	db '%s\debug.txt',0     ; DATA XREF: sub_4062E0+Fo
					; sub_406310+10o
		align 4
; char aSDDD[]
aSDDD		db '%s,%d,%d,%d',0Ah,0  ; DATA XREF: sub_406310+5Bo
		align 4
; char aAT[]
aAT		db 'a+t',0              ; DATA XREF: sub_406310+1Fo
byte_412A60	db 0			; DATA XREF: sub_406550+33r
					; sub_4065A0+36r
		db    1
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    2
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
unk_412A70	db    0			; DATA XREF: sub_406830+D3o
					; sub_406950+B3o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  60h	; `
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  60h	; `
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  80h	; Ä
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
byte_412AF0	db 1			; DATA XREF: sub_407E30+2A1r
		align 2
		db    2
		db    4
		db    4
		db    2
		db    0
		db    0
byte_412AF8	db 1			; DATA XREF: sub_407E30+2F4r
		db    4
		db    2
		db    9
		db    3
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_412B04	db 1			; DATA XREF: sub_407E30+316r
					; sub_407E30+345r
		align 2
		db    3
		db    0
		db    0
		db    3
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
NPC_function_Table dd offset NPC0	; DATA XREF: sub_4079B0+15r
		dd offset NPC1_7
		dd offset NPC2
		dd offset NPC3
		dd offset NPC4_5
		dd offset NPC4_5
		dd offset NPC6_9
		dd offset NPC1_7
		dd offset NPC8
		dd offset NPC6_9
off_412B38	dd offset sub_406E60	; DATA XREF: sub_407310+1Br
		dd offset sub_406EF0
		dd offset sub_406FC0
		dd offset sub_407050
		dd offset sub_4070E0
		dd offset sub_407170
		dd offset sub_406EF0
		dd offset sub_407200
		dd offset sub_406E60
		dd offset sub_407290
unk_412B60	db    0			; DATA XREF: sub_406E60+28o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412BE0	db    0			; DATA XREF: sub_406EF0+21o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
unk_412C20	db    0			; DATA XREF: sub_406FC0+28o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		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  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412CA0	db    0			; DATA XREF: sub_407050+1Do
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
unk_412CE0	db    0			; DATA XREF: sub_4070E0+27o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
unk_412D40	db    0			; DATA XREF: sub_407170+27o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412DA0	db    0			; DATA XREF: sub_407200+27o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  3Ch	; <
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db    0
		db    0
		db  14h
		db    0
		db    0
		db    0
		db  3Ch	; <
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
unk_412DE0	db    0			; DATA XREF: sub_407290+21o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
unk_412DF0	db    0			; DATA XREF: sub_4083F0+6Fo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
unk_412E00	db    0			; DATA XREF: sub_4083F0+8Co
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  80h	; Ä
		db    0
		db    0
		db    0
unk_412E10	db  30h	; 0		; DATA XREF: sub_4083F0+17o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0F8h	; ¯
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
unk_412E20	db 0F8h	; ¯		; DATA XREF: sub_4083F0+2Do
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    1
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
unk_412E30	db  30h	; 0		; DATA XREF: sub_4083F0+4Bo
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db 0F8h	; ¯
		db    0
		db    0
		db    0
		db  58h	; X
		db    0
		db    0
		db    0
unk_412E40	db 0F8h	; ¯		; DATA XREF: sub_4083F0+114o
		db    0
		db    0
		db    0
		db  48h	; H
		db    0
		db    0
		db    0
		db  40h	; @
		db    1
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
unk_412E50	db    0			; DATA XREF: sub_408620+9o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    1
		db    0
		db    0
		db 0F0h	; 
		db    0
		db    0
		db    0
unk_412E60	db    0			; DATA XREF: sub_408620+2Co
					; sub_408620+1D9o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
unk_412E70	db    0			; DATA XREF: sub_4085A0+41o
					; sub_408620+65o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    1
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
aPbmMaruame_pbm	db 'Pbm\MaruAme.pbm',0  ; DATA XREF: sub_4083B0+2Do
aPbmOpening_pbm	db 'Pbm\Opening.pbm',0  ; DATA XREF: sub_4083B0+6o
off_412EA0	dd offset aPmdIkachan_pmd ; DATA XREF: sub_408F10+52r
					; "Pmd\\Ikachan.pmd"
		dd offset aPmdMagirete_pm ; "Pmd\\Magirete.pmd"
		dd offset aPmdBuriki_pmd ; "Pmd\\Buriki.pmd"
		dd offset aPmdMizuno_pmd ; "Pmd\\Mizuno.pmd"
		dd offset aPmdQuake_pmd	; "Pmd\\Quake.pmd"
		dd offset aPmdTidepool_pm ; "Pmd\\Tidepool.pmd"
aPmdTidepool_pm	db 'Pmd\Tidepool.pmd',0 ; DATA XREF: .data:00412EB4o
		align 4
aPmdQuake_pmd	db 'Pmd\Quake.pmd',0    ; DATA XREF: .data:00412EB0o
		align 4
aPmdMizuno_pmd	db 'Pmd\Mizuno.pmd',0   ; DATA XREF: .data:00412EACo
		align 4
aPmdBuriki_pmd	db 'Pmd\Buriki.pmd',0   ; DATA XREF: .data:00412EA8o
		align 4
aPmdMagirete_pm	db 'Pmd\Magirete.pmd',0 ; DATA XREF: .data:00412EA4o
		align 10h
aPmdIkachan_pmd	db 'Pmd\Ikachan.pmd',0  ; DATA XREF: .data:off_412EA0o
; CHAR aSymbal1[]
aSymbal1	db 'SYMBAL1',0          ; DATA XREF: sub_408850+D0o
					; sub_408850+DFo ...
; CHAR aHat2[]
aHat2		db 'HAT2',0             ; DATA XREF: sub_408850+B2o
					; sub_408850+C1o
		align 10h
; CHAR aHat1[]
aHat1		db 'HAT1',0             ; DATA XREF: sub_408850+91o
					; sub_408850+A3o
		align 4
; CHAR aSnare1[]
aSnare1		db 'SNARE1',0           ; DATA XREF: sub_408850+55o
					; sub_408850+64o ...
		align 10h
; CHAR aBass2[]
aBass2		db 'BASS2',0            ; DATA XREF: sub_408850+37o
					; sub_408850+46o
		align 4
; CHAR aBass1[]
aBass1		db 'BASS1',0            ; DATA XREF: sub_408850+5o
					; sub_408850+1Eo
		align 10h
aGbgcgugGkgeb_0	db 'ÉÅÉCÉìÉ{ÉäÉÖÅ[ÉÄÅiÉhÉâÉÄÅj',0 ; DATA XREF: sub_408CE0+DAo
		align 4
unk_412F6C	db  32h	; 2		; DATA XREF: sub_408CE0+94o
		db  34h	; 4
		db  89h	; â
		db 0B9h	; π
		db  82h	; Ç
		db 0F0h	; 
		db  90h	; ê
		db 0B6h	; ∂
		db  90h	; ê
		db 0ACh	; ¨
		db  28h	; (
		db  45h	; E
		db  52h	; R
		db  52h	; R
		db  4Fh	; O
		db  52h	; R
		db  29h	; )
		db    0
		db    0
		db    0
unk_412F80	db  32h	; 2		; DATA XREF: sub_408CE0+88o
		db  34h	; 4
		db  89h	; â
		db 0B9h	; π
		db  82h	; Ç
		db 0F0h	; 
		db  90h	; ê
		db 0B6h	; ∂
		db  90h	; ê
		db 0ACh	; ¨
		db  28h	; (
		db  4Fh	; O
		db  4Bh	; K
		db  29h	; )
		db    0
		db    0
aGbgcgugGkgebGa	db 'ÉÅÉCÉìÉ{ÉäÉÖÅ[ÉÄÅiÉÅÉçÉfÉBÅj',0 ; DATA XREF: sub_408CE0+1Ao
		align 10h
aGGkgebGaokvV	db 'É{ÉäÉÖÅ[ÉÄOKÇ≈Ç∑',0 ; DATA XREF: sub_408E20+D1o
		align 4
aGtgfbGhbighgig	db 'ÉtÉFÅ[ÉhÅiÉhÉâÉÄÅj',0 ; DATA XREF: sub_408E20+61o
		align 4
aGtgfbGhbigbgng	db 'ÉtÉFÅ[ÉhÅiÉÅÉçÉfÉBÅj',0 ; DATA XREF: sub_408E20+17o
		align 10h
off_412FF0	dd offset sub_40A100	; DATA XREF: sub_40A6D0+11r
		dd offset sub_40A4F0
		dd offset sub_40A620
; __int16 word_412FFC[]
word_412FFC	dw 4			; DATA XREF: sub_404320+A99r
					; sub_404320+AF4r ...
		db    8
		db    0
		db  0Ch
		db    0
		db  12h
		db    0
		db  1Ah
		db    0
		db  22h	; "
		db    0
		db  3Eh	; >
		db    0
		db    0
		db    0
; __int16 word_41300C[]
word_41300C	dw 8			; DATA XREF: sub_409CA0+1E5r
					; sub_40A060+5Ar
		db  1Ch
		db    0
		db  34h	; 4
		db    0
		db  4Ah	; J
		db    0
		db  66h	; f
		db    0
		db  68h	; h
		db    1
		db  54h	; T
		db    3
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_413020	db    0			; DATA XREF: sub_409F50+A5o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db    0
		db    0
		db  30h	; 0
		db    0
		db    0
		db    0
unk_4130E0	db    0			; DATA XREF: sub_409F50+28o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0A0h	; †
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db 0A0h	; †
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db 0A0h	; †
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		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  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
dword_4131E0	dd 0FFFFFE00h		; DATA XREF: sub_40A100+84r
					; sub_40A100+14Cr
		db    0
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_4131EC	dd 0FFFFFE00h		; DATA XREF: sub_40A100+95r
					; sub_40A100+152r
		db    0
		db 0FEh	; ˛
		db 0FFh
		db 0FFh
		db  2Ch	; ,
		db 0FDh	; ˝
		db 0FFh
		db 0FFh
dword_4131F8	dd 0FFFFF400h		; DATA XREF: sub_40A100+21Fr
					; sub_40A100+2C3r ...
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_413204	dd 0			; DATA XREF: sub_40A100+23Cr
					; sub_40A100+2C9r ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0F4h	; Ù
		db 0FFh
		db 0FFh
		db    1
		db    0
		db    1
		db    0
		db  11h
		db  2Bh	; +
		db    0
		db    0
		db  11h
		db  2Bh	; +
		db    0
		db    0
		db    1
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
unk_413224	db    1			; DATA XREF: sub_40AAC0+40o
		db    0
		db    1
		db    0
		db  22h	; "
		db  56h	; V
		db    0
		db    0
		db  22h	; "
		db  56h	; V
		db    0
		db    0
		db    1
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
unk_413238	db  0Fh			; DATA XREF: sub_40AAC0+81o
		db    6
		db    0
		db    0
		db  74h	; t
		db    6
		db    0
		db    0
		db 0D3h	; ”
		db    6
		db    0
		db    0
		db  38h	; 8
		db    7
		db    0
		db    0
		db 0A3h	; £
		db    7
		db    0
		db    0
		db  1Ah
		db    8
		db    0
		db    0
		db  9Dh	; ù
		db    8
		db    0
		db    0
		db  14h
		db    9
		db    0
		db    0
		db  9Dh	; ù
		db    9
		db    0
		db    0
		db  38h	; 8
		db  0Ah
		db    0
		db    0
		db 0D2h	; “
		db  0Ah
		db    0
		db    0
		db  7Ah	; z
		db  0Bh
		db    0
		db    0
; CHAR Type[]
Type		db 'WAVE',0             ; DATA XREF: sub_40A8A0+9o
					; sub_40AAC0+E4o
		align 10h
; CHAR Caption[]
Caption		db 'Ikachan',0          ; DATA XREF: WinMain(x,x,x,x)+D9o
					; WinMain(x,x,x,x)+1EBo ...
; char *off_413278
off_413278	dd offset unk_41327C	; DATA XREF: sub_40B0F0+2ADr
unk_41327C	db  56h	; V		; DATA XREF: .data:off_413278o
		db  65h	; e
		db  72h	; r
		db  73h	; s
		db  69h	; i
		db  6Fh	; o
		db  6Eh	; n
		db  2Eh	; .
		db  25h	; %
		db  64h	; d
		db  2Eh	; .
		db  25h	; %
		db  64h	; d
		db  2Eh	; .
		db  25h	; %
		db  64h	; d
		db  0Dh
		db  0Ah
		db  31h	; 1
		db  39h	; 9
		db  39h	; 9
		db  39h	; 9
		db  2Fh	; /
		db  30h	; 0
		db  34h	; 4
		db  2Fh	; /
		db  58h	; X
		db  58h	; X
a04d02d02dByPix	db ' - %04d/%02d/%02d',0Dh,0Ah ; DATA XREF: sub_40AAC0+1BFo
		db 'By Pixel       ',0
		align 4
; CHAR Text[13]
Text		db 'ÉTÉEÉìÉhÇÃèâä'      ; DATA XREF: WinMain(x,x,x,x)+392o
		db 0FAh	; ˙
		db  89h	; â
		db 0BBh	; ª
		db  82h	; Ç
		db 0C9h	; …
		db  8Eh	; é
		db 0B8h	; ∏
		db  94h	; î
		db  73h	; s
		db  82h	; Ç
		db 0B5h	; µ
		db  82h	; Ç
		db 0DCh	; ‹
		db  82h	; Ç
		db 0B5h	; µ
		db  82h	; Ç
		db 0BDh	; Ω
		db    0
		db    0
aPbmLoading2_pb	db 'Pbm\Loading2.pbm',0 ; DATA XREF: WinMain(x,x,x,x)+31Co
		align 10h
; CHAR CursorName[]
CursorName	db 'PIXELCURSOR',0      ; DATA XREF: WinMain(x,x,x,x):loc_40AFE7o
; CHAR TableName[]
TableName	db 'ACCEL',0            ; DATA XREF: WinMain(x,x,x,x):loc_40AEF3o
		align 4
aMenu_main	db 'MENU_MAIN',0        ; DATA XREF: WinMain(x,x,x,x)+105o
		align 10h
; CHAR name[]
name		db '0',0                ; DATA XREF: WinMain(x,x,x,x)+AFo
		align 4
; CHAR TemplateName[]
TemplateName	db 'DLG_START',0        ; DATA XREF: WinMain(x,x,x,x)+82o
		align 10h
; CHAR Name[]
Name		db 'Ikachan',0          ; DATA XREF: WinMain(x,x,x,x)+9o
					; WinMain(x,x,x,x):loc_40AD11o
; CHAR aGGkgebGarTsv[15]
aGGkgebGarTsv	db 'É{ÉäÉÖÅ[ÉÄê›íËÇ'    ; DATA XREF: sub_40B0F0+2FDo
		db 0F0h	; 
		db  8Bh	; ã
		db  4Eh	; N
		db  93h	; ì
		db 0AEh	; Æ
		db  82h	; Ç
		db 0C5h	; ≈
		db  82h	; Ç
		db 0ABh	; ´
		db  82h	; Ç
		db 0DCh	; ‹
		db  82h	; Ç
		db 0B9h	; π
		db  82h	; Ç
		db 0F1h	; Ò
		db  82h	; Ç
		db 0C5h	; ≈
		db  82h	; Ç
		db 0B5h	; µ
		db  82h	; Ç
		db 0BDh	; Ω
		db    0
		db    0
		db    0
		db    0
dword_413350	dd 1			; DATA XREF: _randr _rand+10w
off_413354	dd offset __exit	; DATA XREF: __amsg_exit+1Cr
dword_413358	dd 2			; DATA XREF: __FF_MSGBANNER+Er
					; __NMSG_WRITE+46r ...
		align 10h
; char *off_413360
off_413360	dd offset aNull		; DATA XREF: __output:loc_40C8F1r
					; __output+457r
					; "(null)"
off_413364	dd offset aNull_0	; DATA XREF: __output+259r
					; "(null)"
asc_413368	db ' ',9,'-',0Dh,']',0  ; DATA XREF: __input:loc_40D5CDo
		align 10h
asc_413370	db ']',0                ; DATA XREF: __input:loc_40D4BDo
		align 10h
		db  10h
		db    0
		db    0
		db    0
dword_413384	dd 3F8h			; DATA XREF: __heap_alloc+5r
					; _calloc+27r
dword_413388	dd 0C0000005h		; DATA XREF: _xcptlookup+Ar
					; _xcptlookup+11o
		db  0Bh
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  1Dh
		db    0
		db    0
		db 0C0h	; ¿
		db    4
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  96h	; ñ
		db    0
		db    0
		db 0C0h	; ¿
		db    4
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Dh	; ç
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Eh	; é
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Fh	; è
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  90h	; ê
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  91h	; ë
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  92h	; í
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  93h	; ì
		db    0
		db    0
		db 0C0h	; ¿
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_413400	dd 3			; DATA XREF: __XcptFilter+58r
dword_413404	dd 7			; DATA XREF: __XcptFilter+5Er
dword_413408	dd 0Ah			; DATA XREF: _xcptlookup+4r
dword_41340C	dd 8Ch			; DATA XREF: __XcptFilter+82r
					; __XcptFilter+8Fw ...
unk_413410	db 0FFh			; DATA XREF: __flsbuf:loc_40BE5Do
					; __filbuf:loc_40CE18o
		db 0FFh
		db 0FFh
		db 0FFh
		db    0
		db  0Ah
		db    0
		db    0
unk_413418	db  20h			; DATA XREF: .text:0040EF2Fo
					; __NLG_Notify+2o
		db    5
		db  93h	; ì
		db  19h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_413428	dd 2			; DATA XREF: __NMSG_WRITE+Eo
					; __NMSG_WRITE+28r
off_41342C	dd offset aR6002FloatingP ; DATA XREF: __NMSG_WRITE+FCr
					; __NMSG_WRITE+12Do
					; "R6002\r\n- floating point not loaded\r\"...
		db    8
		db    0
		db    0
		db    0
		db  58h	; X
		db  14h
		db  41h	; A
		db    0
		db    9
		db    0
		db    0
		db    0
		db  2Ch	; ,
		db  14h
		db  41h	; A
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db    8
		db  14h
		db  41h	; A
		db    0
		db  10h
		db    0
		db    0
		db    0
		db 0DCh	; ‹
		db  13h
		db  41h	; A
		db    0
		db  11h
		db    0
		db    0
		db    0
		db 0ACh	; ¨
		db  13h
		db  41h	; A
		db    0
		db  12h
		db    0
		db    0
		db    0
		db  88h	; à
		db  13h
		db  41h	; A
		db    0
		db  13h
		db    0
		db    0
		db    0
		db  5Ch	; \
		db  13h
		db  41h	; A
		db    0
		db  18h
		db    0
		db    0
		db    0
		db  24h	; $
		db  13h
		db  41h	; A
		db    0
		db  19h
		db    0
		db    0
		db    0
		db 0FCh	; ¸
		db  12h
		db  41h	; A
		db    0
		db  1Ah
		db    0
		db    0
		db    0
		db 0C4h	; ƒ
		db  12h
		db  41h	; A
		db    0
		db  1Bh
		db    0
		db    0
		db    0
		db  8Ch	; å
		db  12h
		db  41h	; A
		db    0
		db  1Ch
		db    0
		db    0
		db    0
		db  64h	; d
		db  12h
		db  41h	; A
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  54h	; T
		db  12h
		db  41h	; A
		db    0
		db  79h	; y
		db    0
		db    0
		db    0
		db  44h	; D
		db  12h
		db  41h	; A
		db    0
		db  7Ah	; z
		db    0
		db    0
		db    0
		db  34h	; 4
		db  12h
		db  41h	; A
		db    0
		db 0FCh	; ¸
		db    0
		db    0
		db    0
		db  30h	; 0
		db  12h
		db  41h	; A
		db    0
		db 0FFh
		db    0
		db    0
		db    0
		db  20h
		db  12h
		db  41h	; A
		db    0
unk_4134B8	db    1			; DATA XREF: __NMSG_WRITE+1Bo
					; __dosmaperr+Co
		db    0
		db    0
		db    0
dword_4134BC	dd 16h			; DATA XREF: __dosmaperr:loc_40F1F1r
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    3
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    5
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db    6
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db    7
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db    7
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  0Fh
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db  12h
		db    0
		db    0
		db    0
		db  12h
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  21h	; !
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  35h	; 5
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  41h	; A
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  43h	; C
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db  52h	; R
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  53h	; S
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  57h	; W
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  59h	; Y
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db  6Ch	; l
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  6Dh	; m
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db  1Ch
		db    0
		db    0
		db    0
		db  72h	; r
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db    6
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  80h	; Ä
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db  81h	; Å
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db  82h	; Ç
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db  83h	; É
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  84h	; Ñ
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  91h	; ë
		db    0
		db    0
		db    0
		db  29h	; )
		db    0
		db    0
		db    0
		db  9Eh	; û
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db 0A1h	; °
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db 0A4h	; §
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db 0A7h	; ß
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db 0B7h	; ∑
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db 0CEh	; Œ
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db 0D7h	; ◊
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db  18h
		db    7
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
off_413620	dd offset unk_417E60	; DATA XREF: __dosmaperr+19o
					; .text:0040F492o
		align 8
		dd offset unk_417E60
		db    1
		db    1
		db    0
		db    0
unk_413630	db    0			; DATA XREF: .text:0040F4AFo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_413640	db    0			; DATA XREF: __flsbuf+50o __stbuf+12o
		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    0
		db    0
		db    0
		db    1
		db    0
		db    0
		db    0
		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_413660	db    0			; DATA XREF: __flsbuf+58o
					; __stbuf:loc_40E459o
		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    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_413690	db    0			; DATA XREF: .text:0040F4D8o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
off_4138A0	dd offset __fptrap	; DATA XREF: __output+3AAr
					; .text:0040F4A6o
off_4138A4	dd offset __fptrap	; DATA XREF: __output+3E2r
off_4138A8	dd offset __fptrap	; DATA XREF: __input+430r
off_4138AC	dd offset __fptrap	; DATA XREF: __output+3CBr
		dd offset __fptrap
		dd offset __fptrap
off_4138B8	dd offset __ctype+2	; DATA XREF: __output:$NORMAL_STATE$1535r
					; __input:loc_40D0ADr ...
		dd offset __ctype+2
		public __ctype
; unsigned __int16 _ctype[]
__ctype		dd    200000h		; DATA XREF: _x_ismbbtype+18r
					; .data:off_4138B8o ...
		unicode	0, <	    (((((		   H>
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  84h	; Ñ
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  81h	; Å
		db    0
		db  81h	; Å
		db    0
		db  81h	; Å
		db    0
		db  81h	; Å
		db    0
		db  81h	; Å
		db    0
		db  81h	; Å
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  82h	; Ç
		db    0
		db  82h	; Ç
		db    0
		db  82h	; Ç
		db    0
		db  82h	; Ç
		db    0
		db  82h	; Ç
		db    0
		db  82h	; Ç
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		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
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; size_t cbMultiByte
cbMultiByte	dd 1			; DATA XREF: __input:loc_40D095r
					; __input+CCr ...
byte_413AD4	db 2Eh			; DATA XREF: __input:loc_40D35Ar
					; __input+311r
		align 4
		db    1
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_413AE0	db 1			; DATA XREF: __setmbcp+E1r
		db    2
		db    4
		db    8
		db    0
		db    0
		db    0
		db    0
unk_413AE8	db 0A4h	; §		; DATA XREF: __setmbcp+2Fo
		db    3
		db    0
		db    0
aVyv		db '`ÇyÇ!',0            ; DATA XREF: __setmbcp+11Do
		align 8
aJ		db '¶ﬂ',0               ; DATA XREF: __setmbcp+C0o
		align 10h
aBe		db '°•',0
		align 8
		db  81h	; Å
		db  9Fh	; ü
		db 0E0h	; ‡
		db 0FCh	; ¸
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db  7Eh	; ~
		db  80h	; Ä
		db 0FCh	; ¸
		db    0
		db    0
		db    0
		db    0
		db 0A8h	; ®
		db    3
		db    0
		db    0
		db 0C1h	; ¡
		db 0A3h	; £
		db 0DAh	; ⁄
		db 0A3h	; £
		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
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; Å
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0B5h	; µ
		db    3
		db    0
		db    0
		db 0C1h	; ¡
		db 0A3h	; £
		db 0DAh	; ⁄
		db 0A3h	; £
		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
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; Å
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  41h	; A
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0B6h	; ∂
		db    3
		db    0
		db    0
		db 0CFh	; œ
		db 0A2h	; ¢
		db 0E4h	; ‰
		db 0A2h	; ¢
		db  1Ah
		db    0
		db 0E5h	; Â
		db 0A2h	; ¢
		db 0E8h	; Ë
		db 0A2h	; ¢
		db  5Bh	; [
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; Å
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db  7Eh	; ~
		db 0A1h	; °
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
		db  51h	; Q
		db    5
		db    0
		db    0
		db  51h	; Q
		db 0DAh	; ⁄
		db  5Eh	; ^
		db 0DAh	; ⁄
		db  20h
		db    0
		db  5Fh	; _
		db 0DAh	; ⁄
		db  6Ah	; j
		db 0DAh	; ⁄
		db  32h	; 2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; Å
		db 0D3h	; ”
		db 0D8h	; ÿ
		db 0DEh	; ﬁ
		db 0E0h	; ‡
		db 0F9h	; ˘
		db    0
		db    0
		db  31h	; 1
		db  7Eh	; ~
		db  81h	; Å
		db 0FEh	; ˛
		db    0
		db    0
		db    0
		db    0
unk_413BD8	db    0			; DATA XREF: __setmbcp+3Co
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_413BE0	db 0			; DATA XREF: sub_401000+2w sub_4010B0r ...
		align 2
word_413BE2	dw 0			; DATA XREF: sub_401000+9w
					; sub_4017F0+17w ...
word_413BE4	dw 0			; DATA XREF: sub_401000+12w
					; sub_401340r ...
byte_413BE6	db 0			; DATA XREF: sub_401000+18w
byte_413BE7	db 0			; DATA XREF: sub_401000+1Dw
					; sub_4010B0+D3r ...
word_413BE8	dw 0			; DATA XREF: sub_401000+22w
					; sub_401890+360r
word_413BEA	dw 0			; DATA XREF: sub_401000+2Bw
					; sub_401890+38Er
word_413BEC	dw 0			; DATA XREF: sub_401000+34w
					; sub_4010B0+1Ar ...
byte_413BEE	db 0			; DATA XREF: sub_401000+3Aw
					; sub_4010B0+11r ...
byte_413BEF	db 0			; DATA XREF: sub_401000+3Fw
					; sub_4010B0:loc_401128r ...
word_413BF0	dw 0			; DATA XREF: sub_401000+44w
					; sub_401340:loc_401557r ...
byte_413BF2	db 0			; DATA XREF: sub_401000+4Aw
					; sub_4010B0+A3r ...
		align 8
dword_413BF8	dd 0			; DATA XREF: sub_401000+4Fw
					; sub_4010B0+124r ...
dword_413BFC	dd 0			; DATA XREF: sub_401000+59w
					; sub_4010B0+E3r ...
dword_413C00	dd 0			; DATA XREF: sub_401000+63w
					; sub_401340+32r ...
dword_413C04	dd 0			; DATA XREF: sub_401000+68w
					; sub_401340+10Ar ...
dword_413C08	dd 0			; DATA XREF: sub_401000+6Dw
					; sub_401340+2B4r
dword_413C0C	dd 0			; DATA XREF: sub_401000+77w
					; sub_401340+2E0r
dword_413C10	dd 0			; DATA XREF: sub_401000+81w
					; sub_401890+ADr ...
dword_413C14	dd 0			; DATA XREF: sub_401000+8Bw
					; sub_401890+5Ar ...
dword_413C18	dd 0			; DATA XREF: sub_401000+95w
					; sub_401890+20r ...
dword_413C1C	dd 0			; DATA XREF: sub_401000+9Fw
					; sub_401890+3Br ...
dword_413C20	dd 0			; DATA XREF: sub_401E70+Dw
					; sub_401E90+24r
dword_413C24	dd 0			; DATA XREF: sub_401E70+8w
					; sub_401E90+18r
dword_413C28	dd 0			; DATA XREF: sub_401E90+53r
					; sub_401E90+62r ...
; HGDIOBJ ho
ho		dd 0			; DATA XREF: sub_402710+51w
					; sub_402770+1Ar ...
dword_413C30	dd 0			; DATA XREF: Init_Direct_Draw+1ADo
					; Init_Direct_Draw+1B9r ...
		align 8
dword_413C38	dd 0			; DATA XREF: sub_401E90+A1o
					; Init_Direct_Draw+FBw
dword_413C3C	dd 0			; DATA XREF: Init_Direct_Draw+108w
dword_413C40	dd 0			; DATA XREF: Init_Direct_Draw+DBw
dword_413C44	dd 0			; DATA XREF: Init_Direct_Draw+E3w
		align 10h
dword_413C50	dd 0			; DATA XREF: sub_401E90+1Er
					; Init_Direct_Draw+E9w
dword_413C54	dd 0			; DATA XREF: sub_401E90+36r
					; Init_Direct_Draw+EEw
dword_413C58	dd 0			; DATA XREF: Init_Direct_Draw+49w
					; Init_Direct_Draw+69w	...
; LPDIRECTDRAW Direct_Draw_Obj
Direct_Draw_Obj	dd 0			; DATA XREF: Init_Direct_Draw+9o
					; Init_Direct_Draw+3Ar	...
dword_413C60	dd 0			; DATA XREF: sub_401E90+9Cr
					; Init_Direct_Draw+12Co ...
dword_413C64	dd 0			; DATA XREF: sub_401E90:loc_401F1Ar
					; Init_Direct_Draw+190o ...
dword_413C68	dd 0			; DATA XREF: sub_402140+1o
					; sub_4021A0+5r ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_414468	db    ?	;		; DATA XREF: sub_402140+1Bo
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_416C68	db ?			; DATA XREF: sub_402C20r
					; sub_402C20+5Fw ...
		align 2
word_416C6A	dw ?			; DATA XREF: sub_4028D0+124r
					; sub_4028D0+208r ...
dword_416C6C	dd ?			; DATA XREF: sub_402820+7w
					; sub_402820+21r ...
dword_416C70	dd ?			; DATA XREF: sub_402820+11w
					; sub_402820+26r ...
dword_416C74	dd ?			; DATA XREF: sub_4028D0+25w
dword_416C78	dd ?			; DATA XREF: sub_4028D0+49w
dword_416C7C	dd ?			; DATA XREF: sub_402820+2Cw
					; sub_402860+24r ...
dword_416C80	dd ?			; DATA XREF: sub_402820+31w
					; sub_402860+36r ...
dword_416C84	dd ?			; DATA XREF: sub_4028D0+63w
					; sub_4028D0+A6r ...
dword_416C88	dd ?			; DATA XREF: sub_4028D0+69w
					; sub_4028D0+B6r ...
dword_416C8C	dd ?			; DATA XREF: sub_4028D0+16Dr
					; sub_4028D0+18Ar ...
dword_416C90	dd ?			; DATA XREF: sub_4028D0+142r
					; sub_4028D0+19Ar ...
		align 8
dword_416C98	dd ?			; DATA XREF: sub_4052E0:loc_40531Cr
					; sub_4052E0+46w
dword_416C9C	dd ?			; DATA XREF: sub_4052E0r
					; sub_4052E0+15w
dword_416CA0	dd ?			; DATA XREF: sub_404320:loc_40505Cr
					; sub_404320:loc_405074r ...
dword_416CA4	dd ?			; DATA XREF: sub_4052E0+Br
					; sub_4052E0+27w
dword_416CA8	dd ?			; DATA XREF: sub_402C20:loc_402C88r
					; sub_4052E0+4Cw ...
dword_416CAC	dd ?			; DATA XREF: sub_4052E0+30w
dword_416CB0	dd ?			; DATA XREF: sub_406D10+4Dr
					; sub_406D10+57w ...
		align 8
unk_416CB8	db    ?	;		; DATA XREF: sub_408AF0+30o
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_416CC0	dd ?			; DATA XREF: sub_408BA0+69r
dword_416CC4	dd ?			; DATA XREF: sub_408BA0:loc_408C3Br
dword_416CC8	dd ?			; DATA XREF: sub_408BA0+7Fr
; size_t dword_416CCC
dword_416CCC	dd ?			; DATA XREF: sub_408AF0+3Ar
					; sub_408AF0+50r ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
unk_416CD4	db    ?	;		; DATA XREF: sub_408CE0+34o
		db    ?	;
		db    ?	;
		db    ?	;
unk_416CD8	db    ?	;		; DATA XREF: sub_408E20+2Do
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_4170CC	dd ?			; DATA XREF: sub_408CE0:loc_408DCCr
					; sub_408CE0+FBr ...
byte_4170D0	db ?			; DATA XREF: sub_408BA0+50r
					; sub_408CE0+C2o ...
		align 4
dword_4170D4	dd ?			; DATA XREF: sub_408AF0+9Cw
					; sub_408BA0+79r ...
dword_4170D8	dd ?			; DATA XREF: sub_408BA0+63r
					; sub_408BA0+134w
; HLOCAL hMem
hMem		dd ?			; DATA XREF: sub_408850+194w
					; sub_408850+1C6r ...
; HLOCAL dword_4170E0
dword_4170E0	dd ?			; DATA XREF: sub_408850+1A9w
					; sub_408850+1D7r ...
; HLOCAL dword_4170E4
dword_4170E4	dd ?			; DATA XREF: sub_408850+1B7w
					; sub_408850+1DFr ...
; HLOCAL dword_4170E8
dword_4170E8	dd ?			; DATA XREF: sub_408850+1CFw
					; sub_408850:loc_408A68r ...
dword_4170EC	dd ?			; DATA XREF: sub_408850+23w
					; sub_408AF0r ...
byte_4170F0	db ?			; DATA XREF: sub_404320+AEDw
					; sub_405350+848r ...
byte_4170F1	db ?			; DATA XREF: sub_405350:loc_405C29r
					; sub_405350+8E2w ...
byte_4170F2	db ?			; DATA XREF: sub_401890+21Fr
					; sub_401890+2BFr ...
byte_4170F3	db ?			; DATA XREF: sub_403DF0+A5o
					; sub_403F90+C0o ...
dword_4170F4	dd ?			; DATA XREF: sub_401340:loc_401470r
					; sub_401890+26r ...
dword_4170F8	dd ?			; DATA XREF: sub_401340+161r
					; sub_401890+32r ...
dword_4170FC	dd ?			; DATA XREF: sub_401890+72w
					; sub_401890+163w ...
dword_417100	dd ?			; DATA XREF: sub_401890+C4r
					; sub_401890+FDw ...
byte_417104	db ?			; DATA XREF: sub_404320+B03w
					; sub_409F50+5r ...
		align 2
word_417106	dw ?			; DATA XREF: sub_404320+B0Aw
					; sub_40A100:loc_40A21Ar ...
word_417108	dw ?			; DATA XREF: sub_401890:loc_401AF4r
					; sub_404320+B11w ...
word_41710A	dw ?			; DATA XREF: sub_401890:loc_401BDDr
					; sub_401890+36Aw ...
word_41710C	dw ?			; DATA XREF: sub_403DF0+75o
					; sub_403F90+90o ...
word_41710E	dw ?			; DATA XREF: sub_403DF0+87o
					; sub_403F90+9Fo ...
byte_417110	db ?			; DATA XREF: sub_403DF0+96o
					; sub_403F90+B1o ...
		align 2
word_417112	dw ?			; DATA XREF: sub_40A100+38r
					; sub_40A100+122w ...
word_417114	dw ?			; DATA XREF: sub_40A100+191r
					; sub_40A100:loc_40A2B1r ...
byte_417116	db ?			; DATA XREF: sub_401890+30Ar
					; sub_404320+AD3w ...
byte_417117	db ?			; DATA XREF: sub_401890+1C5w
					; sub_407E30+1F9w ...
byte_417118	db ?			; DATA XREF: sub_407E30+CCr
					; sub_407E30+E5w ...
byte_417119	db ?			; DATA XREF: sub_404320+AE6w
					; sub_404320:loc_404E62r ...
		align 4
; LPDIRECTSOUND	dword_41711C
dword_41711C	dd ?			; DATA XREF: sub_40A780+5o
					; sub_40A780:loc_40A79Br ...
dword_417120	dd ?			; DATA XREF: sub_40A780+56o
					; sub_40A810+23r ...
dword_417124	dd ?			; DATA XREF: sub_40A780+72o
					; sub_40A810+1o ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_417144	db    ?	;		; DATA XREF: sub_40A810+1Bo
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_417924	dd ?			; DATA XREF: WinMain(x,x,x,x)+138w
					; WinMain(x,x,x,x)+14Ew ...
		align 10h
dword_417930	dd ?			; DATA XREF: WinMain(x,x,x,x)+12Ew
					; WinMain(x,x,x,x):loc_40AE24w	...
; HACCEL unk_417934
unk_417934	db    ?	;		; DATA XREF: WinMain(x,x,x,x)+220w
					; sub_40B580+66r
		db    ?	;
		db    ?	;
; char byte_417937[]
byte_417937	db ?			; DATA XREF: WinMain(x,x,x,x):loc_40AD4Cr
; CHAR Filename
Filename	db ?			; DATA XREF: sub_401C50+11o
					; sub_401CC0+1Fo ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_417A3C	dd ?			; DATA XREF: sub_40B0F0:loc_40B3F9w
					; sub_40B580+3Br ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417A44	dd ?			; DATA XREF: sub_404320+4BFr
					; sub_404320+573r ...
dword_417A48	dd ?			; DATA XREF: sub_402C20+46r
					; sub_4052E0+1Ar ...
; HWND hWnd
hWnd		dd ?			; DATA XREF: WinMain(x,x,x,x)+201w
					; WinMain(x,x,x,x)+2C1w ...
dword_417A50	dd ?			; DATA XREF: sub_40B0D0w ___setargvw ...
dword_417A54	dd ?			; DATA XREF: sub_401DC0+20w
					; WinMain(x,x,x,x)+E5r	...
; char *dword_417A58
dword_417A58	dd ?			; DATA XREF: start+84w
					; __setenvp:loc_40E88Fr ...
		align 10h
dword_417A60	dd ?			; DATA XREF: __amsg_exitr
					; _fast_error_exitr ...
dword_417A64	dd ?			; DATA XREF: _mallocr
					; _calloc:loc_41063Fr
dword_417A68	dd ?			; DATA XREF: __callnewhr
dword_417A6C	dd ?			; DATA XREF: __stbuf+37r
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417A74	dd ?			; DATA XREF: __close+A1w __write+111w	...
dword_417A78	dd ?			; DATA XREF: __close:loc_40BC4Fw
					; __write+11Bw	...
dword_417A7C	dd ?			; DATA XREF: __sopen+13Ar
dword_417A80	dd ?			; DATA XREF: start+52w
dword_417A84	dd ?			; DATA XREF: start+49w
dword_417A88	dd ?			; DATA XREF: start+3Ew
dword_417A8C	dd ?			; DATA XREF: start+30w
dword_417A90	dd ?			; DATA XREF: __setargv+91w
dword_417A94	dd ?			; DATA XREF: __setargv+89w
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417A9C	dd ?			; DATA XREF: __setenvp+44w
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417AAC	dd ?			; DATA XREF: __setargv+2Ew
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
byte_417AB4	db ?			; DATA XREF: _doexit+2Dw
					; .text:0040F4E7r
		align 4
dword_417AB8	dd ?			; DATA XREF: _doexit+27w
dword_417ABC	dd ?			; DATA XREF: _doexit+4r _doexit+8Bw
dword_417AC0	dd ?			; DATA XREF: __XcptFilter+3Ar
					; __XcptFilter+46w ...
; CHAR byte_417AC4[260]
byte_417AC4	db 104h	dup(?)		; DATA XREF: __setargv:loc_40E94Do
dword_417BC8	dd ?			; DATA XREF: ___crtGetEnvironmentStringsA+2r
					; ___crtGetEnvironmentStringsA+23w ...
dword_417BCC	dd ?			; DATA XREF: __FF_MSGBANNER+21r
dword_417BD0	dd ?			; DATA XREF: __openfile+154w
					; __stbuf:loc_40E464w ...
dword_417BD4	dd ?			; DATA XREF: __openfile+7r
dword_417BD8	dd ?			; DATA XREF: __setmbcp:loc_410102r
					; _getSystemCP+4w ...
dword_417BDC	dd ?			; DATA XREF: ___crtMessageBoxA+3r
					; ___crtMessageBoxA+2Ew ...
dword_417BE0	dd ?			; DATA XREF: ___crtMessageBoxA+43w
					; ___crtMessageBoxA:loc_4104AFr
dword_417BE4	dd ?			; DATA XREF: ___crtMessageBoxA+4Aw
					; ___crtMessageBoxA+60r
dword_417BE8	dd ?			; DATA XREF: __sopen+3Fr
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417BF4	dd ?			; DATA XREF: _wctomb:loc_40F825r
					; _mbtowc:loc_40F99Er ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
; UINT CodePage
CodePage	dd ?			; DATA XREF: _wctomb+43r _mbtowc+73r ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417C0C	dd ?			; DATA XREF: ___crtGetStringTypeA+26r
					; ___crtGetStringTypeA:loc_41087Cw
dword_417C10	dd ?			; DATA XREF: ___crtLCMapStringA+28r
					; ___crtLCMapStringA+4Cw ...
; UINT dword_417C14
dword_417C14	dd ?			; DATA XREF: __setmbcp+14r
					; __setmbcp+65w ...
		align 10h
unk_417C20	db    ?	;		; DATA XREF: __setmbcp+123o
					; __setmbcp+171o ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
dword_417C2C	dd ?			; DATA XREF: __setmbcp+108w
					; __setmbcp+15Dw ...
		align 20h
byte_417C40	db ?			; DATA XREF: _setSBUpLow:loc_4102D2w
					; _setSBUpLow:loc_4102EFw ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_417D40	db    ?	;		; DATA XREF: __setmbcp+5Co
					; __setmbcp+AFo ...
byte_417D41	db ?			; DATA XREF: _parse_cmdline+3Fr
					; _parse_cmdline+84r ...
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
; LCID Locale
Locale		dd ?			; DATA XREF: __setmbcp+6Ew
					; __setmbcp+12Bw ...
dword_417E48	dd ?			; DATA XREF: _flsall:loc_40BD44r
					; __getstream+14r ...
		align 20h
unk_417E60	db    ?	;		; DATA XREF: .data:off_413620o
					; .data:00413628o
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		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_418E60	dd ?			; DATA XREF: _flsall+9r _flsall+56r ...
		align 20h
dword_418E80	dd ?			; DATA XREF: __flsbuf+B1r __filbuf+75r ...
unk_418E84	db    ?	;		; DATA XREF: __ioinit+92o
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
		db    ?	;
; UINT uNumber
uNumber		dd ?			; DATA XREF: __close+8r __write+Dr ...
dword_418F84	dd ?			; DATA XREF: __setenvp+ADw
dword_418F88	dd ?			; DATA XREF: __wincmdlnr __setenvp+3r	...
dword_418F8C	dd ?			; DATA XREF: _doexit+3Er
dword_418F90	dd ?			; DATA XREF: _doexit+35r _doexit+57r
dword_418F94	dd ?			; DATA XREF: __cinitr
dword_418F98	dd ?			; DATA XREF: ___sbh_heap_init+32w
					; ___sbh_alloc_new_region+5r ...
dword_418F9C	dd ?			; DATA XREF: ___sbh_free_block+239r
					; ___sbh_free_block+259r ...
dword_418FA0	dd ?			; DATA XREF: ___sbh_heap_init+2Dw
					; ___sbh_free_block+310w ...
; void *dword_418FA4
dword_418FA4	dd ?			; DATA XREF: ___sbh_heap_init:loc_40DBF4w
					; ___sbh_free_block+22Cr ...
dword_418FA8	dd ?			; DATA XREF: ___sbh_heap_init+24w
					; ___sbh_find_blockr ...
; LPVOID lpMem
lpMem		dd ?			; DATA XREF: ___sbh_heap_init+15w
					; ___sbh_find_block+8r	...
; HANDLE hHeap
hHeap		dd ?			; DATA XREF: _free+21r
					; __heap_alloc+28r ...
dword_418FB4	dd ?			; DATA XREF: start+7Aw	__wincmdln+Fr ...
		align 80h
_data		ends


		end start
